- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / shop / editcurrency.php
1 <?php
2 //
3 // Created on: <08-Nov-2005 13:06:15 dl>
4 //
5 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
6 // SOFTWARE NAME: eZ Publish
7 // SOFTWARE RELEASE: 4.1.x
8 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
9 // SOFTWARE LICENSE: GNU General Public License v2.0
10 // NOTICE: >
11 //   This program is free software; you can redistribute it and/or
12 //   modify it under the terms of version 2.0  of the GNU General
13 //   Public License as published by the Free Software Foundation.
14 //
15 //   This program is distributed in the hope that it will be useful,
16 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
17 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 //   GNU General Public License for more details.
19 //
20 //   You should have received a copy of version 2.0 of the GNU General
21 //   Public License along with this program; if not, write to the Free
22 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23 //   MA 02110-1301, USA.
24 //
25 //
26 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
27 //
28
29 /*! \file
30 */
31
32 $module = $Params['Module'];
33
34 $ini = eZINI::instance( 'site.ini' );
35
36 $error = false;
37 $canEdit = true;
38 $originalCurrencyCode = $Params['Currency'];
39 $currencyParams = array( 'code' => false,
40                          'symbol' => false,
41                          'locale' => $ini->variable( 'RegionalSettings', 'Locale' ),
42                          'custom_rate_value' => '0.0000',
43                          'rate_factor' => '1.0000' );
44
45 if ( $module->isCurrentAction( 'Cancel' ) )
46 {
47     return $module->redirectTo( $module->functionURI( 'currencylist' ) );
48 }
49 else if ( $module->isCurrentAction( 'Create' ) )
50 {
51     if ( $module->hasActionParameter( 'CurrencyData' ) )
52         $currencyParams = $module->actionParameter( 'CurrencyData' );
53
54     if ( $errCode = eZCurrencyData::canCreate( $currencyParams['code'] ) )
55     {
56         $error = eZCurrencyData::errorMessage( $errCode );
57     }
58     else
59     {
60         $error = validateCurrencyData( $currencyParams );
61         if ( $error === false )
62         {
63             eZShopFunctions::createCurrency( $currencyParams );
64             eZContentCacheManager::clearAllContentCache();
65
66             return $module->redirectTo( $module->functionURI( 'currencylist' ) );
67         }
68     }
69 }
70 else if ( $module->isCurrentAction( 'StoreChanges' ) )
71 {
72     $originalCurrencyCode = $module->hasActionParameter( 'OriginalCurrencyCode' ) ? $module->actionParameter( 'OriginalCurrencyCode' ) : '';
73     if ( $module->hasActionParameter( 'CurrencyData' ) )
74         $currencyParams = $module->actionParameter( 'CurrencyData' );
75
76     $errCode = eZShopFunctions::changeCurrency( $originalCurrencyCode, $currencyParams['code'] );
77     if ( $errCode === eZCurrencyData::ERROR_OK )
78     {
79         $error = validateCurrencyData( $currencyParams );
80         if ( $error === false )
81         {
82             $currency = eZCurrencyData::fetch( $currencyParams['code'] );
83             if ( is_object( $currency ) )
84             {
85                 $currency->setAttribute( 'symbol', $currencyParams['symbol'] );
86                 $currency->setAttribute( 'locale', $currencyParams['locale'] );
87                 $currency->setAttribute( 'custom_rate_value', $currencyParams['custom_rate_value'] );
88                 $currency->setAttribute( 'rate_factor', $currencyParams['rate_factor'] );
89
90                 $db = eZDB::instance();
91                 $db->begin();
92                 $currency->sync();
93                 $db->commit();
94
95                 eZContentCacheManager::clearAllContentCache();
96
97                 return $module->redirectTo( $module->functionURI( 'currencylist' ) );
98             }
99             else
100             {
101                 $error = eZCurrencyData::errorMessage( $currency );
102             }
103         }
104     }
105     else
106     {
107         $error = eZCurrencyData::errorMessage( $errCode );
108     }
109 }
110
111 $pathText = '';
112 if ( strlen( $originalCurrencyCode ) > 0 )
113 {
114     // going to edit existing currency
115     $pathText = ezpI18n::translate( 'kernel/shop', 'Edit currency' );
116
117     if ( $currencyParams['code'] === false )
118     {
119         // first time in 'edit' mode? => initialize template variables
120         // with existing data.
121         $currency = eZCurrencyData::fetch( $originalCurrencyCode );
122         if ( is_object( $currency ) )
123         {
124             $currencyParams['code'] = $currency->attribute( 'code' );
125             $currencyParams['symbol'] = $currency->attribute( 'symbol' );
126             $currencyParams['locale'] = $currency->attribute( 'locale' );
127             $currencyParams['custom_rate_value'] = $currency->attribute( 'custom_rate_value' );
128             $currencyParams['rate_factor'] = $currency->attribute( 'rate_factor' );
129         }
130         else
131         {
132             $error = "'$originalCurrencyCode' currency  doesn't exist.";
133             $canEdit = false;
134         }
135     }
136 }
137 else
138 {
139     // going to create new currency
140     $pathText = ezpI18n::translate( 'kernel/shop', 'Create new currency' );
141 }
142
143 require_once( 'kernel/common/template.php' );
144 $tpl = templateInit();
145
146 $tpl->setVariable( 'error', $error );
147 $tpl->setVariable( 'can_edit', $canEdit );
148 $tpl->setVariable( 'original_currency_code', $originalCurrencyCode );
149 $tpl->setVariable( 'currency_data', $currencyParams );
150
151 $Result = array();
152 $Result['content'] = $tpl->fetch( "design:shop/editcurrency.tpl" );
153 $Result['path'] = array( array( 'text' => $pathText,
154                                 'url' => false ) );
155
156 /**
157  * Validates currency data:
158  *  - checks that custom_rate_value & rate_factor are provided and are floats.
159  *
160  * @param array $currencyData Currenty data as submitted. Will be modified to
161  *        remove invalid values since it is passed by reference
162  * @return false|string True if data is valid, an error message if it's not
163  */
164 function validateCurrencyData( &$currencyData )
165 {
166     $return = false;
167
168     $floatValidator = new eZFloatValidator( 0 );
169     if ( $floatValidator->validate( $currencyData['custom_rate_value'] ) == eZInputValidator::STATE_INVALID )
170     {
171         $return = ezpI18n::translate( 'kernel/shop', "'%value' is not a valid custom rate value (positive number expected)",
172             'Error message', array( '%value' => $currencyData['custom_rate_value'] ) );
173         $currencyData['custom_rate_value'] = '';
174     }
175     if ( $floatValidator->validate( $currencyData['rate_factor'] ) == eZInputValidator::STATE_INVALID )
176     {
177         if ( $return === false )
178             $return = ezpI18n::translate( 'kernel/shop', "'%value' is not a valid rate_factor value (positive number expected)",
179                 'Error message', array( '%value' => $currencyData['rate_factor'] ) );
180         $currencyData['rate_factor'] = '';
181     }
182
183     return $return;
184 }
185 ?>