/**
  * @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();
 }
Exemple #4
0
 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);
 }