/** * This function will return paginated result. Result is an array where first element is * array of returned object and second populated pagination object that can be used for * obtaining and rendering pagination data using various helpers. * * Items and pagination array vars are indexed with 0 for items and 1 for pagination * because you can't use associative indexing with list() construct * * @access public * @param array $arguments Query argumens (@see find()) Limit and offset are ignored! * @param integer $items_per_page Number of items per page * @param integer $current_page Current page number * @return array */ function paginate($arguments = null, $items_per_page = 10, $current_page = 1) { if(isset($this) && instance_of($this, 'ContactDimensionPermissions')) { return parent::paginate($arguments, $items_per_page, $current_page); } else { return ContactDimensionPermissions::instance()->paginate($arguments, $items_per_page, $current_page); } // if } // paginate
/** * Return manager instance * * @access protected * @param void * @return ContactDimensionPermissions */ function manager() { if(!($this->manager instanceof ContactDimensionPermissions)) $this->manager = ContactDimensionPermissions::instance(); return $this->manager; } // manager
function do_delete() { $id = $this->getId(); ContactAddresses::instance()->delete("`contact_id` = {$id}"); ContactImValues::instance()->delete("`contact_id` = {$id}"); ContactEmails::instance()->delete("`contact_id` = {$id}"); ContactTelephones::instance()->delete("`contact_id` = {$id}"); ContactWebpages::instance()->delete("`contact_id` = {$id}"); ContactConfigOptionValues::instance()->delete("`contact_id` = {$id}"); ContactPasswords::instance()->delete("`contact_id` = {$id}"); ObjectSubscriptions::instance()->delete("`contact_id` = {$id}"); ObjectReminders::instance()->delete("`contact_id` = {$id}"); ContactPermissionGroups::instance()->delete("`contact_id` = {$id}"); ContactMemberPermissions::instance()->delete("`permission_group_id` = " . $this->getPermissionGroupId()); ContactDimensionPermissions::instance()->delete("`permission_group_id` = " . $this->getPermissionGroupId()); SystemPermissions::instance()->delete("`permission_group_id` = " . $this->getPermissionGroupId()); TabPanelPermissions::instance()->delete("`permission_group_id` = " . $this->getPermissionGroupId()); $this->delete(); $ret = null; Hook::fire("after_user_deleted", $this, $ret); }
static function createDefaultUserPermissionsAllDimension(Contact $user, $dimension_id, $remove_previous = true) { $role_id = $user->getUserType(); $permission_group_id = $user->getPermissionGroupId(); $dimension = Dimensions::getDimensionById($dimension_id); if (!$dimension instanceof Dimension || !$dimension->getDefinesPermissions()) { return; } try { $shtab_permissions = array(); $new_permissions = array(); $role_permissions = self::findAll(array('conditions' => "role_id = '{$role_id}'")); $members = Members::findAll(array('conditions' => 'dimension_id = ' . $dimension_id)); foreach ($members as $member) { $member_id = $member->getId(); if ($remove_previous) { ContactMemberPermissions::delete("permission_group_id = {$permission_group_id} AND member_id = {$member_id}"); } foreach ($role_permissions as $role_perm) { if ($member->canContainObject($role_perm->getObjectTypeId())) { $cmp = new ContactMemberPermission(); $cmp->setPermissionGroupId($permission_group_id); $cmp->setMemberId($member_id); $cmp->setObjectTypeId($role_perm->getObjectTypeId()); $cmp->setCanDelete($role_perm->getCanDelete()); $cmp->setCanWrite($role_perm->getCanWrite()); $cmp->save(); $new_permissions[] = $cmp; $perm = new stdClass(); $perm->m = $member_id; $perm->r = 1; $perm->w = $role_perm->getCanWrite(); $perm->d = $role_perm->getCanDelete(); $perm->o = $role_perm->getObjectTypeId(); $shtab_permissions[] = $perm; } } } if (count($shtab_permissions)) { $cdp = ContactDimensionPermissions::instance()->findOne(array('conditions' => "permission_group_id = '{$permission_group_id}' AND dimension_id = {$dimension_id}")); if (!$cdp instanceof ContactDimensionPermission) { $cdp = new ContactDimensionPermission(); $cdp->setPermissionGroupId($permission_group_id); $cdp->setContactDimensionId($dimension_id); $cdp->setPermissionType('check'); $cdp->save(); } else { if ($cdp->getPermissionType() == 'deny all') { $cdp->setPermissionType('check'); $cdp->save(); } } $stCtrl = new SharingTableController(); $stCtrl->afterPermissionChanged($permission_group_id, $shtab_permissions); } return $new_permissions; } catch (Exception $e) { throw $e; } }