Ticket #597: API.php

File API.php, 3.5 KB (added by bpouzet, 3 years ago)

Rename method to getTranslationsForLanguage()

Line 
1<?php
2/**
3 * @package Piwik_LanguagesManager
4 */
5class Piwik_LanguagesManager_API
6{
7    static private $instance = null;
8    static public function getInstance()
9    {
10        if (self::$instance == null)
11        {           
12            $c = __CLASS__;
13            self::$instance = new $c();
14        }
15        return self::$instance;
16    }
17    static protected $availableLanguageNames = null;
18    static protected $languageNames = null;
19   
20    static public function isLanguageAvailable($languageCode)
21    {
22        return $languageCode !== false
23            && in_array($languageCode, self::getAvailableLanguages());
24    }
25   
26    static public function getAvailableLanguages()
27    {
28        if(!is_null(self::$languageNames))
29        {
30            return self::$languageNames;
31        }
32        $path = PIWIK_INCLUDE_PATH . "/lang/";
33        $languages = glob($path . "*.php");
34        $pathLength = strlen($path);
35        $languageNames = array();
36        foreach($languages as $language)
37        {
38            $languageNames[] = substr($language, $pathLength, -strlen('.php'));
39        }
40        self::$languageNames = $languageNames;
41        return $languageNames;
42    }
43
44    static public function getAvailableLanguagesInfo()
45    {
46        require "lang/en.php";
47        $englishTranslation = $translations;
48        $filenames = self::getAvailableLanguages();
49        $languagesInfo = array();
50        foreach($filenames as $filename)
51        {
52            require "lang/$filename.php";
53            $translationStringsDone = array_intersect_key($englishTranslation, $translations);
54            $percentageComplete = count($translationStringsDone) / count($englishTranslation);
55            $percentageComplete = round(100 * $percentageComplete, 0); 
56            $languageInfo = array(     'code' => $filename,
57                                        'name' => $translations['General_OriginalLanguageName'],
58                                        'english_name' => $translations['General_EnglishLanguageName'],
59                                        'translators' => $translations['General_TranslatorName'],
60                                        'translators_email' => $translations['General_TranslatorEmail'],
61                                        'percentage_complete' => $percentageComplete . '%',
62                            );
63            $languagesInfo[] = $languageInfo;
64        }
65        return $languagesInfo;
66    }
67   
68    static public function getAvailableLanguageNames()
69    {
70        if(!is_null(self::$availableLanguageNames))
71        {
72            return self::$availableLanguageNames;
73        }
74       
75        $filenames = self::getAvailableLanguages();
76        $languagesInfo = array();
77        foreach($filenames as $filename)
78        {
79            require "lang/$filename.php";
80            $languagesInfo[] = array( 'code' => $filename, 'name' => $translations['General_OriginalLanguageName']);
81        }
82        self::$availableLanguageNames = $languagesInfo;
83        return self::$availableLanguageNames;
84    }
85   
86    static public function getTranslationsForLanguages($languageCode)
87    {
88        if(!self::isLanguageAvailable($languageCode))
89        {
90            return false;
91        }else
92        {
93            require "lang/$languageCode.php";
94            $languageInfo = array();
95            foreach($translations as $key => $value)
96            {
97                $languageInfo[] = array('label' => $key, 'value' => $value);
98            }
99            return $languageInfo;
100        }
101    }
102   
103   
104    /**
105     * @param string $login
106     * @param string|false $layout
107     */
108    static public function getLanguageForUser( $login )
109    {
110        Piwik::checkUserIsSuperUserOrTheUser($login);
111        return Piwik_FetchOne('SELECT language FROM '.Piwik::prefixTable('user_language') .
112                    ' WHERE login = ? ', array($login ));
113    }
114   
115    static public function setLanguageForUser($login, $language)
116    {
117        Piwik::checkUserIsSuperUserOrTheUser($login);
118        $paramsBind = array($login, $language, $language);
119        Piwik_Query('INSERT INTO '.Piwik::prefixTable('user_language') .
120                    ' (login, language)
121                        VALUES (?,?)
122                    ON DUPLICATE KEY UPDATE language=?',
123                    $paramsBind);
124    }
125}