public function media_link() { // auth Auth::isAdminAuthorized($this->signedUser, 'admin.cms.media-link', true, '/cms'); $moduleMedias = \Rebond\Cms\ModuleMedia\Data::loadAll(); // view $this->setTpl(); // filter $tplFilter = new Template(Template::MODULE, ['cms', 'moduleMedia']); $tplFilter->set('count', count($moduleMedias)); // main $tplMain = new Template(Template::MODULE, ['cms', 'moduleMedia']); $tplMain->set('items', $moduleMedias); // layout $this->tplLayout->set('column1', $tplFilter->render('filter')); $this->tplLayout->set('column2', $tplMain->render('listing')); // master $this->tplMaster->set('layout', $this->tplLayout->render('layout-2-row')); return $this->tplMaster->render('tpl-default'); }
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'); }
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); }