コード例 #1
0
ファイル: Model.php プロジェクト: vincium/bourg-la-reine
 public function getModule($createIfNotExist = false)
 {
     if (!isset($this->module)) {
         $this->module = \Rebond\Cms\Module\Data::loadById($this->moduleId, $createIfNotExist);
     }
     return $this->module;
 }
コード例 #2
0
ファイル: Media.php プロジェクト: vincium/bourg-la-reine
 public function in_use()
 {
     // auth
     Auth::isAdminAuthorized($this->signedUser, 'admin.media.image', true, '/media');
     $id = Converter::int('id');
     if (!isset($id)) {
         return $this->index();
     }
     // find app modules that use medium
     $items = [];
     $moduleMedium = \Rebond\Cms\ModuleMedia\Data::loadAll();
     if ($moduleMedium) {
         foreach ($moduleMedium as $moduleMedia) {
             $module = \Rebond\Cms\Module\Data::loadById($moduleMedia->getModuleId());
             if (isset($module)) {
                 $appData = '\\Rebond\\App\\' . $module->getTitle() . '\\Data';
                 $options = [];
                 $options['where'][] = [$moduleMedia->getField() . ' = ?', $id];
                 $options['where'][] = ['content.version NOT IN (?)', [VersionType::DELETED, VersionType::OLD]];
                 $items = array_merge($items, $appData::loadAll($options));
             }
         }
     }
     // view
     $this->setTpl();
     // main
     $tplMain = new Template(Template::SITE, ['admin', 'media']);
     $tplMain->set('items', $items);
     // layout
     $this->tplLayout->set('column1', $tplMain->render('in-use'));
     // master
     $this->tplMaster->set('layout', $this->tplLayout->render('layout-1-col'));
     return $this->tplMaster->render('tpl-default');
 }
コード例 #3
0
ファイル: Cms.php プロジェクト: vincium/bourg-la-reine
 public function module_export()
 {
     // auth
     Auth::isAdminAuthorized($this->signedUser, 'admin.cms.module.export', true, '/cms/module');
     // check
     $id = Converter::int('id', 'get');
     $module = \Rebond\Cms\Module\Data::loadById($id);
     if (!isset($module)) {
         Session::adminError('itemNotFound', [$id], '/cms/module');
     }
     $exportPath = FULL_PATH . 'files/export/';
     $zipFile = \Rebond\Cms\Module\Service::export($module);
     if ($zipFile === false) {
         Session::adminError('exportFailed', null, '/cms/module');
     }
     if ($fd = fopen($exportPath . $zipFile, 'r')) {
         header('Content-type: text/plain');
         header('Content-Disposition: attachment; filename="' . $zipFile . '"');
         header('Content-length: ' . filesize($exportPath . $zipFile));
         header('Cache-control: private');
         while (!feof($fd)) {
             $buffer = fread($fd, 2048);
             echo $buffer;
         }
     }
 }
コード例 #4
0
ファイル: Service.php プロジェクト: vincium/bourg-la-reine
 public function deleteMedia()
 {
     if (!$this->hasPrivilege('admin.media.edit')) {
         return $this->noPrivilege('admin.media.edit');
     }
     $json = [];
     $json['result'] = ResultType::ERROR;
     // check
     $id = Converter::int('id', 'post', 0);
     // get media
     $media = \Rebond\Core\Media\Data::loadById($id);
     if (!isset($media)) {
         $json['message'] = Lang::lang('itemNotFound', [$id]);
         return json_encode($json);
     }
     $count = 0;
     // find app modules that use medium
     $moduleMedium = \Rebond\Cms\ModuleMedia\Data::loadAll();
     if ($moduleMedium) {
         foreach ($moduleMedium as $moduleMedia) {
             $module = \Rebond\Cms\Module\Data::loadById($moduleMedia->getModuleId());
             if (isset($module)) {
                 $appData = '\\Rebond\\App\\' . $module->getTitle() . '\\Data';
                 // count
                 $options = [];
                 $options['where'][] = [$moduleMedia->getField() . ' = ?', $id];
                 $options['where'][] = ['content.version NOT IN (?)', [VersionType::DELETED, VersionType::OLD]];
                 $num = $appData::count($options);
                 $count += $num;
             }
         }
     }
     if ($count > 0) {
         $json['message'] = 'media cannot not been deleted because it is used by <a href="/media/in-use?id=' . $id . '">' . $count . ' item(s)</a>.';
         return json_encode($json);
     }
     $r = \Rebond\Core\Media\Data::deleteById($media->getId());
     if ($r == ResultType::ERROR) {
         $json['message'] = 'media could not be deleted';
         return json_encode($json);
     }
     \Rebond\Util\File::deleteAllMedia($media->getPath(), $media->getUpload());
     $json['result'] = ResultType::SUCCESS;
     $json['message'] = 'media deleted';
     return json_encode($json);
 }