Example #1
0
 public function site()
 {
     // auth
     Auth::isAdminAuthorized($this->signedUser, 'admin.config.site', true, '/configuration');
     $site = \Rebond\Core\Site\Data::loadById(1);
     if (!isset($site)) {
         \Rebond\Util\Error::kill(\Rebond\Util\Error::SITE_NOT_FOUND, 'id: 1', __FILE__, __LINE__);
     }
     $siteForm = new \Rebond\Core\Site\Form($site);
     // action
     if (isset($_POST['save'])) {
         Auth::isAdminAuthorized($this->signedUser, 'admin.config.site.edit', true, '/');
         if ($siteForm->setFromPost()->validate()->isValid()) {
             $siteForm->getModel()->save();
             \Rebond\Core\Site\Service::updateIsCms($siteForm->getModel()->getIsCms());
             Session::adminSuccess('saved', '/configuration/site');
         } else {
             Session::set('adminError', $siteForm->getValidation()->getMessage());
         }
     }
     // view
     $this->setTpl();
     // main
     $tplMain = new Template(Template::MODULE, ['core', 'site']);
     $tplMain->set('item', $siteForm);
     // layout
     if (Auth::isAdminAuthorized($this->signedUser, 'admin.config.site.edit', false)) {
         $this->tplLayout->set('column1', $tplMain->render('editor'));
     } else {
         $this->tplLayout->set('column1', $tplMain->render('view'));
     }
     // master
     $this->tplMaster->set('layout', $this->tplLayout->render('layout-1-col'));
     return $this->tplMaster->render('tpl-default');
 }
Example #2
0
 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();
 }
Example #3
0
 public function log()
 {
     // auth
     Auth::isAdminAuthorized($this->signedUser, 'admin.tools.log', true, '/tools');
     $delete = Converter::bool('delete');
     $code = Converter::int('code');
     $id = Converter::int('id', 'get');
     $deleteUrl = $code != 0 ? '?code=' . $code . '&delete=true' : '?delete=true';
     if ($delete) {
         Auth::isAdminAuthorized($this->signedUser, 'admin.tools.log.edit', true, '/tools');
         \Rebond\Core\Log\Data::clear($code);
         Session::adminSuccess('logClear', '/tools/log');
     }
     if ($id != 0) {
         $log = \Rebond\Core\Log\Data::loadById($id);
         if (isset($log)) {
             // view
             $this->setTpl();
             $formLog = new \Rebond\Core\Log\Form($log);
             // main
             $tplMain = new Template(Template::MODULE, ['core', 'log']);
             $tplMain->set('item', $formLog);
             // layout
             $this->tplLayout->set('column1', $tplMain->render('view'));
             // master
             $this->tplMaster->set('layout', $this->tplLayout->render('layout-1-col'));
             return $this->tplMaster->render('tpl-default');
         }
     }
     $options = [];
     $options['order'][] = 'log.modified_date DESC';
     if ($code != 0) {
         $options['where'][] = ['log.code = ?', $code];
     }
     $options['limit'][] = 200;
     $logs = \Rebond\Core\Log\Data::loadAll($options);
     // view
     $this->setTpl();
     // filter
     $tplFilter = new Template(Template::MODULE, ['core', 'log']);
     $tplFilter->set('count', count($logs));
     $tplFilter->set('list', \Rebond\Util\Error::errorCodes());
     $tplFilter->set('code', $code);
     $tplFilter->set('deleteUrl', '/tools/log/' . $deleteUrl);
     // main
     $tplMain = new Template(Template::MODULE, ['core', 'log']);
     $tplMain->set('items', $logs);
     // 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'));
     $this->tplMaster->set('jsLauncher', 'toolsLog');
     return $this->tplMaster->render('tpl-default');
 }
Example #4
0
 public function generate()
 {
     $configFile = FULL_PATH . '/files/config.xml';
     if (!file_exists($configFile)) {
         Util\Error::kill(Util\Error::XML_CONFIG_NOT_FOUND, $configFile, __FILE__, __LINE__);
     }
     $conf = simplexml_load_string(file_get_contents($configFile));
     $configTpl = new Util\Template(Util\Template::SITE, ['generator', 'config']);
     foreach ($conf->servers->server as $server) {
         if (strpos($_SERVER['HTTP_HOST'], $server->attributes()->host->__toString()) === false) {
             continue;
         }
         $configTpl->set('httpHost', $server->attributes()->host);
         $configTpl->set('siteFolder', $server->siteFolder);
         $configTpl->set('adminFolder', $server->adminFolder);
         $configTpl->set('dbHost', $server->db->host);
         $configTpl->set('dbPort', $server->db->port);
         $configTpl->set('dbUsername', $server->db->username);
         $configTpl->set('dbPassword', $server->db->password);
         $configTpl->set('dbName', $server->db->name);
         $configTpl->set('type', $server->mail->type);
         $configTpl->set('email', $server->mail->email);
         if ($server->mail->type == 'smtp') {
             $configTpl->set('host', $server->mail->host);
             $configTpl->set('port', $server->mail->port);
             $configTpl->set('option', $server->mail->option);
             $configTpl->set('password', $server->mail->password);
         } else {
             $configTpl->set('host', '');
             $configTpl->set('port', '');
             $configTpl->set('option', '');
             $configTpl->set('password', '');
         }
         break;
     }
     $langs = [];
     foreach ($conf->languages->language as $language) {
         $tpl = new Util\Template(Util\Template::SITE, ['generator', 'config']);
         $tpl->set('lang', $language->attributes()->lang);
         $tpl->set('locale', $language->locale);
         $langs[] = $tpl->render('lang');
     }
     $configTpl->set('lang', implode('', $langs));
     $settings = [];
     foreach ($conf->settings->setting as $setting) {
         $tpl = new Util\Template(Util\Template::SITE, ['generator', 'config']);
         $tpl->set('key', $setting->attributes()->key);
         $tpl->set('value', $setting);
         $settings[] = $tpl->render('setting');
     }
     $configTpl->set('key', implode('', $settings));
     $configPath = \Rebond\Config::getPath('rebond') . 'Cache/Config.php';
     Util\File::save($configPath, 'w', str_replace('<#php', '<?php', $configTpl->render('config')));
 }
Example #5
0
 public static function error($siteTitle, $emails, $code, $message, $file, $line)
 {
     $tpl = new Util\Template(Util\Template::MODULE, ['app', 'error']);
     $tpl->set('url', 'http://' . \Rebond\Config::getPath('siteUrl'));
     $tpl->set('site', $siteTitle);
     $tpl->set('code', Util\Error::value($code));
     $tpl->set('message', $message);
     $tpl->set('file', $file);
     $tpl->set('line', $line);
     $tplMail = new Util\Template(Util\Template::SITE, ['mail']);
     $tplMail->set('title', Util\Lang::lang('log'));
     $tplMail->set('site', $siteTitle);
     $tplMail->set('url', 'http://' . \Rebond\Config::getPath('siteUrl'));
     $tplMail->set('layout', $tpl->render('mail'));
     $message = \Swift_Message::newInstance()->setContentType('text/html')->setSubject($siteTitle . ' - ' . Util\Lang::lang('log'))->setFrom(\Rebond\Config::getMail('email'))->setTo($emails)->setBody($tplMail->render('tpl-default'));
     return Util\Mail::send($message);
 }
Example #6
0
 public function __construct($package, $generate)
 {
     if (!isset($package) || !in_array($package, ['app', 'bus', 'cms', 'core'])) {
         Error::kill(Error::INVALID_PARAMETERS, '$package cannot be null and must be either app, bus, cms or core', __FILE__, __LINE__);
     }
     $this->info = [];
     $this->package = ucfirst(strtolower($package));
     $this->generate = $generate;
     $this->xmlModel = new \DOMDocument();
     $this->xmlModel->formatOutput = true;
     $this->xmlModel->preserveWhiteSpace = false;
     $modelPath = \Rebond\Config::getPath('model') . $package . '.xml';
     if (!file_exists($modelPath)) {
         Error::killException(Error::XML_MODEL_NOT_FOUND, $modelPath, __FILE__, __LINE__);
     }
     $this->xmlModel->load($modelPath);
 }
Example #7
0
 public function __construct()
 {
     $rebondLang = \Rebond\Config::getPath('lang') . 'rebond.xml';
     if (!file_exists($rebondLang)) {
         Error::kill(Error::XML_LANG_NOT_FOUND, $rebondLang, __FILE__, __LINE__);
     }
     $customLang = \Rebond\Config::getPath('lang') . 'custom.xml';
     if (!file_exists($customLang)) {
         Error::kill(Error::XML_LANG_NOT_FOUND, $customLang, __FILE__, __LINE__);
     }
     $this->xmlRebondLang = new \DOMDocument();
     $this->xmlRebondLang->formatOutput = true;
     $this->xmlRebondLang->preserveWhiteSpace = false;
     $this->xmlRebondLang->load($rebondLang);
     $this->xmlCustomLang = new \DOMDocument();
     $this->xmlCustomLang->formatOutput = true;
     $this->xmlCustomLang->preserveWhiteSpace = false;
     $this->xmlCustomLang->load($customLang);
 }
Example #8
0
 protected static function autoJoin(Util\Data $db, $moduleName, $select = true)
 {
     $module = \Rebond\Cms\Module\Data::loadByTitle($moduleName);
     if (!isset($module)) {
         Util\Error::kill(Util\Error::ITEM_NOT_FOUND, 'module ' . $module . ' not found', __FILE__, __LINE__);
     }
     if ($select) {
         $db->buildQuery('select', \Rebond\Cms\Content\Data::getList());
         $db->buildQuery('select', \Rebond\Cms\Module\Data::getList([], 'content_module'));
         if ($module->getHasFilter()) {
             $db->buildQuery('select', \Rebond\Cms\Filter\Data::getList([], 'content_filter'));
         }
     }
     $db->buildQuery('join', 'cms_content content ON x.app_id = content.app_id');
     $db->buildQuery('join', 'cms_module content_module ON content_module.id = content.module_id');
     if ($module->getHasFilter()) {
         $db->buildQuery('leftJoin', 'cms_filter content_filter ON content_filter.id = content.filter_id');
     }
     $db->buildQuery('where', ['content.module_id = ?', $module->getId()]);
 }
Example #9
0
<?php

require '../Rebond/Config.php';
$app = \Rebond\Config::start();
$app->launch();
// read request uri
list($module, $action) = \Rebond\Util\Nav::readRequest($_SERVER['REQUEST_URI']);
$file = '../Rebond/Controller/Site/' . $module . '.php';
// check controller
if (!file_exists($file)) {
    \Rebond\Util\Error::kill(\Rebond\Util\Error::PAGE_NOT_FOUND, $module . '/' . $action, __FILE__, __LINE__);
}
// call controller
$request = '\\Rebond\\Controller\\Site\\' . $module;
$controller = new $request($app);
// check method
if (!method_exists($controller, $action)) {
    \Rebond\Util\Error::kill(\Rebond\Util\Error::PAGE_NOT_FOUND, $module . '/' . $action, __FILE__, __LINE__);
}
// call method
echo $controller->{$action}();
Example #10
0
 private function login()
 {
     $this->cookie = new \GuzzleHttp\Cookie\CookieJar();
     $this->client = new \GuzzleHttp\Client(['base_uri' => $this->baseUri, 'cookies' => true]);
     $login = $this->client->request('POST', 'ttk/?K1=Logg inn', ['cookies' => $this->cookie, 'form_params' => ['K16' => 'Logg inn', 'K16_U' => '*****@*****.**', 'K16_P' => \Rebond\Config::getKey('ttkPassword')]]);
     if ($login->getStatusCode() != 200) {
         Util\Error::kill('could not login to TTK reservation', 500, __FILE__, __LINE__);
     }
 }
Example #11
0
 public function run($app, $friendlyUrl)
 {
     // is site active
     if ($app->site()->getStatus() == 0) {
         $friendlyUrl = '/inactive';
     }
     // retrieve page
     $page = \Rebond\Cms\Page\Data::loadByUrl($friendlyUrl);
     // this should never occur
     if (!isset($page)) {
         Error::kill(Error::PAGE_NOT_FOUND, $friendlyUrl, __FILE__, __LINE__);
     }
     // redirection
     if ($page->getRedirect() != '' && $page->getRedirect() != $friendlyUrl) {
         $friendlyUrl = Nav::readCmsRequest($page->getRedirect());
         echo $this->run($app, $friendlyUrl);
         return;
     }
     // permission
     Auth::isAuthorized($app->user(), $page->getPermission(), true, $app->site()->getSignInUrl());
     $app->setUrl($friendlyUrl);
     // layout
     $layout = \Rebond\Cms\Layout\Data::loadById($page->getLayoutId());
     $tplLayout = new Template(Template::SITE, ['www']);
     // page components
     $options = [];
     $options['where'][] = 'gadget.status = 1';
     $options['order'][] = 'gadget.display_order';
     $gadgets = \Rebond\Cms\Gadget\Data::loadAllByPageId($page->getId(), $options);
     $cacheTime = $app->site()->getCacheTime();
     if ($gadgets) {
         $this->app = $app;
         $this->gadgets = [];
         foreach ($gadgets as $gadget) {
             if ($gadget->getComponent()->getId() == 0) {
                 Log::log(Error::COMPONENT_NOT_FOUND, 'title: ' . $gadget->getTitle() . ', componentId: ' . $gadget->getComponentId(), __FILE__, __LINE__);
                 continue;
             }
             $component = $gadget->getComponent();
             $appGadget = '\\Rebond\\App\\' . $component->getModule()->getTitle() . '\\Gadget';
             $appMethod = $component->getMethod();
             if (!method_exists($appGadget, $appMethod)) {
                 Log::log(Error::GADGET_NOT_FOUND, 'gadget: ' . $appGadget . ', method: ' . $appMethod, __FILE__, __LINE__);
                 continue;
             }
             if ($component->getStatus() !== StatusType::ACTIVE) {
                 continue;
             }
             if ($component->getModule()->getStatus() !== StatusType::ACTIVE) {
                 continue;
             }
             $name = $component->getModule()->getTitle() . '_' . $component->getMethod();
             // look for cache
             if ($cacheTime > 0) {
                 $html = Cache::getGadgetCache($name, $cacheTime);
                 if (isset($html)) {
                     $tplLayout->add('column' . $gadget->getCol(), $html);
                     continue;
                 }
             }
             $gadgetClass = $this->getGadget($appGadget);
             // get filter
             if ($component->getType() == ComponentType::SINGLE_ITEM || $component->getType() == ComponentType::FILTERED_LISTING) {
                 if ($gadget->getFilterId() == 0) {
                     Log::log(Error::EMPTY_FILTER, $name, __FILE__, __LINE__);
                     continue;
                 } else {
                     $render = $gadgetClass->{$appMethod}($gadget->getFilterId());
                 }
             } else {
                 if ($component->getType() == ComponentType::CUSTOM_LISTING) {
                     $render = $gadgetClass->{$appMethod}($gadget->getCustomFilter());
                 } else {
                     $render = $gadgetClass->{$appMethod}();
                 }
             }
             $tplLayout->add('column' . $gadget->getCol(), $render);
             // save cache
             if ($cacheTime > 0) {
                 Cache::saveGadgetCache($name, $cacheTime, $render);
             }
         }
     }
     // check for empty columns
     $columns = $layout->getColumns();
     $noComponent = '<div class="no-component">' . Lang::lang('noComponent') . '</div>';
     $emptyValue = $app->logLevel() == 0 ? $noComponent : '';
     for ($i = 1; $i <= $columns; $i++) {
         if ($tplLayout->varIsSet('column' . $i) === false) {
             $tplLayout->set('column' . $i, $emptyValue);
         }
     }
     // template
     $template = \Rebond\Cms\Template\Data::loadById($page->getTemplateId());
     $tplMaster = new Template(Template::SITE, ['www']);
     // navHeader
     $isMenuCached = false;
     if ($template->getMenu() != \Rebond\Cms\MenuType::NONE) {
         // Get cache
         if ($cacheTime > 0) {
             $navHeader = Cache::getCache('navHeader', $template->getMenu() . '_' . $template->getMenuLevel(), $cacheTime);
             if (isset($navHeader)) {
                 $isMenuCached = true;
             }
         }
         if (!$isMenuCached) {
             $navHeader = \Rebond\Cms\Page\Data::buildHeaderNav($template->getMenuLevel(), $template->getMenu());
             // Save cache
             if ($cacheTime > 0) {
                 Cache::saveCache('navHeader', $template->getMenu() . '_' . $template->getMenuLevel(), $cacheTime, $navHeader);
             }
         }
         $tpl = new Template(Template::SITE, ['www']);
         $tpl->set('title', $app->site()->getTitle());
         $tpl->set('nav', \Rebond\Cms\Page\Service::renderNav($navHeader, $page->getFullUrl()));
         $tplMaster->set('navHeader', $tpl->render('nav-header'));
     }
     // breacrumb
     $isMenuCached = false;
     if ($template->getInBreadcrumb()) {
         // Get cache
         if ($cacheTime > 0) {
             $breadcrumb = Cache::getCache('breadcrumb', $page->getId(), $cacheTime);
             if (isset($breadcrumb)) {
                 $isMenuCached = true;
             }
         }
         if (!$isMenuCached) {
             $breadcrumb = \Rebond\Cms\Page\Service::renderBreadcrumb($page->getId());
             // Save cache
             if ($cacheTime > 0) {
                 Cache::saveCache('breadcrumb', $page->getId(), $cacheTime, $breadcrumb);
             }
         }
         $tplMaster->set('breadcrumb', $breadcrumb);
     }
     // navSide
     $isMenuCached = false;
     if ($template->getSideNav() != \Rebond\Cms\SideNavType::NONE) {
         // Get cache
         if ($cacheTime > 0) {
             $navSide = Cache::getCache('navSide', $template->getSideNav() . '_' . $template->getSideNavLevel(), $cacheTime);
             if (isset($navSide)) {
                 $isMenuCached = true;
             }
         }
         if (!$isMenuCached) {
             switch ($template->getSideNav()) {
                 case \Rebond\Cms\SideNavType::PARENT_1:
                     $currentId = $page->getParentId();
                     break;
                 case \Rebond\Cms\SideNavType::CHILDREN:
                     $currentId = $page->getId();
                     break;
                 case \Rebond\Cms\SideNavType::HOME:
                     $currentId = 1;
                     break;
                 case \Rebond\Cms\SideNavType::PARENT_2:
                     $currentId = \Rebond\Cms\Page\Data::loadByParent($page->getParentId(), 1);
                     break;
                 case \Rebond\Cms\SideNavType::PARENT_3:
                     $currentId = \Rebond\Cms\Page\Data::loadByParent($page->getParentId(), 2);
                     break;
             }
             $navSide = \Rebond\Cms\Page\Data::buildSideNav($currentId, $template->getSideNavLevel());
             // Save cache
             if ($cacheTime > 0) {
                 Cache::saveCache('navSide', $template->getSideNav() . '_' . $template->getSideNavLevel(), $cacheTime, $navSide);
             }
         }
         $tpl = new Template(Template::SITE, ['www']);
         $tpl->set('nav', \Rebond\Cms\Page\Service::renderNav($navSide, $page->getFullUrl()));
         $tplMaster->set('navSide', $tpl->render('nav-side'));
     }
     // navFooter
     $isMenuCached = false;
     if ($template->getInFooter() != 0) {
         // Get cache
         if ($cacheTime > 0) {
             $navFooter = Cache::getCache('navFooter', $template->getFooterLevel(), $cacheTime);
             if (isset($navFooter)) {
                 $isMenuCached = true;
             }
         }
         if (!$isMenuCached) {
             $navFooter = \Rebond\Cms\Page\Data::buildFooterNav($template->getFooterLevel());
             // Save cache
             if ($cacheTime > 0) {
                 Cache::saveCache('navFooter', $template->getFooterLevel(), $cacheTime, $navFooter);
             }
         }
         $tpl = new Template(Template::SITE, ['www']);
         $tpl->set('nav', \Rebond\Cms\Page\Service::renderNav($navFooter, $page->getFullUrl()));
         $tplMaster->set('navFooter', $tpl->render('nav-footer'));
     }
     $tplMaster->set('layout', $tplLayout->render($layout->getFilename()));
     // master
     // head
     if ($app->site()->getKeywords() != '') {
         $tplMaster->addMeta('keywords', $app->site()->getKeywords());
     }
     if ($app->site()->getDescription() != '') {
         $tplMaster->addMeta('description', $app->site()->getDescription());
     }
     $tplMaster->set('title', $page->getTitle());
     $tplMaster->set('site', $app->site()->getTitle());
     $tplMaster->set('skin', $app->skin());
     $tplMaster->set('siteUrl', \Rebond\Config::getPath('siteUrl'));
     // bodyClass
     $tplMaster->set('bodyClass', $page->getClass());
     // footer
     $ga = \Rebond\Core\Site\Service::renderGoogleAnalytics($app->site()->getGoogleAnalytics());
     $tplMaster->set('footer', $ga);
     $tplMaster->addJs('//code.jquery.com/jquery-2.1.4.min.js');
     $tplMaster->addJs('/js/lang-' . $app->lang() . '.js');
     if ($app->site()->getJs() != '') {
         $jsList = explode(',', $app->site()->getJs());
         foreach ($jsList as $js) {
             $tplMaster->addJs($js);
         }
     }
     if ($page->getJs() != '') {
         $jsList = explode(',', $page->getJs());
         foreach ($jsList as $js) {
             $tplMaster->addJs($js);
         }
     }
     if ($app->env() == \Rebond\Config::ENV_PROD) {
         $tplMaster->addCss('/css/skin/' . $app->skin() . '/min.css');
         $tplMaster->addJs('/js/min.js');
     } else {
         $tplMaster->addCss('/css/normalize.css');
         $tplMaster->addCss('/css/skin/' . $app->skin() . '/rebond.css');
         $tplMaster->addCss('/css/skin/' . $app->skin() . '/custom.css');
         $tplMaster->addJs('/js/rebond.js');
         $tplMaster->addJs('/js/custom.js');
     }
     if ($app->site()->getCss() != '') {
         $cssList = explode(',', $app->site()->getCss());
         foreach ($cssList as $css) {
             $tplMaster->addCss($css);
         }
     }
     if ($page->getCss() != '') {
         $cssList = explode(',', $page->getCss());
         foreach ($cssList as $css) {
             $tplMaster->addCss($css);
         }
     }
     return $tplMaster->render($template->getFilename());
 }
Example #12
0
 public static function uploadForm($field)
 {
     $obj = [];
     $obj['result'] = ResultType::ERROR;
     if (!isset($_FILES[$field]) || $_FILES[$field]['name'] == '') {
         $obj['result'] = ResultType::NO_CHANGE;
         return json_decode(json_encode($obj));
     }
     $file = $_FILES[$field];
     $url = 'http://' . \Rebond\Config::getPath('adminUrl') . '/service/uploadify';
     $post = ['userId' => 1, 'folderId' => 1, 'isSelectable' => 0];
     $data = '';
     $boundary = '---------------------' . substr(md5(rand(0, 32000)), 0, 10);
     //Collect Postdata
     foreach ($post as $key => $val) {
         $data .= "--{$boundary}\n";
         $data .= "Content-Disposition: form-data; name=\"" . $key . "\"\n\n" . $val . "\n";
     }
     $data .= "--{$boundary}\n";
     //Collect Filedata
     $fileContents = file_get_contents($file['tmp_name']);
     $data .= "Content-Disposition: form-data; name=\"Filedata\"; filename=\"{$file['name']}\"\n";
     $data .= "Content-Type: {$file['type']}\n";
     $data .= "Content-Transfer-Encoding: binary\n\n";
     $data .= $fileContents . "\n";
     $data .= "--{$boundary}\n";
     $params = ['http' => ['method' => 'POST', 'header' => 'Content-Type: multipart/form-data; boundary=' . $boundary, 'content' => $data]];
     $ctx = stream_context_create($params);
     $fp = fopen($url, 'rb', false, $ctx);
     if (!$fp) {
         Error::kill(Error::MEDIA_NOT_UPLOADED, 'could not open file in uploadForm', __FILE__, __LINE__);
     }
     $obj = stream_get_contents($fp);
     if ($obj === false) {
         Error::kill(Error::MEDIA_NOT_UPLOADED, 'could not get content in uploadForm', __FILE__, __LINE__);
     }
     return json_decode($obj);
 }