| 1 |
<?php |
<?php |
| 2 |
// $Id$ |
// $Id: services.resource-translation.inc,v 1.1.2.1 2009/09/05 13:57:58 marcingy Exp $ |
| 3 |
|
|
| 4 |
function _services_resource_as_services($resource) { |
function _services_resource_as_services($resource) { |
| 5 |
static $controllers = array( |
static $controllers = array( |
| 6 |
'#create' => 'create', |
'create' => 'create', |
| 7 |
'#delete' => 'delete', |
'delete' => 'delete', |
| 8 |
'#retrieve' => 'retrieve', |
'retrieve' => 'retrieve', |
| 9 |
'#update' => 'update', |
'update' => 'update', |
| 10 |
'#index' => 'index', |
'index' => 'index', |
| 11 |
), $subcontrollers = array( |
), $subcontrollers = array( |
| 12 |
'#relationships' => 'related', |
'relationships' => 'related', |
| 13 |
'#targeted actions' => 'targeted_action', |
'targeted actions' => 'targeted_action', |
| 14 |
); |
); |
| 15 |
|
|
| 16 |
$methods = array(); |
$methods = array(); |
| 17 |
$file = isset($resource['#file']) ? $resource['#file'] : array(); |
$file = isset($resource['file']) ? $resource['file'] : array(); |
| 18 |
|
|
| 19 |
foreach ($controllers as $attr => $name) { |
foreach ($controllers as $attr => $name) { |
| 20 |
if (isset($resource[$attr])) { |
if (isset($resource[$attr])) { |
| 21 |
$methods[] = _services_resource_controller_as_service($resource['#name'], $name, $resource[$attr], $file); |
$methods[] = _services_resource_controller_as_service($resource['name'], $name, $resource[$attr], $file); |
| 22 |
} |
} |
| 23 |
} |
} |
| 24 |
|
|
| 25 |
foreach ($subcontrollers as $attr => $name) { |
foreach ($subcontrollers as $attr => $name) { |
| 26 |
if (isset($resource[$attr])) { |
if (isset($resource[$attr])) { |
| 27 |
foreach ($resource[$attr] as $sc_name => $controller) { |
foreach ($resource[$attr] as $sc_name => $controller) { |
| 28 |
$methods[] = _services_resource_controller_as_service($resource['#name'], $name . '_' . $sc_name, $controller, $file); |
$methods[] = _services_resource_controller_as_service($resource['name'], $name . '_' . $sc_name, $controller, $file); |
| 29 |
} |
} |
| 30 |
} |
} |
| 31 |
} |
} |
| 32 |
|
|
| 33 |
if (isset($resource['#actions'])) { |
if (isset($resource['actions'])) { |
| 34 |
foreach ($resource['#actions'] as $sc_name => $controller) { |
foreach ($resource['actions'] as $sc_name => $controller) { |
| 35 |
$methods[] = _services_resource_controller_as_service($resource['#name'], 'action_' . $sc_name, $controller, $file); |
$methods[] = _services_resource_controller_as_service($resource['name'], 'action_' . $sc_name, $controller, $file); |
| 36 |
} |
} |
| 37 |
} |
} |
| 38 |
|
|
| 41 |
|
|
| 42 |
function _services_resource_controller_as_service($resource, $name, $controller, $file) { |
function _services_resource_controller_as_service($resource, $name, $controller, $file) { |
| 43 |
$method = array_merge($controller, array( |
$method = array_merge($controller, array( |
| 44 |
'#method' => $resource . '_resource.' . $name, |
'method' => $resource . '_resource.' . $name, |
| 45 |
)); |
)); |
| 46 |
|
|
| 47 |
if (!empty($file) && !empty($method['#file'])) { |
if (!empty($file) && !empty($method['file'])) { |
| 48 |
$method['#file'] = $file; |
$method['file'] = $file; |
| 49 |
} |
} |
| 50 |
|
|
| 51 |
return $method; |
return $method; |
| 55 |
$resources = array(); |
$resources = array(); |
| 56 |
|
|
| 57 |
foreach ($services as $service) { |
foreach ($services as $service) { |
| 58 |
$signature = preg_split('/\./', $service['#method']); |
$signature = preg_split('/\./', $service['method']); |
| 59 |
|
|
| 60 |
$controller = $service; |
$controller = $service; |
| 61 |
$controller['#args'] = array(); |
$controller['args'] = array(); |
| 62 |
|
|
| 63 |
foreach($service['#args'] as $arg) { |
foreach ($service['args'] as $arg) { |
| 64 |
$arg['#source'] = array( |
$arg['source'] = array( |
| 65 |
'data' => $arg['#name'], |
'data' => $arg['name'], |
| 66 |
); |
); |
| 67 |
$controller['#args'][] = $arg; |
$controller['args'][] = $arg; |
| 68 |
} |
} |
| 69 |
|
|
| 70 |
$resources['service_' . $signature[0]]['#actions'][$signature[1]] = $controller; |
$resources['service_' . $signature[0]]['actions'][$signature[1]] = $controller; |
| 71 |
} |
} |
| 72 |
return $resources; |
return $resources; |
| 73 |
} |
} |