| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | <?php/** * @file * Associate locations with users. *//** * Implements hook_permission(). */function location_user_permission() {  return array(    'administer user locations' => array(      'title' => t('administer user locations'),    ),    'view own user location' => array(      'title' => t('view own user location'),    ),    'view all user locations' => array(      'title' => t('view all user locations'),    ),    'set own user location' => array(      'title' => t('set own user location'),    ),  );}/** * Implements hook_form_FORM_ID_alter(). * Alter the user_admin_settings form. */function location_user_form_user_admin_settings_alter(&$form, &$form_state, $form_id) {  if (isset($form_state['values']['location_settings_user'])) {    $settings = $form_state['values']['location_settings_user'];  }  else {    $settings = variable_get('location_settings_user', array());  }  $form['location_settings_user'] = location_settings($settings);  $form['location_settings_user']['#title'] = t('User locations');  $form['location_settings_user']['form']['register'] = array(    '#type' => 'checkbox',    '#title' => t('Collect during registration'),    '#default_value' => isset($settings['form']['register']) ? $settings['form']['register'] : FALSE,    '#weight' => -5,  );}/** * Implements hook_user_load(). * * @todo *   Make this load all locations at once instead of running separate queries *   for each user to enhance performance. *   location_load_locations() and location_load_location() will need *   changing to make this happen. */function location_user_user_load($users) {  foreach ($users as $uid => $user) {    $users[$uid]->locations = location_load_locations($user->uid, 'uid');    $users[$uid]->location = count($users[$uid]->locations) ? $users[$uid]->locations[0] : array();  }}/** * Implements hook_user_insert(). */function location_user_user_insert(&$edit, $account, $category) {  if (!empty($edit['locations'])) {    location_save_locations($edit['locations'], array('uid' => $account->uid));  }  unset($edit['locations']);}/** * Implements hook_user_update(). */function location_user_user_update(&$edit, $account, $category) {  if (!empty($edit['locations'])) {    location_save_locations($edit['locations'], array('uid' => $account->uid));  }  unset($edit['locations']);}/** * Implements hook_user_delete(). */function location_user_user_delete($account) {  $locations = array();  location_save_locations($locations, array('uid' => $account->uid));}/** * Implements hook_user_view(). */function location_user_user_view($account, $view_mode, $langcode) {  global $user;  if ((($user->uid == $account->uid) && user_access('view own user location')) || user_access('administer users') || user_access('view all user locations') || user_access('administer user locations')) {    if (variable_get('location_display_location', 1) && isset($account->locations) && count($account->locations)) {      $settings = variable_get('location_settings_user', array());      $account->content['locations'] = location_display($settings, $account->locations);    }  }}/** * Implements hook_form_FORM_ID_alter(). * Alter the user profile form. */function location_user_form_user_profile_form_alter(&$form, &$form_state, $form_id) {  global $user;  if ($form['#user_category'] == 'account') {    $account = $form['#user'];    if ((($user->uid == $account->uid) && user_access('set own user location')) || user_access('administer user locations')) {      $settings = variable_get('location_settings_user', array());      $form['locations'] = location_form($settings, $account->locations);    }  }}/** * Implements hook_form_FORM_ID_alter(). * Alter the user registration form. */function location_user_form_user_register_form_alter(&$form, &$form_state, $form_id) {  $settings = variable_get('location_settings_user', array());  if (isset($settings['form']['register']) && $settings['form']['register']) {    $form['locations'] = location_form($settings, array());  }}/** * Implements hook_locationapi(). */function location_user_locationapi(&$obj, $op, $a3 = NULL, $a4 = NULL, $a5 = NULL) {  switch ($op) {    case 'instance_links':      foreach ($obj as $k => $v) {        if ($v['uid'] != 0) {          $account = user_load($v['uid']);          $obj[$k]['href'] = 'user/' . $v['uid'];          $obj[$k]['title'] = $account->name;          $obj[$k]['type'] = t('User location');        }      }  }}
 |