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 static function adjustTextlinks($arrElementFieldIds, $arrElementIds, $arrLanguageIds, $arrStorageIds) { //*** Adjust the links in large text fields. if (is_array($arrElementFieldIds)) { $strElmntPattern = "/(\\?eid=)([0-9]+)/ie"; $strStoragePattern = "/(\\?mid=)([0-9]+)/ie"; $arrElementFieldIds = array_unique($arrElementFieldIds); foreach ($arrElementFieldIds as $fieldId) { $objField = ElementField::selectByPk($fieldId); if (is_object($objField)) { foreach ($arrLanguageIds as $intLanguageId) { $objValue = $objField->getValueObject($intLanguageId); $strOldValue = $objValue->getValue(); if (!empty($strOldValue)) { $blnFound = false; if (preg_match($strElmntPattern, $strOldValue) > 0) { $strOldValue = preg_replace($strElmntPattern, "'\$1'.\$arrElementIds['\$2']", $strOldValue); $blnFound = true; } if (preg_match($strStoragePattern, $strOldValue) > 0) { $strOldValue = preg_replace($strStoragePattern, "'\$1'.\$arrStorageIds['\$2']", $strOldValue); $blnFound = true; } if ($blnFound) { $objValue->setValue($strOldValue, $intLanguageId, $objValue->getCascade()); $objField->setValueObject($objValue); } } } } } } }