Exemplo n.º 1
0
 /**
  * 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);
     }
 }
Exemplo n.º 2
0
 /**
  * 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);
     }
 }
Exemplo n.º 3
0
 /**
  * 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;
     }
 }
Exemplo n.º 4
0
 /**
  * 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;
 }
Exemplo n.º 5
0
 /**
  * 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;
 }
Exemplo n.º 6
0
 /**
  * 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;
     }
 }