Lahmizzar Muinela
2014-03-09 66a06bb0ba19c718d80d95e0ab4841644c4dacc6
commit | author | age
66fc58 1 <?php
LM 2 /**
3  * @package Projectfork
4  * @subpackage Projectfork.Translations.Installer
5  *
fba4b3 6  * @copyright (C) 2012 - 2014 Projectfork Translation Team. All rights reserved.
66fc58 7  * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
LM 8  * @link http://www.projectfork.net
9  **/
10 defined( '_JEXEC' ) or die();
11
12 class pkg_projectfork_languagesInstallerScript {
13     
14     protected $name = 'lang_pf4';
66a06b 15     protected $uncomplete_lang = array(
LM 16         // "ar-AA", // Last Update: 2014-02-16 - 100%
17         // "nl-NL", // Last Update: 2014-01-25 - 100%
18         // "fr-FR", // Last Update: 2014-01-18 - 100%
19         // "de-DE", // Last Update: 2014-01-15 - 100%
20         // "hu-HU", // Last Update: 2014-02-13 - 100%
21         // "pt-BR", // Last Update: 2014-03-07 - 100%
22         // "ru-RU", // Last Update: 2014-02-24 - 100%
23         // "tr-TR", // Last Update: 2014-02-24 - 100%
24         "eu-ES", // Last Update: 2014-01-28 - 99%
25         "cs-CZ", // Last Update: 2014-02-05 - 97%
26         "da-DK", // Last Update: 2014-01-14 - 95%
27         "es-ES", // Last Update: 2014-01-14 - 95%
28         "nb-NO", // Last Update: 2014-01-14 - 93%
29         "pl-PL", // Last Update: 2014-01-14 - 93%
30         "th-TH", // Last Update: 2014-01-14 - 93%
31         "ca-ES", // Last Update: 2014-01-14 - 92%
32         "zh-TW", // Last Update: 2014-01-14 - 92%
33         "it-IT", // Last Update: 2014-01-14 - 92%
34         "ja-JP", // Last Update: 2014-01-14 - 92%
35         "ro-RO", // Last Update: 2014-01-14 - 92%
36         "pt-PT", // Last Update: 2014-01-14 - 90%
37         "el-GR", // Last Update: 2014-01-14 - 89%
38         "sv-SE", // Last Update: 2014-01-14 - 87%
39         "sk-SK", // Last Update: 2014-01-14 - 66%
40         "uk-UA", // Last Update: 2014-01-14 - 55%
41         "nl-BE", // Last Update: 2014-01-14 - 39%
42         "bg-BG", // Last Update: 2014-01-14 - 33%
43         "fa-IR", // Last Update: 2014-01-23 - 33%
44         "es-MX"  // Last Update: 2014-01-14 - 29%
45     );
66fc58 46     
LM 47     public function uninstall($parent) {
48         $languages = JFactory::getLanguage()->getKnownLanguages();
49         foreach ($languages as $language) {
50             echo $this->uninstallLanguage($language['tag'], $language['name']);
51         }
52     }
53     
54     public function preflight($type, $parent) {
686e50 55         $lang = JFactory::getLanguage();
LM 56         $lang->load('pkg_projectfork_languages', dirname(__FILE__) . '/installer', 'en-GB', true);
57         $lang->load('pkg_projectfork_languages', dirname(__FILE__) . '/installer', $lang->getTag(), true);
58         
66fc58 59         if (!in_array($type, array('install', 'update'))) return true;
LM 60         
61         $app = JFactory::getApplication();
62         
63         // Do not install if Projectfork 4 doesn't exist.
d0edc0 64         $table = JTable::getInstance('extension');
LM 65         $id = $table->find(array('type'=>'component', 'element'=>'com_projectfork'));
75a35a 66         if(!$id) {
686e50 67             $app->enqueueMessage(sprintf(JText::_('PKG_PROJECTFORK_LANGUAGES_PFNOTINSTALLED'), '4.x'), 'error');
d0edc0 68             return false;
LM 69         }
66fc58 70         
LM 71         // Get list of languages to be installed. Only installs languages that are found in your system.
c3405e 72         $source = $parent->getParent()->getPath('source').'/languages';
66fc58 73         $languages = JFactory::getLanguage()->getKnownLanguages();
LM 74         
75         $files = $parent->manifest->files;
75a35a 76         $installed_langs_html = '<ul>';
686e50 77         
66fc58 78         foreach ($languages as $language) {
LM 79             $search = JFolder::folders($source, $language['tag']); // no .zip files use "folders" instead
80             if (empty($search)) continue;
81             
d0edc0 82             // Generate something like <file type="file" id="lang_pf4_en-GB">en-GB</file>
66fc58 83             $file = $files->addChild('file', array_pop($search));
LM 84             $file->addAttribute('type', 'file');
d0edc0 85             $file->addAttribute('id', $this->name . '_' . $language['tag']);
4db6bd 86             $installed_langs_html .= '<li>' . sprintf('<b>%s</b> - %s', $language['tag'], $language['name']);
d0edc0 87             if(in_array($language['tag'], $this->uncomplete_lang)) {
686e50 88                 $installed_langs_html .= ' ... <span style="color: darkorange;">(' . sprintf(JText::_('PKG_PROJECTFORK_LANGUAGES_NOTFULL_TRANSLATED'), '<a href="https://github.com/projectfork/Translations/wiki" target="_blank">Projectfork Translations Team</a>') . ')';
d0edc0 89             }
686e50 90             $installed_langs_html .= '</li>';
66fc58 91         }
75a35a 92         $installed_langs_html .= '</ul>';
66fc58 93         
LM 94         if (empty($files)) {
75a35a 95             // No packages to install
686e50 96             $app->enqueueMessage(sprintf(JText::_('PKG_PROJECTFORK_LANGUAGES_ENGLISH_ONLY')), 'notice');
66fc58 97             return false;
686e50 98         } else {
75a35a 99             // Package was installation successfull with detected languages
LM 100             echo JText::_('PKG_PROJECTFORK_LANGUAGES_INSTALLED_DETECTED_SUCCESS') . $installed_langs_html;
66fc58 101         }
LM 102         
103         return true;
104     }
105     
106     public function uninstallLanguage($tag, $name) {
107         $table = JTable::getInstance('extension');
108         $id = $table->find(array('type'=>'file', 'element'=>"{$this->name}_{$tag}"));
d0edc0 109         if(!$id) return;
66fc58 110         
LM 111         $installer = new JInstaller();
112         $installer->uninstall ( 'file', $id );
113     }
114 }