public function getAdminForm()
 {
     $objForm = parent::getAdminForm();
     $arrRawCats = class_module_faqs_category::getObjectList();
     $arrCats = array();
     //addd an "i want all" cat ;)
     $arrCats["0"] = $this->getLang("commons_all_categories");
     foreach ($arrRawCats as $objOneCat) {
         $arrCats[$objOneCat->getSystemid()] = $objOneCat->getStrDisplayName();
     }
     $objForm->getField("category")->setArrKeyValues($arrCats);
     return $objForm;
 }
 /**
  * @inheritdoc
  */
 public function generateFieldsFromObject()
 {
     parent::generateFieldsFromObject();
     //inject the categories formentries
     $arrCats = class_module_faqs_category::getObjectList();
     if (count($arrCats) > 0) {
         $arrKeyValues = array();
         /** @var class_module_faqs_category $objOneCat */
         foreach ($arrCats as $objOneCat) {
             $arrKeyValues[$objOneCat->getSystemid()] = $objOneCat->getStrDisplayName();
         }
         $this->getField("cats")->setStrLabel($this->getLang("commons_categories"))->setArrKeyValues($arrKeyValues);
     }
 }
 /**
  * Returns a list of all categories and all faqs
  * The list can be filtered by categories
  *
  * @return string
  * @autoTestable
  * @permissions view
  */
 protected function actionList()
 {
     $this->setStrCurObjectTypeName("Cat");
     $this->setCurObjectClassName("class_module_faqs_cat");
     $objIterator = new class_array_section_iterator(class_module_faqs_category::getObjectCount());
     $objIterator->setIntElementsPerPage(class_module_faqs_category::getObjectCount());
     $objIterator->setPageNumber(1);
     $objIterator->setArraySection(class_module_faqs_category::getObjectList("", $objIterator->calculateStartPos(), $objIterator->calculateEndPos()));
     $strReturn = $this->renderList($objIterator, false, class_module_faqs_admin::STR_CAT_LIST);
     $this->setStrCurObjectTypeName("Faq");
     $this->setCurObjectClassName("class_module_faqs_faq");
     $objIterator = new class_array_section_iterator(class_module_faqs_faq::getObjectCount($this->getParam("filterId")));
     $objIterator->setPageNumber($this->getParam("pv"));
     $objIterator->setArraySection(class_module_faqs_faq::getObjectList($this->getParam("filterId"), $objIterator->calculateStartPos(), $objIterator->calculateEndPos()));
     $strReturn .= $this->renderList($objIterator, false, class_module_faqs_admin::STR_FAQ_LIST);
     return $strReturn;
 }
 /**
  * Returns a list of faqs.
  * The category is choosen from the element-data
  *
  * @return string
  */
 protected function actionList()
 {
     $strReturn = "";
     //load categories
     $arrCategories = array();
     if ($this->arrElementData["faqs_category"] == "0") {
         $arrCategories = class_module_faqs_category::getObjectList();
     } else {
         $arrCategories[] = new class_module_faqs_category($this->arrElementData["faqs_category"]);
     }
     //if no cat was created by now, use a dummy cat
     if (count($arrCategories) == 0) {
         $arrCategories[] = 1;
     }
     //load every category
     $strCats = "";
     foreach ($arrCategories as $objCategory) {
         //Load faqs
         if (!is_object($objCategory) && $objCategory == 1) {
             $arrFaqs = class_module_faqs_faq::loadListFaqsPortal(1);
             $objCategory = new class_module_faqs_category();
         } else {
             if ($objCategory->getIntRecordStatus() == 0) {
                 continue;
             }
             $arrFaqs = class_module_faqs_faq::loadListFaqsPortal($objCategory->getSystemid());
         }
         $strFaqs = "";
         //Check rights
         foreach ($arrFaqs as $objOneFaq) {
             if ($objOneFaq->rightView()) {
                 $objMapper = new class_template_mapper($objOneFaq);
                 //legacy support
                 $objMapper->addPlaceholder("faq_question", $objOneFaq->getStrQuestion());
                 $objMapper->addPlaceholder("faq_answer", $objOneFaq->getStrAnswer());
                 $objMapper->addPlaceholder("faq_systemid", $objOneFaq->getSystemid());
                 //ratings available?
                 if ($objOneFaq->getFloatRating() !== null && class_module_system_module::getModuleByName("rating") != null) {
                     /** @var $objRating class_module_rating_portal */
                     $objRating = class_module_system_module::getModuleByName("rating")->getPortalInstanceOfConcreteModule();
                     $objMapper->addPlaceholder("faq_rating", $objRating->buildRatingBar($objOneFaq->getFloatRating(), $objOneFaq->getIntRatingHits(), $objOneFaq->getSystemid(), $objOneFaq->isRateableByUser(), $objOneFaq->rightRight1()));
                 }
                 $strOneFaq = $objMapper->writeToTemplate("/module_faqs/" . $this->arrElementData["faqs_template"], "faq_faq", false);
                 //Add pe code
                 $arrPeConfig = array("pe_module" => "faqs", "pe_action_edit" => "editFaq", "pe_action_edit_params" => "&systemid=" . $objOneFaq->getSystemid(), "pe_action_new" => "newFaq", "pe_action_new_params" => "", "pe_action_delete" => "deleteFaq", "pe_action_delete_params" => "&systemid=" . $objOneFaq->getSystemid());
                 $strFaqs .= class_element_portal::addPortalEditorCode($strOneFaq, $objOneFaq->getSystemid(), $arrPeConfig);
             }
         }
         //wrap category around
         $objMapper = new class_template_mapper($objCategory);
         //legacy support
         $objMapper->addPlaceholder("faq_cat_title", $objCategory->getStrTitle());
         $objMapper->addPlaceholder("faq_faqs", $strFaqs);
         $objMapper->addPlaceholder("faq_cat_systemid", $objCategory->getSystemid());
         $strCats .= $objMapper->writeToTemplate("/module_faqs/" . $this->arrElementData["faqs_template"], "faq_category");
     }
     //wrap list container around
     //wrap category around
     $strListTemplateID = $this->objTemplate->readTemplate("/module_faqs/" . $this->arrElementData["faqs_template"], "faqs_list");
     $arrTemplate = array();
     $arrTemplate["faq_categories"] = $strCats;
     $strReturn .= $this->objTemplate->fillTemplate($arrTemplate, $strListTemplateID);
     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)
 {
     //delete the page-element
     $objElement = class_module_pages_element::getElement("faqs");
     if ($objElement != null) {
         $strReturn .= "Deleting page-element 'faqs'...\n";
         $objElement->deleteObjectFromDatabase();
     } else {
         $strReturn .= "Error finding page-element 'faqs', aborting.\n";
         return false;
     }
     //delete all faqs and categories
     /** @var class_module_faqs_category $objOneCategory */
     foreach (class_module_faqs_category::getObjectList() as $objOneCategory) {
         $strReturn .= "Deleting category '" . $objOneCategory->getStrDisplayName() . "' ...\n";
         if (!$objOneCategory->deleteObjectFromDatabase()) {
             $strReturn .= "Error deleting category, aborting.\n";
             return false;
         }
     }
     /** @var class_module_faqs_faq $objOneFaq*/
     foreach (class_module_faqs_faq::getObjectList() as $objOneFaq) {
         $strReturn .= "Deleting faq '" . $objOneFaq->getStrDisplayName() . "' ...\n";
         if (!$objOneFaq->deleteObjectFromDatabase()) {
             $strReturn .= "Error deleting faq, 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("faqs_category", "faqs", "faqs_member", "element_faqs") 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;
 }