- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / shop / classes / exchangeratehandlers / ezexchangeratesupdatehandler.php
1 <?php
2 //
3 // Definition of eZExchangeRatesUpdateHandler class
4 //
5 // Created on: <12-Mar-2006 13:06:15 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 class eZExchangeRatesUpdateHandler
35 {
36     const OK = 0;
37     const CANT_CREATE_HANDLER = 1;
38     const FAILED = 2;
39     const EMPTY_RATE_LIST = 3;
40     const UNKNOWN_BASE_CURRENCY = 4;
41     const INVALID_BASE_CROSS_RATE = 5;
42
43     function eZExchangeRatesUpdateHandler()
44     {
45         $this->RateList = false;
46         $this->BaseCurrency = false;
47
48         $this->initialize();
49     }
50
51     function initialize( $params = array() )
52     {
53         if ( !isset( $params['BaseCurrency'] ) )
54             $params['BaseCurrency'] = '';
55
56         $this->setBaseCurrency( $params['BaseCurrency'] );
57     }
58
59     /*!
60      \static
61     */
62     static function create( $handlerName = false )
63     {
64         $shopINI = eZINI::instance( 'shop.ini' );
65         if ( $handlerName === false)
66         {
67            if ( $shopINI->hasVariable( 'ExchangeRatesSettings', 'ExchangeRatesUpdateHandler' ) )
68                $handlerName = $shopINI->variable( 'ExchangeRatesSettings', 'ExchangeRatesUpdateHandler' );
69         }
70
71         $handlerName = strtolower( $handlerName );
72
73         $dirList = array();
74         $repositoryDirectories = $shopINI->variable( 'ExchangeRatesSettings', 'RepositoryDirectories' );
75         $extensionDirectories = $shopINI->variable( 'ExchangeRatesSettings', 'ExtensionDirectories' );
76
77         $baseDirectory = eZExtension::baseDirectory();
78         foreach ( $extensionDirectories as $extensionDirectory )
79         {
80             if ( !empty( $extensionDirectory ) )
81                 $dirList[] = $baseDirectory . '/' . $extensionDirectory . '/exchangeratehandlers';
82         }
83
84         foreach ( $repositoryDirectories as $repositoryDirectory )
85         {
86             if ( !empty( $repositoryDirectory ) )
87                 $dirList[] = $repositoryDirectory;
88         }
89
90         $foundHandler = false;
91         foreach ( $dirList as $dir )
92         {
93             $includeFile = "$dir/$handlerName/{$handlerName}handler.php";
94
95             if ( file_exists( $includeFile ) )
96             {
97                 $foundHandler = true;
98                 break;
99             }
100         }
101
102         if ( !$foundHandler )
103         {
104             eZDebug::writeError( "Exchange rates update handler '$handlerName' not found, " .
105                                    "searched in these directories: " .
106                                    implode( ', ', $dirList ),
107                                  'eZExchangeRatesUpdateHandler::create' );
108             return false;
109         }
110
111         require_once( $includeFile );
112         $className = $handlerName . 'handler';
113         return new $className;
114     }
115
116     function rateList()
117     {
118         return $this->RateList;
119     }
120
121     function setRateList( $rateList )
122     {
123         $this->RateList = $rateList;
124     }
125
126     function baseCurrency()
127     {
128         return $this->BaseCurrency;
129     }
130
131     function setBaseCurrency( $baseCurrency )
132     {
133         $this->BaseCurrency = $baseCurrency;
134     }
135
136     function requestRates()
137     {
138         $error = array( 'code' => self::FAILED,
139                         'description' => ezpI18n::translate( 'kernel/shop', "eZExchangeRatesUpdateHandler: you should reimplement 'requestRates' method" ) );
140
141         return $error;
142     }
143
144     public $RateList;
145     public $BaseCurrency;
146 }
147
148 ?>