public function delete() { global $_CONF; parent::$object = "StorageItem"; parent::$table = "pcms_storage_item"; if (class_exists("AuditLog")) { AuditLog::addLog(AUDIT_TYPE_STORAGE, $this->getId(), $this->getName(), "delete"); } //*** Remove child items. $objElements = $this->getItems(); foreach ($objElements as $objElement) { $objElement->delete(); } if ($this->getTypeId() == STORAGE_TYPE_FILE) { $strValue = $this->getData()->getLocalName(); if (!empty($strValue)) { //*** Remove physical. $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); $strFile = $strRemoteFolder . $strValue; $objFtp->delete($strFile); } $objElements = $this->getLinkedElementFields(); foreach ($objElements as $objElement) { $strValue = $objElement->getValue(); $arrValue = explode("\n", $strValue); $arrNew = array(); foreach ($arrValue as $value) { $arrFile = explode(":", $value); if (count($arrFile) > 2 && $arrFile[2] == $this->id) { //*** Skip me. } else { array_push($arrNew, $value); } } $objElement->setValue(implode("\n", $arrNew)); $objElement->save(); } } return parent::delete($_CONF['app']['account']->getId()); }