public static function slug($userID = 0, $username = '', $escape = false) { $slug = users_helper::id($userID, $username, $escape); $slug = $slug ? 'profile/' . $slug : ''; return $slug; }
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; }