00001 <?php
00002
00015
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
00037
00042 function &getPlugin() {
00043 return $this->_plugin;
00044 }
00045
00050 function setPlugin($plugin) {
00051 $this->_plugin =& $plugin;
00052 }
00053
00054
00055
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
00071
00072
00073 function initialize(&$request) {
00074 parent::initialize($request);
00075
00076
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
00087
00088 $this->setTitle('plugins.generic.addThis.grid.title');
00089
00090
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
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 ?>