getSql() публичный статический Метод

Get the SQL object.
public static getSql ( ) : Sql
Результат Sql
Пример #1
0
 /**
  * Delete dynamic field files
  *
  * @param  int         $fieldId
  * @param  int         $modelId
  * @param  string      $model
  * @param  boolean     $encrypt
  * @param  Application $app
  * @param  string      $uploadFolder
  * @param  string      $mediaLibrary
  * @return void
  */
 protected static function saveFiles($fieldId, $modelId, $model, $encrypt, $app, $uploadFolder, $mediaLibrary = null)
 {
     $field = T\Fields::findById($fieldId);
     if (isset($field->id)) {
         $time = time();
         $newValues = [];
         $oldValues = new Record();
         $oldValues->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
         $oldValues->findRecordsBy(['model_id' => $modelId, 'model' => $model], ['order' => 'id ASC']);
         $old = $oldValues->rows(false);
         foreach ($_FILES as $key => $file) {
             $id = substr_count($key, '_') == 2 ? substr($key, strrpos($key, '_') + 1) : 0;
             if (!empty($_FILES[$key]['tmp_name']) && !empty($_FILES[$key]['name'])) {
                 if (null !== $mediaLibrary) {
                     $library = new \Phire\Media\Model\MediaLibrary();
                     $library->getByFolder($mediaLibrary);
                     if (isset($library->id)) {
                         $settings = $library->getSettings();
                         $mediaUpload = new Upload($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/' . $library->folder, $settings['max_filesize'], $settings['disallowed_types'], $settings['allowed_types']);
                         if ($mediaUpload->test($_FILES[$key])) {
                             $media = new \Phire\Media\Model\Media();
                             $media->save($_FILES[$key], ['library_id' => $library->id]);
                             $value = $media->file;
                             if ($encrypt) {
                                 $value = (new Mcrypt())->create($value);
                             }
                             if (isset($old[$id])) {
                                 $replaceValue = new Record();
                                 $replaceValue->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
                                 $replaceValue->findRecordById($old[$id]['id']);
                                 if (isset($replaceValue->id)) {
                                     $replaceValue->value = $value;
                                     $replaceValue->save();
                                     if (file_exists($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $old[$id]['value'])) {
                                         unlink($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $old[$id]['value']);
                                     }
                                     if (file_exists($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/' . $library->folder . '/' . $old[$id]['value'])) {
                                         $media = new \Phire\Media\Model\Media();
                                         $media->getByFile($old[$id]['value']);
                                         if (isset($media->id)) {
                                             $media->remove(['rm_media' => [$media->id]]);
                                         }
                                     }
                                 }
                             } else {
                                 $newValues[] = $value;
                             }
                             copy($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/' . $library->folder . '/' . $media->file, $_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $media->file);
                         }
                     }
                 } else {
                     $upload = new Upload($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/', $app->module('phire-fields')->config()['max_size'], $app->module('phire-fields')->config()['disallowed_types'], $app->module('phire-fields')->config()['allowed_types']);
                     $value = $upload->upload($_FILES[$key]);
                     if ($encrypt) {
                         $value = (new Mcrypt())->create($value);
                     }
                     if (isset($old[$id])) {
                         $replaceValue = new Record();
                         $replaceValue->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
                         $replaceValue->findRecordById($old[$id]['id']);
                         if (isset($replaceValue->id)) {
                             $replaceValue->value = $value;
                             $replaceValue->save();
                             if (file_exists($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $old[$id]['value'])) {
                                 unlink($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $old[$id]['value']);
                             }
                         }
                     } else {
                         $newValues[] = $value;
                     }
                 }
             }
         }
         foreach ($newValues as $v) {
             if (!empty($v)) {
                 $fv = new Record(['model_id' => $modelId, 'model' => $model, 'timestamp' => $time, 'revision' => 0, 'value' => $v]);
                 $fv->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
                 $fv->save();
                 $fvs = new Record();
                 $fvs->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $field->name);
                 $sql = $fvs->getSql();
                 $sql->update(['timestamp' => ':timestamp'])->where('model_id = :model_id')->where('model = :model');
                 $fvs->execute($sql, ['timestamp' => $time, 'model_id' => $modelId, 'model' => $model]);
             }
         }
     }
 }
Пример #2
0
 /**
  * Remove any media files
  *
  * @param  Application $application
  * @return void
  */
 public static function removeMedia(Application $application)
 {
     $uploadFolder = BASE_PATH . CONTENT_PATH . '/files';
     $mediaLibrary = $application->module('phire-fields')->config()['media_library'];
     if ($_POST && isset($_POST['rm_media']) && null !== $mediaLibrary && $application->isRegistered('phire-media')) {
         $media = new \Phire\Media\Model\Media();
         $fields = Table\Fields::findBy(['type' => 'file']);
         $fieldIds = [];
         foreach ($fields->rows() as $field) {
             $fieldIds[$field->id] = $field->name;
         }
         foreach ($_POST['rm_media'] as $mid) {
             $media->getById($mid);
             if (isset($media->id) && !empty($media->file)) {
                 $sql = Table\FieldValues::sql();
                 $sql->select()->where('value LIKE :value');
                 $fv = Table\FieldValues::execute((string) $sql, ['value' => '%"' . $media->file . '"%']);
                 // Remove field value media files from EAV field table
                 if ($fv->count() > 0) {
                     if (file_exists($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $media->file)) {
                         unlink($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $media->file);
                     }
                     foreach ($fv->rows() as $val) {
                         $v = json_decode($val->value);
                         if (is_array($v) && in_array($media->file, $v)) {
                             $sql = Table\FieldValues::sql();
                             $sql->select()->where('field_id = :field_id')->where('model_id = :model_id')->where('value LIKE :value');
                             $f = Table\FieldValues::execute((string) $sql, ['field_id' => $val->field_id, 'model_id' => $val->model_id, 'value' => '%"' . $media->file . '"%']);
                             if (isset($f->field_id)) {
                                 unset($v[array_search($media->file, $v)]);
                                 if (count($v) > 0) {
                                     $v = array_values($v);
                                     $f->value = json_encode($v);
                                     $f->save();
                                 } else {
                                     $f->delete();
                                 }
                             }
                         } else {
                             $f = Table\FieldValues::findBy(['field_id' => $val->field_id, 'model_id' => $val->model_id, 'value' => '"' . $media->file . '"']);
                             $f->delete();
                         }
                     }
                 }
                 // Remove field value media files from field tables
                 foreach ($fieldIds as $fieldId => $fieldName) {
                     $fv = new Record();
                     $fv->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('field_' . $fieldName);
                     $sql = $fv->getSql();
                     $sql->select()->where('value LIKE :value');
                     $fv->executeStatement($sql, ['value' => '%"' . $media->file . '"%']);
                     if ($fv->count() > 0) {
                         if (file_exists($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $media->file)) {
                             unlink($_SERVER['DOCUMENT_ROOT'] . $uploadFolder . '/' . $media->file);
                         }
                         foreach ($fv->rows() as $val) {
                             $f = new Record();
                             $f->setPrefix(DB_PREFIX)->setPrimaryKeys(['id'])->setTable('fields_' . $fieldName);
                             $f->findRecordById($val->id);
                             if (isset($f->id)) {
                                 $f->delete();
                             }
                         }
                     }
                 }
             }
         }
     }
 }