diff options
Diffstat (limited to 'plugins/Dashboard/Dashboard.php')
-rw-r--r-- | plugins/Dashboard/Dashboard.php | 285 |
1 files changed, 139 insertions, 146 deletions
diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php index 10afa65382..50a71bf28c 100644 --- a/plugins/Dashboard/Dashboard.php +++ b/plugins/Dashboard/Dashboard.php @@ -1,10 +1,10 @@ <?php /** * Piwik - Open source web analytics - * + * * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * + * * @category Piwik_Plugins * @package Piwik_Dashboard */ @@ -14,153 +14,146 @@ */ class Piwik_Dashboard extends Piwik_Plugin { - public function getInformation() - { - return array( - 'description' => Piwik_Translate('Dashboard_PluginDescription'), - 'author' => 'Piwik', - 'author_homepage' => 'http://piwik.org/', - 'version' => Piwik_Version::VERSION, - ); - } - - public function getListHooksRegistered() - { - return array( - 'AssetManager.getJsFiles' => 'getJsFiles', - 'AssetManager.getCssFiles' => 'getCssFiles', - 'UsersManager.deleteUser' => 'deleteDashboardLayout', - 'Menu.add' => 'addMenus', - 'TopMenu.add' => 'addTopMenu', - ); - } - - public static function getAllDashboards($login) { - $dashboards = Piwik_FetchAll('SELECT iddashboard, name - FROM '.Piwik_Common::prefixTable('user_dashboard') . - ' WHERE login = ? ORDER BY iddashboard', array($login)); - $pos = 0; - $nameless = 1; - foreach ($dashboards AS &$dashboard) { - if (empty($dashboard['name'])) { - $dashboard['name'] = Piwik_Translate('Dashboard_DashboardOf', $login); - if($nameless > 1) { - $dashboard['name'] .= " ($nameless)"; - } - if(empty($dashboard['layout'])) - { - $layout = '[]'; - } - else - { - $layout = html_entity_decode($dashboard['layout']); - $layout = str_replace("\\\"", "\"", $layout); - } - $dashboard['layout'] = Piwik_Common::json_decode($layout); - $nameless++; - } - $dashboard['name'] = Piwik_Common::unsanitizeInputValue($dashboard['name']); - $pos++; - } - return $dashboards; - } - - public function addMenus() - { - Piwik_AddMenu('Dashboard_Dashboard', '', array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => 1), true, 5); - - if (!Piwik::isUserIsAnonymous()) { - $login = Piwik::getCurrentUserLogin(); - - $dashboards = self::getAllDashboards($login); - if (count($dashboards) > 1) - { - $pos = 0; - foreach ($dashboards AS $dashboard) { - Piwik_AddMenu('Dashboard_Dashboard', $dashboard['name'], array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => $dashboard['iddashboard']), true, $pos); - $pos++; - } - } - - } - } - - public function addTopMenu() - { - $tooltip = false; - try - { - $idSite = Piwik_Common::getRequestVar('idSite'); - $tooltip = Piwik_Translate('Dashboard_TopLinkTooltip', Piwik_Site::getNameFor($idSite)); - } - catch (Exception $ex) - { - // if no idSite parameter, show no tooltip - } - - $urlParams = array('module' => 'CoreHome', 'action' => 'index'); - Piwik_AddTopMenu('General_Dashboard', $urlParams, true, 1, $isHTML = false, $tooltip); - } - - /** - * @param Piwik_Event_Notification $notification notification object - */ - function getJsFiles( $notification ) - { - $jsFiles = &$notification->getNotificationObject(); - - $jsFiles[] = "plugins/Dashboard/templates/widgetMenu.js"; - $jsFiles[] = "libs/javascript/json2.js"; - $jsFiles[] = "plugins/Dashboard/templates/dashboardObject.js"; - $jsFiles[] = "plugins/Dashboard/templates/dashboardWidget.js"; - $jsFiles[] = "plugins/Dashboard/templates/dashboard.js"; - } - - /** - * @param Piwik_Event_Notification $notification notification object - */ - function getCssFiles( $notification ) - { - $cssFiles = &$notification->getNotificationObject(); - - $cssFiles[] = "plugins/CoreHome/templates/datatable.css"; - $cssFiles[] = "plugins/Dashboard/templates/dashboard.css"; - } - - /** - * @param Piwik_Event_Notification $notification notification object - */ - function deleteDashboardLayout($notification) - { - $userLogin = $notification->getNotificationObject(); - Piwik_Query('DELETE FROM ' . Piwik_Common::prefixTable('user_dashboard') . ' WHERE login = ?', array($userLogin)); - } - - public function install() - { - // we catch the exception - try{ - $sql = "CREATE TABLE ". Piwik_Common::prefixTable('user_dashboard')." ( + public function getInformation() + { + return array( + 'description' => Piwik_Translate('Dashboard_PluginDescription'), + 'author' => 'Piwik', + 'author_homepage' => 'http://piwik.org/', + 'version' => Piwik_Version::VERSION, + ); + } + + public function getListHooksRegistered() + { + return array( + 'AssetManager.getJsFiles' => 'getJsFiles', + 'AssetManager.getCssFiles' => 'getCssFiles', + 'UsersManager.deleteUser' => 'deleteDashboardLayout', + 'Menu.add' => 'addMenus', + 'TopMenu.add' => 'addTopMenu', + ); + } + + public static function getAllDashboards($login) + { + $dashboards = Piwik_FetchAll('SELECT iddashboard, name + FROM ' . Piwik_Common::prefixTable('user_dashboard') . + ' WHERE login = ? ORDER BY iddashboard', array($login)); + $pos = 0; + $nameless = 1; + foreach ($dashboards AS &$dashboard) { + if (empty($dashboard['name'])) { + $dashboard['name'] = Piwik_Translate('Dashboard_DashboardOf', $login); + if ($nameless > 1) { + $dashboard['name'] .= " ($nameless)"; + } + if (empty($dashboard['layout'])) { + $layout = '[]'; + } else { + $layout = html_entity_decode($dashboard['layout']); + $layout = str_replace("\\\"", "\"", $layout); + } + $dashboard['layout'] = Piwik_Common::json_decode($layout); + $nameless++; + } + $dashboard['name'] = Piwik_Common::unsanitizeInputValue($dashboard['name']); + $pos++; + } + return $dashboards; + } + + public function addMenus() + { + Piwik_AddMenu('Dashboard_Dashboard', '', array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => 1), true, 5); + + if (!Piwik::isUserIsAnonymous()) { + $login = Piwik::getCurrentUserLogin(); + + $dashboards = self::getAllDashboards($login); + if (count($dashboards) > 1) { + $pos = 0; + foreach ($dashboards AS $dashboard) { + Piwik_AddMenu('Dashboard_Dashboard', $dashboard['name'], array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => $dashboard['iddashboard']), true, $pos); + $pos++; + } + } + + } + } + + public function addTopMenu() + { + $tooltip = false; + try { + $idSite = Piwik_Common::getRequestVar('idSite'); + $tooltip = Piwik_Translate('Dashboard_TopLinkTooltip', Piwik_Site::getNameFor($idSite)); + } catch (Exception $ex) { + // if no idSite parameter, show no tooltip + } + + $urlParams = array('module' => 'CoreHome', 'action' => 'index'); + Piwik_AddTopMenu('General_Dashboard', $urlParams, true, 1, $isHTML = false, $tooltip); + } + + /** + * @param Piwik_Event_Notification $notification notification object + */ + function getJsFiles($notification) + { + $jsFiles = & $notification->getNotificationObject(); + + $jsFiles[] = "plugins/Dashboard/templates/widgetMenu.js"; + $jsFiles[] = "libs/javascript/json2.js"; + $jsFiles[] = "plugins/Dashboard/templates/dashboardObject.js"; + $jsFiles[] = "plugins/Dashboard/templates/dashboardWidget.js"; + $jsFiles[] = "plugins/Dashboard/templates/dashboard.js"; + } + + /** + * @param Piwik_Event_Notification $notification notification object + */ + function getCssFiles($notification) + { + $cssFiles = & $notification->getNotificationObject(); + + $cssFiles[] = "plugins/CoreHome/templates/datatable.css"; + $cssFiles[] = "plugins/Dashboard/templates/dashboard.css"; + } + + /** + * @param Piwik_Event_Notification $notification notification object + */ + function deleteDashboardLayout($notification) + { + $userLogin = $notification->getNotificationObject(); + Piwik_Query('DELETE FROM ' . Piwik_Common::prefixTable('user_dashboard') . ' WHERE login = ?', array($userLogin)); + } + + public function install() + { + // we catch the exception + try { + $sql = "CREATE TABLE " . Piwik_Common::prefixTable('user_dashboard') . " ( login VARCHAR( 100 ) NOT NULL , iddashboard INT NOT NULL , name VARCHAR( 100 ) NULL DEFAULT NULL , layout TEXT NOT NULL, PRIMARY KEY ( login , iddashboard ) - ) DEFAULT CHARSET=utf8 " ; - Piwik_Exec($sql); - } catch(Exception $e){ - // mysql code error 1050:table already exists - // see bug #153 http://dev.piwik.org/trac/ticket/153 - if(!Zend_Registry::get('db')->isErrNo($e, '1050')) - { - throw $e; - } - } - } - - public function uninstall() - { - Piwik_DropTables(Piwik_Common::prefixTable('user_dashboard')); - } - + ) DEFAULT CHARSET=utf8 "; + Piwik_Exec($sql); + } catch (Exception $e) { + // mysql code error 1050:table already exists + // see bug #153 http://dev.piwik.org/trac/ticket/153 + if (!Zend_Registry::get('db')->isErrNo($e, '1050')) { + throw $e; + } + } + } + + public function uninstall() + { + Piwik_DropTables(Piwik_Common::prefixTable('user_dashboard')); + } + } |