/** * Searches for tags assigned to the systemid to be deleted. * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { //unwrap arguments list($strSystemid, $strSourceClass) = $arrArguments; $bitReturn = true; if ($strSourceClass == "class_module_tags_tag" && class_module_system_module::getModuleByName("tags") != null) { //delete matching favorites class_orm_base::setObjHandleLogicalDeletedGlobal(class_orm_deletedhandling_enum::INCLUDED()); $arrFavorites = class_module_tags_favorite::getAllFavoritesForTag($strSystemid); foreach ($arrFavorites as $objOneFavorite) { if ($strEventName == class_system_eventidentifier::EVENT_SYSTEM_RECORDDELETED_LOGICALLY) { $bitReturn = $bitReturn && $objOneFavorite->deleteObject(); } if ($strEventName == class_system_eventidentifier::EVENT_SYSTEM_RECORDDELETED) { $bitReturn = $bitReturn && $objOneFavorite->deleteObjectFromDatabase(); $bitReturn = $bitReturn && class_carrier::getInstance()->getObjDB()->_pQuery("DELETE FROM " . _dbprefix_ . "tags_member WHERE tags_tagid=?", array($strSystemid)); } } class_orm_base::setObjHandleLogicalDeletedGlobal(class_orm_deletedhandling_enum::EXCLUDED()); } //delete memberships. Fire a plain query, faster then searching. if ($strEventName == class_system_eventidentifier::EVENT_SYSTEM_RECORDDELETED) { $bitReturn = $bitReturn && class_carrier::getInstance()->getObjDB()->_pQuery("DELETE FROM " . _dbprefix_ . "tags_member WHERE tags_systemid=?", array($strSystemid)); } return $bitReturn; }
/** * 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; }
/** * Renders the list of favorites created by the current user * * @return string * @autoTestable * @permissions right1 */ protected function actionListFavorites() { $objArraySectionIterator = new class_array_section_iterator(class_module_tags_favorite::getNumberOfFavoritesForUser($this->objSession->getUserID())); $objArraySectionIterator->setPageNumber((int) ($this->getParam("pv") != "" ? $this->getParam("pv") : 1)); $objArraySectionIterator->setArraySection(class_module_tags_favorite::getAllFavoritesForUser($this->objSession->getUserID(), $objArraySectionIterator->calculateStartPos(), $objArraySectionIterator->calculateEndPos())); return $this->renderList($objArraySectionIterator); }
/** * Generates the list of favorite tags for the current user. * Returned structure is json based. * * @return string * @permissions view */ protected function actionGetFavoriteTags() { class_session::getInstance()->sessionClose(); class_carrier::getInstance()->getObjSession()->setBitBlockDbUpdate(true); class_module_system_changelog::$bitChangelogEnabled = false; $arrReturn = array(); $arrFavorites = class_module_tags_favorite::getAllFavoritesForUser(class_carrier::getInstance()->getObjSession()->getUserID(), 0, 10); foreach ($arrFavorites as $objOneFavorite) { $arrReturn[] = array("name" => $objOneFavorite->getStrDisplayName(), "onclick" => "location.href='" . getLinkAdminHref("tags", "showAssignedRecords", "&systemid=" . $objOneFavorite->getMappedTagSystemid(), false) . "'", "url" => getLinkAdminHref("tags", "showAssignedRecords", "&systemid=" . $objOneFavorite->getMappedTagSystemid(), false)); } 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); }