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