OSDN Git Service

c4a093d4e0fd18a39fee5480ccb3ae924de837aa
[ethna/ethna.git] / Ethna.php
1 <?php
2 // vim: foldmethod=marker
3 /**
4  *      Ethna.php
5  *
6  *      @author         Masaki Fujimoto <fujimoto@php.net>
7  *      @license        http://www.opensource.org/licenses/bsd-license.php The BSD License
8  *      @package        Ethna
9  *      @version        $Id$
10  */
11
12 /**     Ethna°Í¸¥é¥¤¥Ö¥é¥ê: PEAR, PEAR_Error */
13 include_once('PEAR.php');
14
15 /**     Ethna°Í¸¥é¥¤¥Ö¥é¥ê: PEAR::DB */
16 include_once('DB.php');
17
18 /** Ethna°Í¸¥é¥¤¥Ö¥é¥ê: Smarty */
19 include_once('Smarty/Smarty.class.php');
20
21
22 /** ¥Ð¡¼¥¸¥ç¥óÄêµÁ */
23 define('ETHNA_VERSION', '0.1.0');
24
25 /** Ethna¥Ù¡¼¥¹¥Ç¥£¥ì¥¯¥È¥êÄêµÁ */
26 define('ETHNA_BASE', dirname(__FILE__));
27
28
29 include_once(ETHNA_BASE . '/class/Ethna_ActionClass.php');
30 include_once(ETHNA_BASE . '/class/Ethna_ActionError.php');
31 include_once(ETHNA_BASE . '/class/Ethna_ActionForm.php');
32 include_once(ETHNA_BASE . '/class/Ethna_AppManager.php');
33 include_once(ETHNA_BASE . '/class/Ethna_AppObject.php');
34 include_once(ETHNA_BASE . '/class/Ethna_AppSQL.php');
35 include_once(ETHNA_BASE . '/class/Ethna_AppSearchObject.php');
36 include_once(ETHNA_BASE . '/class/Ethna_Backend.php');
37 include_once(ETHNA_BASE . '/class/Ethna_Config.php');
38 include_once(ETHNA_BASE . '/class/Ethna_Controller.php');
39 include_once(ETHNA_BASE . '/class/Ethna_DB.php');
40 include_once(ETHNA_BASE . '/class/Ethna_I18N.php');
41 include_once(ETHNA_BASE . '/class/Ethna_InfoManager.php');
42 include_once(ETHNA_BASE . '/class/Ethna_LogWriter.php');
43 include_once(ETHNA_BASE . '/class/Ethna_LogWriter_File.php');
44 include_once(ETHNA_BASE . '/class/Ethna_LogWriter_Syslog.php');
45 include_once(ETHNA_BASE . '/class/Ethna_Logger.php');
46 include_once(ETHNA_BASE . '/class/Ethna_MailSender.php');
47 include_once(ETHNA_BASE . '/class/Ethna_Session.php');
48 include_once(ETHNA_BASE . '/class/Ethna_SkeltonGenerator.php');
49 include_once(ETHNA_BASE . '/class/Ethna_SmartyPlugin.php');
50 include_once(ETHNA_BASE . '/class/Ethna_Util.php');
51 include_once(ETHNA_BASE . '/class/Ethna_ViewClass.php');
52 include_once(ETHNA_BASE . '/class/AMF/Ethna_AMF_ActionClass.php');
53 include_once(ETHNA_BASE . '/class/Action/Ethna_Action_Info.php');
54 include_once(ETHNA_BASE . '/class/CLI/Ethna_CLI_ActionClass.php');
55 include_once(ETHNA_BASE . '/class/Form/Ethna_Form_Info.php');
56 include_once(ETHNA_BASE . '/class/View/Ethna_View_List.php');
57
58 if (extension_loaded('soap')) {
59         include_once(ETHNA_BASE . '/class/SOAP/Ethna_SOAP_ActoinForm.php');
60         include_once(ETHNA_BASE . '/class/SOAP/Ethna_SOAP_Gateway.php');
61         include_once(ETHNA_BASE . '/class/SOAP/Ethna_SOAP_GatewayGenerator.php');
62         include_once(ETHNA_BASE . '/class/SOAP/Ethna_SOAP_Util.php');
63         include_once(ETHNA_BASE . '/class/SOAP/Ethna_SOAP_WsdlGenerator.php');
64 }
65
66 /** ¥¯¥é¥¤¥¢¥ó¥È¸À¸ìÄêµÁ: ±Ñ¸ì */
67 define('LANG_EN', 'en');
68
69 /**     ¥¯¥é¥¤¥¢¥ó¥È¸À¸ìÄêµÁ: ÆüËܸì */
70 define('LANG_JA', 'ja');
71
72
73 /**     ¥¯¥é¥¤¥¢¥ó¥È¥¿¥¤¥×: ¥¦¥§¥Ö¥Ö¥é¥¦¥¶(PC) */
74 define('CLIENT_TYPE_WWW', 1);
75
76 /**     ¥¯¥é¥¤¥¢¥ó¥È¥¿¥¤¥×: SOAP¥¯¥é¥¤¥¢¥ó¥È */
77 define('CLIENT_TYPE_SOAP', 2);
78
79 /**     ¥¯¥é¥¤¥¢¥ó¥È¥¿¥¤¥×: Flash Player (with Flash Remoting) */
80 define('CLIENT_TYPE_AMF', 3);
81
82 /**     ¥¯¥é¥¤¥¢¥ó¥È¥¿¥¤¥×: ¥â¥Ð¥¤¥ë(AU) */
83 define('CLIENT_TYPE_MOBILE_AU', 4);
84
85
86 /** DB¼ïÊÌÄêµÁ: R/W */
87 define('DB_TYPE_RW', 1);
88
89 /** DB¼ïÊÌÄêµÁ: R/O */
90 define('DB_TYPE_RO', 2);
91
92 /** DB¼ïÊÌÄêµÁ: Misc  */
93 define('DB_TYPE_MISC', 3);
94
95
96 /**     Í×ÁÇ·¿: À°¿ô */
97 define('VAR_TYPE_INT', 1);
98
99 /**     Í×ÁÇ·¿: ÉâÆ°¾®¿ôÅÀ¿ô */
100 define('VAR_TYPE_FLOAT', 1);
101
102 /**     Í×ÁÇ·¿: Ê¸»úÎó */
103 define('VAR_TYPE_STRING', 2);
104
105 /**     Í×ÁÇ·¿: ÆüÉÕ */
106 define('VAR_TYPE_DATETIME', 3);
107
108 /**     Í×ÁÇ·¿: ¿¿µ¶ÃÍ */
109 define('VAR_TYPE_BOOLEAN', 4);
110
111 /**     Í×ÁÇ·¿: ¥Õ¥¡¥¤¥ë */
112 define('VAR_TYPE_FILE', 5);
113
114
115 /** ¥Õ¥©¡¼¥à·¿: text */
116 define('FORM_TYPE_TEXT', 1);
117
118 /** ¥Õ¥©¡¼¥à·¿: password */
119 define('FORM_TYPE_PASSWORD', 2);
120
121 /** ¥Õ¥©¡¼¥à·¿: textarea */
122 define('FORM_TYPE_TEXTAREA', 3);
123
124 /** ¥Õ¥©¡¼¥à·¿: select */
125 define('FORM_TYPE_SELECT', 4);
126
127 /** ¥Õ¥©¡¼¥à·¿: radio */
128 define('FORM_TYPE_RADIO', 5);
129
130 /** ¥Õ¥©¡¼¥à·¿: checkbox */
131 define('FORM_TYPE_CHECKBOX', 6);
132
133 /** ¥Õ¥©¡¼¥à·¿: button */
134 define('FORM_TYPE_SUBMIT', 7);
135
136 /** ¥Õ¥©¡¼¥à·¿: button */
137 define('FORM_TYPE_FILE', 8);
138
139
140 /**     ¥¨¥é¡¼¥³¡¼¥É: °ìÈÌ¥¨¥é¡¼ */
141 define('E_GENERAL', 1);
142
143 /**     ¥¨¥é¡¼¥³¡¼¥É: DBÀܳ¥¨¥é¡¼ */
144 define('E_DB_CONNECT', 2);
145
146 /**     ¥¨¥é¡¼¥³¡¼¥É: DBÀßÄê¤Ê¤· */
147 define('E_DB_NODSN', 3);
148
149 /**     ¥¨¥é¡¼¥³¡¼¥É: DB¥¯¥¨¥ê¥¨¥é¡¼ */
150 define('E_DB_QUERY', 4);
151
152 /**     ¥¨¥é¡¼¥³¡¼¥É: DB¥æ¥Ë¡¼¥¯¥­¡¼¥¨¥é¡¼ */
153 define('E_DB_DUPENT', 5);
154
155 /**     ¥¨¥é¡¼¥³¡¼¥É: DB¼ïÊÌ¥¨¥é¡¼ */
156 define('E_DB_INVALIDTYPE', 6);
157
158 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥»¥Ã¥·¥ç¥ó¥¨¥é¡¼(Í­¸ú´ü¸ÂÀÚ¤ì) */
159 define('E_SESSION_EXPIRE', 16);
160
161 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥»¥Ã¥·¥ç¥ó¥¨¥é¡¼(IP¥¢¥É¥ì¥¹¥Á¥§¥Ã¥¯¥¨¥é¡¼) */
162 define('E_SESSION_IPCHECK', 17);
163
164 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥¢¥¯¥·¥ç¥ó̤ÄêµÁ¥¨¥é¡¼ */
165 define('E_APP_UNDEFINED_ACTION', 32);
166
167 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥¢¥¯¥·¥ç¥ó¥¯¥é¥¹Ì¤ÄêµÁ¥¨¥é¡¼ */
168 define('E_APP_UNDEFINED_ACTIONCLASS', 33);
169
170 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥ª¥Ö¥¸¥§¥¯¥ÈID½ÅÊ£¥¨¥é¡¼ */
171 define('E_APP_DUPENT', 34);
172
173 /** ¥¨¥é¡¼¥³¡¼¥É: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥á¥½¥Ã¥É¤¬Â¸ºß¤·¤Ê¤¤ */
174 define('E_APP_NOMETHOD', 35);
175
176 /** ¥¨¥é¡¼¥³¡¼¥É: ¥í¥Ã¥¯¥¨¥é¡¼ */
177 define('E_APP_LOCK', 36);
178
179 /** ¥¨¥é¡¼¥³¡¼¥É: CSVʬ³ä¥¨¥é¡¼(¹Ô·Ñ³) */
180 define('E_UTIL_CSV_CONTINUE', 64);
181
182 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍ·¿¥¨¥é¡¼(¥¹¥«¥é¡¼°ú¿ô¤ËÇÛÎó»ØÄê) */
183 define('E_FORM_WRONGTYPE_SCALAR', 128);
184
185 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍ·¿¥¨¥é¡¼(ÇÛÎó°ú¿ô¤Ë¥¹¥«¥é¡¼»ØÄê) */
186 define('E_FORM_WRONGTYPE_ARRAY', 129);
187
188 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍ·¿¥¨¥é¡¼(À°¿ô·¿) */
189 define('E_FORM_WRONGTYPE_INT', 130);
190
191 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍ·¿¥¨¥é¡¼(ÉâÆ°¾®¿ôÅÀ¿ô·¿) */
192 define('E_FORM_WRONGTYPE_FLOAT', 131);
193
194 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍ·¿¥¨¥é¡¼(ÆüÉÕ·¿) */
195 define('E_FORM_WRONGTYPE_DATETIME', 132);
196
197 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍ·¿¥¨¥é¡¼(BOOL·¿) */
198 define('E_FORM_WRONGTYPE_BOOLEAN', 133);
199
200 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍ·¿¥¨¥é¡¼(FILE·¿) */
201 define('E_FORM_WRONGTYPE_FILE', 134);
202
203 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍɬ¿Ü¥¨¥é¡¼ */
204 define('E_FORM_REQUIRED', 135);
205
206 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺǾ®ÃÍ¥¨¥é¡¼(À°¿ô·¿) */
207 define('E_FORM_MIN_INT', 136);
208
209 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺǾ®ÃÍ¥¨¥é¡¼(ÉâÆ°¾®¿ôÅÀ¿ô·¿) */
210 define('E_FORM_MIN_FLOAT', 137);
211
212 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺǾ®ÃÍ¥¨¥é¡¼(ʸ»úÎó·¿) */
213 define('E_FORM_MIN_STRING', 138);
214
215 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺǾ®ÃÍ¥¨¥é¡¼(ÆüÉÕ·¿) */
216 define('E_FORM_MIN_DATETIME', 139);
217
218 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺǾ®ÃÍ¥¨¥é¡¼(¥Õ¥¡¥¤¥ë·¿) */
219 define('E_FORM_MIN_FILE', 140);
220
221 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺÇÂçÃÍ¥¨¥é¡¼(À°¿ô·¿) */
222 define('E_FORM_MAX_INT', 141);
223
224 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺÇÂçÃÍ¥¨¥é¡¼(ÉâÆ°¾®¿ôÅÀ¿ô·¿) */
225 define('E_FORM_MAX_FLOAT', 142);
226
227 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺÇÂçÃÍ¥¨¥é¡¼(ʸ»úÎó·¿) */
228 define('E_FORM_MAX_STRING', 143);
229
230 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺÇÂçÃÍ¥¨¥é¡¼(ÆüÉÕ·¿) */
231 define('E_FORM_MAX_DATETIME', 144);
232
233 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃͺÇÂçÃÍ¥¨¥é¡¼(¥Õ¥¡¥¤¥ë·¿) */
234 define('E_FORM_MAX_FILE', 145);
235
236 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍʸ»ú¼ï(Àµµ¬É½¸½)¥¨¥é¡¼ */
237 define('E_FORM_REGEXP', 146);
238
239 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍ¿ôÃÍ(¥«¥¹¥¿¥à¥Á¥§¥Ã¥¯)¥¨¥é¡¼ */
240 define('E_FORM_INVALIDVALUE', 147);
241
242 /**     ¥¨¥é¡¼¥³¡¼¥É: ¥Õ¥©¡¼¥àÃÍʸ»ú¼ï(¥«¥¹¥¿¥à¥Á¥§¥Ã¥¯)¥¨¥é¡¼ */
243 define('E_FORM_INVALIDCHAR', 148);
244
245 /**     ¥¨¥é¡¼¥³¡¼¥É: ³ÎǧÍÑ¥¨¥ó¥È¥êÆþÎÏ¥¨¥é¡¼ */
246 define('E_FORM_CONFIRM', 149);
247
248
249 if (defined('E_STRICT') == false) {
250         /**     PHP 5¤È¤Î¸ß´¹ÊÝ»ýÄêµÁ */
251         define('E_STRICT', 0);
252 }
253
254 /** Ethna¥°¥í¡¼¥Ð¥ëÊÑ¿ô: ¥¨¥é¡¼¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô */
255 $GLOBALS['_Ethna_error_callback_list'] = array();
256
257 /** Ethna¥°¥í¡¼¥Ð¥ëÊÑ¿ô: ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ */
258 $GLOBALS['_Ethna_error_message_list'] = array();
259
260 /** Ethna¥°¥í¡¼¥Ð¥ëÊÑ¿ô: ¥¯¥é¥¤¥¢¥ó¥È¼ïÊÌ */
261 $GLOBALS['_Ethna_client_type'] = null; 
262
263
264 // {{{ Ethna
265 /**
266  *      Ethna¥Õ¥ì¡¼¥à¥ï¡¼¥¯¥¯¥é¥¹
267  *
268  *      @author         Masaki Fujimoto <fujimoto@php.net>
269  *      @access         public
270  *      @package        Ethna
271  */
272 class Ethna extends PEAR
273 {
274         /**#@+
275          *      @access private
276          */
277
278         /**#@-*/
279
280         /**
281          *      Ethna_Error¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤¹¤ë(¥¨¥é¡¼¥ì¥Ù¥ë:E_USER_ERROR)
282          *
283          *      @access public
284          *      @param  string  $message                        ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸
285          *      @param  int             $code                           ¥¨¥é¡¼¥³¡¼¥É
286          *      @static
287          */
288         function &raiseError($message, $code)
289         {
290                 if (func_num_args() > 2) {
291                         $userinfo = array_slice(func_get_args(), 2);
292                         $error =& new Ethna_Error($message, $code, PEAR_ERROR_RETURN, E_USER_ERROR, $userinfo);
293                 } else {
294                         $error =& new Ethna_Error($message, $code, PEAR_ERROR_RETURN, E_USER_ERROR);
295                 }
296
297                 return $error;
298         }
299
300         /**
301          *      Ethna_Error¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤¹¤ë(¥¨¥é¡¼¥ì¥Ù¥ë:E_USER_WARNING)
302          *
303          *      @access public
304          *      @param  string  $message                        ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸
305          *      @param  int             $code                           ¥¨¥é¡¼¥³¡¼¥É
306          *      @static
307          */
308         function &raiseWarning($message, $code)
309         {
310                 if (func_num_args() > 2) {
311                         $userinfo = array_slice(func_get_args(), 2);
312                         $error =& new Ethna_Error($message, $code, PEAR_ERROR_RETURN, E_USER_WARNING, $userinfo);
313                 } else {
314                         $error =& new Ethna_Error($message, $code, PEAR_ERROR_RETURN, E_USER_WARNING);
315                 }
316
317                 return $error;
318         }
319
320         /**
321          *      Ethna_Error¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤¹¤ë(¥¨¥é¡¼¥ì¥Ù¥ë:E_USER_NOTICE)
322          *
323          *      @access public
324          *      @param  string  $message                        ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸
325          *      @param  int             $code                           ¥¨¥é¡¼¥³¡¼¥É
326          *      @static
327          */
328         function &raiseNotice($message, $code)
329         {
330                 if (func_num_args() > 2) {
331                         $userinfo = array_slice(func_get_args(), 2);
332                         $error =& new Ethna_Error($message, $code, PEAR_ERROR_RETURN, E_USER_NOTICE, $userinfo);
333                 } else {
334                         $error =& new Ethna_Error($message, $code, PEAR_ERROR_RETURN, E_USER_NOTICE);
335                 }
336
337                 return $error;
338         }
339
340         /**
341          *      ¥¨¥é¡¼È¯À¸»þ¤Î(¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤È¤·¤Æ¤Î)¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤òÀßÄꤹ¤ë
342          *
343          *      @access public
344          *      @param  mixed   string:¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô̾ array:¥³¡¼¥ë¥Ð¥Ã¥¯¥¯¥é¥¹(̾|¥ª¥Ö¥¸¥§¥¯¥È)+¥á¥½¥Ã¥É̾
345          *      @static
346          */
347         function setErrorCallback($callback)
348         {
349                 $GLOBALS['_Ethna_error_callback_list'][] = $callback;
350         }
351
352         /**
353          *      ¥¨¥é¡¼È¯À¸»þ¤Î½èÍý¤ò¹Ô¤¦(¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô/¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹)
354          *      
355          *      @access public
356          *      @param  object  Ethna_Error             Ethna_Error¥ª¥Ö¥¸¥§¥¯¥È
357          *      @static
358          */
359         function handleError(&$error)
360         {
361                 for ($i = 0; $i < count($GLOBALS['_Ethna_error_callback_list']); $i++) {
362                         $callback =& $GLOBALS['_Ethna_error_callback_list'][$i];
363                         if (is_array($callback) == false) {
364                                 call_user_func($callback, $error);
365                         } else if (is_object($callback[0])) {
366                                 $object =& $callback[0];
367                                 $method = $callback[1];
368
369                                 // perform some more checks?
370                                 $object->$method($error);
371                         } else {
372                                 call_user_func($callback, $error);
373                         }
374                 }
375         }
376 }
377 // }}}
378 ?>