/** * @depends testGetAllModelClassNames */ public function testGetAllMungableModelClassNames() { $modelClassNames = PathUtil::getAllMungableModelClassNames(); $compareData = array('Account', 'Campaign', 'Contact', 'Conversation', 'EmailMessage', 'EmailTemplate', 'ExportItem', 'GameReward', 'MarketingList', 'Meeting', 'Mission', 'Note', 'Opportunity', 'SavedReport', 'Product', 'SocialItem', 'Task', 'ContactWebForm', 'Project', 'SavedCalendar'); $this->assertEquals($compareData, $modelClassNames); $modelClassNames2 = PathUtil::getAllMungableModelClassNames(); $this->assertEquals($modelClassNames, $modelClassNames2); $modelClassNames3 = PathUtil::getAllMungableModelClassNames(); $this->assertEquals($modelClassNames2, $modelClassNames3); }
/** * @param User $user * @param Role $role */ public static function userBeingRemovedFromRole(User $user, Role $role) { foreach (PathUtil::getAllMungableModelClassNames() as $modelClassName) { $mungeTableName = self::getMungeTableName($modelClassName); $userId = $user->id; $sql = "select securableitem_id\n from ownedsecurableitem\n where owner__user_id = {$userId}"; $securableItemIds = ZurmoRedBean::getCol($sql); self::bulkDecrementParentRolesCounts($mungeTableName, $securableItemIds, $role); $sql = "select {$mungeTableName}.securableitem_id\n from {$mungeTableName}, _group__user\n where {$mungeTableName}.munge_id = concat('G', _group__user._group_id) and\n _group__user._user_id = {$userId}"; $securableItemIds = ZurmoRedBean::getCol($sql); self::bulkDecrementParentRolesCounts($mungeTableName, $securableItemIds, $role); /* * This additional step I don't think is needed because the sql query above actually traps * the upstream explicit securableItems because the lower level groups will already have a point for * each of them. What groups are the user part of and what groups are those groups children of recursively? For any models that have that group explicity for read, subtract 1 point for the user's upstream roles from the disconnected role. */ self::garbageCollect($mungeTableName); } }