Ejemplo 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());
         }
     }
 }
Ejemplo n.º 2
0
 public function delete($blnRemovePhysical = FALSE)
 {
     self::$object = "ElementFieldBigText";
     self::$table = "pcms_element_field_bigtext";
     if ($blnRemovePhysical) {
         //*** Get TemplateField.
         $objElementField = ElementField::selectByPk($this->fieldId);
         if (is_object($objElementField)) {
             $objTemplateField = TemplateField::selectByPk($objElementField->getTemplateFieldId());
             switch ($objTemplateField->getTypeId()) {
                 case FIELD_TYPE_FILE:
                 case FIELD_TYPE_IMAGE:
                     //*** Get remote settings.
                     $strServer = Setting::getValueByName('ftp_server');
                     $strUsername = Setting::getValueByName('ftp_username');
                     $strPassword = Setting::getValueByName('ftp_password');
                     $strRemoteFolder = Setting::getValueByName('ftp_remote_folder');
                     //*** Remove deleted files.
                     $objFtp = new FTP($strServer);
                     $objFtp->login($strUsername, $strPassword);
                     $objFtp->pasv(TRUE);
                     $arrValues = explode("\n", $this->value);
                     foreach ($arrValues as $value) {
                         if (!empty($value)) {
                             //*** Find file name.
                             $arrFile = explode(":", $value);
                             if (count($arrFile) > 1) {
                                 //*** Check if the file is used by other elements.
                                 if (!ElementField::fileHasDuplicates($value, 1)) {
                                     //*** Remove files.
                                     $strFile = $strRemoteFolder . $arrFile[1];
                                     $objFtp->delete($strFile);
                                     if ($objTemplateField->getTypeId() == FIELD_TYPE_IMAGE) {
                                         //*** Remove template settings files.
                                         $objImageField = new ImageField($objElementField->getTemplateFieldId());
                                         $arrSettings = $objImageField->getSettings();
                                         foreach ($arrSettings as $key => $arrSetting) {
                                             if (!empty($arrSetting['width']) || !empty($arrSetting['height'])) {
                                                 //*** Remove file.
                                                 $strFile = $strRemoteFolder . FileIO::add2Base($arrFile[1], $arrSetting['key']);
                                                 $objFtp->delete($strFile);
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     break;
             }
         }
     }
     return parent::delete();
 }
Ejemplo 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);
         }
     }
 }
Ejemplo n.º 4
0
 public function getLinkedElementFields()
 {
     global $_CONF;
     $strSql = sprintf("SELECT pcms_element_field_bigtext.*\n\t\t\tFROM pcms_element_field_bigtext,\n\t\t\t\tpcms_element_field,\n\t\t\t\tpcms_element,\n\t\t\t\tpcms_template_field\n\t\t\tWHERE pcms_element_field_bigtext.value LIKE '%s'\n\t\t\t\tAND pcms_element_field_bigtext.fieldId = pcms_element_field.id\n\t\t\t\tAND pcms_element_field.elementId = pcms_element.id\n\t\t\t\tAND pcms_element.accountId = '%s'\n\t\t\t\tAND pcms_template_field.id = pcms_element_field.templateFieldId\n\t\t\t\tAND pcms_template_field.typeId IN (%s)", "%:{$this->id}\n%", $_CONF['app']['account']->getId(), "'" . FIELD_TYPE_IMAGE . "','" . FIELD_TYPE_FILE . "'");
     return ElementFieldBigText::select($strSql);
 }