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()); } } }
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(); }
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); } } }
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); }