Skip to content
Extraits de code Groupes Projets
API.php 3,31 ko
Newer Older
  • Learn to ignore specific revisions
  • <?php
    /**
     * Piwik - Open source web analytics
    
    robocoder's avatar
    robocoder a validé
     * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
    
    robocoder's avatar
    robocoder a validé
     * @category Piwik_Plugins
     * @package Piwik_ExampleUI
    
    robocoder's avatar
    robocoder a validé
    /**
    
    mattpiwik's avatar
    mattpiwik a validé
     * ExampleUI API is also an example API useful if you are developing a Piwik plugin.
    
     *
     * The functions listed in this API are returning the data used in the Controller to draw graphs and
    
    mattpiwik's avatar
    mattpiwik a validé
     * display tables. See also the ExampleAPI plugin for an introduction to Piwik APIs.
    
    robocoder's avatar
    robocoder a validé
     * @package Piwik_ExampleUI
     */
    
        static private $instance = null;
    
        static public function getInstance()
        {
            if (self::$instance == null) {
                self::$instance = new self;
            }
            return self::$instance;
        }
    
        public function getTemperaturesEvolution($date, $period)
        {
    
            $period = new Period_Range($period, 'last30');
    
            $dateStart = $period->getDateStart()->toString('Y-m-d'); // eg. "2009-04-01"
            $dateEnd = $period->getDateEnd()->toString('Y-m-d'); // eg. "2009-04-30"
    
            // here you could select from your custom table in the database, eg.
            $query = "SELECT AVG(temperature)
    
    					FROM server_temperatures
    					WHERE date > ?
    						AND date < ?
    					GROUP BY date
    					ORDER BY date ASC";
    
            //$result = Piwik_FetchAll($query, array($dateStart, $dateEnd));
            // to keep things simple, we generate the data
            foreach ($period->getSubperiods() as $subPeriod) {
                $server1 = mt_rand(50, 90);
                $server2 = mt_rand(40, 110);
                $value = array('server1' => $server1, 'server2' => $server2);
                $temperatures[$subPeriod->getLocalizedShortString()] = $value;
            }
    
            return Piwik_DataTable::makeFromIndexedArray($temperatures);
    
        }
    
        // we generate an array of random server temperatures
        public function getTemperatures()
        {
            $xAxis = array(
                '0h', '1h', '2h', '3h', '4h', '5h', '6h', '7h', '8h', '9h', '10h', '11h',
                '12h', '13h', '14h', '15h', '16h', '17h', '18h', '19h', '20h', '21h', '22h', '23h',
            );
            $temperatureValues = array_slice(range(50, 90), 0, count($xAxis));
            shuffle($temperatureValues);
            $temperatures = array();
            foreach ($xAxis as $i => $xAxisLabel) {
                $temperatures[$xAxisLabel] = $temperatureValues[$i];
            }
    
    
            return Piwik_DataTable::makeFromIndexedArray($temperatures);
    
        }
    
        public function getPlanetRatios()
        {
            $planetRatios = array(
                'Mercury' => 0.382,
                'Venus'   => 0.949,
                'Earth'   => 1.00,
                'Mars'    => 0.532,
                'Jupiter' => 11.209,
                'Saturn'  => 9.449,
                'Uranus'  => 4.007,
                'Neptune' => 3.883,
            );
            // convert this array to a DataTable object
    
            return Piwik_DataTable::makeFromIndexedArray($planetRatios);
    
        }
    
        public function getPlanetRatiosWithLogos()
        {
            $planetsDataTable = $this->getPlanetRatios();
            foreach ($planetsDataTable->getRows() as $row) {
                $row->addMetadata('logo', "plugins/ExampleUI/images/icons-planet/" . strtolower($row->getColumn('label') . ".png"));
                $row->addMetadata('url', "http://en.wikipedia.org/wiki/" . $row->getColumn('label'));
            }
            return $planetsDataTable;
        }
    
    robocoder's avatar
    robocoder a validé
    }