Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Implements hook_menu().
- */
- function alumni_users_menu() {
- $items = array();
- $items['alumni-list'] = array(
- 'title' => 'Alumni list',
- 'type' => MENU_CALLBACK,
- 'page callback' => 'drupal_get_form',
- 'page arguments' => array('alumni_users_list_form'),
- 'access arguments' => array('access alumni listing page'),
- );
- $items['alumni/%/edit'] = array(
- 'title' => 'Edit alumni user',
- 'type' => MENU_CALLBACK,
- 'page callback' => 'drupal_get_form',
- 'page arguments' => array('alumni_users_profile_edit', 1),
- 'access callback' => 'alumni_users_profile_edit_access',
- );
- return $items;
- }
- /**
- * Implements hook_menu_alter().
- */
- function alumni_users_menu_alter(&$items) {
- // View user profile page.
- $items['user/%']['page callback'] = 'alumni_users_profile_view';
- $items['user/%']['page arguments'] = array(1);
- $items['user/%']['access arguments'] = array('access user profiles');
- // Edit user profile.
- $items['user/%/edit']['page callback'] = 'drupal_get_form';
- $items['user/%/edit']['page arguments'] = array('alumni_users_profile_edit', 1);
- $items['user/%/edit']['access arguments'] = array('change own username');
- }
- /**
- * Implements hook_permission().
- */
- function alumni_users_permission() {
- return array(
- 'access alumni listing page' => array(
- 'title' => t('Alumni listing page'),
- 'description' => t('Access the alumni listing page'),
- ),
- 'access to alumni profile' => array(
- 'title' => t('View alumni profile page'),
- 'description' => t('View alumni profile page'),
- ),
- 'administer alumni profile page' => array(
- 'title' => t('Administer alumni profile page'),
- 'description' => t('Administer alumni profile page'),
- ),
- );
- }
- /**
- * Implement hook_theme().
- */
- function alumni_users_theme($existing, $type, $theme, $path) {
- $items = array();
- $items['alumni_users_display'] = array(
- 'template' => 'alumni-user-display',
- 'path' => drupal_get_path('module', 'alumni_users') . '/tpl',
- 'variables' => array(
- 'nickname' => NULL,
- 'fullname' => NULL,
- 'veteran' => NULL,
- 'branch_of_service' => NULL,
- 'business_name' => NULL,
- 'website' => NULL,
- 'curriculums' => NULL,
- 'msglink' => NULL,
- 'awards_credentials' => NULL,
- 'alumniorfellow' => NULL,
- ),
- );
- $items['alumni_users_profile_edit'] = array(
- 'render element' => 'form',
- 'template' => 'alumni-user-profile-edit',
- 'path' => drupal_get_path('module', 'alumni_users') . '/tpl',
- );
- $items['alumni_users_profile_view'] = array(
- 'template' => 'alumni-user-profile-view',
- 'path' => drupal_get_path('module', 'alumni_users') . '/tpl',
- 'variables' => array('alumni_user' => NULL),
- );
- return $items;
- }
- /**
- * Access callback for user account editing.
- */
- function alumni_users_profile_edit_access() {
- global $user;
- $current_user = $user->uid && user_access('change own username');
- $alumni_profile_admin = user_access('administer alumni profile page');
- return ($current_user || user_access('administer users') || $alumni_profile_admin);
- }
- /**
- * Alumni list form.
- */
- function alumni_users_list_form($form, &$form_state) {
- $form['alumni_search'] = array(
- '#type' => 'textfield',
- '#title' => t('Alumni name'),
- '#size' => 60,
- '#maxlength' => 128,
- );
- $form['alumni_serch_submit'] = array(
- '#type' => 'submit',
- '#value' => t('Find alumni')
- );
- $form['alumni_serch_reset'] = array(
- '#type' => 'submit',
- '#value' => t('Reset')
- );
- $completed_curriculum = db_select('contentenrollment', 'ce')->extend('PagerDefault');
- $completed_curriculum->innerJoin('curriculum', 'c', 'c.CurriculumID = ce.contentID');
- $completed_curriculum->innerJoin('users', 'u', 'u.uid = ce.userID');
- $completed_curriculum->fields('ce', array('userID'));
- $completed_curriculum->isNotNull('ce.CompletionDate')
- ->condition('u.uid', 1, '!=');
- //add condition if need search user
- if (isset($form_state['values']['alumni_search']) && ($form_state['values']['alumni_search'])) {
- $variable_search = db_or();
- $completed_curriculum->leftJoin('field_data_field_user_last_name', 'uln', 'uln.entity_id = ce.userID');
- $completed_curriculum->leftJoin('field_data_field_user_first_name', 'ufn', 'ufn.entity_id = ce.userID');
- $variable_search->condition('u.name', '%' . db_like($form_state['values']['alumni_search']) . '%', 'LIKE');
- $variable_search->condition('uln.field_user_last_name_value', '%' . db_like($form_state['values']['alumni_search']) . '%', 'LIKE');
- $variable_search->condition('ufn.field_user_first_name_value', '%' . db_like($form_state['values']['alumni_search']) . '%', 'LIKE');
- $completed_curriculum->condition($variable_search);
- } else {
- $completed_curriculum->distinct()
- ->orderBy('ce.userID')
- ->limit(5);
- }
- $user_ids = $completed_curriculum->execute()->fetchCol();
- $alumni_list = user_load_multiple($user_ids);
- $alumni_displays = alumni_users_create_alumni_list($alumni_list);
- $form['alumni_table'] = array(
- '#markup' => theme('item_list', array('items' => $alumni_displays, 'title' => '', 'type' => 'ul', 'attributes' => array())),
- );
- if (!isset($form_state['values']['alumni_search']) || (!$form_state['values']['alumni_search'])) {
- $form['pager'] = array('#markup' => theme('pager'));
- }
- return $form;
- }
- /**
- * Alumni list form validate.
- */
- function alumni_users_list_form_validate($form, &$form_state) {
- $form_state['values']['alumni_search'] = trim($form_state['values']['alumni_search']);
- if (($form_state['values']['alumni_search']) && (strlen($form_state['values']['alumni_search']) < 3)) {
- form_set_error('alumni_search', t('3 characters - minimum for search'));
- }
- }
- /*
- * Alumni list form submit.
- */
- function alumni_users_list_form_submit($form, &$form_state) {
- if ($form_state['clicked_button']['#id'] === 'edit-alumni-serch-reset') {
- unset($form_state['values']['alumni_search']);
- $form_state['input']['alumni_search'] = '';
- }
- $form_state['rebuild'] = TRUE;
- }
- /*
- * Implements hook_FORM_ID_form_alter().
- */
- function alumni_users_form_alter(&$form, &$form_state, $form_id) {
- global $user;
- if($form_id == 'user_profile_form') {
- // hide alumni editing field group.
- if (!in_array('alumni', $user->roles) && !in_array('administrator', $user->roles)) {
- field_group_hide_field_groups($form, array('group_alumni_profile'));
- }
- $form['field_branch_of_service_upd']['#states'] = array(
- 'visible' => array(':input[name="field_veteran[und]"]' => array('value' => '0'))
- );
- }
- // Add form '#states'.
- if($form_id == 'alumni_user_profile_edit') {
- $form['field_branch_of_service_upd']['field_branch_of_service_upd']['#states'] = array(
- 'visible' => array(':input[name="field_veteran[und]"]' => array('value' => '0'))
- );
- $form['field_branch_of_service_upd_hide']['#states'] = array(
- 'visible' => array(':input[name="field_veteran[und]"]' => array('value' => '0'))
- );
- }
- }
- /*
- * Implements hook_user_load().
- */
- function alumni_users_user_load($users) {
- // add field_virtual_curriculum
- foreach ($users as $user_id => $user_obj) {
- $curriclum_list = db_select('contentenrollment', 'ce');
- $curriclum_list->leftJoin('curriculum', 'c', 'c.CurriculumID = ce.contentID');
- $sql = $curriclum_list->fields('c', array('CurriculumID', 'Title'))
- ->condition('ce.userID', $user_obj->uid, '=')
- ->isNotNull('ce.CompletionDate')
- ->execute()
- ->fetchAllKeyed();
- $user_obj->field_virtual_curriculum = $sql;
- }
- }
- /**
- * Create alumni table array.
- */
- function alumni_users_create_alumni_list($users) {
- $alumni_displays = array();
- foreach ($users as $current_alumni) {
- $alumni_wrapper = entity_metadata_wrapper('user', $current_alumni);
- $name = $alumni_wrapper->name->value();
- $full_name = $alumni_wrapper->field_user_first_name->value() . ' ' . $alumni_wrapper->field_user_last_name->value();
- $veteran = $alumni_wrapper->field_veteran->value() ? 'No' : 'Yes';
- $branch_of_service = $alumni_wrapper->field_branch_of_service_upd->value();
- $business_name = $alumni_wrapper->field_business_name2->value();
- $website = $alumni_wrapper->field_website->value();
- $msglink = l(t('Send this user a private message'), 'messages/new/' . $alumni_wrapper->uid->value(), array('query' => array('destination' => 'user/' . $alumni_wrapper->uid->value())));
- $awards_credentials = $alumni_wrapper->field_awards_and_credentials->value();
- //create curriculum list
- $curriculum_list = array();
- foreach ($current_alumni->field_virtual_curriculum as $curriculum_id => $current_curriculum) {
- $curriculum_sting = 'ID: ' . $curriculum_id . '; Title: ' . $current_curriculum;
- $curriculum_list[] = array('data' => $curriculum_sting);
- }
- $curriculums = theme('item_list', array('items' => $curriculum_list, 'title' => '', 'type' => 'ul', 'attributes' => array()));
- $alumniorfellow = ($curriculum_list) ? 'Alumni' : 'Fellow';
- $alumni_displays[] = theme('alumni_users_display', array(
- 'nickname' => $name,
- 'fullname' => $full_name,
- 'veteran' => $veteran,
- 'branch_service' => $branch_of_service,
- 'business_name' => $business_name,
- 'website' => $website,
- 'curriculums' => $curriculums,
- 'awards_credentials' => $awards_credentials,
- 'msglink' => $msglink,
- 'alumniorfellow' => $alumniorfellow,
- ));
- }
- return $alumni_displays;
- }
- /**
- * Alumni profile user fields list.
- */
- function alumni_users_prifile_fields() {
- $form_fields = array(
- 'field_user_first_name' => array('title' => ''),
- 'field_user_last_name' => array('title' => ''),
- 'field_veteran' => array('title' => ''),
- 'field_branch_of_service_upd' => array('title' => ''),
- 'field_business_name2' => array('title' => ''),
- 'field_website' => array('title' => ''),
- 'field_home_number' => array('title' => ''),
- 'field_confirm_email' => array('title' => t('Email')),
- 'field_biography_and_descr' => array('title' => ''),
- 'field_awards_and_credentials' => array('title' => ''),
- 'field_related_links_' => array('title' => ''),
- );
- return $form_fields;
- }
- /**
- * Load form fields.
- */
- function alumni_users_load_field($field_name, $form, $form_state, $user, $title = '') {
- if (!$field_name) return FALSE;
- $entity_type = 'user';
- $bundle_name = 'user';
- $field = field_info_field($field_name);
- $items = field_get_items($entity_type, $user, $field_name);
- $instance = field_info_instance($entity_type, $field_name, $bundle_name);
- $form_field = field_default_form($entity_type, $user, $field, $instance, LANGUAGE_NONE, $items, $form, $form_state);
- // Change default field title.
- if($title) {
- $value_key = isset($form_field[$field_name]['und'][0]['value']['#title']) ? 'value' : 'email';
- $form_field[$field_name]['und'][0][$value_key]['#title'] = $title;
- }
- return $form_field;
- }
- /**
- * Load user data.
- */
- function alumni_users_load_data($uid) {
- $data = array();
- $user = user_load($uid);
- // Load fields list.
- $fields = array_keys(alumni_users_prifile_fields());
- // Load user entity.
- $wpr = entity_metadata_wrapper('user', $user);
- foreach ($fields as $field) {
- // Get value from textarea field.
- if ($field == 'field_related_links_') {
- $data[$field] = $wpr->{$field}->value()['value'];
- continue;
- }
- $data[$field] = $wpr->{$field}->value();
- }
- return $data;
- }
- /**
- * Load form fields visability settings.
- */
- function alumni_users_field_settings($uid) {
- $fields_settings = db_select('alumni_settings', 'als')
- ->fields('als', array('hide_settings'))
- ->condition('als.uid', $uid)
- ->execute()->fetchField();
- return $fields_settings ? unserialize($fields_settings) : array();
- }
- /**
- * View user profile.
- */
- function alumni_users_profile_view($uid) {
- if(!$uid) { return FALSE; }
- if(!is_numeric($uid)) { $uid = user_load_multiple(array(), array('name' => $uid))->uid; }
- if(user_access('administer alumni profile page') || user_access('administer users')) {
- $data = alumni_users_load_data($uid);
- }
- else {
- // Hiding fields selected by the user.
- $fields_settings = alumni_users_field_settings($uid);
- $data = alumni_users_load_data($uid);
- if(!empty($fields_settings) && !empty($data)) {
- foreach ($data as $field => &$val) {
- if(isset($fields_settings[$field]) && $fields_settings[$field] == 1) {
- $data[$field] = '';
- }
- }
- }
- }
- $no_data = t('No information about the user');
- return isset($data) ? theme('alumni_users_profile_view', array('alumni_user' => $data)) : $no_data;
- }
- /**
- * Edit user profile form.
- */
- function alumni_users_profile_edit($form, &$form_state, $uid) {
- // User load, if $uid == 'user' - load current user, else load user by uid.
- $user = is_numeric($uid) ? user_load($uid) : user_load($GLOBALS['user']->uid);
- // Alumni user profile fields.
- $form_fields = alumni_users_prifile_fields();
- // Load fields visability settings.
- $fields_settings = alumni_users_field_settings($user->uid);
- $form = array('#tree' => TRUE, '#parents' => array());
- // For drupal standart password element.
- $form['#user'] = $user;
- user_account_form($form, $form_state);
- unset($form['#validate']);
- hide($form['picture']);
- if (!user_access('administer users')) {
- hide($form['account']['mail']);
- hide($form['account']['roles']);
- hide($form['account']['status']);
- }
- // Load fields from user profile to this form.
- foreach ($form_fields as $field => $field_val) {
- $form[$field] = alumni_users_load_field($field, $form, $form_state, $user, $field_val['title']);
- $form[$field . '_hide'] = array(
- '#type' => 'checkboxes',
- '#title' => '',
- '#options' => array(1 => ''),
- '#default_value' => (isset($fields_settings[$field]) && $fields_settings[$field] == 1) ? array(1) : array(),
- );
- }
- $form['#validate'][] = 'alumni_users_current_pass_validate';
- $form['#validate'][] = 'alumni_users_pass_validate';
- $form['submit'] = array(
- '#type' => 'submit',
- '#value' => 'Submit',
- );
- return $form;
- }
- /**
- * User current password validation.
- */
- function alumni_users_current_pass_validate(&$form, &$form_state) {
- $user = $form_state['complete form']['#user'];
- dsm($form_state);
- $current_pass = $form_state['values']['account']['current_pass'];
- dsm($current_pass);
- require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
- dsm('test pass - '. (bool) user_check_password($current_pass, $user));
- if ($user->pass == _password_crypt('sha512', $current_pass, $user->pass)) {
- dsm('treeeeee');
- } else {
- dsm('old hash - ' . $user->pass);
- dsm('new hash - ' . _password_crypt('sha512', trim($current_pass), $user->pass));
- }
- if ($current_pass != $user->pass) {
- // require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
- $current_pass_failed = empty($current_pass) || !user_check_password($current_pass, $user);
- if ($current_pass_failed) {
- form_set_error('account][current_pass', t("Your current password is missing or incorrect."));
- }
- }
- }
- /**
- * User password validation.
- */
- function alumni_users_pass_validate(&$form, &$form_state) {
- if (empty($form_state['values']['account']['current_pass']) && empty($form_state['values']['account']['pass'])) {
- form_set_error('account][pass', t("Your current password is missing or incorrect."));
- }
- }
- /**
- * Edit user profile form submit.
- */
- function alumni_users_profile_edit_submit($form, &$form_state) {
- global $user;
- dsm($form_state);
- // Change user password.
- if (isset($form_state['values']['account']['pass']) && !empty($form_state['values']['account']['pass'])) {
- $pass = $form_state['values']['account']['pass'];
- user_save($user, array('pass' => $pass));
- }
- // Alumni user profile fields.
- $form_fields = array_keys(alumni_users_prifile_fields());
- // Added form values to user object and getting visability settings.
- $visability = array();
- foreach ($form_fields as $field) {
- if (!isset($form_state['values'][$field][$field]['und'][0])) continue;
- $value_key = key($form_state['values'][$field][$field]['und'][0]);
- // Add new field values to user profile.
- $user->{$field}['und'][0][$value_key] = $form_state['values'][$field][$field]['und'][0][$value_key];
- // Creating profile fields visability settings.
- $visability[$field] = $form_state['values'][$field . '_hide'][1];
- }
- // Update user profile information.
- user_save($user, array());
- // Saving fields visibility settings.
- db_merge('alumni_settings')
- ->key(array('uid' => $user->uid))
- ->fields(array('hide_settings' => serialize($visability)))
- ->execute();
- drupal_set_message(t('The changes have been saved.'));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement