/** * @permissions view * @return string */ protected function actionShowAssignedRecords() { //load tag $objTag = new class_module_tags_tag($this->getSystemid()); //get assigned record-ids $objArraySectionIterator = new class_array_section_iterator($objTag->getIntAssignments()); $objArraySectionIterator->setPageNumber((int) ($this->getParam("pv") != "" ? $this->getParam("pv") : 1)); $objArraySectionIterator->setArraySection($objTag->getArrAssignedRecords($objArraySectionIterator->calculateStartPos(), $objArraySectionIterator->calculateEndPos())); return $this->renderList($objArraySectionIterator, false, "assignedTagList"); }
/** * Called whenever an object is index and to be added to the search-index. * Use this callback to add additional content to the objects search-document. * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { //unwrap arguments /** @var class_model $objObject */ $objObject = $arrArguments[0]; /** @var class_module_search_document $objSearchDocument */ $objSearchDocument = $arrArguments[1]; if (class_module_system_module::getModuleByName("tags") == null) { return true; } //load tags for the object $objTags = class_module_tags_tag::getTagsForSystemid($objObject->getSystemid()); foreach ($objTags as $objOneTag) { $objSearchDocument->addContent("tag", $objOneTag->getStrName()); } return true; }
public function testIndexEvent() { if (class_module_system_module::getModuleByName("tags") == null || class_module_system_module::getModuleByName("system") == null) { return; } $strSearchKey1 = generateSystemid(); $objAspect = new class_module_system_aspect(); $objAspect->setStrName($strSearchKey1); $objAspect->updateObjectToDb(); $objSearchCommons = new class_module_search_commons(); $objSearchParams = new class_module_search_search(); $objSearchParams->setStrQuery($strSearchKey1); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 1); $this->assertEquals($arrResult[0]->getObjObject()->getStrSystemid(), $objAspect->getStrSystemid()); $strSearchKey2 = generateSystemid(); $objTag = new class_module_tags_tag(); $objTag->setStrName($strSearchKey2); $objTag->updateObjectToDb(); $objSearchParams = new class_module_search_search(); $objSearchParams->setStrQuery($strSearchKey2); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 1); $this->assertEquals($arrResult[0]->getObjObject()->getStrSystemid(), $objTag->getStrSystemid()); $objTag->assignToSystemrecord($objAspect->getStrSystemid()); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 2); $objSearchParams->setStrInternalFilterModules(_system_modul_id_); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 1); $this->assertEquals($arrResult[0]->getObjObject()->getStrSystemid(), $objAspect->getStrSystemid()); $objTag->removeFromSystemrecord($objAspect->getStrSystemid()); //the aspect itself should not be found any more $objSearchParams = new class_module_search_search(); $objSearchParams->setStrQuery($strSearchKey2); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 1); $this->assertEquals($arrResult[0]->getObjObject()->getStrSystemid(), $objTag->getStrSystemid()); $objAspect->deleteObjectFromDatabase(); $objTag->deleteObjectFromDatabase(); }
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(); }
/** * Looks up the list of tags and renders the list. * * @return string the prepared html-output */ public function loadData() { $strReturn = ""; $arrTags = class_module_tags_tag::getTagsWithAssignments(); //load the template $strTemplateWrapperID = $this->objTemplate->readTemplate("/element_tags/" . $this->arrElementData["char1"], "tags"); $strTemplateTagID = $this->objTemplate->readTemplate("/element_tags/" . $this->arrElementData["char1"], "tagname"); $strTemplateTaglinkID = $this->objTemplate->readTemplate("/element_tags/" . $this->arrElementData["char1"], "taglink"); $strTags = ""; foreach ($arrTags as $objTag) { if ($objTag->rightView()) { $arrAssignments = $objTag->getListOfAssignments(); $strLinks = ""; //render the links - if possible foreach ($arrAssignments as $arrOneAssignment) { $objRecord = class_objectfactory::getInstance()->getObject($arrOneAssignment["tags_systemid"]); if ($objRecord == null) { continue; } if ($objRecord instanceof class_module_pages_page) { $strLink = getLinkPortal($objRecord->getStrName(), "", "_self", $objRecord->getStrBrowsername(), "", "&highlight=" . urlencode($objTag->getStrName()), "", "", $arrOneAssignment["tags_attribute"]); $strLinks .= $this->fillTemplate(array("taglink" => $strLink), $strTemplateTaglinkID); } if (class_module_system_module::getModuleByName("news") != null && $objRecord->getIntModuleNr() == _news_module_id_) { //TODO: fix after news integration, move to search link target interface handler $objNews = new class_module_news_news($objRecord->getSystemid()); $strLink = getLinkPortal("newsdetails", "", "_self", $objNews->getStrTitle(), "newsDetail", "&highlight=" . urlencode($objTag->getStrName()), $objRecord->getSystemid(), "", "", $objNews->getStrTitle()); $strLinks .= $this->fillTemplate(array("taglink" => $strLink), $strTemplateTaglinkID); } } $arrTemplate = array(); $arrTemplate["tagname"] = $objTag->getStrName(); $arrTemplate["linkcount"] = count($arrAssignments); $arrTemplate["taglinks"] = $strLinks; $arrTemplate["tagid"] = $objTag->getSystemid(); $strTags .= $this->fillTemplate($arrTemplate, $strTemplateTagID); } } $strReturn = $this->fillTemplate(array("tags" => $strTags), $strTemplateWrapperID); return $strReturn; }
/** * 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) { $strReturn .= "Removing settings...\n"; if (class_module_system_setting::getConfigByName("_tags_defaultprivate_") != null) { class_module_system_setting::getConfigByName("_tags_defaultprivate_")->deleteObjectFromDatabase(); } //delete the page-element if (class_module_system_module::getModuleByName("pages") !== null && class_module_pages_element::getElement("tags") != null) { $objElement = class_module_pages_element::getElement("tags"); if ($objElement != null) { $strReturn .= "Deleting page-element 'tags'...\n"; $objElement->deleteObjectFromDatabase(); } else { $strReturn .= "Error finding page-element 'guestbook', tags.\n"; return false; } } /** @var class_module_tags_favorite $objOneObject */ foreach (class_module_tags_favorite::getObjectList() as $objOneObject) { $strReturn .= "Deleting object '" . $objOneObject->getStrDisplayName() . "' ...\n"; if (!$objOneObject->deleteObjectFromDatabase()) { $strReturn .= "Error deleting object, aborting.\n"; return false; } } /** @var class_module_tags_tag $objOneObject */ foreach (class_module_tags_tag::getObjectList() as $objOneObject) { $strReturn .= "Deleting object '" . $objOneObject->getStrDisplayName() . "' ...\n"; if (!$objOneObject->deleteObjectFromDatabase()) { $strReturn .= "Error deleting object, aborting.\n"; return false; } } //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("tags_tag", "tags_member", "tags_favorite") 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; }
/** * Generates the list of tags matching the passed filter-criteria. * Returned structure is json based. * * @return string * @permissions view */ protected function actionGetTagsByFilter() { $arrReturn = array(); $strFilter = $this->getParam("filter"); $arrTags = class_module_tags_tag::getTagsByFilter($strFilter); foreach ($arrTags as $objOneTag) { $arrReturn[] = $objOneTag->getStrName(); } class_response_object::getInstance()->setStrResponseType(class_http_responsetypes::STR_TYPE_JSON); return json_encode($arrReturn); }
/** * Renders a single tag (including the options to remove the tag again) * * @param class_module_tags_tag $objTag * @param string $strTargetid * @param string $strAttribute * * @return string */ public function getTagEntry(class_module_tags_tag $objTag, $strTargetid, $strAttribute) { if (class_carrier::getInstance()->getParam("delete") != "false") { $strTemplateID = $this->objTemplate->readTemplate("/elements.tpl", "tags_tag_delete"); } else { $strTemplateID = $this->objTemplate->readTemplate("/elements.tpl", "tags_tag"); } $strFavorite = ""; if ($objTag->rightRight1()) { $strJs = "<script type='text/javascript'>KAJONA.admin.loader.loadFile('" . class_resourceloader::getInstance()->getCorePathForModule("module_tags") . "/module_tags/admin/scripts/tags.js', function() {\r\n KAJONA.admin.tags.createFavoriteEnabledIcon = '" . addslashes(class_adminskin_helper::getAdminImage("icon_favorite", class_carrier::getInstance()->getObjLang()->getLang("tag_favorite_remove", "tags"))) . "';\r\n KAJONA.admin.tags.createFavoriteDisabledIcon = '" . addslashes(class_adminskin_helper::getAdminImage("icon_favoriteDisabled", class_carrier::getInstance()->getObjLang()->getLang("tag_favorite_add", "tags"))) . "';\r\n });</script>"; $strImage = class_module_tags_favorite::getAllFavoritesForUserAndTag(class_carrier::getInstance()->getObjSession()->getUserID(), $objTag->getSystemid()) != null ? class_adminskin_helper::getAdminImage("icon_favorite", class_carrier::getInstance()->getObjLang()->getLang("tag_favorite_remove", "tags")) : class_adminskin_helper::getAdminImage("icon_favoriteDisabled", class_carrier::getInstance()->getObjLang()->getLang("tag_favorite_add", "tags")); $strFavorite = $strJs . "<a href=\"#\" onclick=\"KAJONA.admin.tags.createFavorite('" . $objTag->getSystemid() . "', this); return false;\">" . $strImage . "</a>"; } $arrTemplate = array(); $arrTemplate["tagname"] = $objTag->getStrDisplayName(); $arrTemplate["strTagId"] = $objTag->getSystemid(); $arrTemplate["strTargetSystemid"] = $strTargetid; $arrTemplate["strAttribute"] = $strAttribute; $arrTemplate["strFavorite"] = $strFavorite; $arrTemplate["strDelete"] = class_adminskin_helper::getAdminImage("icon_delete", class_carrier::getInstance()->getObjLang()->getLang("commons_delete", "tags")); return $this->objTemplate->fillTemplate($arrTemplate, $strTemplateID); }