Search code examples
drupal-7

Add custom column in-between people/users admin page table drupal 7


I have created a custom column to display last user changed time, but I need this field to be insert before OPERATIONS column. Below is my code which append my custom field at the end.

function meme_user_update_form_user_admin_account_alter(&$form, &$form_state, $form_id) {
  $changed_column = array('changed' => array(
    'data'  => 'LAST CHANGED',
    'field' => 'u.changed'
  ));
  $form['accounts']['#header'] = $form['accounts']['#header'] + $changed_column;
  foreach ($form['accounts']['#options'] as $key => $row) {
    $user_object = user_load($key);
    $user_language = ($user_object->language) ? $user_object->language : LANGUAGE_NONE;
    $form['accounts']['#options'][$key]['changed'] = $user_object->field_user_changed[$user_language][0]['value'];
  }
}

Solution

  • Found an answer, I think this might help someone.

    function meme_user_update_form_user_admin_account_alter(&$form, &$form_state, $form_id) {
      $changed_column = array(
        'data'  => 'LAST CHANGED',
        'field' => 'u.changed'
      );
      $operation_column = array_pop($form['accounts']['#header']);
    
      $form['accounts']['#header']['changed'] = $changed_column;
      $form['accounts']['#header']['operations'] = $operation_column;
    
      foreach ($form['accounts']['#options'] as $key => $row) {
        $user_object = user_load($key);
        $user_language = ($user_object->language) ? $user_object->language : LANGUAGE_NONE;
    
        $operation_column = array_pop($form['accounts']['#options'][$key]);
    
        $form['accounts']['#options'][$key]['changed'] = $user_object->field_user_changed[$user_language][0]['value'];
        $form['accounts']['#options'][$key]['operations']['data'] = $operation_column;
      }
    }