• Main Page
  • Modules
  • Classes
  • Files
  • File List

plugins/generic/addThis/AddThisStatisticsGridHandler.inc.php

00001 <?php
00002 
00015 // import grid base classes
00016 import('lib.pkp.classes.controllers.grid.GridHandler');
00017 
00018 class AddThisStatisticsGridHandler extends GridHandler {
00020    var $_plugin;
00021 
00025    function AddThisStatisticsGridHandler($plugin) {
00026       parent::GridHandler();
00027       $this->addRoleAssignment(
00028             array(ROLE_ID_PRESS_MANAGER),
00029             array('fetchGrid', 'fetchRow'));
00030 
00031       $this->setPlugin($plugin);
00032    }
00033 
00034 
00035    //
00036    // Getters/Setters
00037    //
00042    function &getPlugin() {
00043       return $this->_plugin;
00044    }
00045 
00050    function setPlugin($plugin) {
00051       $this->_plugin =& $plugin;
00052    }
00053 
00054    //
00055    // Overridden methods from PKPHandler
00056    //
00063    function authorize(&$request, $args, $roleAssignments) {
00064       import('classes.security.authorization.OmpPressAccessPolicy');
00065       $this->addPolicy(new OmpPressAccessPolicy($request, $roleAssignments));
00066       return parent::authorize($request, $args, $roleAssignments);
00067    }
00068 
00069    /*
00070     * Configure the grid
00071     * @param $request PKPRequest
00072     */
00073    function initialize(&$request) {
00074       parent::initialize($request);
00075 
00076       // Load submission-specific translations
00077       AppLocale::requireComponents(
00078          LOCALE_COMPONENT_PKP_SUBMISSION,
00079          LOCALE_COMPONENT_PKP_USER,
00080          LOCALE_COMPONENT_OMP_DEFAULT_SETTINGS
00081       );
00082 
00083       $plugin =& $this->getPlugin();
00084       $plugin->addLocaleData();
00085 
00086       // Basic grid configuration
00087 
00088       $this->setTitle('plugins.generic.addThis.grid.title');
00089 
00090       // Columns
00091       $plugin->import('AddThisStatisticsGridCellProvider');
00092       $cellProvider = new AddThisStatisticsGridCellProvider();
00093       $gridColumn = new GridColumn(
00094          'url',
00095          'common.url',
00096          null,
00097          'controllers/grid/gridCell.tpl',
00098          $cellProvider,
00099          array('width' => 50, 'alignment' => COLUMN_ALIGNMENT_LEFT)
00100       );
00101 
00102       $gridColumn->addFlag('html', true);
00103 
00104       $this->addColumn($gridColumn);
00105 
00106       $this->addColumn(
00107          new GridColumn(
00108             'shares',
00109             'plugins.generic.addThis.grid.shares',
00110             null,
00111             'controllers/grid/gridCell.tpl',
00112             $cellProvider
00113          )
00114       );
00115    }
00116 
00117 
00118    //
00119    // Overridden methods from GridHandler
00120    //
00125    function &getRowInstance() {
00126       $plugin =& $this->getPlugin();
00127       $plugin->import('AddThisStatisticsGridRow');
00128       $row = new AddThisStatisticsGridRow();
00129       return $row;
00130    }
00131 
00135    function &loadData($request, $filter = null) {
00136       $plugin =& $this->getPlugin();
00137       $press =& $request->getPress();
00138 
00139       $addThisProfileId = $press->getSetting('addThisProfileId');
00140       $addThisUsername = $press->getSetting('addThisUsername');
00141       $addThisPassword = $press->getSetting('addThisPassword');
00142 
00143       $data = array();
00144 
00145       if (isset($addThisProfileId) && isset($addThisUsername) && isset($addThisPassword)) {
00146          $topSharedUrls = 'https://api.addthis.com/analytics/1.0/pub/shares/url.json?period=week&pubid='.urlencode($addThisProfileId).
00147             '&username='.urlencode($addThisUsername).
00148             '&password='.urlencode($addThisPassword);
00149 
00150          import('lib.pkp.classes.file.FileWrapper');
00151          $wrapper = FileWrapper::wrapper($topSharedUrls);
00152          $jsonData = $wrapper->contents();
00153 
00154          if ($jsonData != '') {
00155             import('lib.pkp.classes.core.JSONManager');
00156             $jsonManager = new JSONManager();
00157             $jsonMessage = $jsonManager->decode($jsonData);
00158             foreach ($jsonMessage as $statElement) {
00159                $data[] = array('url' => $statElement->url, 'shares' => $statElement->shares);
00160             }
00161          }
00162       }
00163       return $data;
00164    }
00165 }
00166 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1