Example #1
0
 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());
 }