source: trunk/ws.php @ 2325

Last change on this file since 2325 was 2325, checked in by rub, 16 years ago

Resolved issue 0000823: Enhance upload functionalities

First commit, others will be follow.
Not hesitate to change my translations.

Add upload configuration tabsheet (move and add configuration)
Change and add define for access level
Can show upload link every time
Can restrict access upload.class.php
Can choice category on upload page
Add upload class not use for the moment
Review quickly and temporary style of upload.tpl

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 8.7 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based picture gallery                                  |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
6// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
7// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
8// +-----------------------------------------------------------------------+
9// | This program is free software; you can redistribute it and/or modify  |
10// | it under the terms of the GNU General Public License as published by  |
11// | the Free Software Foundation                                          |
12// |                                                                       |
13// | This program is distributed in the hope that it will be useful, but   |
14// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
15// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
16// | General Public License for more details.                              |
17// |                                                                       |
18// | You should have received a copy of the GNU General Public License     |
19// | along with this program; if not, write to the Free Software           |
20// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
21// | USA.                                                                  |
22// +-----------------------------------------------------------------------+
23
24define ('PHPWG_ROOT_PATH', './');
25
26include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
27check_status(ACCESS_FREE);
28include_once(PHPWG_ROOT_PATH.'include/ws_core.inc.php');
29
30if ( !$conf['allow_web_services'] )
31{
32  page_forbidden('Web services are disabled');
33}
34
35/**
36 * event handler that registers standard methods with the web service
37 */
38function ws_addDefaultMethods( $arr )
39{
40  include_once(PHPWG_ROOT_PATH.'include/ws_functions.inc.php');
41  global $conf, $user;
42  $service = &$arr[0];
43  $service->addMethod('pwg.getVersion', 'ws_getVersion', null,
44      'retrieves the PWG version');
45
46  $service->addMethod('pwg.categories.getImages', 'ws_categories_getImages',
47      array(
48        'cat_id'=>array('default'=>0, 'flags'=>WS_PARAM_FORCE_ARRAY),
49        'recursive'=>array('default'=>false),
50        'per_page' => array('default'=>100, 'maxValue'=>$conf['ws_max_images_per_page']),
51        'page' => array('default'=>0),
52        'order' => array('default'=>null),
53        'f_min_rate' => array( 'default'=> null ),
54        'f_max_rate' => array( 'default'=> null ),
55        'f_min_hit' => array( 'default'=> null ),
56        'f_max_hit' => array( 'default'=> null ),
57        'f_min_date_available' => array( 'default'=> null ),
58        'f_max_date_available' => array( 'default'=> null ),
59        'f_min_date_created' => array( 'default'=> null ),
60        'f_max_date_created' => array( 'default'=> null ),
61        'f_min_ratio' => array( 'default'=> null ),
62        'f_max_ratio' => array( 'default'=> null ),
63        'f_with_thumbnail' => array( 'default'=> false ),
64      ),
65      'Returns elements for the corresponding categories.
66<br/><b>cat_id</b> can be empty if <b>recursive</b> is true. Can be sent as an array.
67<br/><b>order</b> comma separated fields for sorting (file,id, average_rate,...)'
68    );
69
70  $service->addMethod('pwg.categories.getList', 'ws_categories_getList',
71      array(
72        'cat_id' => array('default'=>0),
73        'recursive' => array('default'=>false),
74        'public' => array('default'=>false),
75      ),
76      'retrieves a list of categories' );
77
78  $service->addMethod('pwg.images.addComment', 'ws_images_addComment',
79      array(
80        'image_id' => array(),
81        'author' => array( 'default' => is_a_guest()? 'guest':$user['username']),
82        'content' => array(),
83        'key' => array(),
84      ),
85      'add a comment to an image' );
86
87  $service->addMethod('pwg.images.getInfo', 'ws_images_getInfo',
88      array(
89        'image_id' => array(),
90        'comments_page' => array('default'=>0 ),
91        'comments_per_page' => array( 
92              'default' => $conf['nb_comment_page'], 
93              'maxValue' => 2*$conf['nb_comment_page'],
94            ),
95      ),
96      'retrieves information about the given photo' );
97
98  $service->addMethod('pwg.images.search', 'ws_images_search',
99      array(
100        'query'=>array(),
101        'per_page' => array('default'=>100, 'maxValue'=>$conf['ws_max_images_per_page']),
102        'page' => array('default'=>0),
103        'order' => array('default'=>null),
104        'f_min_rate' => array( 'default'=> null ),
105        'f_max_rate' => array( 'default'=> null ),
106        'f_min_hit' => array( 'default'=> null ),
107        'f_max_hit' => array( 'default'=> null ),
108        'f_min_date_available' => array( 'default'=> null ),
109        'f_max_date_available' => array( 'default'=> null ),
110        'f_min_date_created' => array( 'default'=> null ),
111        'f_max_date_created' => array( 'default'=> null ),
112        'f_min_ratio' => array( 'default'=> null ),
113        'f_max_ratio' => array( 'default'=> null ),
114        'f_with_thumbnail' => array( 'default'=> false ),
115      ),
116      'Returns elements for the corresponding query search.'
117    );
118
119  $service->addMethod('pwg.session.getStatus', 'ws_session_getStatus', null, '' );
120  $service->addMethod('pwg.session.login', 'ws_session_login',
121    array('username', 'password'),
122    'POST method only' );
123  $service->addMethod('pwg.session.logout', 'ws_session_logout', null, '');
124
125  $service->addMethod('pwg.tags.getList', 'ws_tags_getList',
126    array('sort_by_counter' => array('default' =>false) ),
127    'retrieves a list of available tags');
128  $service->addMethod('pwg.tags.getImages', 'ws_tags_getImages',
129      array(
130        'tag_id'=>array('default'=>null, 'flags'=>WS_PARAM_FORCE_ARRAY ),
131        'tag_url_name'=>array('default'=>null, 'flags'=>WS_PARAM_FORCE_ARRAY ),
132        'tag_name'=>array('default'=>null, 'flags'=>WS_PARAM_FORCE_ARRAY ),
133        'tag_mode_and'=>array('default'=>false),
134        'per_page' => array('default'=>100, 'maxValue'=>$conf['ws_max_images_per_page']),
135        'page' => array('default'=>0),
136        'order' => array('default'=>null),
137        'f_min_rate' => array( 'default'=> null ),
138        'f_max_rate' => array( 'default'=> null ),
139        'f_min_hit' => array( 'default'=> null ),
140        'f_max_hit' => array( 'default'=> null ),
141        'f_min_date_available' => array( 'default'=> null ),
142        'f_max_date_available' => array( 'default'=> null ),
143        'f_min_date_created' => array( 'default'=> null ),
144        'f_max_date_created' => array( 'default'=> null ),
145        'f_min_ratio' => array( 'default'=> null ),
146        'f_max_ratio' => array( 'default'=> null ),
147        'f_with_thumbnail' => array( 'default'=> false ),
148      ),
149      'Returns elements for the corresponding tags. Note that tag_id, tag_url_name, tag_name an be arrays. Fill at least one of them. '
150    );
151}
152
153add_event_handler('ws_add_methods', 'ws_addDefaultMethods');
154
155
156add_event_handler('ws_invoke_allowed', 'ws_isInvokeAllowed', EVENT_HANDLER_PRIORITY_NEUTRAL, 3);
157
158$calling_partner_id = '';
159$requestFormat = null;
160$responseFormat = null;
161
162if ( isset($_GET['partner']) )
163{
164  $calling_partner_id = $_GET['partner'];
165}
166if ( isset($_GET['format']) )
167{
168  $responseFormat = $_GET['format'];
169}
170
171if ( isset($HTTP_RAW_POST_DATA) )
172{
173  $HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);
174  if ( strncmp($HTTP_RAW_POST_DATA, '<?xml', 5) == 0 )
175  {
176  }
177  else
178  {
179    $requestFormat = "json";
180  }
181}
182else
183{
184  $requestFormat = "rest";
185}
186
187if ( !isset($responseFormat) and isset($requestFormat) )
188{
189  $responseFormat = $requestFormat;
190}
191
192$service = new PwgServer();
193
194if (!is_null($requestFormat))
195{
196  $handler = null;
197  switch ($requestFormat)
198  {
199    case 'rest':
200      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/rest_handler.php');
201      $handler = new PwgRestRequestHandler();
202      break;
203  }
204  $service->setHandler($requestFormat, $handler);
205}
206
207if (!is_null($responseFormat))
208{
209  $encoder = null;
210  switch ($responseFormat)
211  {
212    case 'rest':
213      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/rest_encoder.php');
214      $encoder = new PwgRestEncoder();
215      break;
216    case 'php':
217      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/php_encoder.php');
218      $encoder = new PwgSerialPhpEncoder();
219      break;
220    case 'json':
221      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/json_encoder.php');
222      $encoder = new PwgJsonEncoder();
223      break;
224    case 'xmlrpc':
225      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/xmlrpc_encoder.php');
226      $encoder = new PwgXmlRpcEncoder();
227      break;
228  }
229  $service->setEncoder($responseFormat, $encoder);
230}
231
232set_make_full_url();
233$service->run();
234
235?>
Note: See TracBrowser for help on using the repository browser.