public function getRight($user_id, $contact_id) { if ($user_id) { $user = new waUser($user_id); } else { $user = wa()->getUser(); } $user_id = $user->getId(); if ($user->getRights('contacts', 'edit')) { $data = array(); foreach ((array) $contact_id as $c_id) { $u = new waUser($c_id); $data[$c_id] = $user->isAdmin() || !$u->isAdmin() ? 'write' : 'read'; } } else { $data = array_fill_keys((array) $contact_id, 'read'); $m = new waContactModel(); $allowed = array_keys($m->select('id')->where("create_contact_id = {$user_id}\n AND id IN(" . implode(',', (array) $contact_id) . ")")->fetchAll('id')); foreach ($allowed as $c) { if (isset($data[$c])) { $data[$c] = 'write'; } else { $data[$c] = false; } } } if (is_array($contact_id)) { return $data; } else { return isset($data[$contact_id]) ? $data[$contact_id] : false; } }
protected function addRightsCondition(waUser $user) { if ($user->isAdmin('photos')) { $on = "(pr.group_id >= 0 OR pr.group_id = -" . $user->getId() . ")"; } else { $group_ids = $user->getGroupIds(); $on = 'pr.group_id IN (' . implode(",", $group_ids) . ')'; } $this->joins[] = array('table' => 'photos_photo_rights', 'alias' => 'pr', 'on' => 'p.id = pr.photo_id AND ' . $on); }