/** * action faq * * @return void */ public function faqAction() { $this->contentObj = $this->configurationManager->getContentObject(); $this->settings['contentID'] = md5($this->contentObj->data['uid']); $template = $this->configuration->template(); if ($template == 1) { $detail = 0; if ($this->request->hasArgument('faq')) { $data = $this->request->getArguments('faq'); if (intVal($data['faq'])) { $detail = $data['faq']; } } $faq = $this->fAQRepository->getFAQData($detail); if ($this->settings['main']['displayFAQ'] == 'CategoryGroupWise' && $detail == 0) { $faq = $this->fAQRepository->getFAQCategoryData($faq, $this->settings['main']['categories']); } if (count($faq) == 0) { $template = array("error" => array('no_records')); } $this->view->assign('FAQ', $faq); $this->view->assign('detail', $detail); } $this->view->assign('template', $template); $this->view->assign('settings', $this->settings); // Include Additional Data $this->configuration->additionalData(); }
/** * getFAQData * * @param $faq * @return */ public function getFAQData($faq) { $settings = $this->settingsService->getSettings(); $this->fullURL = GeneralUtility::getIndpEnv('TYPO3_SITE_URL'); $limit = ''; if (isset($settings['main']['order'])) { if ($settings['main']['order'] == 'expert') { $orderBy = ' e.name ' . $settings['main']['orderType']; } else { $orderBy = ' f.' . $settings['main']['order'] . ' ' . $settings['main']['orderType']; } } else { $orderBy = ' f.sorting desc'; } $limit = ""; if (isset($settings['main']['limit']) && $settings['main']['limit'] > 0) { $limit = $settings['main']['limit']; } if ($settings['main']['displayFAQ'] == 'CategoryGroupWise' && $faq == 0) { $orderBy = ' c.name ASC , ' . $orderBy; } $field = 'f.uid, f.question, f.asked_by, f.expert, f.answer, f.related, f.related_link, e.name, e.email, e.url, m.uid_foreign , group_concat( cast( c.name AS char ) ) AS categoryName, group_concat( cast( c.uid AS char ) ) AS categoryID'; $table = 'tx_jsfaq_domain_model_faq as f LEFT JOIN tx_jsfaq_domain_model_expert AS e ON f.expert = e.uid LEFT JOIN tx_jsfaq_faq_category_mm AS m ON f.uid = m.uid_local LEFT JOIN tx_jsfaq_domain_model_category AS c ON m.uid_foreign = c.uid '; $groupBy = '( f.uid )'; $where = ''; if ($faq > 0) { $where = ' AND f.uid = \'' . $faq . '\''; } else { if (isset($settings['main']['startingPoint']) && $settings['main']['startingPoint'] != '') { $storagePids = $this->pageService->extendPidListByChildrens($settings['main']['startingPoint'], $settings['main']['recursive']); $where .= ' AND f.pid in (' . $storagePids . ') '; } if (isset($settings['main']['categories']) && $settings['main']['categories'] != '') { $where .= ' AND m.uid_foreign IN (' . $settings['main']['categories'] . ') '; } } $currentTime = time(); $where = ' f.deleted = 0 AND f.hidden = 0 AND ( f.starttime =0 OR ( f.starttime <= ' . $currentTime . ' AND f.endtime >=' . $currentTime . ' )) ' . $where; $where .= ' AND f.sys_language_uid IN (-1, ' . (int) $GLOBALS['TSFE']->sys_language_uid . ')'; $conf = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows($field, $table, $where, $groupBy, $orderBy, $limit); $data = array(); foreach ($conf as $key => $value) { $field1 = 'uid, options, description, image'; $orderBy1 = ' sorting'; $table1 = 'tx_jsfaq_domain_model_content'; $where1 = ' deleted = 0 AND hidden = 0 AND faq = \'' . $value['uid'] . '\''; $answers = $this->configuration->falImages($GLOBALS['TYPO3_DB']->exec_SELECTgetRows($field1, $table1, $where1, '', $orderBy1), $table1, 'image'); $field2 = 'f.uid, f.question'; $orderBy2 = 'm.sorting'; $table2 = 'tx_jsfaq_faq_faq_mm as m LEFT JOIN tx_jsfaq_domain_model_faq as f ON m.uid_foreign = f.uid'; $where2 = ' uid_local = ' . $value['uid']; $related_faq = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows($field2, $table2, $where2, '', $orderBy2); $relatedFaq = array(); foreach ($related_faq as $key => $val) { $relatedFaq[$val['uid']] = $val; } $related_link = GeneralUtility::trimExplode(chr(10), $value['related_link'], true); $data[$value['uid']] = $value; $data[$value['uid']]['answers'] = $answers; $data[$value['uid']]['related_link'] = $related_link; $data[$value['uid']]['related_faq'] = $relatedFaq; } return $data; }