c1b5682a6f64e350853c3aabb469e50c797ab3d6
[acontent.git] / docs / include / classes / Language / RemoteLanguageManager.class.php
1 <?php
2 /************************************************************************/
3 /* AContent                                                             */
4 /************************************************************************/
5 /* Copyright (c) 2010                                                   */
6 /* Inclusive Design Institute                                           */
7 /*                                                                      */
8 /* This program is free software. You can redistribute it and/or        */
9 /* modify it under the terms of the GNU General Public License          */
10 /* as published by the Free Software Foundation.                        */
11 /************************************************************************/
12
13 /**
14 * RemoteLanguageManager
15 * Class for managing available languages as Language Objects.
16 * @access       public
17 * @author       Joel Kronenberg
18 * @see          Language.class.php
19 * @package      Language
20 */
21
22 require_once(TR_INCLUDE_PATH.'classes/Language/LanguageParser.class.php');
23 require_once(TR_INCLUDE_PATH.'classes/Language/LanguagesParser.class.php');
24
25 class RemoteLanguageManager extends LanguageManager {
26
27         function RemoteLanguageManager() {
28                 $version = str_replace('.','_',VERSION);
29                 $language_xml = @file_get_contents('http://update.atutor.ca.ca/acontent/languages/'.$version.'/languages.xml');
30                 if ($language_xml === FALSE) {
31                         // fix for bug #2896
32                         $language_xml = @file_get_contents('http://update.atutor.ca/acontent/languages/1_5_3/languages.xml');
33                 }
34                 if ($language_xml !== FALSE) {
35
36                         $languageParser = new LanguagesParser();
37                         $languageParser->parse($language_xml);
38
39                         $this->numLanguages = $languageParser->getNumLanguages();
40
41                         for ($i = 0; $i < $this->numLanguages; $i++) {
42                                 $thisLanguage = new Language($languageParser->getLanguage($i));
43
44                                 $this->availableLanguages[$thisLanguage->getCode()][$thisLanguage->getCharacterSet()] =& $thisLanguage;
45                         }
46                 } else {
47                         $this->numLanguages = 0;
48                         $this->availableLanguages = array();
49                 }
50         }
51
52         // public
53         function fetchLanguage($language_code, $filename) {
54                 $version = str_replace('.','_',VERSION);
55
56                 $language_pack = @file_get_contents('http://update.atutor.ca/transformable/languages/' . $version . '/transformable_' . $version . '_' . $language_code . '.zip');
57
58                 if ($language_pack) {
59                         $fp = fopen($filename, 'wb+');
60                         fwrite($fp, $language_pack, strlen($language_pack));
61
62                         return TRUE;
63                 }
64                 return FALSE;
65         }
66
67         function import($language_code) {
68                 $filename = tempnam(TR_CONTENT_DIR . 'import', $language_code);
69                 if ($this->fetchLanguage($language_code, $filename)) {
70                         parent::import($filename);
71                 }
72         }
73 }
74
75 ?>