/** * 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, ''); } } }
/** * 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 ''; } }
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 = ''; } }
/** * 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); } }
/** * 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(); }
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; }
/** * 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()); } }