/** * The main search function for the full text search * * @param string $searchterm Text/Number (solution id) * @param boolean $allLanguages true to search over all languages * @param boolean $hasMore true to disable the results paging * @param boolean $instantRespnse true to use it for Instant Response * @return array */ public function search($searchterm, $allLanguages = true, $hasMore = false, $instantResponse = false) { $fdTable = SQLPREFIX . 'faqdata'; $fcrTable = SQLPREFIX . 'faqcategoryrelations'; $condition = array($fdTable . '.active' => "'yes'"); // Search in all or one category? if (!is_null($this->categoryId)) { $selectedCategory = array($fcrTable . '.category_id' => $searchcategory); $condition = array_merge($selectedCategory, $condition); } if (!$allLanguages && !is_numeric($searchterm)) { $selectedLanguage = array($fdTable . '.lang' => "'" . $this->language . "'"); $condition = array_merge($selectedLanguage, $condition); } if (is_numeric($searchterm)) { // search for the solution_id $result = $this->db->search($fdTable, array($fdTable . '.id AS id', $fdTable . '.lang AS lang', $fdTable . '.solution_id AS solution_id', $fcrTable . '.category_id AS category_id', $fdTable . '.thema AS question', $fdTable . '.content AS answer'), $fcrTable, array($fdTable . '.id = ' . $fcrTable . '.record_id', $fdTable . '.lang = ' . $fcrTable . '.record_lang'), array($fdTable . '.solution_id'), $searchterm, $condition); } else { $result = $this->db->search($fdTable, array($fdTable . '.id AS id', $fdTable . '.lang AS lang', $fcrTable . '.category_id AS category_id', $fdTable . '.thema AS question', $fdTable . '.content AS answer'), $fcrTable, array($fdTable . '.id = ' . $fcrTable . '.record_id', $fdTable . '.lang = ' . $fcrTable . '.record_lang'), array($fdTable . '.thema', $fdTable . '.content', $fdTable . '.keywords'), $searchterm, $condition); } if ($result) { $num = $this->db->numRows($result); } if ($num == 0) { return array(); } else { return $this->db->fetchAll($result); } }
/** * The main search function for the full text search * * @param string $searchterm Text/Number (solution id) * @param boolean $allLanguages true to search over all languages * * @return array */ public function search($searchterm, $allLanguages = true) { $fdTable = SQLPREFIX . 'faqdata'; $fcrTable = SQLPREFIX . 'faqcategoryrelations'; $condition = array($fdTable . '.active' => "'yes'"); $search = PMF_Search_Factory::create($this->language, array('database' => PMF_Db::getType())); // Search in all or one category? if (!is_null($this->categoryId) && 0 < $this->categoryId) { $selectedCategory = array($fcrTable . '.category_id' => $this->categoryId); $condition = array_merge($selectedCategory, $condition); } if (!$allLanguages && !is_numeric($searchterm)) { $selectedLanguage = array($fdTable . '.lang' => "'" . $this->language->getLanguage() . "'"); $condition = array_merge($selectedLanguage, $condition); } $search->setDatabaseHandle($this->db)->setTable($fdTable)->setResultColumns(array($fdTable . '.id AS id', $fdTable . '.lang AS lang', $fdTable . '.solution_id AS solution_id', $fcrTable . '.category_id AS category_id', $fdTable . '.thema AS question', $fdTable . '.content AS answer'))->setJoinedTable($fcrTable)->setJoinedColumns(array($fdTable . '.id = ' . $fcrTable . '.record_id', $fdTable . '.lang = ' . $fcrTable . '.record_lang'))->setConditions($condition); if (is_numeric($searchterm)) { $search->setMatchingColumns(array($fdTable . '.solution_id')); } else { $search->setMatchingColumns(array($fdTable . '.thema', $fdTable . '.content', $fdTable . '.keywords')); } $result = $search->search($searchterm); if (!$this->db->num_rows($result)) { return array(); } else { return $this->db->fetchAll($result); } }
/** * Fetches all configuration items into an array * * @return void */ public function getAll() { $query = sprintf("\n SELECT\n config_name, config_value\n FROM\n %sfaqconfig", SQLPREFIX); $result = $this->db->query($query); $config = $this->db->fetchAll($result); foreach ($config as $items) { $this->config[$items->config_name] = $items->config_value; } }
/** * Retrieve all the stop words by a certain language * * @param string $lang Language to retrieve stop words by * @param boolean wordsOnly * * @return array */ public function getByLang($lang = null, $wordsOnly = false) { $lang = is_null($lang) ? $this->language : $lang; $sql = sprintf("SELECT id, lang, LOWER(stopword) AS stopword FROM {$this->table_name} WHERE lang = '%s'", $lang); $result = $this->db->query($sql); $retval = array(); if ($wordsOnly) { while (($row = $this->db->fetch_object($result)) == true) { $retval[] = $row->stopword; } } else { return $this->db->fetchAll($result); } return $retval; }
/** * Fetches all entries, if parameter = null, otherwise all from the given * array like array(1, 2, 3) * * @param array $ids Array of IDs * * @return array * @throws PMF_Exception */ public function fetchAll(array $ids = null) { $ratings = array(); $query = sprintf("\n SELECT\n id,\n artikel as record_id,\n vote as sumVotings,\n usr as numVotings,\n datum as date,\n ip\n FROM\n %sfaqvoting\n WHERE\n 1=1", SQLPREFIX); if (!is_null($ids)) { $query .= sprintf("\n AND \n id IN (%s)", implode(', ', $ids)); } $result = $this->db->query($query); if (!$result) { throw new PMF_Exception($this->db->error()); } else { $ratings = $this->db->fetchAll($result); } return $ratings; }
/** * Fetches all configuration items into an array * * @return void * @access public * @author Thorsten Rinne <*****@*****.**> */ public function getAll() { global $PMF_LANG, $LANG_CONF; // Load the Configuration Keys if (!isset($LANG_CONF)) { // Hack: avoid circular reference $PMF_CONF['main.maxAttachmentSize'] = 2048000; require_once dirname(dirname(__FILE__)) . '/lang/language_en.php'; } $query = sprintf("\n SELECT\n config_name, config_value\n FROM\n %sfaqconfig", SQLPREFIX); $result = $this->db->query($query); $config = $this->db->fetchAll($result); foreach ($config as $items) { $this->config[$items->config_name] = $items->config_value; } }