function view() { $per_page = 100; $page = arr_get('p', $_GET, 0); $offset = $page * $per_page; $limit = $per_page; $widgets = array(); $total = 0; $f = new FilterForm($_GET, array(), array()); if ($f->is_valid()) { $total = SubmittedArticle::count($f->cleaned_data); foreach (SubmittedArticle::fetch($f->cleaned_data, $offset, $limit) as $err) { $widgets[] = new SubmittedArticleWidget($err); } } $paginator = new Paginator($total, $per_page, 'p'); $v = array('filterform' => &$f, 'widgets' => &$widgets, 'paginator' => $paginator); template($v); }
/** * Update a filter * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function updateFilter(&$args, $request) { if (!$request->isPost()) { fatalError('Cannot update filter via GET request!'); } // Identify the citation to be updated $filter =& $this->getFilterFromArgs($request, $args, true); // Form initialization import('lib.pkp.classes.controllers.grid.filter.form.FilterForm'); $nullVar = null; $filterForm = new FilterForm($filter, $this->getTitle(), $this->getFormDescription(), $nullVar); // No filter group required here. $filterForm->readInputData(); // Form validation if ($filterForm->validate()) { // Persist the filter. $filterForm->execute($request); return DAO::getDataChangedEvent(); } else { // Re-display the filter form with error messages // so that the user can fix it. return new JSONMessage(false, $filterForm->fetch($request)); } }
/** * 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(); }
/** * Update a filter * @param $args array * @param $request PKPRequest * @return string */ function updateFilter(&$args, &$request) { if (!$request->isPost()) { fatalError('Cannot update filter via GET request!'); } // Identify the citation to be updated $filter =& $this->getFilterFromArgs($args, true); // Form initialization import('lib.pkp.classes.controllers.grid.filter.form.FilterForm'); $nullVar = null; $filterForm = new FilterForm($filter, $this->getTitle(), $this->getFormDescription(), $nullVar); // No filter group required here. $filterForm->readInputData(); // Form validation if ($filterForm->validate()) { // Persist the filter. $filterForm->execute($request); // Render the updated filter row into // a JSON response $row =& $this->getRowInstance(); $row->setGridId($this->getId()); $row->setId($filter->getId()); $row->setData($filter); $row->initialize($request); $json = new JSON('true', $this->_renderRowInternally($request, $row)); } else { // Re-display the filter form with error messages // so that the user can fix it. $json = new JSON('false', $filterForm->fetch($request)); } // Return the serialized JSON response return $json->getString(); }
function view() { $per_page = 100; $f = new FilterForm($_GET, array(), array()); $arts = null; $pager = null; $total = null; if ($f->is_valid()) { $page = arr_get('p', $_GET, 0); $o = arr_get('o', $_GET, 'pubdate'); $ot = arr_get('ot', $_GET, 'desc'); $offset = $page * $per_page; $limit = $per_page; list($arts, $total) = grab_articles($f->cleaned_data, $o, $ot, $offset, $limit); $pager = new Paginator($total, $per_page, 'p'); } $v = array('filter' => $f, 'arts' => $arts, 'paginator' => $pager); template($v); }
/** * 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'); }
public static function outputTable(array $params) { // Check columns if (!isset($params['columns'])) { $params['columns'] = []; } // Check order column if (isset($params['order']) && !isset($params['columns']['order'])) { $params['columns']['order'] = ['type' => 'order']; } // Check active column if (isset($params['active']) && !isset($params['columns']['active'])) { $params['columns']['active'] = ['type' => 'active']; } // Check edit column if (isset($params['edit']) && !isset($params['columns']['edit'])) { $params['columns']['edit'] = ['type' => 'edit']; } // Check delete column if (isset($params['delete']) && !isset($params['columns']['delete'])) { $params['columns']['delete'] = ['type' => 'delete']; } // Check params are supplied if (!isset($params['data'])) { $params['data'] = []; } $table = new CmsTable(); $table->addData($params['data']); // Table title if (isset($params['title'])) { $table->setHeadingTitle($params['title']); } foreach ($params['columns'] as $column_key => $column_param) { if (!is_array($column_param)) { $column_key = $column_param; $column_param = ['type' => 'data']; } if (!isset($column_param['type'])) { $column_param['type'] = 'data'; } $column = NULL; switch ($column_param['type']) { case 'data': $column = new ColumnData($column_key); break; case 'date': $column = new ColumnData($column_key); $column->setDataTypeAsTsToDatetime(); break; case 'email': $column = new ColumnData($column_key); $column->setDataTypeAsEmail(); break; case 'accept': $column = new ColumnAccept($column_key); break; case 'order': $column = new ColumnOrder($column_key); break; case 'edit': $column = ColumnEdit::getInstance($column_key); break; case 'active': $column = ColumnActive::getInstance($column_key); break; case 'delete': $column = ColumnDelete::getInstance($column_key); break; case 'gallery': $column = new ColumnGallery($column_key); break; case 'image': $column = new ColumnImg($column_key); break; case 'bool': case 'done': $column = new ColumnDone($column_key); break; default: dump('Unknown column type "' . $column_param['type'] . '"'); break; } // Disable cutting long texts by column if (isset($column_param['cut_long_strings'])) { if (!$column_param['cut_long_strings']) { $column->disableCutLongStrings(); } } // Disable cutting long texts by entire table if (isset($params['cut_long_strings'])) { if (!$params['cut_long_strings']) { $column->disableCutLongStrings(); } } // Is multi-translatable data in column if (isset($column_param['translation']) && $column_param['translation']) { $column->enableTranslationColumn(); } // Is orderable if (isset($column_param['order']) && $column_param['order']) { $column->enableOrderableColumn(); } // Is dragable if (isset($column_param['order_drag']) && $column_param['order_drag']) { $column->enableDraggable(); } // Title if (isset($column_param['title'])) { $column->setTitle($column_param['title']); } // Images for gallery if (isset($column_param['images'])) { $column->setImages($column_param['images']); } // Width of column if (isset($column_param['narrow'])) { $column->enableNarrowWidth(); } if (isset($column_param['width'])) { $column->setWidth($column_param['width']); } // Link if (isset($column_param['href'])) { $column->setHref($column_param['href']); } // Paired array if (isset($column_param['pairs'])) { $column->setPairedDataOptionsForKeys($column_param['pairs']); } // Value for column if (isset($column_param['value'])) { $column->setValue($column_param['value']); } // Add to filters if (isset($column_param['filter']) && !isset($params['filters'][$column_key])) { $params['filters'][$column_key] = []; } if ($column) { $table->addColumn($column); } } // Apply filter if (isset($params['filters']) || isset($params['caption'])) { $filter_form = new FilterForm(); // Top caption above table if (isset($params['caption'])) { $filter_form->setCaption($params['caption']); } // Render filters if (isset($params['filters'])) { foreach ($params['filters'] as $filter_key => $filter_data) { // Title is obligate if (!isset($filter_data['title'])) { $filter_data['title'] = ucfirst(__($filter_key)); } // Default type if (!isset($filter_data['type'])) { $filter_data['type'] = 'text'; $filter_data['like'] = true; } //Filter types $filter = NULL; switch ($filter_data['type']) { case 'text': $filter = Text::getInstance($filter_key); break; case 'select': $filter = Select::getInstance($filter_key); $filter->ignoreValue(-1); // For "empty" value break; default: dump('Unknown filter type "' . $filter_data['type'] . '"'); break; } // Options for selects if (isset($filter_data['options'])) { $filter->setOptions($filter_data['options']); } // Ignore values in selects if (isset($filter_data['ignore'])) { $filter->ignoreValue($filter_data['ignore']); } // Like search if (isset($filter_data['like'])) { $filter->enableActAsLike(); } if ($filter) { $filter_form->addFilter($filter_data['title'], $filter); } } } $table->attachFilterForm($filter_form); } return $table; }
/** * 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; }