Exemple #1
0
 public function getUsers($fields = false, $typeID = 0, $columns = array(), $items = array(), $order = false, $limit = 15, $params = array())
 {
     // Do we have only one user type?
     if (!$typeID && count(config::item('usertypes', 'core', 'keywords')) == 1) {
         $typeID = key(config::item('usertypes', 'core', 'keywords'));
     }
     // Do we need to count users?
     if (isset($params['count']) && $params['count']) {
         if ($typeID) {
             $total = $this->fields_model->countRows('profile', true, $columns, $items, array('table_type' => config::item('usertypes', 'core', 'keywords', $typeID)));
         } else {
             $total = $this->fields_model->countRows('user', false, $columns);
         }
         return $total;
     }
     $params['select_columns'] = "`f`.`service_id` AS `picture_file_service_id`, `f`.`path` AS `picture_file_path`, `f`.`name` AS `picture_file_name`, `f`.`extension` AS `picture_file_ext`, `f`.`width` AS `picture_file_width`, `f`.`height` AS `picture_file_height`,\n\t\t\t`f`.`size` AS `picture_file_size`, `f`.`post_date` AS `picture_file_post_date`, `f`.`modify_date` AS `picture_file_modify_date`";
     $params['join_tables'] = "LEFT JOIN `:prefix:storage_files` AS `f` ON `u`.`picture_id`=`f`.`file_id`";
     if ($typeID) {
         $params['select_columns'] .= ', `u`.*';
         $params['type_id'] = $typeID;
         $params['table_type'] = config::item('usertypes', 'core', 'keywords', $typeID);
         $params['prefix_order'] = 'u';
     }
     // Get users
     $users = $this->fields_model->getRows($typeID ? 'profile' : 'user', $typeID ? true : false, $typeID ? $fields : false, $columns, $items, $order, $limit, $params);
     $types = array();
     // Loop through users
     foreach ($users as $userID => $user) {
         // Do we need to fetch profiles?
         if ($fields && !$typeID) {
             // Does user type ID exist already?
             if (!isset($types[$user['type_id']])) {
                 $types[$user['type_id']] = array();
             }
             // Assign user type ID and user ID
             $types[$user['type_id']][$user['user_id']] = true;
         }
         // Do we have any field names set?
         if (!config::item('usertypes', 'core', 'fields', $user['type_id'], 1)) {
             $user['name1'] = $user['username'];
             $user['name2'] = '';
         }
         $users[$userID]['name'] = users_helper::name($user['name1'], $user['name2'], isset($params['escape']) ? $params['escape'] : true);
         $users[$userID]['group_name'] = config::item('usergroups', 'core', $user['group_id']);
         $users[$userID]['type_name'] = config::item('usertypes', 'core', 'names', $user['type_id']);
         if (!isset($params['escape']) || $params['escape']) {
             $users[$userID]['name1'] = text_helper::entities($user['name1']);
             $users[$userID]['name2'] = text_helper::entities($user['name2']);
             $users[$userID]['group_name'] = text_helper::entities($users[$userID]['group_name']);
             $users[$userID]['type_name'] = text_helper::entities($users[$userID]['type_name']);
         }
         $users[$userID]['slug'] = users_helper::slug($user['user_id'], $user['username']);
         $users[$userID]['slug_id'] = users_helper::id($user['user_id'], $user['username']);
         $users[$userID]['online'] = $user['visit_date'] >= date_helper::now() - 60 * 5 ? 1 : 0;
     }
     // Do we need to fetch profiles?
     if ($fields && !$typeID) {
         $profiles = array();
         unset($params['select_columns'], $params['join_tables']);
         // Loop through user types
         foreach ($types as $typeID => $userIDs) {
             // Get user profiles
             $profiles = $this->getProfiles(array_keys($userIDs), $typeID, $fields, $params);
             // Do we have any profiles?
             if ($profiles) {
                 // Loop through users
                 foreach ($users as $userID => $user) {
                     // Does user ID exist?
                     if (isset($profiles[$user['user_id']])) {
                         // Merge user and profile fields
                         $users[$userID] = array_merge($user, $profiles[$user['user_id']]);
                     }
                 }
             }
         }
     }
     // Do we need to fetch configuration?
     if (isset($params['config']) && $params['config']) {
         // Get settings
         $settings = $this->getUsersConfig(array_keys($users));
         foreach ($settings as $userID => $setting) {
             $users[$userID]['config'] = $setting;
         }
     }
     return $users;
 }