/** * Removes the elements / modules handled by the current installer. * Use the reference param to add a human readable logging. * * @param string &$strReturn * * @return bool */ public function remove(&$strReturn) { //remove the workflow if (class_module_system_module::getModuleByName("workflows") !== null) { foreach (class_module_workflows_workflow::getWorkflowsForClass("class_workflow_ldap_sync") as $objOneWorkflow) { if (!$objOneWorkflow->deleteObjectFromDatabase()) { $strReturn .= "Error deleting workflow, aborting.\n"; return false; } } $objHandler = class_module_workflows_handler::getHandlerByClass("class_workflow_ldap_sync"); if (!$objHandler->deleteObjectFromDatabase()) { $strReturn .= "Error deleting workflow handler, aborting.\n"; return false; } } //fetch associated users foreach ($this->objDB->getPArray("SELECT * FROM " . _dbprefix_ . "user_ldap", array()) as $arrOneRow) { $objOneUser = new class_module_user_user($arrOneRow["user_ldap_id"]); echo "Deleting ldap user " . $objOneUser->getStrDisplayName() . "...\n"; $objOneUser->deleteObjectFromDatabase(); } //fetch associated groups foreach ($this->objDB->getPArray("SELECT * FROM " . _dbprefix_ . "user_group_ldap", array()) as $arrOneRow) { $objOneUser = new class_module_user_group($arrOneRow["group_ldap_id"]); echo "Deleting ldap group " . $objOneUser->getStrDisplayName() . "...\n"; $objOneUser->deleteObjectFromDatabase(); } //delete the module-node $strReturn .= "Deleting the module-registration...\n"; $objModule = class_module_system_module::getModuleByName($this->objMetadata->getStrTitle(), true); if (!$objModule->deleteObjectFromDatabase()) { $strReturn .= "Error deleting module, aborting.\n"; return false; } //delete the tables foreach (array("user_group_ldap", "user_ldap") as $strOneTable) { $strReturn .= "Dropping table " . $strOneTable . "...\n"; if (!$this->objDB->_pQuery("DROP TABLE " . $this->objDB->encloseTableName(_dbprefix_ . $strOneTable) . "", array())) { $strReturn .= "Error deleting table, aborting.\n"; return false; } } return true; }
public function testInheritanceForObjects() { if (class_module_system_module::getModuleByName("pages") === null) { return; } echo "\tRIGHTS INHERITANCE...\n"; $objRights = class_carrier::getInstance()->getObjRights(); $this->objRights = class_carrier::getInstance()->getObjRights(); //create a new user & group to be used during testing echo "\tcreating a test user\n"; $objUser = new class_module_user_user(); $strUsername = "******" . generateSystemid(); $objUser->setStrUsername($strUsername); $objUser->updateObjectToDb(); echo "\tid of user: "******"\n"; $this->strUserId = $objUser->getSystemid(); echo "\tcreating a test group\n"; $objGroup = new class_module_user_group(); $strName = "name_" . generateSystemid(); $objGroup->setStrName($strName); $objGroup->updateObjectToDb(); echo "\tid of group: " . $objGroup->getSystemid() . "\n"; echo "\tadding user to group\n"; $objGroup->getObjSourceGroup()->addMember($objUser->getObjSourceUser()); $strModuleId = $this->createObject("class_module_system_module", "0")->getSystemid(); class_carrier::getInstance()->flushCache(class_carrier::INT_CACHE_TYPE_MODULES); class_module_system_module::getAllModules(); echo "\tcreating node-tree\n"; $strRootId = $this->createObject("class_module_pages_page", $strModuleId)->getSystemid(); echo "\tid of root-node: " . $strRootId . "\n"; echo "\tcreating child nodes...\n"; $strSecOne = $this->createObject("class_module_pages_page", $strRootId)->getSystemid(); $strSecTwo = $this->createObject("class_module_pages_page", $strRootId)->getSystemid(); $strThirdOne1 = $this->createObject("class_module_pages_page", $strSecOne)->getSystemid(); $strThirdOne2 = $this->createObject("class_module_pages_page", $strSecOne)->getSystemid(); $strThirdTwo1 = $this->createObject("class_module_pages_page", $strSecTwo)->getSystemid(); $strThirdTwo2 = $this->createObject("class_module_pages_page", $strSecTwo)->getSystemid(); $strThird111 = $this->createObject("class_module_pages_page", $strThirdOne1)->getSystemid(); $strThird112 = $this->createObject("class_module_pages_page", $strThirdOne1)->getSystemid(); $strThird121 = $this->createObject("class_module_pages_page", $strThirdOne2)->getSystemid(); $strThird122 = $this->createObject("class_module_pages_page", $strThirdOne2)->getSystemid(); $strThird211 = $this->createObject("class_module_pages_page", $strThirdTwo1)->getSystemid(); $strThird212 = $this->createObject("class_module_pages_page", $strThirdTwo1)->getSystemid(); $strThird221 = $this->createObject("class_module_pages_page", $strThirdTwo2)->getSystemid(); $strThird222 = $this->createObject("class_module_pages_page", $strThirdTwo2)->getSystemid(); $arrThirdLevelNodes = array($strThird111, $strThird112, $strThird121, $strThird122, $strThird211, $strThird212, $strThird221, $strThird222); echo "\tchecking leaf nodes for initial rights\n"; foreach ($arrThirdLevelNodes as $strOneRootNode) { $this->checkNodeRights($strOneRootNode, false, false); } echo "\tadding group with right view & edit\n"; $objRights->addGroupToRight($objGroup->getSystemid(), $strModuleId, "view"); $objRights->addGroupToRight($objGroup->getSystemid(), $strModuleId, "edit"); echo "\tchecking leaf nodes for inherited rights\n"; foreach ($arrThirdLevelNodes as $strOneRootNode) { $this->checkNodeRights($strOneRootNode, true, true); } echo "\tremoving right view from node secTwo\n"; $objRights->removeGroupFromRight($objGroup->getSystemid(), $strSecTwo, "view"); echo "\tchecking node rights\n"; $this->checkNodeRights($strRootId, true, true); $this->checkNodeRights($strSecOne, true, true); $this->checkNodeRights($strSecTwo, false, true); $this->checkNodeRights($strThirdOne1, true, true); $this->checkNodeRights($strThirdOne2, true, true); $this->checkNodeRights($strThirdTwo1, false, true); $this->checkNodeRights($strThirdTwo2, false, true); $this->checkNodeRights($strThird111, true, true); $this->checkNodeRights($strThird112, true, true); $this->checkNodeRights($strThird121, true, true); $this->checkNodeRights($strThird122, true, true); $this->checkNodeRights($strThird211, false, true); $this->checkNodeRights($strThird212, false, true); $this->checkNodeRights($strThird221, false, true); $this->checkNodeRights($strThird222, false, true); echo "\tmove SecOne as child to 221\n"; $objTempCommons = class_objectfactory::getInstance()->getObject($strSecOne); $objTempCommons->setStrPrevId($strThird221); $objTempCommons->updateObjectToDb(); //$objSystemCommon->setPrevId($strThird221, $strSecOne); echo "\tchecking node rights\n"; $this->checkNodeRights($strRootId, true, true); $this->checkNodeRights($strSecOne, false, true); $this->checkNodeRights($strSecTwo, false, true); $this->checkNodeRights($strThirdOne1, false, true); $this->checkNodeRights($strThirdOne2, false, true); $this->checkNodeRights($strThirdTwo1, false, true); $this->checkNodeRights($strThirdTwo2, false, true); $this->checkNodeRights($strThird111, false, true); $this->checkNodeRights($strThird112, false, true); $this->checkNodeRights($strThird121, false, true); $this->checkNodeRights($strThird122, false, true); $this->checkNodeRights($strThird211, false, true); $this->checkNodeRights($strThird212, false, true); $this->checkNodeRights($strThird221, false, true); $this->checkNodeRights($strThird222, false, true); echo "\tsetting rights of third21 to only view\n"; $objRights->removeGroupFromRight($objGroup->getSystemid(), $strThirdTwo1, "edit"); $objRights->addGroupToRight($objGroup->getSystemid(), $strThirdTwo1, "view"); echo "\tchecking node rights\n"; $this->checkNodeRights($strRootId, true, true); $this->checkNodeRights($strSecOne, false, true); $this->checkNodeRights($strSecTwo, false, true); $this->checkNodeRights($strThirdOne1, false, true); $this->checkNodeRights($strThirdOne2, false, true); $this->checkNodeRights($strThirdTwo1, true); $this->checkNodeRights($strThirdTwo2, false, true); $this->checkNodeRights($strThird111, false, true); $this->checkNodeRights($strThird112, false, true); $this->checkNodeRights($strThird121, false, true); $this->checkNodeRights($strThird122, false, true); $this->checkNodeRights($strThird211, true); $this->checkNodeRights($strThird212, true); $this->checkNodeRights($strThird221, false, true); $this->checkNodeRights($strThird222, false, true); echo "\tsetting 211 as parent node for third11\n"; $objTempCommons = class_objectfactory::getInstance()->getObject($strThirdOne1); $objTempCommons->setStrPrevId($strThird211); $objTempCommons->updateObjectToDb(); //$objSystemCommon->setPrevId($strThird211, $strThirdOne1); echo "\tchecking node rights\n"; $this->checkNodeRights($strRootId, true, true); $this->checkNodeRights($strSecOne, false, true); $this->checkNodeRights($strSecTwo, false, true); $this->checkNodeRights($strThirdOne1, true); $this->checkNodeRights($strThirdOne2, false, true); $this->checkNodeRights($strThirdTwo1, true); $this->checkNodeRights($strThirdTwo2, false, true); $this->checkNodeRights($strThird111, true); $this->checkNodeRights($strThird112, true); $this->checkNodeRights($strThird121, false, true); $this->checkNodeRights($strThird122, false, true); $this->checkNodeRights($strThird211, true); $this->checkNodeRights($strThird212, true); $this->checkNodeRights($strThird221, false, true); $this->checkNodeRights($strThird222, false, true); echo "\trebuilding initial tree structure\n"; $objTempCommons = class_objectfactory::getInstance()->getObject($strSecOne); $objTempCommons->setStrPrevId($strRootId); $objTempCommons->updateObjectToDb(); //$objSystemCommon->setPrevId($strRootId, $strSecOne); //SecOne still inheriting $objTempCommons = class_objectfactory::getInstance()->getObject($strThirdOne1); $objTempCommons->setStrPrevId($strSecOne); $objTempCommons->updateObjectToDb(); //$objSystemCommon->setPrevId($strSecOne, $strThirdOne1); $objRights->setInherited(true, $strThirdOne1); echo "\tchecking node rights\n"; $this->checkNodeRights($strRootId, true, true); $this->checkNodeRights($strSecOne, true, true); $this->checkNodeRights($strSecTwo, false, true); $this->checkNodeRights($strThirdOne1, true, true); $this->checkNodeRights($strThirdOne2, true, true); $this->checkNodeRights($strThirdTwo1, true); $this->checkNodeRights($strThirdTwo2, false, true); $this->checkNodeRights($strThird111, true, true); $this->checkNodeRights($strThird112, true, true); $this->checkNodeRights($strThird121, true, true); $this->checkNodeRights($strThird122, true, true); $this->checkNodeRights($strThird211, true); $this->checkNodeRights($strThird212, true); $this->checkNodeRights($strThird221, false, true); $this->checkNodeRights($strThird222, false, true); echo "\trebuilding initial inheritance structure\n"; $objRights->setInherited(true, $strSecTwo); $objRights->setInherited(true, $strThirdTwo1); echo "\tchecking node rights\n"; $this->checkNodeRights($strRootId, true, true); $this->checkNodeRights($strSecOne, true, true); $this->checkNodeRights($strSecTwo, true, true); $this->checkNodeRights($strThirdOne1, true, true); $this->checkNodeRights($strThirdOne2, true, true); $this->checkNodeRights($strThirdTwo1, true, true); $this->checkNodeRights($strThirdTwo2, true, true); $this->checkNodeRights($strThird111, true, true); $this->checkNodeRights($strThird112, true, true); $this->checkNodeRights($strThird121, true, true); $this->checkNodeRights($strThird122, true, true); $this->checkNodeRights($strThird211, true, true); $this->checkNodeRights($strThird212, true, true); $this->checkNodeRights($strThird221, true, true); $this->checkNodeRights($strThird222, true, true); echo "\tdeleting systemnodes\n"; class_objectfactory::getInstance()->getObject($strThird111)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThird112)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThird121)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThird122)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThird211)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThird212)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThird221)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThird222)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThirdOne1)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThirdOne2)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThirdTwo1)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strThirdTwo2)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strSecOne)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strSecTwo)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strRootId)->deleteObjectFromDatabase(); class_objectfactory::getInstance()->getObject($strModuleId)->deleteObjectFromDatabase(); echo "\tdeleting the test user\n"; $objUser->deleteObjectFromDatabase(); echo "\tdeleting the test group\n"; $objGroup->deleteObjectFromDatabase(); }
public function test() { $objDB = class_carrier::getInstance()->getObjDB(); echo "\tmodul_user...\n"; //blank system - one user should have been created echo "\tcheck number of users installed...\n"; $arrUserInstalled = class_module_user_user::getObjectList(); $intStartUsers = count($arrUserInstalled); echo "\t ...found " . $intStartUsers . " users.\n"; echo "\tcheck number of groups installed...\n"; $arrGroupsInstalled = class_module_user_group::getObjectList(); $intStartGroups = count($arrGroupsInstalled); echo "\t ...found " . $intStartUsers . " users.\n"; echo "\tcreate 10 users using the model...\n"; $arrUsersCreated = array(); for ($intI = 0; $intI < 10; $intI++) { $objUser = new class_module_user_user(); //$objUser->setStrEmail(generateSystemid()."@".generateSystemid()."de"); $strUsername = "******" . generateSystemid(); $objUser->setStrUsername($strUsername); $objUser->updateObjectToDb(); $arrUsersCreated[] = $objUser->getSystemid(); $strID = $objUser->getSystemid(); $objDB->flushQueryCache(); $objUser = new class_module_user_user($strID); $this->assertEquals($objUser->getStrUsername(), $strUsername, __FILE__ . " checkNameOfUserCreated"); } $arrUserInstalled = class_module_user_user::getObjectList(); $this->assertEquals(count($arrUserInstalled), 10 + $intStartUsers, __FILE__ . " checkNrOfUsersCreatedByModel"); echo "\tcreate 10 groups using the model...\n"; $arrGroupsCreated = array(); for ($intI = 0; $intI < 10; $intI++) { $objGroup = new class_module_user_group(); $strName = "name_" . generateSystemid(); $objGroup->setStrName($strName); $objGroup->updateObjectToDb(); $strID = $objGroup->getSystemid(); $arrGroupsCreated[] = $objGroup->getSystemid(); $objDB->flushQueryCache(); $objGroup = new class_module_user_group($strID); $this->assertEquals($objGroup->getStrName(), $strName, __FILE__ . " checkNameOfGroupCreated"); } $arrGroupsInstalled = class_module_user_group::getObjectList(); $this->assertEquals(count($arrGroupsInstalled), 10 + $intStartGroups, __FILE__ . " checkNrOfGroupsByModel"); echo "\tdeleting users created...\n"; foreach ($arrUsersCreated as $strOneUser) { echo "\t\tdeleting user " . $strOneUser . "...\n"; $objUser = new class_module_user_user($strOneUser); $objUser->deleteObjectFromDatabase(); } $objDB->flushQueryCache(); echo "\tcheck number of users installed...\n"; $arrUserInstalled = class_module_user_user::getObjectList(); $this->assertEquals(count($arrUserInstalled), $intStartUsers, __FILE__ . " checkNrOfUsers"); echo "\tdeleting groups created...\n"; foreach ($arrGroupsCreated as $strOneGroup) { $objOneGroup = new class_module_user_group($strOneGroup); $objOneGroup->deleteObjectFromDatabase(); } $objDB->flushQueryCache(); echo "\tcheck number of groups installed...\n"; $arrGroupsInstalled = class_module_user_group::getObjectList(); $this->assertEquals(count($arrGroupsInstalled), $intStartGroups, __FILE__ . " checkNrOfGroups"); echo "\ttest group membership handling...\n"; $objGroup = new class_module_user_group(); $objGroup->setStrName("AUTOTESTGROUP"); $objGroup->updateObjectToDb(); echo "\tadding 10 members to group...\n"; for ($intI = 0; $intI <= 10; $intI++) { $objUser = new class_module_user_user(); $objUser->setStrUsername("AUTOTESTUSER_" . $intI); //$objUser->setStrEmail("autotest_".$intI."@kajona.de"); $objUser->updateObjectToDb(); //add user to group $objGroup->getObjSourceGroup()->addMember($objUser->getObjSourceUser()); $arrUsersInGroup = $objGroup->getObjSourceGroup()->getUserIdsForGroup(); $this->assertTrue(in_array($objUser->getSystemid(), $arrUsersInGroup), __FILE__ . " checkUserInGroup"); $this->assertEquals(count($arrUsersInGroup), 1 + $intI, __FILE__ . " checkNrOfUsersInGroup"); $objDB->flushQueryCache(); } echo "\tdeleting groups & users\n"; foreach ($objGroup->getObjSourceGroup()->getUserIdsForGroup() as $strOneUser) { $objOneUser = new class_module_user_user($strOneUser); $objOneUser->deleteObjectFromDatabase(); } $objGroup->deleteObjectFromDatabase(); $objDB->flushQueryCache(); echo "\tcheck number of users installed is same as at beginning...\n"; $arrUserInstalled = class_module_user_user::getObjectList(); $this->assertEquals(count($arrUserInstalled), $intStartUsers, __FILE__ . " checkNrOfUsersAtEnd"); echo "\tcheck number of groups installed is same as at beginning...\n"; $arrGroupsInstalled = class_module_user_group::getObjectList(); $this->assertEquals(count($arrGroupsInstalled), $intStartGroups, __FILE__ . " checkNrOfGrpupsAtEnd"); }