/** * anonymous = in the session * authenticated user = in the session and in DB */ public function saveLanguage() { $language = Piwik_Common::getRequestVar('language'); Piwik_LanguagesManager::setLanguageForSession($language); if (Zend_Registry::isRegistered('access')) { $currentUser = Piwik::getCurrentUserLogin(); if ($currentUser && $currentUser !== 'anonymous') { Piwik_LanguagesManager_API::getInstance()->setLanguageForUser($currentUser, $language); } } Piwik_Url::redirectToReferer(); }
/** * Shows the "Track Visits" checkbox. */ public function optOut() { $trackVisits = !Piwik_Tracker_IgnoreCookie::isIgnoreCookieFound(); $nonce = Piwik_Common::getRequestVar('nonce', false); $language = Piwik_Common::getRequestVar('language', ''); if ($nonce !== false && Piwik_Nonce::verifyNonce('Piwik_OptOut', $nonce)) { Piwik_Nonce::discardNonce('Piwik_OptOut'); Piwik_Tracker_IgnoreCookie::setIgnoreCookie(); $trackVisits = !$trackVisits; } $view = Piwik_View::factory('optOut'); $view->trackVisits = $trackVisits; $view->nonce = Piwik_Nonce::getNonce('Piwik_OptOut', 3600); $view->language = Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($language) ? $language : Piwik_LanguagesManager::getLanguageCodeForCurrentUser(); echo $view->render(); }
public static function setUpBeforeClass() { try { Piwik::createConfigObject(); Piwik_Config::getInstance()->setTestEnvironment(); $dbConfig = Piwik_Config::getInstance()->database; $dbName = $dbConfig['dbname']; $dbConfig['dbname'] = null; Piwik::createDatabaseObject($dbConfig); Piwik::dropDatabase(); Piwik::createDatabase($dbName); Piwik::disconnectDatabase(); Piwik::createDatabaseObject(); Piwik::createTables(); Piwik::createLogObject(); Piwik_PluginsManager::getInstance()->loadPlugins(array()); } catch (Exception $e) { self::fail("TEST INITIALIZATION FAILED: " . $e->getMessage()); } include "DataFiles/SearchEngines.php"; include "DataFiles/Languages.php"; include "DataFiles/Countries.php"; include "DataFiles/Currencies.php"; include "DataFiles/LanguageToCountry.php"; Piwik::createAccessObject(); Piwik_PostEvent('FrontController.initAuthenticationObject'); // We need to be SU to create websites for tests Piwik::setUserIsSuperUser(); // Load and install plugins $pluginsManager = Piwik_PluginsManager::getInstance(); $plugins = $pluginsManager->readPluginsDirectory(); $pluginsManager->loadPlugins($plugins); $pluginsManager->installLoadedPlugins(); $_GET = $_REQUEST = array(); $_SERVER['HTTP_REFERER'] = ''; // Make sure translations are loaded to check messages in English Piwik_Translate::getInstance()->loadEnglishTranslation(); Piwik_LanguagesManager_API::getInstance()->setLanguageForUser('superUserLogin', 'en'); // List of Modules, or Module.Method that should not be called as part of the XML output compare // Usually these modules either return random changing data, or are already tested in specific unit tests. self::setApiNotToCall(self::$defaultApiNotToCall); self::setApiToCall(array()); }
public function sendReport($idReport, $period = false, $date = false) { Piwik::checkUserIsNotAnonymous(); $reports = $this->getReports($idSite = false, false, $idReport); $report = reset($reports); if ($report['period'] == 'never') { $report['period'] = 'day'; } if (!empty($period)) { $report['period'] = $period; } if (empty($date)) { $date = Piwik_Date::now()->subPeriod(1, $report['period'])->toString(); } $language = Piwik_LanguagesManager_API::getInstance()->getLanguageForUser($report['login']); // generate report list($outputFilename, $prettyDate, $websiteName, $additionalFiles) = $this->generateReport($idReport, $date, $language, self::OUTPUT_SAVE_ON_DISK, $report['period']); if (!file_exists($outputFilename)) { throw new Exception("The report file wasn't found in {$outputFilename}"); } $filename = basename($outputFilename); $handle = fopen($outputFilename, "r"); $contents = fread($handle, filesize($outputFilename)); fclose($handle); $notificationObject = null; Piwik_PostEvent(self::SEND_REPORT_EVENT, $notificationObject, $notificationInfo = array(self::REPORT_TYPE_INFO_KEY => $report['type'], self::REPORT_KEY => $report, self::REPORT_CONTENT_KEY => $contents, self::FILENAME_KEY => $filename, self::PRETTY_DATE_KEY => $prettyDate, self::WEBSITE_NAME_KEY => $websiteName, self::ADDITIONAL_FILES_KEY => $additionalFiles)); // Update flag in DB Zend_Registry::get('db')->update(Piwik_Common::prefixTable('report'), array('ts_last_sent' => Piwik_Date::now()->getDatetime()), "idreport = " . $report['idreport']); // If running from piwik.php with debug, do not delete the PDF after sending the email if (!isset($GLOBALS['PIWIK_TRACKER_DEBUG']) || !$GLOBALS['PIWIK_TRACKER_DEBUG']) { @chmod($outputFilename, 0600); } }
public function sendEmailReport($idReport, $idSite, $period = false, $date = false) { Piwik::checkUserIsNotAnonymous(); $reports = $this->getReports($idSite, false, $idReport); $report = reset($reports); if ($report['period'] == 'never') { $report['period'] = 'day'; } if (!empty($period)) { $report['period'] = $period; } if (empty($date)) { $date = Piwik_Date::now()->subPeriod(1, $report['period'])->toString(); } // Get user emails and languages $emails = self::getEmailsFromString($report['additional_emails']); if ($report['email_me'] == 1) { if (Piwik::getCurrentUserLogin() == $report['login']) { $emails[] = Piwik::getCurrentUserEmail(); } elseif ($report['login'] == Piwik_Config::getInstance()->superuser['login']) { $emails[] = Piwik::getSuperUserEmail(); } else { try { $user = Piwik_UsersManager_API::getInstance()->getUser($report['login']); } catch (Exception $e) { return; } $emails[] = $user['email']; } } $language = Piwik_LanguagesManager_API::getInstance()->getLanguageForUser($report['login']); list($outputFilename, $prettyDate, $websiteName, $reportFormat, $additionalFiles) = $this->generateReport($idReport, $date, $idSite, $language, self::OUTPUT_SAVE_ON_DISK, $report['period']); $this->sendReportEmail($emails, $outputFilename, $prettyDate, $websiteName, $report, $reportFormat, $additionalFiles); }
/** * Set the language for the session * * @param string $languageCode ISO language code */ public static function setLanguageForSession($languageCode) { if (!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($languageCode)) { return false; } $cookieName = Zend_Registry::get('config')->General->language_cookie_name; $cookie = new Piwik_Cookie($cookieName, 0); $cookie->set('language', $languageCode); $cookie->save(); }
public function sendEmailReport($idReport, $idSite) { $reports = $this->getReports($idSite, $period = false, $idReport); $report = reset($reports); if ($report['period'] == 'never') { $report['period'] = 'day'; } // Get user emails and languages $emails = self::getEmailsFromString($report['additional_emails']); if ($report['email_me'] == 1) { if (Piwik::getCurrentUserLogin() == $report['login']) { $emails[] = Piwik::getCurrentUserEmail(); } elseif ($report['login'] == Zend_Registry::get('config')->superuser->login) { $emails[] = Zend_Registry::get('config')->superuser->email; } else { try { $user = Piwik_UsersManager_API::getInstance()->getUser($report['login']); } catch (Exception $e) { return; } $emails[] = $user['email']; } } $language = Piwik_LanguagesManager_API::getInstance()->getLanguageForUser($report['login']); list($outputFilename, $prettyDate, $websiteName) = $this->generateReport($idReport, Piwik_Date::now()->subPeriod(1, $report['period'])->toString(), $idSite, $language, $outputType = Piwik_PDFReports_API::OUTPUT_PDF_SAVE_ON_DISK); $this->sendReportEmailPdfAttached($emails, $outputFilename, $prettyDate, $websiteName, $report); }
function test_getLanguageNamesInEnglish() { require_once PIWIK_INCLUDE_PATH . '/core/DataFiles/Languages.php'; $languages = Piwik_LanguagesManager_API::getInstance()->getAvailableLanguages(); foreach ($languages as $language) { require PIWIK_INCLUDE_PATH . "/lang/{$language}.php"; $name = $translations['General_EnglishLanguageName']; if ($language != 'en') { $this->assertFalse($name == 'English'); } $languageCode = substr($language, 0, 2); $this->assertTrue(isset($GLOBALS['Piwik_LanguageList'][$languageCode])); $names = $GLOBALS['Piwik_LanguageList'][$languageCode]; if (isset($GLOBALS['Piwik_LanguageList'][$language])) { if (is_array($names)) { $this->assertTrue(in_array($name, $names), "{$language}: failed because {$name} not a known language name <br/>"); } else { $this->assertTrue($name == $names, "{$language}: failed because {$name} == {$names} <br/>"); } } else { if (is_array($names)) { $this->assertTrue(strpos($name, $names[0]) !== false); } else { $this->fail("{$language}: expected an array of language names"); } } } }
/** * Save language selection in session-store */ public function saveLanguage() { $language = Piwik_Common::getRequestVar('language'); Piwik_LanguagesManager_API::getInstance()->setLanguageForSession($language); Piwik_Url::redirectToReferer(); }
/** * @return string|false if language preference could not be loaded */ protected static function getLanguageFromPreferences() { if ($language = Piwik_LanguagesManager_API::getInstance()->getLanguageForSession()) { return $language; } try { $currentUser = Piwik::getCurrentUserLogin(); return Piwik_LanguagesManager_API::getInstance()->getLanguageForUser($currentUser); } catch (Exception $e) { return false; } }
public function index() { $language = Piwik_Common::getRequestVar('language', ''); if (!empty($language)) { Piwik_LanguagesManager_API::getInstance()->setLanguageForSession($language); Piwik::redirectToModule('CoreUpdater', 'index', array('language' => null)); } $this->runUpdaterAndExit(); }