/**
  * Renders the list of available packages or any other kind of gui-representation
  * of the packageprovider.
  *
  * Whenever the provider is capable of uploading new packages, the copy & n upload process
  * should be triggered by the admin-class again.
  * So make sure links or forms point to
  * module = packagemanager
  * action = uploadPackage
  * provider = class_na,e
  * The provider will be called using the processPackageUpload method.
  *
  * @return string
  */
 public function renderPackageList()
 {
     $objToolkit = class_carrier::getInstance()->getObjToolkit("admin");
     $objLang = class_carrier::getInstance()->getObjLang();
     $strReturn = "";
     $strReturn .= $objToolkit->getTextRow($objLang->getLang("provider_local_uploadhint", "packagemanager"));
     $strReturn .= $objToolkit->divider();
     $strReturn .= $objToolkit->formHeader(getLinkAdminHref("packagemanager", "uploadPackage"), generateSystemid(), "multipart/form-data");
     $strReturn .= $objToolkit->formInputUpload("provider_local_file", $objLang->getLang("provider_local_file", "packagemanager"));
     $strReturn .= $objToolkit->formInputHidden("provider", __CLASS__);
     $strReturn .= $objToolkit->formInputSubmit();
     $strReturn .= $objToolkit->formClose();
     return $strReturn;
 }
 /**
  * Returns a list of all categories and all postacomment
  * The list could be filtered by categories
  *
  * @return string
  * @permissions view
  * @autoTestable
  */
 protected function actionList()
 {
     //a small filter would be nice...
     $strReturn = $this->objToolkit->formHeader(getLinkAdminHref($this->arrModule["modul"], "list"));
     $arrPages = array();
     $arrPages[""] = "---";
     foreach (class_module_pages_page::getAllPages() as $objOnePage) {
         $arrPages[$objOnePage->getSystemid()] = $objOnePage->getStrName();
     }
     $strReturn .= $this->objToolkit->formInputDropdown("filterId", $arrPages, $this->getLang("postacomment_filter"), $this->getParam("filterId"));
     $strReturn .= $this->objToolkit->formInputSubmit($this->getLang("postacomment_dofilter"));
     $strReturn .= $this->objToolkit->formClose();
     $strReturn .= $this->objToolkit->divider();
     $objArraySectionIterator = new class_array_section_iterator(class_module_postacomment_post::getNumberOfPostsAvailable(false, $this->getParam("filterId")));
     $objArraySectionIterator->setPageNumber((int) ($this->getParam("pv") != "" ? $this->getParam("pv") : 1));
     $objArraySectionIterator->setArraySection(class_module_postacomment_post::loadPostList(false, $this->getParam("filterId"), false, "", $objArraySectionIterator->calculateStartPos(), $objArraySectionIterator->calculateEndPos()));
     $strReturn .= $this->renderList($objArraySectionIterator);
     return $strReturn;
 }
 /**
  * @return string
  */
 public function getStrReloadUrl()
 {
     if ($this->strReloadParam != "") {
         return getLinkAdminHref("system", "systemTasks", "&task=" . $this->getStrInternalTaskName() . $this->strReloadParam);
     } else {
         return "";
     }
 }
 /**
  * Method still being kept for legacy elements, so admin-elements not yet switched to annotations
  * @param string $strMode
  *
  * @return string
  */
 private function generateLegacyEdit($strMode = "edit")
 {
     $strReturn = "";
     //Right before we do anything, load the data of the current element
     $arrElementData = $this->arrElementData;
     //Load the form generated by the element
     $strFormElement = $this->getEditForm(array_merge($arrElementData, $this->getAllParams()));
     //Start by creating the form & action
     $strReturn .= $this->objToolkit->formHeader(getLinkAdminHref("pages_content", "saveElement"), "elEditForm");
     //validation errors?
     if ($this->bitDoValidation) {
         $this->validateForm();
     }
     $strReturn .= $this->objToolkit->getValidationErrors($this, "saveElement");
     //add a folder containing optional system-fields
     $strSystemFields = "";
     $bitShow = false;
     $objStartDate = null;
     if (isset($arrElementData["system_date_start"]) && $arrElementData["system_date_start"] > 0) {
         $objStartDate = new class_date($arrElementData["system_date_start"]);
         $bitShow = true;
     }
     $objEndDate = null;
     if (isset($arrElementData["system_date_end"]) && $arrElementData["system_date_end"] > 0) {
         $objEndDate = new class_date($arrElementData["system_date_end"]);
         $bitShow = true;
     }
     $strInternalTitle = isset($arrElementData["page_element_ph_title"]) ? $arrElementData["page_element_ph_title"] : "";
     if ($strInternalTitle != "") {
         $bitShow = true;
     }
     $strSystemFields .= $this->objToolkit->formInputText("page_element_ph_title", $this->getLang("page_element_ph_title", "pages"), $strInternalTitle);
     $strSystemFields .= $this->objToolkit->formDateSingle("start", $this->getLang("page_element_start", "pages"), $objStartDate);
     $strSystemFields .= $this->objToolkit->formDateSingle("end", $this->getLang("page_element_end", "pages"), $objEndDate);
     //add content from sub-classes
     $strSystemFields .= $this->strSystemFormElements;
     $strReturn .= $this->objToolkit->formOptionalElementsWrapper($strSystemFields, $this->getLang("page_element_system_folder", "pages"), $bitShow);
     //Adding the element-stuff
     $strReturn .= $strFormElement;
     //Language is placed right here instead as a hidden field
     if ($strMode == "edit") {
         $strReturn .= $this->objToolkit->formInputHidden("page_element_ph_language", $arrElementData["page_element_ph_language"]);
     } else {
         $strReturn .= $this->objToolkit->formInputHidden("page_element_ph_language", $this->getLanguageToWorkOn());
     }
     $strReturn .= $this->objToolkit->formInputHidden("placeholder", $this->getParam("placeholder"));
     $strReturn .= $this->objToolkit->formInputHidden("systemid", $this->getSystemid());
     $strReturn .= $this->objToolkit->formInputHidden("mode", $strMode);
     $strReturn .= $this->objToolkit->formInputHidden("element", $this->getParam("element"));
     //An finally the submit Button
     $strEventhandler = "";
     if ($this->getParam("pe") == 1) {
         $strReturn .= $this->objToolkit->formInputHidden("peClose", "1");
     }
     $strReturn .= $this->objToolkit->formInputSubmit($this->getLang("commons_save"), "Submit", $strEventhandler);
     $strReturn .= $this->objToolkit->formClose();
     //and close the element
     return $strReturn;
 }
 /**
  * Returns a list of users belonging to a specified group
  *
  * @param class_admin_formgenerator $objForm
  *
  * @return string
  * @permissions edit
  */
 protected function actionGroupMember(class_admin_formgenerator $objForm = null)
 {
     $strReturn = "";
     if ($this->getSystemid() != "") {
         $objGroup = new class_module_user_group($this->getSystemid());
         //validate possible blocked groups
         $bitRenderEdit = $this->isGroupEditable($objGroup);
         $objSourceGroup = $objGroup->getObjSourceGroup();
         $strReturn .= $this->objToolkit->formHeadline($this->getLang("group_memberlist") . "\"" . $objGroup->getStrName() . "\"");
         $objUsersources = new class_module_user_sourcefactory();
         if ($objUsersources->getUsersource($objGroup->getStrSubsystem())->getMembersEditable() && $bitRenderEdit) {
             if ($objForm == null) {
                 $objForm = $this->getGroupMemberForm($objGroup);
             }
             $arrFolder = $this->objToolkit->getLayoutFolder($objForm->renderForm(getLinkAdminHref($this->getArrModule("modul"), "addUserToGroup")), $this->getLang("group_add_user"));
             $strReturn .= $this->objToolkit->getFieldset($arrFolder[1], $arrFolder[0]);
         }
         $objIterator = new class_array_section_iterator($objSourceGroup->getNumberOfMembers());
         $objIterator->setPageNumber((int) ($this->getParam("pv") != "" ? $this->getParam("pv") : 1));
         $objIterator->setArraySection($objSourceGroup->getUserIdsForGroup($objIterator->calculateStartPos(), $objIterator->calculateEndPos()));
         $strReturn .= $this->objToolkit->listHeader();
         $intI = 0;
         foreach ($objIterator as $strSingleMemberId) {
             $objSingleMember = new class_module_user_user($strSingleMemberId);
             $strAction = "";
             if ($objUsersources->getUsersource($objGroup->getStrSubsystem())->getMembersEditable() && $bitRenderEdit) {
                 $strAction .= $this->objToolkit->listDeleteButton($objSingleMember->getStrUsername() . " (" . $objSingleMember->getStrForename() . " " . $objSingleMember->getStrName() . ")", $this->getLang("mitglied_loeschen_frage"), class_link::getLinkAdminHref($this->getArrModule("modul"), "groupMemberDelete", "&groupid=" . $objGroup->getSystemid() . "&userid=" . $objSingleMember->getSystemid()));
             }
             $strReturn .= $this->objToolkit->genericAdminList($objSingleMember->getSystemid(), $objSingleMember->getStrDisplayName(), getImageAdmin("icon_user"), $strAction, $intI++);
         }
         $strReturn .= $this->objToolkit->listFooter() . $this->objToolkit->getPageview($objIterator, "user", "groupMember", "systemid=" . $this->getSystemid());
     }
     return $strReturn;
 }
 /**
  * @return string
  * @permissions right1
  */
 protected function actionStartInstance()
 {
     $strReturn = "";
     $objHandler = new class_module_workflows_handler($this->getSystemid());
     $objWorkflow = new class_module_workflows_workflow();
     $objWorkflow->setStrClass($objHandler->getStrHandlerClass());
     $objWorkflow->setStrAffectedSystemid($this->getParam("instance_systemid"));
     $objWorkflow->setStrResponsible($this->getParam("instance_responsible_id"));
     $objWorkflow->updateObjectToDb();
     $this->adminReload(getLinkAdminHref($this->getArrModule("modul"), "list"));
     return $strReturn;
 }
 /**
  * Saves the passed values to db
  *
  * @throws class_exception
  * @return string "" in case of success
  */
 protected function actionSaveGuestbook()
 {
     $strReturn = "";
     if (!$this->validateData()) {
         $this->setParam("eintragen_fehler", $this->getLang("eintragen_fehler"));
         return $this->actionInsertGuestbook($this->getAllParams());
     }
     $objBook = new class_module_guestbook_guestbook($this->arrElementData["guestbook_id"]);
     //check rights
     if ($objBook->rightRight1()) {
         //create a post-object
         $objPost = new class_module_guestbook_post();
         $objPost->setStrGuestbookPostName($this->getParam("gb_post_name"));
         $objPost->setStrGuestbookPostEmail($this->getParam("gb_post_email"));
         $objPost->setStrGuestbookPostPage($this->getParam("gb_post_page"));
         $objPost->setStrGuestbookPostText($this->getParam("gb_post_text"));
         $objPost->setIntGuestbookPostDate(time());
         //save obj to db
         if (!$objPost->updateObjectToDb($objBook->getSystemid())) {
             throw new class_exception("Error saving entry", class_exception::$level_ERROR);
         }
         $strMailtext = $this->getLang("new_post_mail");
         $strMailtext .= getLinkAdminHref("guestbook", "edit", "&systemid=" . $objPost->getSystemid(), false);
         $objMessageHandler = new class_module_messaging_messagehandler();
         $arrGroups = array();
         $allGroups = class_module_user_group::getObjectList();
         foreach ($allGroups as $objOneGroup) {
             if (class_rights::getInstance()->checkPermissionForGroup($objOneGroup->getSystemid(), class_rights::$STR_RIGHT_EDIT, $this->getObjModule()->getSystemid())) {
                 $arrGroups[] = $objOneGroup;
             }
         }
         $objMessageHandler->sendMessage($strMailtext, $arrGroups, new class_messageprovider_guestbook());
         //Flush the page from cache
         $this->flushPageFromPagesCache($this->getPagename());
         $this->portalReload(getLinkPortalHref($this->getPagename()));
     } else {
         $strReturn = $this->getLang("commons_error_permissions");
     }
     return $strReturn;
 }
 /**
  * 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 the list of changes for the passed systemrecord.
  * May be called from other modules in order to get the rendered list for a single record.
  * In most cases rendered as a overlay, so in folderview mode
  *
  * @param string $strSystemid sytemid to filter
  * @param string $strSourceModule source-module, required for a working pageview
  * @param string $strSourceAction source-action, required for a working pageview
  * @param bool $bitBlockFolderview
  *
  * @return string
  * @since 3.4.0
  * @autoTestable
  * @permissions changelog
  */
 public function actionGenericChangelog($strSystemid = "", $strSourceModule = "system", $strSourceAction = "genericChangelog", $bitBlockFolderview = false)
 {
     if (!$bitBlockFolderview && $this->getParam("bitBlockFolderview") == "") {
         $this->setArrModuleEntry("template", "/folderview.tpl");
     }
     if ($strSystemid == "") {
         $strSystemid = $this->getSystemid();
     }
     if (!validateSystemid($strSystemid) && $this->getObjModule()->rightChangelog()) {
         $strReturn = $this->objToolkit->warningBox($this->getLang("generic_changelog_no_systemid"));
         $strReturn .= $this->objToolkit->formHeader(getLinkAdminHref("system", "genericChangeLog", "bitBlockFolderview=1"));
         $strReturn .= $this->objToolkit->formInputText("systemid", "systemid");
         $strReturn .= $this->objToolkit->formInputSubmit();
         $strReturn .= $this->objToolkit->formClose();
         return $strReturn;
         //            return "asd";
     }
     $strReturn = "";
     //        check needed rights - done twice since public and callable by not only the controller
     //        if(!class_carrier::getInstance()->getObjRights()->validatePermissionString(class_rights::$STR_RIGHT_CHANGELOG, $this->getObjModule()))
     //            return $this->getLang("commons_error_permissions");
     //showing a list using the pageview
     $objArraySectionIterator = new class_array_section_iterator(class_module_system_changelog::getLogEntriesCount($strSystemid));
     $objArraySectionIterator->setPageNumber((int) ($this->getParam("pv") != "" ? $this->getParam("pv") : 1));
     $objArraySectionIterator->setArraySection(class_module_system_changelog::getLogEntries($strSystemid, $objArraySectionIterator->calculateStartPos(), $objArraySectionIterator->calculateEndPos()));
     $arrData = array();
     $arrHeader = array();
     $arrHeader[] = $this->getLang("commons_date");
     $arrHeader[] = $this->getLang("change_user");
     if ($strSystemid == "") {
         $arrHeader[] = $this->getLang("change_module");
     }
     if ($strSystemid == "") {
         $arrHeader[] = $this->getLang("change_record");
     }
     $arrHeader[] = $this->getLang("change_action");
     $arrHeader[] = $this->getLang("change_property");
     $arrHeader[] = $this->getLang("change_oldvalue");
     $arrHeader[] = $this->getLang("change_newvalue");
     /** @var $objOneEntry class_changelog_container */
     foreach ($objArraySectionIterator as $objOneEntry) {
         $arrRowData = array();
         /** @var interface_versionable|class_model $objTarget */
         $objTarget = $objOneEntry->getObjTarget();
         $strOldValue = $objOneEntry->getStrOldValue();
         $strNewValue = $objOneEntry->getStrNewValue();
         if ($objTarget != null) {
             $strOldValue = $objTarget->renderVersionValue($objOneEntry->getStrProperty(), $strOldValue);
             $strNewValue = $objTarget->renderVersionValue($objOneEntry->getStrProperty(), $strNewValue);
         }
         $strOldValue = htmlStripTags($strOldValue);
         $strNewValue = htmlStripTags($strNewValue);
         $arrRowData[] = dateToString($objOneEntry->getObjDate());
         $arrRowData[] = $this->objToolkit->getTooltipText(uniStrTrim($objOneEntry->getStrUsername(), 15), $objOneEntry->getStrUsername());
         if ($strSystemid == "") {
             $arrRowData[] = $objTarget != null ? $objTarget->getArrModule("modul") : "";
         }
         if ($strSystemid == "") {
             $arrRowData[] = $objTarget != null ? $this->objToolkit->getTooltipText(uniStrTrim($objTarget->getVersionRecordName(), 20), $objTarget->getVersionRecordName() . " " . $objOneEntry->getStrSystemid()) : "";
         }
         $arrRowData[] = $objTarget != null ? $this->objToolkit->getTooltipText(uniStrTrim($objTarget->getVersionActionName($objOneEntry->getStrAction()), 15), $objTarget->getVersionActionName($objOneEntry->getStrAction())) : "";
         $arrRowData[] = $objTarget != null ? $this->objToolkit->getTooltipText(uniStrTrim($objTarget->getVersionPropertyName($objOneEntry->getStrProperty()), 20), $objTarget->getVersionPropertyName($objOneEntry->getStrProperty())) : "";
         $arrRowData[] = $this->objToolkit->getTooltipText(uniStrTrim($strOldValue, 20), $strOldValue);
         $arrRowData[] = $this->objToolkit->getTooltipText(uniStrTrim($strNewValue, 20), $strNewValue);
         $arrData[] = $arrRowData;
     }
     $objManager = new class_module_packagemanager_manager();
     if ($objManager->getPackage("phpexcel") != null) {
         $strReturn .= $this->objToolkit->getContentToolbar(array(class_link::getLinkAdmin($this->getArrModule("modul"), "genericChangelogExportExcel", "&systemid=" . $strSystemid, class_adminskin_helper::getAdminImage("icon_excel") . " " . $this->getLang("change_export_excel"), "", "", false)));
     }
     $strReturn .= $this->objToolkit->dataTable($arrHeader, $arrData);
     $strReturn .= $this->objToolkit->getPageview($objArraySectionIterator, $strSourceModule, $strSourceAction, "&systemid=" . $strSystemid . "&bitBlockFolderview=" . $this->getParam("bitBlockFolderview"));
     return $strReturn;
 }
 /**
  * Renders a legend below the current calendar in order to illustrate the different event-types.
  *
  * @param array $arrEntries
  *
  * @return string
  */
 public function getCalendarFilter(array $arrEntries)
 {
     $strTemplateID = $this->objTemplate->readTemplate("/elements.tpl", "calendar_filter");
     $strTemplateEntryID = $this->objTemplate->readTemplate("/elements.tpl", "calendar_filter_entry");
     $strEntries = "";
     foreach ($arrEntries as $strId => $strName) {
         $strChecked = class_carrier::getInstance()->getObjSession()->getSession($strId) == "disabled" ? "" : "checked";
         $strEntries .= $this->objTemplate->fillTemplate(array("filterid" => $strId, "filtername" => $strName, "checked" => $strChecked), $strTemplateEntryID);
     }
     return $this->objTemplate->fillTemplate(array("entries" => $strEntries, "action" => getLinkAdminHref("dashboard", "calendar")), $strTemplateID);
 }
 /**
  * Inits the update of the passed package, of given.
  * Therefore, the built-in method processPackgeUpload
  * should be used.
  *
  * @param $strTitle
  *
  * @return mixed
  */
 public function initPackageUpdate($strTitle)
 {
     $arrMetadata = $this->searchPackage($strTitle);
     if (count($arrMetadata) == 1) {
         $arrMetadata = $arrMetadata[0];
     }
     if (isset($arrMetadata["systemid"])) {
         $strUrl = getLinkAdminHref(self::$STR_MODULE_NAME, "uploadPackage", "&provider=" . get_class($this) . "&systemid=" . $arrMetadata["systemid"]);
         $strUrl = str_replace("_webpath_", _webpath_, $strUrl);
         $strUrl = str_replace("_indexpath_", _indexpath_, $strUrl);
         class_response_object::getInstance()->setStrRedirectUrl($strUrl);
     }
 }
 /**
  * Return an on-lick link for the passed object.
  * This link is used by the backend-search for the autocomplete-field
  *
  * @see getLinkAdminHref()
  * @return mixed
  */
 public function getSearchAdminLinkForObject()
 {
     return getLinkAdminHref("votings", "listAnswers", "&systemid=" . $this->getSystemid());
 }
 /**
  * Creates a small form to set the date-interval of the current report
  *
  * @param \interface_admin_statsreports|null $objReport
  *
  * @return string
  */
 private function createDateSelector(interface_admin_statsreports $objReport = null)
 {
     $strReturn = "";
     //And create the selector
     $strReturn .= $this->objToolkit->formHeader(getLinkAdminHref($this->arrModule["modul"], $this->getParam("action")));
     $strReturn .= $this->objToolkit->formInputHidden("sort", $this->getParam("sort"));
     $strReturn .= $this->objToolkit->formInputHidden("action", $this->getParam("action"));
     $strReturn .= $this->objToolkit->formInputHidden("filter", "true");
     $strReturn .= $this->objToolkit->formDateSingle("start", $this->getLang("start"), $this->objDateStart);
     $strReturn .= $this->objToolkit->formDateSingle("end", $this->getLang("ende"), $this->objDateEnd);
     //create interval dropdown?
     if ($objReport != null) {
         if ($objReport instanceof interface_admin_statsreports) {
             if ($objReport->isIntervalable()) {
                 $arrOption = array();
                 $arrOption["1"] = $this->getLang("interval_1day");
                 $arrOption["2"] = $this->getLang("interval_2days");
                 $arrOption["7"] = $this->getLang("interval_7days");
                 $arrOption["15"] = $this->getLang("interval_15days");
                 $arrOption["30"] = $this->getLang("interval_30days");
                 $arrOption["60"] = $this->getLang("interval_60days");
                 $strReturn .= $this->objToolkit->formInputDropdown("interval", $arrOption, $this->getLang("interval"), $this->intInterval);
             }
         }
     }
     $strReturn .= $this->objToolkit->formInputSubmit($this->getLang("filtern"));
     $strReturn .= $this->objToolkit->formClose();
     $strReturn = "<div class=\"dateSelector\">" . $strReturn . "</div>";
     return $strReturn;
 }