Exemplo n.º 1
0
 public function updateIndex($intId = 0)
 {
     if ($intId > 0) {
         $objElement = Element::selectByPk($intId);
         $objElements = new DBA__Collection();
         $objElements->addObject($objElement);
     } else {
         $objElements = Element::select();
     }
     foreach ($objElements as $objElement) {
         //*** Delete current index.
         $this->deleteSearchIndex($objElement->getId());
         //*** Get index words from the elements text field.
         $strSql = sprintf("SELECT pcms_element_field_text.value as value\n\t\t\t\t\tFROM pcms_element_field_text, pcms_element_field\n\t\t\t\t\tWHERE pcms_element_field_text.fieldId = pcms_element_field.id\n\t\t\t\t\tAND pcms_element_field.elementId = '%s'", quote_smart($objElement->getId()));
         $objElementFields = ElementFieldText::select($strSql);
         foreach ($objElementFields as $objElementField) {
             $this->insertSearchWord($objElementField->getValue(), $objElement->getId());
         }
         //*** Get index words from the elements bigtext field.
         $strSql = sprintf("SELECT pcms_element_field_bigtext.value as value\n\t\t\t\t\tFROM pcms_element_field_bigtext, pcms_element_field\n\t\t\t\t\tWHERE pcms_element_field_bigtext.fieldId = pcms_element_field.id\n\t\t\t\t\tAND pcms_element_field.elementId = '%s'", quote_smart($objElement->getId()));
         $objElementFields = ElementFieldBigText::select($strSql);
         foreach ($objElementFields as $objElementField) {
             $this->insertSearchWord($objElementField->getValue(), $objElement->getId());
         }
     }
 }
Exemplo n.º 2
0
 public static function getByFieldId($intFieldId, $intLanguageId = 0)
 {
     self::$object = "ElementFieldText";
     self::$table = "pcms_element_field_text";
     $objReturn = new ElementFieldText();
     if ($intFieldId > 0) {
         $strSql = sprintf("SELECT * FROM " . self::$table . " WHERE fieldId = %s AND languageId = %s", self::quote($intFieldId), self::quote($intLanguageId));
         $objElementValues = ElementFieldText::select($strSql);
         if (is_object($objElementValues) && $objElementValues->count() > 0) {
             $objReturn = $objElementValues->current();
         }
     }
     return $objReturn;
 }
Exemplo n.º 3
0
 public function updateIndex($intId = 0)
 {
     if ($intId > 0) {
         $objElement = Element::selectByPk($intId);
         $objElements = new DBA__Collection();
         $objElements->addObject($objElement);
     } else {
         $objElements = Element::select();
     }
     foreach ($objElements as $objElement) {
         $searchIndexes = array();
         $now = date('Y-m-d H:i:s');
         //*** Delete current index.
         $this->deleteSearchIndex($objElement->getId());
         //*** Get index words from the elements text field.
         $strSql = sprintf("SELECT pcms_element_field_text.value as value\n\t\t\t\t\tFROM pcms_element_field_text, pcms_element_field\n\t\t\t\t\tWHERE pcms_element_field_text.fieldId = pcms_element_field.id\n\t\t\t\t\tAND pcms_element_field.elementId = %s", self::quote($objElement->getId()));
         $objElementFields = ElementFieldText::select($strSql);
         foreach ($objElementFields as $objElementField) {
             foreach ($this->getWords($objElementField->getValue(), self::SEARCH_WEIGHT) as $strWord => $intWeight) {
                 $searchIndexes[] = sprintf("('%s', '%s', '%s', '%s', '%s', '%s')", self::quote($objElement->getId()), self::quote($strWord), self::quote($intWeight), 0, $now, $now);
             }
         }
         //*** Get index words from the elements bigtext field.
         $strSql = sprintf("SELECT pcms_element_field_bigtext.value as value\n\t\t\t\t\tFROM pcms_element_field_bigtext, pcms_element_field\n\t\t\t\t\tWHERE pcms_element_field_bigtext.fieldId = pcms_element_field.id\n\t\t\t\t\tAND pcms_element_field.elementId = %s", self::quote($objElement->getId()));
         $objElementFields = ElementFieldBigText::select($strSql);
         foreach ($objElementFields as $objElementField) {
             foreach ($this->getWords($objElementField->getValue(), self::SEARCH_WEIGHT) as $strWord => $intWeight) {
                 $searchIndexes[] = sprintf("('%s', '%s', '%s', '%s', '%s', '%s')", self::quote($objElement->getId()), self::quote($strWord), self::quote($intWeight), 0, $now, $now);
             }
         }
         if (count($searchIndexes) > 0) {
             $strSql = 'INSERT INTO pcms_search_index (elementId, word, count, sort, created, modified) VALUES ' . implode(',', $searchIndexes);
             SearchIndex::select($strSql);
         }
     }
 }