public function getUser($id = false) { $this->useCache("users.user.{$id}"); $this->select("u.nickname", 'inviter_nickname'); $this->joinLeft('{users}', 'u', 'u.id = i.inviter_id'); if ($id) { $user = $this->getItemById('{users}', $id); } else { $user = $this->getItem('{users}'); } if (!$user) { return false; } $user['groups'] = cmsModel::yamlToArray($user['groups']); $user['theme'] = cmsModel::yamlToArray($user['theme']); $user['notify_options'] = cmsModel::yamlToArray($user['notify_options']); $user['privacy_options'] = cmsModel::yamlToArray($user['privacy_options']); $user['is_online'] = cmsUser::userIsOnline($user['id']); return $user; }
public function getContact($user_id, $contact_id) { $this->select('u.id', 'id'); $this->select('u.nickname', 'nickname'); $this->select('u.date_log', 'date_log'); $this->select('u.avatar', 'avatar'); $this->select('u.is_admin', 'is_admin'); $this->select('u.privacy_options', 'privacy_options'); $this->select('COUNT(g.user_id)', 'is_ignored'); $this->join('{users}', 'u', 'u.id = i.contact_id'); $this->joinLeft('{users}_ignors', 'g', "g.ignored_user_id = i.contact_id AND g.user_id = '{$user_id}'"); $this->filterEqual('user_id', $user_id); $this->filterEqual('contact_id', $contact_id); $this->groupBy('i.id'); return $this->getItem('{users}_contacts', function ($item, $model) { $item['privacy_options'] = cmsModel::yamlToArray($item['privacy_options']); $item['is_online'] = cmsUser::userIsOnline($item['contact_id']); return $item; }); }
public function getUser($id = false) { $this->useCache("users.user.{$id}"); $this->select("IFNULL(c.name, '')", 'city_name'); $this->select("IFNULL(c.id, 0)", 'city_id'); $this->select("u.nickname", 'inviter_nickname'); $this->joinLeft('geo_cities', 'c', 'c.id = i.city'); $this->joinLeft('{users}', 'u', 'u.id = i.inviter_id'); if ($id) { $user = $this->getItemById('{users}', $id); } else { $user = $this->getItem('{users}'); } if (!$user) { return false; } $user['groups'] = cmsModel::yamlToArray($user['groups']); $user['theme'] = cmsModel::yamlToArray($user['theme']); $user['notify_options'] = cmsModel::yamlToArray($user['notify_options']); $user['privacy_options'] = cmsModel::yamlToArray($user['privacy_options']); $user['city'] = $user['city_id'] ? array('id' => $user['city_id'], 'name' => $user['city_name']) : false; $user['is_online'] = cmsUser::userIsOnline($user['id']); return $user; }
public function getCommentsModerators() { // сначала ищем юзеров, которым разрешено модерировать $moderators = cmsPermissions::getRulesGroupMembers('comments', 'is_moderator'); if (!$moderators) { // не нашли модераторов, получаем администраторов $moderators = $this->filterEqual('is_admin', 1)->selectList(array('i.id' => 'id', 'i.notify_options' => 'notify_options', 'i.email' => 'email', 'i.nickname' => 'nickname', 'i.avatar' => 'avatar'), true)->get('{users}', function ($item, $model) { $item['notify_options'] = cmsModel::yamlToArray($item['notify_options']); $item['is_online'] = cmsUser::userIsOnline($item['id']); return $item; }); } return $moderators; }
/** * Возвращает пользователей групп, для которых переданное правило включено * или установлено в значение $value * * @param string $controller Название компонента * @param string $name Название правила * @param mixed $value Значение правила. Если не передано, значение не учитывается * @param string $subject Субъект правила. Если не передан, то одинаков с компонентом * * @return array Массив пользователей с данными: id, email, nickname, avatar, notify_options, is_online */ static function getRulesGroupMembers($controller, $name, $value = false, $subject = false) { if (!$subject) { $subject = $controller; } $model = new cmsModel(); $rule = $model->filterEqual('controller', $controller)->filterEqual('name', $name)->getItem('perms_rules'); if (!$rule) { return array(); } $model->filterEqual('subject', $subject)->filterEqual('rule_id', $rule['id']); if ($value) { $model->filterEqual('value', $value); } $groups_ids = $model->selectOnly('group_id')->get('perms_users', function ($item, $model) { return $item['group_id']; }, 'group_id'); if (!$groups_ids) { return array(); } return $model->filterIn('group_id', $groups_ids)->selectOnly('user_id', 'id')->joinUser('user_id', array('u.notify_options' => 'notify_options', 'u.email' => 'email', 'u.nickname' => 'nickname', 'u.avatar' => 'avatar'))->get('{users}_groups_members', function ($item, $model) { $item['notify_options'] = cmsModel::yamlToArray($item['notify_options']); $item['is_online'] = cmsUser::userIsOnline($item['id']); return $item; }); }
public function getComment($id) { $this->select('u.nickname', 'user_nickname'); $this->select('u.avatar', 'user_avatar'); $this->joinUserLeft(); return $this->getItemById('comments', $id, function ($item, $model) { $item['user'] = array('id' => $item['user_id'], 'nickname' => $item['user_nickname'], 'is_online' => cmsUser::userIsOnline($item['user_id']), 'avatar' => $item['user_avatar']); return $item; }); }