File: class_dashBoard.inc

package info (click to toggle)
fusiondirectory 1.0.19-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 32,060 kB
  • sloc: php: 47,469; pascal: 2,993; perl: 2,431; xml: 1,822; sh: 136; makefile: 19
file content (111 lines) | stat: -rw-r--r-- 3,360 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
/*
  This code is part of FusionDirectory (http://www.fusiondirectory.org)
  Copyright (C)  2010 Antoine Gallavardin
  Copyright (C)  2011-2016 FusionDirectory project

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*/

class dashboard extends simplePlugin
{
  static function plInfo()
  {
    return array(
      'plShortName'   => _('Dashboard'),
      'plTitle'       => _('Dashboard'),
      'plDescription' => _('Statistics and various information'),
      'plIcon'        => 'geticon.php?context=applications&icon=utilities-system-monitor&size=48',
      'plObjectType'  => array(
        'dashboard' => array(
          'name'      => _('Dashboard'),
          'tabClass'  => 'tabs_dashboard',
          'mainAttr'  => FALSE
        )
      ),
      'plSection'     => array('reporting' => array('name' => _('Reporting'), 'priority' => 30)),
      'plPriority'    => 0,

      'plProvidedAcls'  => array()
    );
  }

  static function getAttributesInfo()
  {
    return array(
      'stats' => array(
        'name'  => _('Statistics'),
        'attrs' => array(new FakeAttribute('stats')),
        'template' => get_template_path('main_stats.tpl', TRUE, dirname(__FILE__)),
      ),
    );
  }

  function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
  {
    parent::__construct($dn, $object, $parent, $mainTab);

    $this->stats = $this->overview_stats();
  }

  /* Compute some statistics */
  function overview_stats()
  {
    global $config;
    $stats = array();
    foreach ($config->data['OBJECTS'] as $type => $infos) {
      try {
        $nb = objects::count($type);
      } catch (FusionDirectoryException $e) {
        $nb = 0;
        trigger_error("Problem with $type:".$e->getMessage());
      }
      if ($nb == 0) {
        continue;
      }
      $node = array(
        'name'  => $infos['name'],
        'nb'    => $nb
      );
      if (isset($infos['icon'])) {
        $node['img'] = $infos['icon'];
      } else {
        $node['img'] = 'images/empty.png';
      }
      if (isset($infos['management']) && ($infos['management'] != '')) {
        $pInfos = pluglist::pluginInfos($infos['management']);
        $node['href']     = 'main.php?plug='.$pInfos['INDEX'].'&amp;reset=1';
        $section = $pInfos['plSection'];
        if (is_array($section)) {
          $section = key($section);
        }
        $node['priority'] = $config->data['SECTIONS'][$section]['PRIORITY'] * 100 + $pInfos['plPriority'];
      } else {
        $node['priority'] = 10000;
      }
      $stats[] = $node;
    }

    usort($stats,
      function ($a, $b)
      {
        return ($b['priority'] < $a['priority']);
      }
    );

    return $stats;
  }
}
?>