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();
 }
Beispiel #2
0
 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);
                         }
                     }
                 }
             }
         }
     }
 }