public function getModule($createIfNotExist = false) { if (!isset($this->module)) { $this->module = \Rebond\Cms\Module\Data::loadById($this->moduleId, $createIfNotExist); } return $this->module; }
public function loadModule() { if (!isset($module)) { $this->module = \Rebond\Cms\Module\Data::loadByTitle('Slideshow'); $this->moduleId = $this->module->getId(); } }
private function hasFilter() { $module = \Rebond\Cms\Module\Data::loadByTitle('Standard'); if (!isset($module)) { Util\Error::kill(Util\Code::ITEM_NOT_FOUND, 'Standard module not found', __FILE__, __LINE__); } return $module->getHasFilter(); }
public function buildModule() { $options = []; $options['clearSelect'] = true; $options['select'][] = \Rebond\Cms\Module\Data::getList(['id', 'title']); $options['where'][] = 'module.status = 1'; $items = \Rebond\Cms\Module\Data::loadAll($options); return Util\Form::buildDropdownList('moduleId' . $this->unique, $items, 'id', 'title', $this->getModel()->getModuleId()); }
public function buildModule() { $options = []; $options['clearSelect'] = true; $options['select'][] = \Rebond\Cms\Module\Data::getList(['id', 'has_content', 'title']); $options['where'][] = 'module.status = 1'; $options['order'][] = 'module.title'; $items = \Rebond\Cms\Module\Data::loadAll($options); $form = '<select class="input" name="moduleId" id="moduleId">'; if ($items) { foreach ($items as $item) { $selected = $item->getId() == $this->getModel()->getModuleId() ? ' selected="selected"' : ''; $form .= '<option value="' . $item->getId() . '" data-app=' . $item->getHasContent() . $selected . '>' . $item->getTitle() . '</option>'; } } $form .= '</select>'; return $form; }
public function index() { // auth if (!\Rebond\Util\Auth::isAdminAuthorized($this->signedUser, null, false)) { header('Location: /profile/sign-in'); exit; } // view $this->setTpl(); // main $tplMain = new Template(Template::SITE, ['admin']); $tplMain->set('title', $this->app->site()->getTitle()); // right $tplRight = new Template(Template::SITE, ['admin']); $pendingItems = []; if ($this->app->site()->getIsCms()) { $options = []; $options['where'][] = 'module.status = 1'; $options['where'][] = 'module.has_content = 1'; $modules = \Rebond\Cms\Module\Data::loadAll($options); if ($modules) { foreach ($modules as $module) { $appData = '\\Rebond\\App\\' . $module->getTitle() . '\\Data'; $items = $appData::loadByVersion('pending'); if (count($items) > 0) { $pendingItems[] = $items; } } } } $tplRight->set('items', $pendingItems); $tplRight->set('title', \Rebond\Util\Lang::lang('pendingItems')); // layout $this->tplLayout->set('column1', $tplMain->render('index')); $this->tplLayout->set('column2', $tplRight->render('pending')); // master $this->tplMaster->set('layout', $this->tplLayout->render('layout-2-col')); 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 search() { if (!$this->hasPrivilege('admin.content.search')) { return $this->noPrivilege('admin.content.search'); } $json = []; $json['result'] = ResultType::ERROR; // check $search = Converter::string('search', 'post'); if (!isset($search)) { $json['message'] = Lang::lang('errorInvalidParameters'); return json_encode($json); } $searchResults = []; // search and build views $options = []; $options['clearSelect'] = true; $options['select'][] = \Rebond\Cms\Module\Data::getList(['id', 'title']); $options['where'][] = 'module.status = 1'; $options['where'][] = 'module.has_content = 1'; $modules = \Rebond\Cms\Module\Data::loadAll($options); $options2 = []; $options2['clearSelect'] = true; $options2['where'][] = ['LOWER(content.title) LIKE ?', '%' . strtolower($search) . '%']; $options2['where'][] = ['content.version IN (?)', [0, 1, 3]]; $options2['limit'][] = '0, 10'; foreach ($modules as $module) { $appData = '\\Rebond\\App\\' . $module->getTitle() . '\\Data'; $options2['select'][] = $appData::getList(['app_id']); $options2['select'][] = \Rebond\Cms\Content\Data::getList(['title', 'version']); $items = $appData::loadAll($options2); if (isset($items) && count($items) > 0) { foreach ($items as $item) { $result = new \Rebond\Cms\Search(); $result->setType($module->getTitle()); $result->setAppId($item->getAppId()); $result->setTitle($item->getTitle()); $result->setVersion($item->getVersion()); $result->setVersionValue($item->getVersionValue()); $result->setLink('/content/edit/?module=' . $module->getTitle() . '&id=' . $item->getAppId()); $searchResults[] = $result; } } } // view $tpl = new Template(Template::SITE, ['admin']); $tpl->set('search', $search); $tpl->set('results', $searchResults); $json['result'] = ResultType::SUCCESS; $json['message'] = $tpl->render('search'); return json_encode($json); }
private function findModule($moduleName) { if ($moduleName == '') { header('Location: /content/'); exit; } $module = \Rebond\Cms\Module\Data::loadByTitle($moduleName); if (!isset($module)) { Session::adminError('itemNotFound', [$moduleName], '/content/'); } return $module; }
public function bin() { // auth Util\Auth::isAdminAuthorized($this->signedUser, 'admin.dev', true, '/'); // check $result = ''; $empty = Util\Converter::bool('empty'); $contentItems = []; // content items $options = []; $options['where'][] = 'module.has_content = 1'; $modules = \Rebond\Cms\Module\Data::loadAll($options); $options = []; $options['where'][] = ['content.version IN (?)', [4, 5]]; $options['order'][] = 'content.modified_date'; foreach ($modules as $module) { $appData = '\\Rebond\\App\\' . $module->getTitle() . '\\Data'; $items = $appData::loadAll($options); if (count($items) > 0) { if ($empty) { foreach ($items as $item) { $item->delete(); } } else { $contentItems[$module->getTitle()] = $items; } } } // CSS $filePath = \Rebond\Config::getPath('siteFolder') . '/css/skin/'; $skins = Util\File::getFolders($filePath); $cssFiles = []; foreach ($skins as $skin) { $cssFiles[$skin] = []; $path = $filePath . $skin . '/'; $files = Util\File::getFiles($path); foreach ($files as $file) { if (Util\File::getExtension($file) == 'css') { continue; } if ($empty) { Util\File::delete($path, $file); } else { $date = Util\Format::date(filemtime(FULL_PATH . $path . $file), 'smart'); $cssFiles[$skin][] = ['name' => $file, 'date' => $date]; } } } // Main Templates $path = 'views/' . \Rebond\Config::getPath('siteFolder') . '/'; $templates = Util\File::getFiles($path); $mainTpl = []; foreach ($templates as $tpl) { if (Util\File::getExtension($tpl) == 'tpl') { continue; } if ($empty) { Util\File::delete($path, $tpl); } else { $date = Util\Format::date(filemtime(FULL_PATH . $path . $tpl), 'smart'); $mainTpl[] = ['name' => $tpl, 'date' => $date]; } } // App Templates $appFolders = Util\File::getFolders('Rebond/App/'); $appTpl = []; foreach ($appFolders as $app) { $appTpl[$app] = []; $path = 'Rebond/App/' . $app . '/template/'; $templates = Util\File::getFiles($path); foreach ($templates as $tpl) { if (Util\File::getExtension($tpl) == 'tpl') { continue; } if ($empty) { Util\File::delete($path, $tpl); } else { $date = Util\Format::date(filemtime(FULL_PATH . $path . $tpl), 'smart'); $appTpl[$app][] = ['name' => $tpl, 'date' => $date]; } } } if ($empty) { $result = '<p class="bg-success">' . Util\Lang::lang('binEmptied') . '</p>'; } // view $this->setTpl(); // main $tplMain = new Util\Template(Util\Template::SITE, ['admin', 'dev']); $tplMain->set('contentItems', $contentItems); $tplMain->set('cssFiles', $cssFiles); $tplMain->set('mainTpl', $mainTpl); $tplMain->set('appTpl', $appTpl); $tplMain->set('result', $result); // layout $this->tplLayout->set('column1', $tplMain->render('bin')); // master $this->tplMaster->set('layout', $this->tplLayout->render('layout-1-col')); $this->tplMaster->set('jsLauncher', 'dev'); return $this->tplMaster->render('tpl-default'); }
public function run() { $entities = $this->xmlModel->getElementsByTagName('entity'); foreach ($entities as $ent) { $sqlEntity = $ent->getAttribute('name'); $entity = Converter::toCamelCase($sqlEntity, true); $main = $ent->getAttribute('main-property'); $enabled = $ent->getAttribute('enabled') == 'true' ? true : false; $hasContent = $ent->getAttribute('has-content') == 'false' ? false : true; $isPersistent = $ent->getAttribute('persistent') == 'false' ? false : true; $this->info[] = '<h2>' . $entity . '</h2>'; if (!$enabled) { $this->info[] = '<div class="orange">' . $entity . ' skipped.</div>'; continue; } if (!$this->validPackage($this->package)) { $this->info[] = '<div class="error">Invalid package: ' . $this->package . '. It must be one of the following: core, cms, bus, app.</div>'; continue; } if (!$this->validEntity($sqlEntity)) { $this->info[] = '<div class="error">Invalid entity: ' . $sqlEntity . '. It must start with a letter and contains alphanumeric characters.</div>'; continue; } $properties = $ent->getElementsByTagName('property'); $views = $ent->getElementsByTagName('view'); if (!$this->validProperties($properties)) { $this->info[] = '<div class="error">Invalid properties. Please check the manual.</div>'; continue; } if (!$this->validViews($views)) { $this->info[] = '<div class="error">Invalid views. Please check the manual.</div>'; continue; } $modelFolder = \Rebond\Config::getPath('rebond') . $this->package . '/' . $entity; if (!is_dir($modelFolder)) { $this->info[] = '<div>' . $entity . ' created.</div>'; } else { $this->info[] = '<div>' . $entity . ' updated.</div>'; } \Rebond\Util\Nav::createFolder($modelFolder . '/template'); \Rebond\Util\Nav::createFolder($modelFolder . '/Base'); // For App with content, Cms, Core, Bus if ($hasContent) { $model = new \Rebond\Generator\Model($this->package, $entity, $main, $isPersistent, $properties); $model->produce(); $this->info = array_merge($this->info, $model->getInfo()); $form = new \Rebond\Generator\Form($this->package, $entity, $properties); $form->produce(); $this->info = array_merge($this->info, $form->getInfo()); $service = new \Rebond\Generator\Service($this->package, $entity); $service->produce(); $this->info = array_merge($this->info, $service->getInfo()); if ($isPersistent) { $mysql = new \Rebond\Generator\Mysql($this->package, $sqlEntity, $properties); $mysql->produce(); $this->info = array_merge($this->info, $mysql->getInfo()); $view = new \Rebond\Generator\View($this->package, $entity, $main, $properties, $views, $this->generate); $view->produce(); $this->info = array_merge($this->info, $view->getInfo()); $data = new \Rebond\Generator\Data($this->package, $sqlEntity, $properties); $data->produce(); $this->info = array_merge($this->info, $data->getInfo()); } } if ($this->package == 'App') { $module = Module\Data::loadByTitle($entity); if (!isset($module)) { $module = new Module\Model(); $module->setTitle($entity); $module->setSummary($entity . ' summary'); $module->setStatus(StatusType::DELETED); $module->setHasContent($hasContent); $module->save(); } $gadget = new \Rebond\Generator\Gadget($entity, $views, $hasContent, $module->getId()); $gadget->produce(); $this->info = array_merge($this->info, $gadget->getInfo()); } } return implode('', $this->info); }
protected static function mapper(array $row, $alias = 'module_media') { $model = new \Rebond\Cms\ModuleMedia\Model(false); if (isset($row[$alias . 'Id'])) { $model->setId($row[$alias . 'Id']); } if (isset($row[$alias . 'ModuleId'])) { $model->setModuleId($row[$alias . 'ModuleId']); $model->setModule(\Rebond\Cms\Module\Data::join($row, $alias . '_module')); } if (isset($row[$alias . 'Field'])) { $model->setField($row[$alias . 'Field']); } if (isset($row[$alias . 'Status'])) { $model->setStatus($row[$alias . 'Status']); } if (isset($row[$alias . 'CreatedDate'])) { $model->setCreatedDate($row[$alias . 'CreatedDate']); } if (isset($row[$alias . 'ModifiedDate'])) { $model->setModifiedDate($row[$alias . 'ModifiedDate']); } return $model; }
protected static function mapper(array $row, $alias = 'component') { $model = new \Rebond\Cms\Component\Model(false); if (isset($row[$alias . 'Id'])) { $model->setId($row[$alias . 'Id']); } if (isset($row[$alias . 'ModuleId'])) { $model->setModuleId($row[$alias . 'ModuleId']); $model->setModule(\Rebond\Cms\Module\Data::join($row, $alias . '_module')); } if (isset($row[$alias . 'Title'])) { $model->setTitle($row[$alias . 'Title']); } if (isset($row[$alias . 'Summary'])) { $model->setSummary($row[$alias . 'Summary']); } if (isset($row[$alias . 'Method'])) { $model->setMethod($row[$alias . 'Method']); } if (isset($row[$alias . 'Type'])) { $model->setType($row[$alias . 'Type']); } if (isset($row[$alias . 'Status'])) { $model->setStatus($row[$alias . 'Status']); } if (isset($row[$alias . 'CreatedDate'])) { $model->setCreatedDate($row[$alias . 'CreatedDate']); } if (isset($row[$alias . 'ModifiedDate'])) { $model->setModifiedDate($row[$alias . 'ModifiedDate']); } return $model; }
protected static function mapEntity(Model $model, $row, $alias = 'content') { if (isset($row[$alias . 'Id'])) { $model->setId($row[$alias . 'Id']); } if (isset($row[$alias . 'ModuleId'])) { $model->setModuleId($row[$alias . 'ModuleId']); $model->setModule(\Rebond\Cms\Module\Data::join($row, $alias . '_module')); } if (isset($row[$alias . 'ContentGroup'])) { $model->setContentGroup($row[$alias . 'ContentGroup']); } if (isset($row[$alias . 'FilterId'])) { $model->setFilterId($row[$alias . 'FilterId']); $model->setFilter(\Rebond\Cms\Filter\Data::join($row, $alias . '_filter')); } if (isset($row[$alias . 'AuthorId'])) { $model->setAuthorId($row[$alias . 'AuthorId']); $model->setAuthor(\Rebond\Core\User\Data::join($row, $alias . '_author')); } if (isset($row[$alias . 'PublisherId'])) { $model->setPublisherId($row[$alias . 'PublisherId']); $model->setPublisher(\Rebond\Core\User\Data::join($row, $alias . '_publisher')); } if (isset($row[$alias . 'Title'])) { $model->setTitle($row[$alias . 'Title']); } if (isset($row[$alias . 'UrlFriendlyTitle'])) { $model->setUrlFriendlyTitle($row[$alias . 'UrlFriendlyTitle']); } if (isset($row[$alias . 'UseExpiration'])) { $model->setUseExpiration($row[$alias . 'UseExpiration']); } if (isset($row[$alias . 'GoLiveDate'])) { $model->setGoLiveDate($row[$alias . 'GoLiveDate']); } if (isset($row[$alias . 'ExpiryDate'])) { $model->setExpiryDate($row[$alias . 'ExpiryDate']); } if (isset($row[$alias . 'PublishedDate'])) { $model->setPublishedDate($row[$alias . 'PublishedDate']); } if (isset($row[$alias . 'Version'])) { $model->setVersion($row[$alias . 'Version']); } if (isset($row[$alias . 'CreatedDate'])) { $model->setCreatedDate($row[$alias . 'CreatedDate']); } if (isset($row[$alias . 'ModifiedDate'])) { $model->setModifiedDate($row[$alias . 'ModifiedDate']); } return $model; }
public function filter() { // auth Auth::isAdminAuthorized($this->signedUser, 'admin.cms.filter', true, '/cms'); $options = []; $options['select'][] = \Rebond\Cms\Module\Data::getList([], 'filter_module'); $options['join'][] = 'cms_module filter_module ON filter_module.id = filter.module_id'; $options['order'][] = 'filter_module.title, filter.title'; $filters = \Rebond\Cms\Filter\Data::loadAll($options); // view $this->setTpl(); // filter $tplFilter = new Template(Template::MODULE, ['cms', 'filter']); $tplFilter->set('count', count($filters)); // main $tplMain = new Template(Template::MODULE, ['cms', 'filter']); $tplMain->set('items', $filters); // 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 buildModule() { $options = []; $options['clearSelect'] = true; $options['select'][] = \Rebond\Cms\Module\Data::getList(['id', 'title']); $models = \Rebond\Cms\Module\Data::loadAll($options); return Util\Form::buildDropdownList('moduleId' . $this->unique, $models, 'id', 'title', $this->getModel()->getModuleId(), $this->moduleValidator['foreignKey']); }
protected static function mapper(array $row, $alias = 'filter') { $model = new \Rebond\Cms\Filter\Model(false); if (isset($row[$alias . 'Id'])) { $model->setId($row[$alias . 'Id']); } if (isset($row[$alias . 'ModuleId'])) { $model->setModuleId($row[$alias . 'ModuleId']); $model->setModule(\Rebond\Cms\Module\Data::join($row, $alias . '_module')); } if (isset($row[$alias . 'Title'])) { $model->setTitle($row[$alias . 'Title']); } if (isset($row[$alias . 'DisplayOrder'])) { $model->setDisplayOrder($row[$alias . 'DisplayOrder']); } if (isset($row[$alias . 'Status'])) { $model->setStatus($row[$alias . 'Status']); } if (isset($row[$alias . 'CreatedDate'])) { $model->setCreatedDate($row[$alias . 'CreatedDate']); } if (isset($row[$alias . 'ModifiedDate'])) { $model->setModifiedDate($row[$alias . 'ModifiedDate']); } return $model; }