public function controller($app) { $plugin = $this; $app->get('/gallery(/?|/by/:key/:val)', function ($key = false, $val = false) use($app, $plugin) { disable_cache($app); $user = DatawrapperSession::getUser(); $curPage = $app->request()->params('page'); if (empty($curPage)) { $curPage = 0; } $perPage = 60; $filter = !empty($key) ? array($key => $val) : array(); try { $charts = ChartQuery::create()->getGalleryCharts($filter, $curPage * $perPage, $perPage); $total = ChartQuery::create()->countGalleryCharts($filter); } catch (Exception $e) { // make sure bogus input for the filter doesn't kill the site $charts = array(); $total = 0; } $page = array('charts' => $charts, 'byvis' => $plugin->nbChartsByType(), 'key' => $key, 'val' => $val); add_pagination_vars($page, $total, $curPage, $perPage); add_header_vars($page, 'gallery'); $app->render('plugins/' . $plugin->getName() . '/gallery.twig', $page); }); }
public function users($app, $page) { $page = array_merge($page, array('title' => __('Users'), 'q' => $app->request()->params('q', ''))); $sort = $app->request()->params('sort', ''); $user = DatawrapperSession::getUser(); function getQuery($user) { global $app; $sort = $app->request()->params('sort', ''); $query = UserQuery::create()->leftJoin('User.Chart')->withColumn('COUNT(Chart.Id)', 'NbCharts')->groupBy('User.Id')->filterByDeleted(false); $q = $app->request()->params('q'); if ($q) { $query->where('email LIKE "%' . $q . '%" OR name LIKE "%' . $q . '%"'); } if (!$user->isSysAdmin()) { $query->filterByRole('sysadmin', Criteria::NOT_EQUAL); } switch ($sort) { case 'name': $query->orderByName('asc'); break; case 'email': $query->orderByEmail('asc'); break; case 'charts': $query->orderBy('NbCharts', 'desc'); break; case 'created_at': default: $query->orderBy('createdAt', 'desc'); break; } return $query; } $curPage = $app->request()->params('page', 0); $total = getQuery($user)->count(); $perPage = 50; $append = ''; if ($page['q']) { $append = '&q=' . $page['q']; } if (!empty($sort)) { $append .= '&sort=' . $sort; } add_pagination_vars($page, $total, $curPage, $perPage, $append); $page['users'] = getQuery($user)->limit($perPage)->offset($curPage * $perPage)->find(); $app->render('plugins/admin-users/admin-users.twig', $page); }
function user_charts($app, $user, $key, $val) { $curPage = $app->request()->params('page'); $q = $app->request()->params('q'); if (empty($curPage)) { $curPage = 0; } $perPage = 12; $filter = !empty($key) ? array($key => $val) : array(); if (!empty($q)) { $filter['q'] = $q; } $charts = ChartQuery::create()->getPublicChartsByUser($user, $filter, $curPage * $perPage, $perPage); $total = ChartQuery::create()->countPublicChartsByUser($user, $filter); $page = array('charts' => $charts, 'bymonth' => nbChartsByMonth($user), 'byvis' => nbChartsByType($user), 'bylayout' => nbChartsByLayout($user), 'bystatus' => nbChartsByStatus($user), 'key' => $key, 'val' => $val, 'search_query' => empty($q) ? '' : $q, 'mycharts_base' => '/mycharts'); if (DatawrapperSession::getUser()->isAdmin() && $user != DatawrapperSession::getUser()) { $page['user2'] = $user; $page['mycharts_base'] = '/admin/charts/' . $user->getId(); $page['all_users'] = UserQuery::create()->filterByDeleted(false)->orderByEmail()->find(); } add_header_vars($page, 'mycharts'); add_pagination_vars($page, $total, $curPage, $perPage, empty($q) ? '' : '&q=' . $q); $app->render('mycharts.twig', $page); }
$sql = "SELECT type, COUNT(*) c FROM chart WHERE show_in_gallery = 1 AND deleted = 0 GROUP BY type ORDER BY c DESC ;"; $rs = $con->query($sql); $res = array(); $max = 0; foreach ($rs as $r) { $vis = DatawrapperVisualization::get($r['type']); $lang = substr(DatawrapperSession::getLanguage(), 0, 2); $res[] = array('count' => $r['c'], 'id' => $r['type'], 'name' => $vis['title']); $max = max($max, $r['c']); } foreach ($res as $c => $r) { $res[$c]['bar'] = round($r['count'] / $max * 80); } return $res; } $app->get('/gallery(/?|/by/:key/:val)', function ($key = false, $val = false) use($app) { disable_cache($app); $user = DatawrapperSession::getUser(); $curPage = $app->request()->params('page'); if (empty($curPage)) { $curPage = 0; } $perPage = 12; $filter = !empty($key) ? array($key => $val) : array(); $charts = ChartQuery::create()->getGalleryCharts($filter, $curPage * $perPage, $perPage); $total = ChartQuery::create()->countGalleryCharts($filter); $page = array('charts' => $charts, 'bymonth' => gal_nbChartsByMonth(), 'byvis' => gal_nbChartsByType(), 'key' => $key, 'val' => $val); add_pagination_vars($page, $total, $curPage, $perPage); add_header_vars($page, 'gallery'); $app->render('gallery.twig', $page); });