/** * View controller for a blog article listing page. * This will only display articles under this same blog. * * @param BlogModel $blog */ private function _viewBlog(BlogModel $blog) { $view = $this->getView(); $page = $blog->getLink('Page'); $request = $this->getPageRequest(); $manager = \Core\user()->checkAccess('p:/blog/manage_all'); $editor = \Core\user()->checkAccess($blog->get('manage_articles_permission ')) || $manager; $viewer = \Core\user()->checkAccess($blog->get('access')) || $editor; // Get the latest published article's update date. This will be used for the blog updated timestamp. // (This doesn't have a whole lot of benefit above the ModelFactory, simply illustrating a different way to query data). $latest = \Core\Datamodel\Dataset::Init()->select('*')->table('page')->where('parenturl = ' . $blog->get('baseurl'))->where('published_status = published')->order('published DESC')->limit(1)->current(); $filters = new FilterForm(); $filters->haspagination = true; // Allow different type of requests to come in here. switch ($request->ctype) { case 'application/atom+xml': $view->templatename = 'pages/blog/view-blog.atom.tpl'; $view->contenttype = $request->ctype; $view->mastertemplate = false; $filters->setLimit(200); break; case 'application/rss+xml': $view->templatename = 'pages/blog/view-blog.rss.tpl'; $view->contenttype = $request->ctype; $view->mastertemplate = false; $filters->setLimit(200); break; default: $view->templatename = 'pages/blog/view-blog.tpl'; $filters->setLimit(20); break; } $filters->load($this->getPageRequest()); $factory = new ModelFactory('PageModel'); if ($request->getParameter('q')) { $query = $request->getParameter('q'); $factory->where(\Core\Search\Helper::GetWhereClause($request->getParameter('q'))); } else { $query = null; } $factory->where('parenturl = ' . $blog->get('baseurl')); $factory->order('published DESC'); if (!$editor) { // Limit these to published articles. $factory->where('published_status = published'); // And where the published date is >= now. $factory->where('published <= ' . CoreDateTime::Now('U', Time::TIMEZONE_GMT)); } $filters->applyToFactory($factory); $articles = $factory->get(); $view->mode = View::MODE_PAGEORAJAX; $view->assign('blog', $blog); $view->assign('articles', $articles); $view->assign('page', $page); $view->assign('filters', $filters); $view->assign('canonical_url', \Core\resolve_link($blog->get('baseurl'))); $view->assign('last_updated', $latest ? $latest['updated'] : 0); $view->assign('servername', SERVERNAME_NOSSL); $view->assign('editor', $editor); $view->assign('add_article_link', '/content/create?page_template=blog-article.tpl&parenturl=' . $blog->get('baseurl')); // Add the extra view types for this page $view->addHead('<link rel="alternate" type="application/atom+xml" title="' . $page->get('title') . ' Atom Feed" href="' . \Core\resolve_link($blog->get('baseurl')) . '.atom"/>'); $view->addHead('<link rel="alternate" type="application/rss+xml" title="' . $page->get('title') . ' RSS Feed" href="' . \Core\resolve_link($blog->get('baseurl')) . '.rss"/>'); if ($editor) { if ($blog->get('type') == 'remote') { $view->addControl('Import Feed', '/blog/import/' . $blog->get('id'), 'exchange'); } else { $view->addControl('Add Article', '/content/create?page_template=blog-article.tpl&parenturl=' . $blog->get('baseurl'), 'add'); } } if ($manager) { $view->addControl('Edit Blog', '/blog/update/' . $blog->get('id'), 'edit'); $view->addControl('All Articles', '/admin/pages/?filter[parenturl]=' . $blog->get('baseurl'), 'tasks'); } $view->addControl('RSS Feed', \Core\resolve_link($blog->get('baseurl')) . '.rss', 'rss'); //$view->addControl('Atom Feed', \Core\resolve_link($blog->get('baseurl')) . '.atom', 'rss'); }
/** * Display a list of cron jobs that have ran. * @return int */ public function log() { // As of 3.0.0, this has been merged into Core. \Core\redirect('admin/log?filter[type]=security'); $view = $this->getView(); $request = $this->getPageRequest(); if (!\Core\user()->checkAccess('p:/security/viewlog')) { return View::ERROR_ACCESSDENIED; } $filters = new FilterForm(); $filters->setName('security-log'); $filters->hassort = true; $filters->haspagination = true; /*$filters->addElement( 'select', array( 'title' => 'Cron', 'name' => 'cron', 'options' => array( '' => '-- All --', 'hourly' => 'hourly', 'daily' => 'daily', 'weekly' => 'weekly', 'monthly' => 'monthly' ), 'link' => FilterForm::LINK_TYPE_STANDARD, ) ); $filters->addElement( 'select', array( 'title' => 'Status', 'name' => 'status', 'options' => array( '' => '-- All --', 'pass' => 'pass', 'fail' => 'fail' ), 'link' => FilterForm::LINK_TYPE_STANDARD, ) );*/ $filters->addElement('hidden', array('title' => 'Session', 'name' => 'session_id', 'link' => FilterForm::LINK_TYPE_STANDARD)); $filters->addElement('hidden', array('title' => 'Affected User', 'name' => 'affected_user_id', 'link' => FilterForm::LINK_TYPE_STANDARD)); $filters->setSortkeys(array('datetime', 'session_id', 'user_id', 'useragent', 'action', 'affected_user_id', 'status')); $filters->load($request); $factory = new ModelFactory('SecurityLogModel'); $filters->applyToFactory($factory); $listings = $factory->get(); foreach ($listings as $k => $entry) { /** @var $entry SecurityLogModel */ // Look up the user agent //$ua = new \Core\UserAgent($entry->get('useragent')); //var_dump($ua); die(); if ($entry->get('user_id')) { $userobject = UserModel::Construct($entry->get('user_id')); $entry->set('user', $userobject->getDisplayName()); } if ($entry->get('affected_user_id')) { $userobject = UserModel::Construct($entry->get('affected_user_id')); if ($userobject) { $entry->set('affected_user', $userobject->getDisplayName()); } else { $entry->set('affected_user', '[DELETED USER]'); } } } $view->title = 'Security Log'; $view->assign('filters', $filters); $view->assign('listings', $listings); $view->assign('sortkey', $filters->getSortKey()); $view->assign('sortdir', $filters->getSortDirection()); //var_dump($listings); die(); }
/** * Admin listing of all the users * * @return null|int */ public function admin(){ $view = $this->getView(); $request = $this->getPageRequest(); if(!\Core\user()->checkAccess('p:/user/users/manage')){ return View::ERROR_ACCESSDENIED; } $filters = new FilterForm(); $filters->setName('user-admin'); $filters->haspagination = true; $filters->hassort = true; $filters->setSortkeys(array('email', 'active', 'created','last_login')); $filters->addElement( 'text', array( 'title' => 'Email', 'name' => 'email', 'link' => FilterForm::LINK_TYPE_CONTAINS ) ); $filters->addElement( 'select', array( 'title' => 'Active', 'name' => 'active', 'options' => array('' => '-- All --', '0' => 'Inactive', '1' => 'Active'), 'link' => FilterForm::LINK_TYPE_STANDARD, ) ); $filters->addElement( 'select', array( 'title' => 'Ever logged in?', 'name' => 'last_login', 'options' => array('' => 'Both', '1' => 'No', '2' => 'Yes'), ) ); $filters->load($request); $factory = new ModelFactory('UserModel'); if($filters->get('last_login') == 1) { $factory->where('last_login = 0'); } elseif($filters->get('last_login') == 2) { $factory->where('last_login > 0'); } $filters->applyToFactory($factory); $users = $factory->get(); $view->title = 'User Administration'; $view->assign('enableavatar', (\ConfigHandler::Get('/user/enableavatar'))); $view->assign('users', $users); $view->assign('filters', $filters); $view->addControl('Add User', '/user/register', 'add'); $view->addControl('Import Users', '/user/import', 'upload-alt'); return null; }