/** * Creates a new tag (if not already existing) and assigns the tag to the passed system-record * * @return string * @permissions view */ protected function actionSaveTag() { $strReturn = ""; $strSystemid = $this->getParam("systemid"); $strAttribute = $this->getParam("attribute"); $arrTags = explode(",", $this->getParam("tagname")); $bitError = false; foreach ($arrTags as $strOneTag) { if (trim($strOneTag) == "") { continue; } //load the tag itself $objTag = class_module_tags_tag::getTagByName($strOneTag); if ($objTag == null) { $objTag = new class_module_tags_tag(); $objTag->setStrName($strOneTag); $objTag->updateObjectToDb(); } //add the connection itself if (!$objTag->assignToSystemrecord($strSystemid, $strAttribute)) { $bitError = true; } class_carrier::getInstance()->getObjDB()->flushQueryCache(); } if (!$bitError) { $strReturn .= "<success>assignment succeeded</success>"; } else { $strReturn .= "<error>assignment failed</error>"; } return $strReturn; }
public function testTagAssignment() { if (class_module_system_module::getModuleByName("pages") === null) { return true; } $strName = generateSystemid(); $arrPages = class_module_pages_page::getAllPages(); if (count($arrPages) == 0) { return; } $objTag = new class_module_tags_tag(); $objTag->setStrName($strName); $objTag->updateObjectToDb(); foreach ($arrPages as $objOnePage) { $objTag->assignToSystemrecord($objOnePage->getSystemid()); break; } $arrFolder = class_module_pages_folder::getFolderList(); foreach ($arrFolder as $objOneFolder) { $objTag->assignToSystemrecord($objOneFolder->getSystemid()); break; } $this->flushDBCache(); $objTag = class_module_tags_tag::getTagByName($strName); $this->assertEquals($objTag->getIntAssignments(), 2); $arrPlainAssignments = $objTag->getListOfAssignments(); $this->assertEquals(count($arrPlainAssignments), 2); $arrAssignment = $objTag->getArrAssignedRecords(); $this->assertEquals(count($arrAssignment), 2); $this->assertTrue($arrAssignment[0] instanceof class_module_pages_page || $arrAssignment[0] instanceof class_module_pages_folder); $this->assertTrue($arrAssignment[1] instanceof class_module_pages_page || $arrAssignment[1] instanceof class_module_pages_folder); $strOldSysid = $objTag->getSystemid(); $objTag->copyObject(); $this->assertNotEquals($strOldSysid, $objTag->getSystemid()); $this->assertEquals($objTag->getStrName(), $strName . "_1"); $this->assertEquals($objTag->getIntAssignments(), 2); $arrAssignment = $objTag->getArrAssignedRecords(); $this->assertEquals(count($arrAssignment), 2); $this->assertTrue($arrAssignment[0] instanceof class_module_pages_page || $arrAssignment[0] instanceof class_module_pages_folder); $this->assertTrue($arrAssignment[1] instanceof class_module_pages_page || $arrAssignment[1] instanceof class_module_pages_folder); $objTag->deleteObjectFromDatabase(); }