Changeset 25196


Ignore:
Timestamp:
Oct 28, 2013, 6:53:36 PM (10 years ago)
Author:
mistic100
Message:

feature 2976: add 'display' parameter for pwg.users.getList

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/ws_functions.inc.php

    r25195 r25196  
    34493449  }
    34503450 
     3451  $display = array('u.'.$conf['user_fields']['id'] => 'id');
     3452 
     3453  if ($params['display'] != 'none')
     3454  {
     3455    $params['display'] = explode(',', $params['display']);
     3456   
     3457    if (in_array('all', $params['display']))
     3458    {
     3459      $params['display'] = array_merge($params['display'], array(
     3460        'username','email','status','level','groups','language','theme',
     3461        'nb_image_page','recent_period','expand','show_nb_comments','show_nb_hits',
     3462        'enabled_high',
     3463        ));
     3464    }
     3465    else if (in_array('basics', $params['display']))
     3466    {
     3467      $params['display'] = array_merge($params['display'], array(
     3468        'username','email','status','level','groups',
     3469        ));
     3470    }
     3471   
     3472    if (in_array('username', $params['display']))
     3473    {
     3474      $display['u.'.$conf['user_fields']['username']] = 'username';
     3475    }
     3476    if (in_array('email', $params['display']))
     3477    {
     3478      $display['u.'.$conf['user_fields']['email']] = 'email';
     3479    }
     3480   
     3481    $ui_fields = array(
     3482      'status','level','language','theme','nb_image_page','recent_period','expand',
     3483      'show_nb_comments','show_nb_hits','enabled_high',
     3484      );
     3485    foreach ($ui_fields as $field)
     3486    {
     3487      if (in_array($field, $params['display']))
     3488      {
     3489        $display['ui.'.$field] = $field;
     3490      }
     3491    }
     3492  }
     3493  else
     3494  {
     3495    $params['display'] = array();
     3496  }
     3497
    34513498  $query = '
    3452 SELECT DISTINCT
    3453     u.'.$conf['user_fields']['id'].' AS id,
    3454     u.'.$conf['user_fields']['username'].' AS username,
    3455     u.'.$conf['user_fields']['email'].' AS email,
    3456     ui.status,
    3457     ui.level,
    3458     "" AS groups
     3499SELECT DISTINCT ';
     3500
     3501  $first = true;
     3502  foreach ($display as $field => $name)
     3503  {
     3504    if (!$first) $query.= ', ';
     3505    else $first = false;
     3506    $query.= $field .' AS '. $name;
     3507  }
     3508  if (in_array('groups', $params['display']))
     3509  {
     3510    if (!$first) $query.= ', ';
     3511    $query.= '"" AS groups';
     3512  }
     3513 
     3514  $query.= '
    34593515  FROM '.USERS_TABLE.' AS u
    34603516    INNER JOIN '.USER_INFOS_TABLE.' AS ui
     
    34713527  $users = hash_from_query($query, 'id');
    34723528 
    3473   if (count($users) > 0)
     3529  if ( count($users) > 0 and in_array('groups', $params['display']) )
    34743530  {
    34753531    $query = '
     
    36193675      return new PwgError(403, 'Only webmasters can grant "webmaster" status');
    36203676    }
    3621     if ( !in_array($params['status'], array('generic','normal','admin','webmaster')) )
     3677    if ( !in_array($params['status'], array('guest','generic','normal','admin','webmaster')) )
    36223678    {
    36233679      return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid status');
     
    37333789  }
    37343790
    3735   return $service->invoke('pwg.users.getList', array('user_id' => $params['user_id']));
     3791  return $service->invoke('pwg.users.getList', array(
     3792    'user_id' => $params['user_id'],
     3793    'display' => 'basics,'.implode(',', array_keys($updates_infos)),
     3794    ));
    37363795}
    37373796
  • trunk/ws.php

    r25195 r25196  
    812812        'order' =>      array('default'=>'id',
    813813                              'info'=>'id, username, level, email'),
    814         ),
    815       '<b>Admin only.</b> Retrieves a list of all the users.',
     814        'display' =>    array('default'=>'basics',
     815                              'info'=>'all,basics,none,username,email,status,level,groups,language,theme,nb_image_page,recent_period,expand,show_nb_comments,show_nb_hits,enabled_high'),
     816        ),
     817      '<b>Admin only.</b> Retrieves a list of all the users.
     818<br>"display" controls which data are returned, "basics" stands for "username,email,status,level,groups"',
    816819      null,
    817820      array('admin_only'=>true)
     
    853856        'email' =>            array('flags'=>WS_PARAM_OPTIONAL),
    854857        'status' =>           array('flags'=>WS_PARAM_OPTIONAL,
    855                                     'info'=>'generic,normal,admin'),
     858                                    'info'=>'guest,generic,normal,admin,webmaster'),
    856859        'level'=>             array('flags'=>WS_PARAM_OPTIONAL,
    857860                                    'maxValue'=>max($conf['available_permission_levels']),
Note: See TracChangeset for help on using the changeset viewer.