- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / setup / steps / ezstep_package_language_options.php
1 <?php
2 //
3 // Definition of eZStepPackageLanguageOptions class
4 //
5 // Created on: <21-Feb-2007 17:27:57 dl>
6 //
7 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
8 // SOFTWARE NAME: eZ Publish
9 // SOFTWARE RELEASE: 4.1.x
10 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
11 // SOFTWARE LICENSE: GNU General Public License v2.0
12 // NOTICE: >
13 //   This program is free software; you can redistribute it and/or
14 //   modify it under the terms of version 2.0  of the GNU General
15 //   Public License as published by the Free Software Foundation.
16 //
17 //   This program is distributed in the hope that it will be useful,
18 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
19 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 //   GNU General Public License for more details.
21 //
22 //   You should have received a copy of version 2.0 of the GNU General
23 //   Public License along with this program; if not, write to the Free
24 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 //   MA 02110-1301, USA.
26 //
27 //
28 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
29 //
30
31 /*! \file
32 */
33
34 /*!
35   \class eZStepPackageLanguageOptions ezstep_package_language_options.php
36   \brief The class eZStepPackageLanguageOptions does
37
38 */
39
40 class eZStepPackageLanguageOptions extends eZStepInstaller
41 {
42     /*!
43      Constructor
44     */
45     function eZStepPackageLanguageOptions( $tpl, $http, $ini, &$persistenceList )
46     {
47         $this->eZStepInstaller( $tpl, $http, $ini, $persistenceList,
48                                 'package_language_options', 'Package language options' );
49     }
50
51     function processPostData()
52     {
53         $languageMap = array();
54         if( $this->Http->hasPostVariable( 'eZSetupPackageLanguageMap' ) )
55         {
56             $languageMap = $this->Http->postVariable( 'eZSetupPackageLanguageMap' );
57         }
58
59         // Add site languages.
60         $siteLanguageLocaleList = $this->PersistenceList['regional_info']['languages'];
61         foreach( $siteLanguageLocaleList as $siteLanguage )
62             $languageMap[$siteLanguage] = $siteLanguage;
63
64         $this->PersistenceList['package_info']['language_map'] = $languageMap;
65
66         return true;
67     }
68
69     function init()
70     {
71         /*
72         if( $this->hasKickstartData() )
73         {
74             $data = $this->kickstartData();
75
76             return $this->kickstartContinueNextStep();
77         }
78         */
79
80         //
81         // Get all available languages
82         //
83         $languages = false;
84         $defaultLanguage = false;
85         $defaultExtraLanguages = false;
86
87         eZSetupLanguageList( $languages, $defaultLanguage, $defaultExtraLanguages );
88
89
90         //
91         // Get info about package and site languages
92         //
93         $siteLanguageLocaleList = $this->PersistenceList['regional_info']['languages'];
94
95         $packageNameList = array();
96         $packageLanguageLocaleList = array();
97
98         $sitePackageName = $this->chosenSitePackage();
99         $sitePackage = eZPackage::fetch( $sitePackageName, false, false, false );
100         if( is_object( $sitePackage ) )
101         {
102             $dependencies = $sitePackage->attribute( 'dependencies' );
103             $requirements = $dependencies['requires'];
104
105             foreach( $requirements as $req )
106             {
107                 $packageNameList[] = $req['name'];
108             }
109
110             $packageLanguageLocaleList = eZPackage::languageInfoFromPackageList( $packageNameList, false );
111         }
112
113         // Explicitly add 'eng-GB' cause clean data is in 'eng-GB'.
114         if( !in_array( 'eng-GB', $packageLanguageLocaleList ) )
115             $packageLanguageLocaleList[] = 'eng-GB';
116         //
117         // Exclude languages which exist both in packges and site.
118         //
119         $packageLanguageLocaleList = array_diff( $packageLanguageLocaleList, $siteLanguageLocaleList );
120
121         if( count( $packageLanguageLocaleList ) > 0 )
122         {
123             //
124             // Get language names
125             //
126             $siteLanguageList = array();
127             $packageLanguageList = array();
128             foreach( $languages as $language )
129             {
130                 $locale = $language->attribute( 'locale_code' );
131                 $name = $language->attribute( 'intl_language_name' );
132
133                 if( in_array( $locale, $siteLanguageLocaleList ) )
134                 {
135                     $siteLanguageList[] = array( 'locale' => $locale,
136                                                  'name' => $name );
137                 }
138
139                 if( in_array( $locale, $packageLanguageLocaleList ) )
140                 {
141                     $packageLanguageList[] = array( 'locale' => $locale,
142                                                     'name' => $name );
143                 }
144             }
145
146             $this->MissedPackageLanguageList = $packageLanguageList;
147             $this->SiteLanguageList = $siteLanguageList;
148
149             return false;
150         }
151
152         // There are no language conflicts => proceed with next step
153         return true;
154     }
155
156     function display()
157     {
158         $packageLanguageList = $this->MissedPackageLanguageList;
159         $siteLanguageList = $this->SiteLanguageList;
160
161         $this->Tpl->setVariable( 'package_language_list', $packageLanguageList );
162         $this->Tpl->setVariable( 'site_language_list', $siteLanguageList );
163
164         $result = array();
165         $result['content'] = $this->Tpl->fetch( "design:setup/init/package_language_options.tpl" );
166         $result['path'] = array( array( 'text' => ezpI18n::translate( 'design/standard/setup/init',
167                                                           'Package language options' ),
168                                         'url' => false ) );
169         return $result;
170     }
171
172     public $MissedPackageLanguageList;
173     public $SiteLanguageList;
174 }
175 ?>