Ejemplo n.º 1
0
 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);
     });
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
    $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);
});