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',
- );
- $items['alumni/test'] = array(
- 'title' => 'Edit alumni user',
- 'type' => MENU_CALLBACK,
- 'page callback' => 'drupal_get_form',
- 'page arguments' => array('alumni_user_get_pass_field'),
- // '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 callback'] = 'alumni_users_profile_edit_access';
- // 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 callback'] = TRUE;
- }
- /**
- * 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['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;
- }
- /**
- * Get standart password user field.
- */
- function alumni_user_get_pass_field() {
- global $user;
- module_load_include('inc', 'user', 'user.pages');
- $form = drupal_get_form('user_profile_form', $user);
- // $request_new = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
- // $current_pass_description = t('Enter your current password to change the %pass. !request_new.', array('%pass' => t('Password'), '!request_new' => $request_new));
- // $form['account']['current_pass']['#description'] = $current_pass_description;
- //dsm($form);
- unset(
- $form['account']['name'],
- $form['account']['mail'],
- $form['account']['status'],
- $form['account']['roles'],
- $form['locale'],
- $form['l10n_client'],
- $form['picture'],
- $form['overlay_control'],
- $form['contact'],
- $form['timezone'],
- $form['ckeditor'],
- $form['metatags'],
- $form['redirect']
- );
- // foreach ($form as $key => $val) {
- // if (
- // $key == '#user' ||
- // $key == '#validate' ||
- // $key == 'account' ||
- // $key == 'signature_settings' ||
- // $key == '#entity' ||
- // $key == '#pre_render' ||
- // $key == '#entity_type' ||
- // $key == '#bundle'
- // ) continue;
- //
- // unset($form[$key]);
- //}
- //dsm($form);
- return $form;
- }
- /**
- * 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 = is_numeric($uid) ? user_load($uid) : user_load($GLOBALS['user']->uid);
- ///alumni_user_get_pass_field();
- // Alumni user profile fields.
- $form_fields = alumni_users_prifile_fields();
- // Load fields visability settings.
- $fields_settings = alumni_users_field_settings($user->uid);
- // Pass fields.
- // $pass = alumni_user_get_pass_field();
- $form = array();
- $form['#tree'] = TRUE;
- $form['#parents'] = array();
- $form['#user'] = $user;
- $form['#user_category'] = 'register';
- $form['mail'] = array(
- '#type' => 'textfield',
- '#default_value' => $user->mail,
- );
- user_account_form($form, $form_state);
- // Dublicate element to parent array.
- $form['mail'] = $form['account']['mail'];
- $form['pass'] = $form['account']['pass'];
- //$form[''] = $form['account']['mail'];
- hide($form['mail']);
- hide($form['pass']);
- // hide($form['account']['name']);
- hide($form['account']['mail']);
- hide($form['account']['roles']);
- hide($form['account']['status']);
- hide($form['picture']);
- $form1 = current($form['account']);
- $form['current_pass_required_values'] = $form['account']['current_pass_required_values'];
- // 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(),
- );
- }
- // array_splice($form, 3, 0, $pass);
- // $form += $pass;
- $form['submit'] = array(
- '#type' => 'submit',
- '#value' => 'Submit',
- );
- return $form;
- }
- /**
- * Edit user profile form submit.
- *
- *
- */
- function alumni_users_profile_edit_submit($form, &$form_state, $uid) {
- dsm($uid);
- $user = is_numeric($uid) ? user_load($uid) : user_load($GLOBALS['user']->uid);
- // $form_mail = $form_state['values']['field_confirm_email']['field_confirm_email']['und'][0]['email'];
- // $user->mail = $form_mail;
- // Change user password.
- if(isset($form_state['values']['account']['pass']) && !empty($form_state['values']['account']['pass'])) {
- $pass = $form_state['values']['account']['pass'];
- // $edit['pass'] = 'New password';
- user_save($user, array('pass' => $pass));
- // require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
- // $user->pass = user_hash_password(trim($pass));
- // // Recreate sessions.
- // drupal_session_destroy_uid($user->uid);
- // if ($user->uid == $GLOBALS['user']->uid) {
- // drupal_session_regenerate();
- // }
- }
- dsm($user);
- // 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];
- }
- dsm('finish');
- dsm($user);
- // 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