delete() публичный Метод

Delete the database record.
public delete ( array $columns = null ) : void
$columns array
Результат void
Пример #1
0
 /**
  * Save dynamic field values to a field table
  *
  * @param  Application $application
  * @param  T\Fields    $field
  * @param  mixed       $value
  * @param  string      $model
  * @param  int         $modelId
  * @param  string      $uploadFolder
  * @param  string      $mediaLibrary
  * @return void
  */
 public static function save(Application $application, $field, $value, $model, $modelId, $uploadFolder = null, $mediaLibrary = null)
 {
     $fieldId = $field->id;
     $key = 'field_' . $fieldId;
     switch ($field->storage) {
         case 'int':
             $value = (int) $value;
             break;
         case 'float':
             $value = (double) $value;
             break;
         case 'date':
             $value = date('Y-m-d', strtotime($value));
             break;
         case 'time':
             $value = date('H:i:s', strtotime($value));
             break;
         case 'datetime':
             $value = date('Y-m-d H:i:s', strtotime($value));
             break;
     }
     $fv = new Record();
     $fv->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
     $fv->findRecordsBy(['model_id' => $modelId, 'model' => $model], ['order' => 'timestamp DESC']);
     if (isset($fv->model_id)) {
         if (strpos($field->type, '-history') !== false) {
             $historyAry = $fv->rows();
             if ($historyAry[0]->value != $value) {
                 if ($fv->count() == $application->module('phire-fields')->config()['history']) {
                     $fv = new Record();
                     $fv->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
                     $fv->delete(['model_id' => $modelId, 'model' => $model, 'timestamp' => end($historyAry)->timestamp]);
                 }
                 $fv = new Record();
                 $fv->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
                 $fv->findRecordsBy(['model_id' => $modelId, 'model' => $model]);
                 $fvRows = $fv->rows();
                 foreach ($fvRows as $f) {
                     $fv->findRecordById($f->id);
                     if (isset($fv)) {
                         $fv->revision = 1;
                         $fv->save();
                     }
                 }
                 $fv = new Record(['model_id' => $modelId, 'model' => $model, 'timestamp' => time(), 'revision' => 0, 'value' => $value]);
                 $fv->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
                 $fv->save();
             }
         } else {
             if ($field->type == 'file') {
                 self::saveFiles($fieldId, $modelId, $model, $field->encrypt, $application, $uploadFolder, $mediaLibrary);
             } else {
                 $fv->delete();
                 self::saveValues($fieldId, $modelId, $model, $value, $field->encrypt);
             }
         }
     } else {
         if ($field->type == 'file' && isset($_FILES[$key]) && !empty($_FILES[$key]['tmp_name']) && !empty($_FILES[$key]['name'])) {
             self::saveFiles($fieldId, $modelId, $model, $field->encrypt, $application, $uploadFolder, $mediaLibrary);
         } else {
             self::saveValues($fieldId, $modelId, $model, $value, $field->encrypt);
         }
     }
 }
Пример #2
0
 /**
  * Delete dynamic field values
  *
  * @param  AbstractController $controller
  * @param  Application        $application
  *
  * @return void
  */
 public static function delete(AbstractController $controller, Application $application)
 {
     if ($_POST) {
         $uploadFolder = BASE_PATH . CONTENT_PATH . '/files';
         $mediaLibrary = $application->module('phire-fields')->config()['media_library'];
         foreach ($_POST as $key => $value) {
             if (substr($key, 0, 3) == 'rm_' && is_array($value)) {
                 $fields = Table\Fields::findBy();
                 $fieldIds = [];
                 $fieldTypes = [];
                 $fieldStorage = [];
                 foreach ($fields->rows() as $field) {
                     $fieldIds[$field->id] = $field->name;
                     $fieldTypes[$field->id] = $field->type;
                     $fieldStorage[$field->id] = $field->storage;
                 }
                 foreach ($value as $id) {
                     foreach ($fieldIds as $fieldId => $fieldName) {
                         if ($fieldStorage[$fieldId] == 'eav') {
                             $fv = Table\FieldValues::findBy(['model_id' => (int) $id]);
                             if ($fv->hasRows()) {
                                 foreach ($fv->rows() as $f) {
                                     $fValue = json_decode($f->value, true);
                                     if (!is_array($fValue)) {
                                         $fValue = [$fValue];
                                     }
                                     foreach ($fValue as $f) {
                                         if (file_exists($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $f)) {
                                             unlink($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $f);
                                         }
                                         if (null !== $mediaLibrary && $application->isRegistered('phire-media')) {
                                             $library = new \Phire\Media\Model\MediaLibrary();
                                             $library->getByFolder($mediaLibrary);
                                             if (file_exists($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/' . $library->folder . '/' . $f)) {
                                                 $media = new \Phire\Media\Model\Media();
                                                 $media->getByFile($f);
                                                 if (isset($media->id)) {
                                                     $media->remove(['rm_media' => [$media->id]]);
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             $fv = new Table\FieldValues();
                             $fv->delete(['model_id' => (int) $id]);
                         } else {
                             $fv = new Record();
                             $fv->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $fieldName);
                             $fv->findRecordsBy(['model_id' => (int) $id]);
                             if ($fieldTypes[$fieldId] == 'file' && $fv->hasRows()) {
                                 foreach ($fv->rows() as $f) {
                                     if (file_exists($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $f->value)) {
                                         unlink($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $f->value);
                                     }
                                     if (null !== $mediaLibrary && $application->isRegistered('phire-media')) {
                                         $library = new \Phire\Media\Model\MediaLibrary();
                                         $library->getByFolder($mediaLibrary);
                                         if (file_exists($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/' . $library->folder . '/' . $f->value)) {
                                             $media = new \Phire\Media\Model\Media();
                                             $media->getByFile($f->value);
                                             if (isset($media->id)) {
                                                 $media->remove(['rm_media' => [$media->id]]);
                                             }
                                         }
                                     }
                                 }
                             }
                             $fv->delete(['model_id' => (int) $id]);
                         }
                     }
                 }
             }
         }
     }
 }