Example #1
0
 /**
  * @return Piwik_LanguagesManager_API
  */
 public static function getInstance()
 {
     if (self::$instance == null) {
         self::$instance = new self();
     }
     return self::$instance;
 }
Example #2
0
 public static function getInstance()
 {
     if (self::$instance == null) {
         $c = __CLASS__;
         self::$instance = new $c();
     }
     return self::$instance;
 }
Example #3
0
 /**
  * anonymous = in the session
  * authenticated user = in the session and in DB
  */
 public function saveLanguage()
 {
     $language = Piwik_Common::getRequestVar('language');
     $currentUser = Piwik::getCurrentUserLogin();
     $_SESSION['language'] = $language;
     if ($currentUser !== 'anonymous') {
         Piwik_LanguagesManager_API::setLanguageForUser($currentUser, $language);
     }
     Piwik_Url::redirectToReferer();
 }
Example #4
0
 /**
  * anonymous = in the session
  * authenticated user = in the session and in DB
  */
 public function saveLanguage()
 {
     $language = Piwik_Common::getRequestVar('language');
     $currentUser = Piwik::getCurrentUserLogin();
     $session = new Zend_Session_Namespace("LanguagesManager");
     $session->language = $language;
     if ($currentUser !== 'anonymous') {
         Piwik_LanguagesManager_API::setLanguageForUser($currentUser, $language);
     }
     Piwik_Url::redirectToReferer();
 }
Example #5
0
 /**
  * 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();
 }
Example #6
0
 public static function getAvailableLanguageNames()
 {
     if (!is_null(self::$availableLanguageNames)) {
         return self::$availableLanguageNames;
     }
     $filenames = self::getAvailableLanguages();
     $languagesInfo = array();
     foreach ($filenames as $filename) {
         require PIWIK_INCLUDE_PATH . "/lang/{$filename}.php";
         $languagesInfo[] = array('code' => $filename, 'name' => $translations['General_OriginalLanguageName']);
     }
     self::$availableLanguageNames = $languagesInfo;
     return self::$availableLanguageNames;
 }
Example #7
0
 /**
  * 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();
 }
Example #8
0
 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());
 }
Example #9
0
 /**
  * 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();
 }
Example #10
0
 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");
             }
         }
     }
 }
	function test_getTranslationsForLanguages_not()
	{
		$this->assertFalse(Piwik_LanguagesManager_API::getTranslationsForLanguage("../no-language"));
	}
Example #13
0
 /**
  * @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;
     }
 }
Example #14
0
 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);
 }
Example #15
0
 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();
 }
Example #16
0
 public function saveLanguage()
 {
     $language = Piwik_Common::getRequestVar('language');
     Piwik_LanguagesManager_API::setLanguageForSession($language);
     Piwik_Url::redirectToReferer();
 }
 /**
  * @return string|false if language preference could not be loaded
  */
 protected static function getLanguageFromPreferences()
 {
     if (isset($_SESSION['language'])) {
         return $_SESSION['language'];
     }
     try {
         $currentUser = Piwik::getCurrentUserLogin();
         return Piwik_LanguagesManager_API::getLanguageForUser($currentUser);
     } catch (Exception $e) {
         return false;
     }
 }
Example #18
0
 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);
     }
 }
Example #19
0
 /**
  * @return string|false if language preference could not be loaded
  */
 protected static function getLanguageFromPreferences()
 {
     $session = new Zend_Session_Namespace("LanguagesManager");
     if (isset($session->language)) {
         return $session->language;
     }
     try {
         $currentUser = Piwik::getCurrentUserLogin();
         return Piwik_LanguagesManager_API::getLanguageForUser($currentUser);
     } catch (Exception $e) {
         return false;
     }
 }