Advertisement
Guest User

Untitled

a guest
Apr 11th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.00 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. * Implements hook_menu().
  5. */
  6. function alumni_users_menu() {
  7. $items = array();
  8.  
  9. $items['alumni-list'] = array(
  10. 'title' => 'Alumni list',
  11. 'type' => MENU_CALLBACK,
  12. 'page callback' => 'drupal_get_form',
  13. 'page arguments' => array('alumni_users_list_form'),
  14. 'access arguments' => array('access alumni listing page'),
  15. );
  16.  
  17. $items['alumni/user/edit'] = array(
  18. 'title' => 'Edit alumni user',
  19. 'type' => MENU_CALLBACK,
  20. 'page callback' => 'drupal_get_form',
  21. 'page arguments' => array('alumni_users_profile_edit'),
  22. 'access callback' => 'alumni_users_profile_edit_access',
  23. );
  24.  
  25. $items['alumni/test'] = array(
  26. 'title' => 'Edit alumni user',
  27. 'type' => MENU_CALLBACK,
  28. 'page callback' => 'drupal_get_form',
  29. 'page arguments' => array('alumni_user_get_pass_field'),
  30. // 'access callback' => 'alumni_users_profile_edit_access',
  31. );
  32.  
  33. return $items;
  34. }
  35.  
  36. /**
  37. * Implements hook_menu_alter().
  38. */
  39. function alumni_users_menu_alter(&$items) {
  40. // View user profile page.
  41. $items['user/%']['page callback'] = 'alumni_users_profile_view';
  42. $items['user/%']['page arguments'] = array(1);
  43. $items['user/%']['access callback'] = 'alumni_users_profile_edit_access';
  44.  
  45. // Edit user profile.
  46. $items['user/%/edit']['page callback'] = 'drupal_get_form';
  47. $items['user/%/edit']['page arguments'] = array('alumni_users_profile_edit');
  48. $items['user/%/edit']['access callback'] = 'alumni_users_profile_edit_access';
  49. }
  50.  
  51. /**
  52. * Implements hook_permission().
  53. */
  54. function alumni_users_permission() {
  55.  
  56. return array(
  57. 'access alumni listing page' => array(
  58. 'title' => t('Alumni listing page'),
  59. 'description' => t('Access the alumni listing page'),
  60. ),
  61. 'access to alumni profile' => array(
  62. 'title' => t('View alumni profile page'),
  63. 'description' => t('View alumni profile page'),
  64. ),
  65. 'administer alumni profile page' => array(
  66. 'title' => t('Administer alumni profile page'),
  67. 'description' => t('Administer alumni profile page'),
  68. ),
  69. );
  70. }
  71.  
  72. /**
  73. * Implement hook_theme().
  74. */
  75. function alumni_users_theme($existing, $type, $theme, $path) {
  76.  
  77. $items['alumni_users_display'] = array(
  78. 'template' => 'alumni-user-display',
  79. 'path' => drupal_get_path('module', 'alumni_users') . '/tpl',
  80. 'variables' => array(
  81. 'nickname' => NULL,
  82. 'fullname' => NULL,
  83. 'veteran' => NULL,
  84. 'branch_of_service' => NULL,
  85. 'business_name' => NULL,
  86. 'website' => NULL,
  87. 'curriculums' => NULL,
  88. 'msglink' => NULL,
  89. 'awards_credentials' => NULL,
  90. 'alumniorfellow' => NULL,
  91. ),
  92. );
  93.  
  94. $items['alumni_users_profile_edit'] = array(
  95. 'render element' => 'form',
  96. 'template' => 'alumni-user-profile-edit',
  97. 'path' => drupal_get_path('module', 'alumni_users') . '/tpl',
  98. );
  99.  
  100. $items['alumni_users_profile_view'] = array(
  101. 'template' => 'alumni-user-profile-view',
  102. 'path' => drupal_get_path('module', 'alumni_users') . '/tpl',
  103. 'variables' => array('alumni_user' => NULL),
  104. );
  105.  
  106. return $items;
  107. }
  108.  
  109. /**
  110. * Access callback for user account editing.
  111. */
  112. function alumni_users_profile_edit_access() {
  113. global $user;
  114.  
  115. $current_user = $user->uid && user_access('change own username');
  116. $alumni_profile_admin = user_access('administer alumni profile page');
  117.  
  118. return ($current_user || user_access('administer users') || $alumni_profile_admin);
  119. }
  120.  
  121. /**
  122. * Alumni list form.
  123. */
  124. function alumni_users_list_form($form, &$form_state) {
  125.  
  126. $form['alumni_search'] = array(
  127. '#type' => 'textfield',
  128. '#title' => t('Alumni name'),
  129. '#size' => 60,
  130. '#maxlength' => 128,
  131. );
  132.  
  133. $form['alumni_serch_submit'] = array(
  134. '#type' => 'submit',
  135. '#value' => t('Find alumni')
  136. );
  137.  
  138. $form['alumni_serch_reset'] = array(
  139. '#type' => 'submit',
  140. '#value' => t('Reset')
  141. );
  142.  
  143. $completed_curriculum = db_select('contentenrollment', 'ce')->extend('PagerDefault');
  144. $completed_curriculum->innerJoin('curriculum', 'c', 'c.CurriculumID = ce.contentID');
  145. $completed_curriculum->innerJoin('users', 'u', 'u.uid = ce.userID');
  146. $completed_curriculum->fields('ce', array('userID'));
  147. $completed_curriculum->isNotNull('ce.CompletionDate')
  148. ->condition('u.uid', 1, '!=');
  149.  
  150. //add condition if need search user
  151. if (isset($form_state['values']['alumni_search']) && ($form_state['values']['alumni_search'])) {
  152.  
  153. $variable_search = db_or();
  154. $completed_curriculum->leftJoin('field_data_field_user_last_name', 'uln', 'uln.entity_id = ce.userID');
  155. $completed_curriculum->leftJoin('field_data_field_user_first_name', 'ufn', 'ufn.entity_id = ce.userID');
  156. $variable_search->condition('u.name', '%' . db_like($form_state['values']['alumni_search']) . '%', 'LIKE');
  157. $variable_search->condition('uln.field_user_last_name_value', '%' . db_like($form_state['values']['alumni_search']) . '%', 'LIKE');
  158. $variable_search->condition('ufn.field_user_first_name_value', '%' . db_like($form_state['values']['alumni_search']) . '%', 'LIKE');
  159. $completed_curriculum->condition($variable_search);
  160.  
  161. } else {
  162.  
  163. $completed_curriculum->distinct()
  164. ->orderBy('ce.userID')
  165. ->limit(5);
  166. }
  167.  
  168. $user_ids = $completed_curriculum->execute()->fetchCol();
  169. $alumni_list = user_load_multiple($user_ids);
  170. $alumni_displays = alumni_users_create_alumni_list($alumni_list);
  171.  
  172. $form['alumni_table'] = array(
  173. '#markup' => theme('item_list', array('items' => $alumni_displays, 'title' => '', 'type' => 'ul', 'attributes' => array())),
  174. );
  175.  
  176. if (!isset($form_state['values']['alumni_search']) || (!$form_state['values']['alumni_search'])) {
  177. $form['pager'] = array('#markup' => theme('pager'));
  178. }
  179.  
  180. return $form;
  181. }
  182.  
  183.  
  184. /**
  185. * Alumni list form validate.
  186. */
  187. function alumni_users_list_form_validate($form, &$form_state) {
  188.  
  189. $form_state['values']['alumni_search'] = trim($form_state['values']['alumni_search']);
  190. if (($form_state['values']['alumni_search']) && (strlen($form_state['values']['alumni_search']) < 3)) {
  191. form_set_error('alumni_search', t('3 characters - minimum for search'));
  192. }
  193.  
  194. }
  195.  
  196. /*
  197. * Alumni list form submit.
  198. */
  199. function alumni_users_list_form_submit($form, &$form_state) {
  200.  
  201. if ($form_state['clicked_button']['#id'] === 'edit-alumni-serch-reset') {
  202. unset($form_state['values']['alumni_search']);
  203. $form_state['input']['alumni_search'] = '';
  204. }
  205.  
  206. $form_state['rebuild'] = TRUE;
  207. }
  208.  
  209. /*
  210. * Implements hook_FORM_ID_form_alter().
  211. */
  212. function alumni_users_form_alter(&$form, &$form_state, $form_id) {
  213. global $user;
  214.  
  215. if($form_id == 'user_profile_form') {
  216. // hide alumni editing field group.
  217. if (!in_array('alumni', $user->roles) && !in_array('administrator', $user->roles)) {
  218. field_group_hide_field_groups($form, array('group_alumni_profile'));
  219. }
  220.  
  221. $form['field_branch_of_service_upd']['#states'] = array(
  222. 'visible' => array(':input[name="field_veteran[und]"]' => array('value' => '0'))
  223. );
  224. }
  225.  
  226. // Add form '#states'.
  227. if($form_id == 'alumni_user_profile_edit') {
  228. $form['field_branch_of_service_upd']['field_branch_of_service_upd']['#states'] = array(
  229. 'visible' => array(':input[name="field_veteran[und]"]' => array('value' => '0'))
  230. );
  231.  
  232. $form['field_branch_of_service_upd_hide']['#states'] = array(
  233. 'visible' => array(':input[name="field_veteran[und]"]' => array('value' => '0'))
  234. );
  235. }
  236. }
  237.  
  238. /*
  239. * Implements hook_user_load().
  240. */
  241. function alumni_users_user_load($users) {
  242. // add field_virtual_curriculum
  243. foreach ($users as $user_id => $user_obj) {
  244. $curriclum_list = db_select('contentenrollment', 'ce');
  245. $curriclum_list->leftJoin('curriculum', 'c', 'c.CurriculumID = ce.contentID');
  246.  
  247. $sql = $curriclum_list->fields('c', array('CurriculumID', 'Title'))
  248. ->condition('ce.userID', $user_obj->uid, '=')
  249. ->isNotNull('ce.CompletionDate')
  250. ->execute()
  251. ->fetchAllKeyed();
  252.  
  253. $user_obj->field_virtual_curriculum = $sql;
  254. }
  255. }
  256.  
  257. /**
  258. * Create alumni table array.
  259. */
  260. function alumni_users_create_alumni_list($users) {
  261.  
  262. $alumni_displays = array();
  263. foreach ($users as $current_alumni) {
  264.  
  265. $alumni_wrapper = entity_metadata_wrapper('user', $current_alumni);
  266. $name = $alumni_wrapper->name->value();
  267. $full_name = $alumni_wrapper->field_user_first_name->value() . ' ' . $alumni_wrapper->field_user_last_name->value();
  268. $veteran = $alumni_wrapper->field_veteran->value() ? 'No' : 'Yes';
  269. $branch_of_service = $alumni_wrapper->field_branch_of_service_upd->value();
  270. $business_name = $alumni_wrapper->field_business_name2->value();
  271. $website = $alumni_wrapper->field_website->value();
  272. $msglink = l(t('Send this user a private message'), 'messages/new/' . $alumni_wrapper->uid->value(), array('query' => array('destination' => 'user/' . $alumni_wrapper->uid->value())));
  273. $awards_credentials = $alumni_wrapper->field_awards_and_credentials->value();
  274.  
  275. //create curriculum list
  276. $curriculum_list = array();
  277. foreach ($current_alumni->field_virtual_curriculum as $curriculum_id => $current_curriculum) {
  278. $curriculum_sting = 'ID: ' . $curriculum_id . '; Title: ' . $current_curriculum;
  279. $curriculum_list[] = array('data' => $curriculum_sting);
  280. }
  281. $curriculums = theme('item_list', array('items' => $curriculum_list, 'title' => '', 'type' => 'ul', 'attributes' => array()));
  282.  
  283. $alumniorfellow = ($curriculum_list) ? 'Alumni' : 'Fellow';
  284.  
  285. $alumni_displays[] = theme('alumni_users_display', array(
  286. 'nickname' => $name,
  287. 'fullname' => $full_name,
  288. 'veteran' => $veteran,
  289. 'branch_service' => $branch_of_service,
  290. 'business_name' => $business_name,
  291. 'website' => $website,
  292. 'curriculums' => $curriculums,
  293. 'awards_credentials' => $awards_credentials,
  294. 'msglink' => $msglink,
  295. 'alumniorfellow' => $alumniorfellow,
  296. ));
  297. }
  298.  
  299. return $alumni_displays;
  300. }
  301.  
  302. /**
  303. * Get standart password user field.
  304. */
  305. function alumni_user_get_pass_field() {
  306. global $user;
  307.  
  308. module_load_include('inc', 'user', 'user.pages');
  309. $form = drupal_get_form('user_profile_form', $user);
  310.  
  311. // $request_new = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
  312. // $current_pass_description = t('Enter your current password to change the %pass. !request_new.', array('%pass' => t('Password'), '!request_new' => $request_new));
  313. // $form['account']['current_pass']['#description'] = $current_pass_description;
  314. //dsm($form);
  315. unset(
  316. $form['account']['name'],
  317. $form['account']['mail'],
  318. $form['account']['status'],
  319. $form['account']['roles'],
  320. $form['locale'],
  321. $form['l10n_client'],
  322. $form['picture'],
  323. $form['overlay_control'],
  324. $form['contact'],
  325. $form['timezone'],
  326. $form['ckeditor'],
  327. $form['metatags'],
  328. $form['redirect']
  329. );
  330.  
  331. foreach ($form as $key => $val) {
  332. if (
  333. $key == '#user' ||
  334. $key == '#validate' ||
  335. $key == 'account' ||
  336. $key == 'signature_settings' ||
  337. $key == '#entity' ||
  338. $key == '#entity_type' ||
  339. $key == '#bundle'
  340. ) continue;
  341.  
  342.  
  343.  
  344.  
  345.  
  346. unset($form[$key]);
  347. }
  348. //dsm($form);
  349. return $form;
  350. }
  351. /**
  352. * Alumni profile user fields list.
  353. */
  354. function alumni_users_prifile_fields() {
  355. $form_fields = array(
  356. 'field_user_first_name' => array('title' => ''),
  357. 'field_user_last_name' => array('title' => ''),
  358. 'field_veteran' => array('title' => ''),
  359. 'field_branch_of_service_upd' => array('title' => ''),
  360. 'field_business_name2' => array('title' => ''),
  361. 'field_website' => array('title' => ''),
  362. 'field_home_number' => array('title' => ''),
  363. 'field_confirm_email' => array('title' => t('Email')),
  364. 'field_biography_and_descr' => array('title' => ''),
  365. 'field_awards_and_credentials' => array('title' => ''),
  366. 'field_related_links_' => array('title' => ''),
  367. );
  368.  
  369. return $form_fields;
  370. }
  371.  
  372. /**
  373. * Load form fields.
  374. */
  375. function alumni_users_load_field($field_name, $form, $form_state, $title = '') {
  376. if ($field_name) {
  377. global $user;
  378.  
  379. $user = user_load($user->uid);
  380. $entity_type = 'user';
  381. $bundle_name = 'user';
  382.  
  383. $field = field_info_field($field_name);
  384. $items = field_get_items($entity_type, $user, $field_name);
  385. $instance = field_info_instance($entity_type, $field_name, $bundle_name);
  386. $form_field = field_default_form($entity_type, $user, $field, $instance, LANGUAGE_NONE, $items, $form, $form_state);
  387.  
  388. // Change default field title.
  389. if($title) {
  390. $value_key = isset($form_field[$field_name]['und'][0]['value']['#title']) ? 'value' : 'email';
  391. $form_field[$field_name]['und'][0][$value_key]['#title'] = $title;
  392. }
  393.  
  394. return $form_field;
  395. }
  396. }
  397.  
  398. /**
  399. * Load user data.
  400. */
  401. function alumni_users_load_data($uid) {
  402. $data = array();
  403.  
  404. $user = user_load($uid);
  405. // Load fields list.
  406. $fields = array_keys(alumni_users_prifile_fields());
  407. // Load user entity.
  408. $wpr = entity_metadata_wrapper('user', $user);
  409.  
  410. foreach ($fields as $field) {
  411. // Get value from textarea field.
  412. if ($field == 'field_related_links_') {
  413. $data[$field] = $wpr->{$field}->value()['value'];
  414. continue;
  415. }
  416.  
  417. $data[$field] = $wpr->{$field}->value();
  418. }
  419.  
  420. return $data;
  421. }
  422.  
  423. /**
  424. * Load form fields visability settings.
  425. */
  426. function alumni_users_field_settings($uid) {
  427. $fields_settings = db_select('alumni_settings', 'als')
  428. ->fields('als', array('hide_settings'))
  429. ->condition('als.uid', $uid)
  430. ->execute()->fetchField();
  431.  
  432. return $fields_settings ? unserialize($fields_settings) : array();
  433. }
  434.  
  435. /**
  436. * View user profile.
  437. */
  438. function alumni_users_profile_view($uid) {
  439. if(!$uid) { return FALSE; }
  440. if(!is_numeric($uid)) { $uid = user_load_multiple(array(), array('name' => $uid))->uid; }
  441.  
  442. if(user_access('administer alumni profile page') || user_access('administer users')) {
  443. $data = alumni_users_load_data($uid);
  444. }
  445. else {
  446. // Hiding fields selected by the user.
  447. $fields_settings = alumni_users_field_settings($uid);
  448. $data = alumni_users_load_data($uid);
  449.  
  450. if(!empty($fields_settings) && !empty($data)) {
  451. foreach ($data as $field => &$val) {
  452. if(isset($fields_settings[$field]) && $fields_settings[$field] == 1) {
  453. $data[$field] = '';
  454. }
  455. }
  456. }
  457. }
  458.  
  459. $no_data = t('No information about the user');
  460. return isset($data) ? theme('alumni_users_profile_view', array('alumni_user' => $data)) : $no_data;
  461. }
  462.  
  463. /**
  464. * Edit user profile form.
  465. */
  466. function alumni_users_profile_edit($form, &$form_state) {
  467. global $user;
  468. ///alumni_user_get_pass_field();
  469. // Alumni user profile fields.
  470. $form_fields = alumni_users_prifile_fields();
  471.  
  472. // Load fields visability settings.
  473. $fields_settings = alumni_users_field_settings($user->uid);
  474.  
  475. // Pass fields.
  476. $pass = alumni_user_get_pass_field();
  477.  
  478. $form = array();
  479. $form['#tree'] = TRUE;
  480. $form['#parents'] = array();
  481.  
  482. // Load fields from user profile to this form.
  483. foreach ($form_fields as $field => $field_val) {
  484. $form[$field] = alumni_users_load_field($field, $form, $form_state, $field_val['title']);
  485. $form[$field . '_hide'] = array(
  486. '#type' => 'checkboxes',
  487. '#title' => '',
  488. '#options' => array(1 => ''),
  489. '#default_value' => (isset($fields_settings[$field]) && $fields_settings[$field] == 1) ? array(1) : array(),
  490. );
  491. }
  492.  
  493. // array_splice($form, 3, 0, $pass);
  494. $form += $pass;
  495. $form['submit'] = array(
  496. '#type' => 'submit',
  497. '#value' => 'Submit',
  498. );
  499. dsm($form);
  500. dsm(alumni_user_get_pass_field());
  501.  
  502. return $form;
  503. }
  504.  
  505. /**
  506. * Edit user profile form submit.
  507. */
  508. function alumni_users_profile_edit_submit($form, &$form_state) {
  509. global $user;
  510. dsm($form_state);
  511. // Alumni user profile fields.
  512. $form_fields = array_keys(alumni_users_prifile_fields());
  513.  
  514. // Added form values to user object and getting visability settings.
  515. $visability = array();
  516. $user = user_load($user->uid);
  517. foreach ($form_fields as $field) {
  518. if (!isset($form_state['values'][$field]['und'][0])) continue;
  519. $value_key = key($form_state['values'][$field]['und'][0]);
  520. // Add new field values to user profile.
  521. $user->{$field}['und'][0][$value_key] = $form_state['values'][$field]['und'][0][$value_key];
  522. // Creating profile fields visability settings.
  523. $visability[$field] = $form_state['values'][$field . '_hide'][1];
  524. }
  525.  
  526. // Update user profile information.
  527. user_save($user, array());
  528.  
  529. // Saving fields visibility settings.
  530. db_merge('alumni_settings')
  531. ->key(array('uid' => $user->uid))
  532. ->fields(array('hide_settings' => serialize($visability)))
  533. ->execute();
  534.  
  535. drupal_set_message(t('The changes have been saved.'));
  536. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement