Exemplo n.º 1
0
	/**
	 * Check for a newer version
	 *
	 * @param bool $force Force check
	 */
	public static function check($force = false)
	{
		$lastTimeChecked = Piwik_GetOption(self::LAST_TIME_CHECKED);
		if($force || $lastTimeChecked === false
			|| time() - self::CHECK_INTERVAL > $lastTimeChecked )
		{
			// set the time checked first, so that parallel Piwik requests don't all trigger the http requests
			Piwik_SetOption(self::LAST_TIME_CHECKED, time(), $autoload = 1);
			$parameters = array(
				'piwik_version' => Piwik_Version::VERSION,
				'php_version' => PHP_VERSION,
				'url' => Piwik_Url::getCurrentUrlWithoutQueryString(),
				'trigger' => Piwik_Common::getRequestVar('module','','string'),
				'timezone' => Piwik_SitesManager_API::getInstance()->getDefaultTimezone(),
			);

			$url = Zend_Registry::get('config')->General->api_service_url;
			$url .= '/1.0/getLatestVersion/';
			$url .= '?' . http_build_query($parameters, '', '&');
			$timeout = self::SOCKET_TIMEOUT;
			try {
				$latestVersion = Piwik_Http::sendHttpRequest($url, $timeout);
				Piwik_SetOption(self::LATEST_VERSION, $latestVersion);
			} catch(Exception $e) {
				// e.g., disable_functions = fsockopen; allow_url_open = Off
				Piwik_SetOption(self::LATEST_VERSION, '');
			}
		}
	}
Exemplo n.º 2
0
 /**
  * Web service proxy that retrieves the content at the specified URL
  *
  * @param string $url
  * @return string
  */
 private function getPage($url)
 {
     try {
         return str_replace(' ', ' ', Piwik_Http::sendHttpRequest($url, $timeout = 10, @$_SERVER['HTTP_USER_AGENT']));
     } catch (Exception $e) {
         return '';
     }
 }
Exemplo n.º 3
0
	function _retrieveCurrentValue() {
		$this->current_value = PHP_VERSION;

		$url = 'http://php.net/releases/?serialize=1&version=5';
		$timeout = Piwik_UpdateCheck::SOCKET_TIMEOUT;
		try {
			$latestVersion = Piwik_Http::sendHttpRequest($url, $timeout);
			$versionInfo = safe_unserialize($latestVersion);
			$this->recommended_value = $versionInfo['version'];
		} catch(Exception $e) {
			$this->recommended_value = '';
		}
	}
Exemplo n.º 4
0
 /**
  * Check for a newer version
  *
  * @param bool  $force  Force check
  */
 public static function check($force = false)
 {
     $lastTimeChecked = Piwik_GetOption(self::LAST_TIME_CHECKED);
     if ($force || $lastTimeChecked === false || time() - self::CHECK_INTERVAL > $lastTimeChecked) {
         // set the time checked first, so that parallel Piwik requests don't all trigger the http requests
         Piwik_SetOption(self::LAST_TIME_CHECKED, time(), $autoload = 1);
         $parameters = array('piwik_version' => Piwik_Version::VERSION, 'php_version' => PHP_VERSION, 'url' => Piwik_Url::getCurrentUrlWithoutQueryString(), 'trigger' => Piwik_Common::getRequestVar('module', '', 'string'), 'timezone' => Piwik_SitesManager_API::getInstance()->getDefaultTimezone());
         $url = Piwik_Config::getInstance()->General['api_service_url'] . '/1.0/getLatestVersion/' . '?' . http_build_query($parameters, '', '&');
         $timeout = self::SOCKET_TIMEOUT;
         if (@Piwik_Config::getInstance()->Debug['allow_upgrades_to_beta']) {
             $url = 'http://builds.piwik.org/LATEST_BETA';
         }
         try {
             $latestVersion = Piwik_Http::sendHttpRequest($url, $timeout);
             if (!preg_match('~^[0-9][0-9a-zA-Z_.-]*$~D', $latestVersion)) {
                 $latestVersion = '';
             }
         } catch (Exception $e) {
             // e.g., disable_functions = fsockopen; allow_url_open = Off
             $latestVersion = '';
         }
         Piwik_SetOption(self::LATEST_VERSION, $latestVersion);
     }
 }
Exemplo n.º 5
0
	/**
	 * Installation Step 6: General Set-up (superuser login/password/email and subscriptions)
	 */
	function generalSetup()
	{
		$this->checkPreviousStepIsValid( __FUNCTION__ );

		$view = new Piwik_Installation_View(
						$this->pathView . 'generalSetup.tpl',
						$this->getInstallationSteps(),
						__FUNCTION__
					);
		$this->skipThisStep( __FUNCTION__ );

		$form = new Piwik_Installation_FormGeneralSetup();

		if($form->validate())
		{
			$superUserInfos = array(
				'login'    => $form->getSubmitValue('login'),
				'password' => md5( $form->getSubmitValue('password') ),
				'email'    => $form->getSubmitValue('email'),
				'salt'     => Piwik_Common::generateUniqId(),
			);

			$this->session->superuser_infos = $superUserInfos;

			$url = Zend_Registry::get('config')->General->api_service_url;
			$url .= '/1.0/subscribeNewsletter/';
			$params = array(
				'email' => $form->getSubmitValue('email'),
				'security' => $form->getSubmitValue('subscribe_newsletter_security'),
				'community' => $form->getSubmitValue('subscribe_newsletter_community'),
				'url' => Piwik_Url::getCurrentUrlWithoutQueryString(),
			);
			if($params['security'] == '1'
				|| $params['community'] == '1')
			{
				if( !isset($params['security']))  { $params['security'] = '0'; }
				if( !isset($params['community'])) { $params['community'] = '0'; }
				$url .= '?' . http_build_query($params, '', '&');
				try {
					Piwik_Http::sendHttpRequest($url, $timeout = 2);
				} catch(Exception $e) {
					// e.g., disable_functions = fsockopen; allow_url_open = Off
				}
			}
			$this->redirectToNextStep( __FUNCTION__ );
		}
		$view->addForm($form);

		echo $view->render();
	}
Exemplo n.º 6
0
 private function generateVisits($time = false, $idSite = 1)
 {
     $logs = $this->getAccessLog();
     if (empty($time)) {
         $time = time();
     }
     $date = date("Y-m-d", $time);
     $acceptLanguages = array("el,fi;q=0.5", "de-de,de;q=0.8,en-us", "pl,en-us;q=0.7,en;q=", "zh-cn", "fr-ca", "en-us", "en-gb", "fr-be", "fr,de-ch;q=0.5", "fr", "fr-ch", "fr");
     $prefix = Piwik_Url::getCurrentUrlWithoutFileName() . "piwik.php";
     $count = 0;
     foreach ($logs as $log) {
         if (!preg_match('/^(\\S+) \\S+ \\S+ \\[(.*?)\\] "GET (\\S+.*?)" \\d+ \\d+ "(.*?)" "(.*?)"/', $log, $m)) {
             continue;
         }
         $ip = $m[1];
         $time = $m[2];
         $url = $m[3];
         $referrer = $m[4];
         $ua = $m[5];
         $start = strpos($url, 'piwik.php?') + strlen('piwik.php?');
         $url = substr($url, $start, strrpos($url, " ") - $start);
         $datetime = $date . " " . Piwik_Date::factory($time)->toString("H:i:s");
         $ip = strlen($ip) < 10 ? "13.5.111.3" : $ip;
         // Force date/ip & authenticate
         $url .= "&cdt=" . urlencode($datetime);
         if (strpos($url, 'cip') === false) {
             $url .= "&cip=" . $ip;
         }
         $url .= "&token_auth=" . Piwik::getCurrentUserTokenAuth();
         $url = $prefix . "?" . $url;
         // Make order IDs unique per day
         $url = str_replace("ec_id=", "ec_id={$date}-", $url);
         // Disable provider plugin
         $url .= "&dp=1";
         // Replace idsite
         $url = preg_replace("/idsite=[0-9]+/", "idsite={$idSite}", $url);
         $acceptLanguage = $acceptLanguages[$count % count($acceptLanguages)];
         if ($output = Piwik_Http::sendHttpRequest($url, $timeout = 5, $ua, $path = null, $follow = 0, $acceptLanguage)) {
             //				var_dump($output);
             $count++;
         }
         //			echo "IP=". $ip; echo "<br>";
         //			echo "Date=". $datetime; echo "<br>";
         //			echo "URL=". $url; echo "<br>";
         //			echo "Referrer=". $referrer; echo "<br>";
         //			echo "UserAgent=". $ua; echo "<br>";
         //			echo "<hr>";
         //			var_dump($url);
         if ($count == 2) {
             //				return $count;
         }
     }
     return $count;
 }
Exemplo n.º 7
0
 /**
  * Returns array of counts and images based on Feedburner URI
  * 
  * @param string $uri
  * @return array()
  */
 protected function getFeedData($uri)
 {
     // Awareness API only supports yesterday and back;
     // we get stats for previous two days;
     // @see http://code.google.com/apis/feedburner/awareness_api.html#dates
     $yesterday = Piwik_Date::factory('-1 day', 'America/Los_Angeles');
     $beforeYesterday = Piwik_Date::factory('-2 day', 'America/Los_Angeles');
     //create url to gather XML feed from
     $url = 'https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=' . $uri . '&dates=' . $beforeYesterday->toString() . ',' . $yesterday->toString();
     $data = '';
     try {
         $data = Piwik_Http::sendHttpRequest($url, 5);
         // Feedburner errors are malformed
         if (strpos($data, 'The server encountered a temporary error') !== false) {
             throw new Exception('Unexpected Feedburner response');
         }
         $xml = new SimpleXMLElement($data);
     } catch (Exception $e) {
         return "Error parsing the data for feed <a href='http://feeds.feedburner.com/{$uri}' target='_blank'>{$uri}</a>. Fetched data was: \n'" . $data . "'";
     }
     if (count($xml->feed->entry) != 2) {
         return "Feedburner stats didn't return as expected. \n" . strip_tags($data);
     }
     $data = array();
     $i = 0;
     foreach ($xml->feed->entry as $feedDay) {
         $data[0][$i] = (int) $feedDay['circulation'];
         $data[1][$i] = (int) $feedDay['hits'];
         $data[2][$i] = (int) $feedDay['reach'];
         $i++;
     }
     foreach ($data as $key => $value) {
         if ($value[0] == $value[1]) {
             $img = 'stop.png';
         } else {
             if ($value[0] < $value[1]) {
                 $img = 'arrow_up.png';
             } else {
                 $img = 'arrow_down.png';
             }
         }
         $prefixImage = '<img alt="" src="./plugins/MultiSites/images/';
         $suffixImage = '" />';
         $data[$key][2] = $prefixImage . $img . $suffixImage;
     }
     return $data;
 }
 /**
  * Kollektionen werden an Kollektions-idSites weitergeleitet und f�llen ihre eigene Statistik.
  * @param unknown_type $notification
  */
 public function redirectCollections($notification)
 {
     try {
         if ($tmp = Piwik_Common::getRequestVar("colacnt", "false", "string") == "true") {
             return;
         }
         $openedurl = Piwik_Common::getRequestVar("url");
         $collections = $this->getCollectionsForURL($openedurl);
         if ($collections == null || count($collections) < 1) {
             return;
         }
         require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
         $murl = $this->curPageURL();
         $ua = $_SERVER["HTTP_USER_AGENT"];
         $acceptLanguage = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
         foreach ($collections as $c) {
             $idSite = Piwik_FetchOne("SELECT idSite FROM " . Piwik_Common::prefixTable("site_collections") . " WHERE cID = ?", $c);
             $name = "(Kollektion) " . getCollectionNames($c);
             //Kollektion hat noch keine idSite! -> wird erstellt
             if (!is_numeric($idSite)) {
                 Piwik_Query("INSERT INTO " . Piwik_Common::prefixTable("site") . " (idsite, name, main_url, ts_created, timezone, currency, excluded_ips, excluded_parameters, `group`) " . "VALUES('', ?, ?, NOW(), 'Europe/Berlin', 'EUR', '', '', 'Digitale Kollektionen')", array($name, "slub-dresden.de"));
                 $idSite = Piwik_FetchOne("SELECT LAST_INSERT_ID() FROM " . Piwik_Common::prefixTable("site"));
                 Piwik_Query("INSERT INTO " . Piwik_Common::prefixTable("site_collections") . " (ID, cID, idSite) VALUES ('', ?, ?)", array($c, $idSite));
             }
             //idSite zur Kollektion wurde gel�scht! -> neu erstellen
             if (Piwik_FetchOne("SELECT COUNT(idsite) FROM " . Piwik_Common::prefixTable("site") . " WHERE idsite = ?", $idSite) == 0) {
                 Piwik_Query("INSERT INTO " . Piwik_Common::prefixTable("site") . " (idsite, name, main_url, ts_created, timezone, currency, excluded_ips, excluded_parameters, `group`) " . "VALUES(?, ?, ?, NOW(), 'Europe/Berlin', 'EUR', '', '', 'Digitale Kollektionen')", array($idSite, $name, "slub-dresden.de"));
             }
             $url = preg_replace("/idsite=[0-9]+/", "idsite=" . $idSite, $murl);
             // Erneute Kollektionsweiterleitung verhindern
             $url .= "&colacnt=true";
             // Disable provider plugin
             $url .= "&dp=1";
             Piwik_Http::sendHttpRequest($url, 5, $ua, null, 0, $acceptLanguage);
         }
     } catch (Exception $e) {
         $this->clog("redirectCollections-Error: " . $e->getMessage());
     }
 }