Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/SitesManager/SitesManager.php')
-rw-r--r--plugins/SitesManager/SitesManager.php408
1 files changed, 200 insertions, 208 deletions
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index 6f596f9f87..b258a29b8f 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -15,212 +15,204 @@
*/
class Piwik_SitesManager extends Piwik_Plugin
{
- const KEEP_URL_FRAGMENT_USE_DEFAULT = 0;
- const KEEP_URL_FRAGMENT_YES = 1;
- const KEEP_URL_FRAGMENT_NO = 2;
-
- public function getInformation()
- {
- $info = array(
- 'description' => Piwik_Translate('SitesManager_PluginDescription'),
- 'author' => 'Piwik',
- 'author_homepage' => 'http://piwik.org/',
- 'version' => Piwik_Version::VERSION,
- );
- return $info;
- }
-
- function getListHooksRegistered()
- {
- return array(
- 'AssetManager.getJsFiles' => 'getJsFiles',
- 'AssetManager.getCssFiles' => 'getCssFiles',
- 'AdminMenu.add' => 'addMenu',
- 'Common.fetchWebsiteAttributes' => 'recordWebsiteDataInCache',
- );
- }
-
- function addMenu()
- {
- Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', 'SitesManager_MenuSites',
- array('module' => 'SitesManager', 'action' => 'index'),
- Piwik::isUserHasSomeAdminAccess(),
- $order = 1);
- }
-
- /**
- * Get CSS files
- *
- * @param Piwik_Event_Notification $notification notification object
- */
- function getCssFiles( $notification )
- {
- $cssFiles = &$notification->getNotificationObject();
-
- $cssFiles[] = "themes/default/styles.css";
- }
-
- /**
- * Get JavaScript files
- *
- * @param Piwik_Event_Notification $notification notification object
- */
- function getJsFiles( $notification )
- {
- $jsFiles = &$notification->getNotificationObject();
-
- $jsFiles[] = "plugins/SitesManager/templates/SitesManager.js";
- }
-
- /**
- * Hooks when a website tracker cache is flushed (website updated, cache deleted, or empty cache)
- * Will record in the tracker config file all data needed for this website in Tracker.
- *
- * @param Piwik_Event_Notification $notification notification object
- * @return void
- */
- function recordWebsiteDataInCache($notification)
- {
- $idSite = (int)$notification->getNotificationInfo();
- // add the 'hosts' entry in the website array
- $array =& $notification->getNotificationObject();
- $array['hosts'] = $this->getTrackerHosts($idSite);
-
- $website = Piwik_SitesManager_API::getInstance()->getSiteFromId($idSite);
- $array['excluded_ips'] = $this->getTrackerExcludedIps($website);
- $array['excluded_parameters'] = self::getTrackerExcludedQueryParameters($website);
- $array['excluded_user_agents'] = self::getExcludedUserAgents($website);
- $array['keep_url_fragment'] = self::shouldKeepURLFragmentsFor($website);
- $array['sitesearch'] = $website['sitesearch'];
- $array['sitesearch_keyword_parameters'] = $this->getTrackerSearchKeywordParameters($website);
- $array['sitesearch_category_parameters'] = $this->getTrackerSearchCategoryParameters($website);
- }
-
- /**
- * Returns whether we should keep URL fragments for a specific site.
- *
- * @param array $site DB data for the site.
- * @return bool
- */
- private static function shouldKeepURLFragmentsFor( $site )
- {
- if ($site['keep_url_fragment'] == self::KEEP_URL_FRAGMENT_YES)
- {
- return true;
- }
- else if ($site['keep_url_fragment'] == self::KEEP_URL_FRAGMENT_NO)
- {
- return false;
- }
-
- return Piwik_SitesManager_API::getInstance()->getKeepURLFragmentsGlobal();
- }
-
- private function getTrackerSearchKeywordParameters($website)
- {
- $searchParameters = $website['sitesearch_keyword_parameters'];
- if(empty($searchParameters)) {
- $searchParameters = Piwik_SitesManager_API::getInstance()->getSearchKeywordParametersGlobal();
- }
- return explode(",", $searchParameters);
- }
-
- private function getTrackerSearchCategoryParameters($website)
- {
- $searchParameters = $website['sitesearch_category_parameters'];
- if(empty($searchParameters)) {
- $searchParameters = Piwik_SitesManager_API::getInstance()->getSearchCategoryParametersGlobal();
- }
- return explode(",", $searchParameters);
- }
-
- /**
- * Returns the array of excluded IPs to save in the config file
- *
- * @return array
- */
- private function getTrackerExcludedIps($website)
- {
- $excludedIps = $website['excluded_ips'];
- $globalExcludedIps = Piwik_SitesManager_API::getInstance()->getExcludedIpsGlobal();
-
- $excludedIps .= ',' . $globalExcludedIps;
-
- $ipRanges = array();
- foreach(explode(',', $excludedIps) as $ip)
- {
- $ipRange = Piwik_SitesManager_API::getInstance()->getIpsForRange($ip);
- if($ipRange !== false)
- {
- $ipRanges[] = $ipRange;
- }
- }
- return $ipRanges;
- }
-
- /**
- * Returns the array of excluded user agent substrings for a site. Filters out
- * any garbage data & trims each entry.
- *
- * @param array $website The full set of information for a site.
- * @return array
- */
- private static function getExcludedUserAgents( $website )
- {
- $excludedUserAgents = Piwik_SitesManager_API::getInstance()->getExcludedUserAgentsGlobal();
- if (Piwik_SitesManager_API::getInstance()->isSiteSpecificUserAgentExcludeEnabled())
- {
- $excludedUserAgents .= ','.$website['excluded_user_agents'];
- }
- return self::filterBlankFromCommaSepList($excludedUserAgents);
- }
-
- /**
- * Returns the array of URL query parameters to exclude from URLs
- *
- * @return array
- */
- public static function getTrackerExcludedQueryParameters($website)
- {
- $excludedQueryParameters = $website['excluded_parameters'];
- $globalExcludedQueryParameters = Piwik_SitesManager_API::getInstance()->getExcludedQueryParametersGlobal();
-
- $excludedQueryParameters .= ',' . $globalExcludedQueryParameters;
- return self::filterBlankFromCommaSepList($excludedQueryParameters);
- }
-
- /**
- * Trims each element of a comma-separated list of strings, removes empty elements and
- * returns the result (as an array).
- *
- * @param string $parameters The unfiltered list.
- * @return array The filtered list of strings as an array.
- */
- static private function filterBlankFromCommaSepList( $parameters )
- {
- $parameters = explode(',', $parameters);
- $parameters = array_filter($parameters, 'strlen');
- $parameters = array_unique($parameters);
- return $parameters;
- }
-
- /**
- * Returns the hosts alias URLs
- * @param int $idSite
- * @return array
- */
- private function getTrackerHosts($idSite)
- {
- $urls = Piwik_SitesManager_API::getInstance()->getSiteUrlsFromId($idSite);
- $hosts = array();
- foreach($urls as $url)
- {
- $url = parse_url($url);
- if(isset($url['host']))
- {
- $hosts[] = $url['host'];
- }
- }
- return $hosts;
- }
+ const KEEP_URL_FRAGMENT_USE_DEFAULT = 0;
+ const KEEP_URL_FRAGMENT_YES = 1;
+ const KEEP_URL_FRAGMENT_NO = 2;
+
+ public function getInformation()
+ {
+ $info = array(
+ 'description' => Piwik_Translate('SitesManager_PluginDescription'),
+ 'author' => 'Piwik',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION,
+ );
+ return $info;
+ }
+
+ function getListHooksRegistered()
+ {
+ return array(
+ 'AssetManager.getJsFiles' => 'getJsFiles',
+ 'AssetManager.getCssFiles' => 'getCssFiles',
+ 'AdminMenu.add' => 'addMenu',
+ 'Common.fetchWebsiteAttributes' => 'recordWebsiteDataInCache',
+ );
+ }
+
+ function addMenu()
+ {
+ Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', 'SitesManager_MenuSites',
+ array('module' => 'SitesManager', 'action' => 'index'),
+ Piwik::isUserHasSomeAdminAccess(),
+ $order = 1);
+ }
+
+ /**
+ * Get CSS files
+ *
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getCssFiles($notification)
+ {
+ $cssFiles = & $notification->getNotificationObject();
+
+ $cssFiles[] = "themes/default/styles.css";
+ }
+
+ /**
+ * Get JavaScript files
+ *
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getJsFiles($notification)
+ {
+ $jsFiles = & $notification->getNotificationObject();
+
+ $jsFiles[] = "plugins/SitesManager/templates/SitesManager.js";
+ }
+
+ /**
+ * Hooks when a website tracker cache is flushed (website updated, cache deleted, or empty cache)
+ * Will record in the tracker config file all data needed for this website in Tracker.
+ *
+ * @param Piwik_Event_Notification $notification notification object
+ * @return void
+ */
+ function recordWebsiteDataInCache($notification)
+ {
+ $idSite = (int)$notification->getNotificationInfo();
+ // add the 'hosts' entry in the website array
+ $array =& $notification->getNotificationObject();
+ $array['hosts'] = $this->getTrackerHosts($idSite);
+
+ $website = Piwik_SitesManager_API::getInstance()->getSiteFromId($idSite);
+ $array['excluded_ips'] = $this->getTrackerExcludedIps($website);
+ $array['excluded_parameters'] = self::getTrackerExcludedQueryParameters($website);
+ $array['excluded_user_agents'] = self::getExcludedUserAgents($website);
+ $array['keep_url_fragment'] = self::shouldKeepURLFragmentsFor($website);
+ $array['sitesearch'] = $website['sitesearch'];
+ $array['sitesearch_keyword_parameters'] = $this->getTrackerSearchKeywordParameters($website);
+ $array['sitesearch_category_parameters'] = $this->getTrackerSearchCategoryParameters($website);
+ }
+
+ /**
+ * Returns whether we should keep URL fragments for a specific site.
+ *
+ * @param array $site DB data for the site.
+ * @return bool
+ */
+ private static function shouldKeepURLFragmentsFor($site)
+ {
+ if ($site['keep_url_fragment'] == self::KEEP_URL_FRAGMENT_YES) {
+ return true;
+ } else if ($site['keep_url_fragment'] == self::KEEP_URL_FRAGMENT_NO) {
+ return false;
+ }
+
+ return Piwik_SitesManager_API::getInstance()->getKeepURLFragmentsGlobal();
+ }
+
+ private function getTrackerSearchKeywordParameters($website)
+ {
+ $searchParameters = $website['sitesearch_keyword_parameters'];
+ if (empty($searchParameters)) {
+ $searchParameters = Piwik_SitesManager_API::getInstance()->getSearchKeywordParametersGlobal();
+ }
+ return explode(",", $searchParameters);
+ }
+
+ private function getTrackerSearchCategoryParameters($website)
+ {
+ $searchParameters = $website['sitesearch_category_parameters'];
+ if (empty($searchParameters)) {
+ $searchParameters = Piwik_SitesManager_API::getInstance()->getSearchCategoryParametersGlobal();
+ }
+ return explode(",", $searchParameters);
+ }
+
+ /**
+ * Returns the array of excluded IPs to save in the config file
+ *
+ * @return array
+ */
+ private function getTrackerExcludedIps($website)
+ {
+ $excludedIps = $website['excluded_ips'];
+ $globalExcludedIps = Piwik_SitesManager_API::getInstance()->getExcludedIpsGlobal();
+
+ $excludedIps .= ',' . $globalExcludedIps;
+
+ $ipRanges = array();
+ foreach (explode(',', $excludedIps) as $ip) {
+ $ipRange = Piwik_SitesManager_API::getInstance()->getIpsForRange($ip);
+ if ($ipRange !== false) {
+ $ipRanges[] = $ipRange;
+ }
+ }
+ return $ipRanges;
+ }
+
+ /**
+ * Returns the array of excluded user agent substrings for a site. Filters out
+ * any garbage data & trims each entry.
+ *
+ * @param array $website The full set of information for a site.
+ * @return array
+ */
+ private static function getExcludedUserAgents($website)
+ {
+ $excludedUserAgents = Piwik_SitesManager_API::getInstance()->getExcludedUserAgentsGlobal();
+ if (Piwik_SitesManager_API::getInstance()->isSiteSpecificUserAgentExcludeEnabled()) {
+ $excludedUserAgents .= ',' . $website['excluded_user_agents'];
+ }
+ return self::filterBlankFromCommaSepList($excludedUserAgents);
+ }
+
+ /**
+ * Returns the array of URL query parameters to exclude from URLs
+ *
+ * @return array
+ */
+ public static function getTrackerExcludedQueryParameters($website)
+ {
+ $excludedQueryParameters = $website['excluded_parameters'];
+ $globalExcludedQueryParameters = Piwik_SitesManager_API::getInstance()->getExcludedQueryParametersGlobal();
+
+ $excludedQueryParameters .= ',' . $globalExcludedQueryParameters;
+ return self::filterBlankFromCommaSepList($excludedQueryParameters);
+ }
+
+ /**
+ * Trims each element of a comma-separated list of strings, removes empty elements and
+ * returns the result (as an array).
+ *
+ * @param string $parameters The unfiltered list.
+ * @return array The filtered list of strings as an array.
+ */
+ static private function filterBlankFromCommaSepList($parameters)
+ {
+ $parameters = explode(',', $parameters);
+ $parameters = array_filter($parameters, 'strlen');
+ $parameters = array_unique($parameters);
+ return $parameters;
+ }
+
+ /**
+ * Returns the hosts alias URLs
+ * @param int $idSite
+ * @return array
+ */
+ private function getTrackerHosts($idSite)
+ {
+ $urls = Piwik_SitesManager_API::getInstance()->getSiteUrlsFromId($idSite);
+ $hosts = array();
+ foreach ($urls as $url) {
+ $url = parse_url($url);
+ if (isset($url['host'])) {
+ $hosts[] = $url['host'];
+ }
+ }
+ return $hosts;
+ }
}