public function getExtrasearchconds($search, $cond) { $baseset = $this->get($cond); $extracond = array(); foreach ($baseset as $row) { if (stripos($row->getRequester(), $search) !== false) { $extracond[] = array('AND' => array(array('requesterid' => array('mode' => '=', 'value' => $row->getRequesterid())), array('requestertype' => array('mode' => '=', 'value' => $row->getRequestertype())))); } elseif (stripos($row->getObject(), $search) !== false) { $extracond[] = array('AND' => array(array('objectid' => array('mode' => '=', 'value' => $row->getObjectid())), array('objecttype' => array('mode' => '=', 'value' => $row->getObjecttype())))); } } $parent = parent::getExtrasearchconds($search, $cond); if (count($parent) > 0) { $extracond = array_merge($parent, $extracond); } return $extracond; }
public static function delAcl($requester, $object, $right) { $model = new myaclModel(); $requestertype = get_class($requester); $objecttype = get_class($object); $requesterid = $requester->getId(); $objectid = $object->getId(); $cond = array('AND' => array(array('requestertype' => array('mode' => '=', 'value' => $requestertype)), array('requesterid' => array('mode' => '=', 'value' => $requesterid)), array('objecttype' => array('mode' => '=', 'value' => $objecttype)), array('objectid' => array('mode' => '=', 'value' => $objectid)), array('right' => array('mode' => '=', 'value' => $right)))); try { $model->delete($cond); } catch (Exception $e) { throw new Exception('Could not delete ACL: ' . $e->getMessage()); } }