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);
 }