Пример #1
0
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));
     }
 }
Пример #3
0
 /**
  * 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();
 }
Пример #5
0
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);
}
Пример #6
0
 /**
  * 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');
 }
Пример #7
0
 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;
 }
Пример #8
0
	/**
	 * 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;
	}