Este es el codigo integro del webservice Picture. Este codigo no es muy genereico, de hecho esta bastante casado al modelo de galerie. Pero para cualquier cosa, contactenme.







require_once("nusoap/nusoap.php");

$SETTINGS = array(

"patern" => "s.+.jpg",

"base_dir" => "../fotos/albums/",

"url_start_dir" => "/fotos/albums/",

//a partir de base_dir deberan estar todos los folders de galerias

);



$soap_action = "http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"];



//generamos el ws

$s = new soap_server();

$s->debug_flag = false;

$s->configureWSDL("Picture","urn:b3co");

$s->wsdl->schemaTargetNamespace = "urn:b3co";



$s->wsdl->addComplexType(

'PictureData',

'complexType',

'struct',

'all',

'',

array( 'galerie_name' => array('name' => 'galerie_name', 'type' => 'xsd:string'),

'galerie_url' => array('name' => 'galerie_url', 'type' => 'xsd:string'),

'picture_page' => array('name' => 'picture_page', 'type' => 'xsd:string'),

'picture_url' => array('name' => 'picture_url', 'type' => 'xsd:string'))

);



$s->register('randomPicture',array('nada'=>'xsd:string'),array('return'=>'PictureData'),"urn:b3co",$soap_action);





function randomPicture($params){

global $SETTINGS;

$fotos = array();

if(!isset($SETTINGS["pattern"])){

$SETTINGS["pattern"] = "";

}

$d = dir($SETTINGS["base_dir"]);

while($d1 = $d->read()){

if($d1 != "." && $d1 != ".." && is_dir($SETTINGS["base_dir"].$d1)){

$di = dir($SETTINGS["base_dir"].$d1);

while($f = $di->read()){

if(ereg($SETTINGS["patern"],$f)){

ereg("([0-9]{1,3})",$f,$regs);

$num = $regs[1];

$fotos[count($fotos)] = array(

"galerie_name" => $d1,

"galerie_url" => "http://".$_SERVER["SERVER_NAME"].$SETTINGS["url_start_dir"].$d1,

"picture_page" => "http://".$_SERVER["SERVER_NAME"].$SETTINGS["url_start_dir"].$d1."/page_".$num.".html",

"picture_url" => "http://".$_SERVER["SERVER_NAME"].$SETTINGS["url_start_dir"].$d1."/".$f,

);

}

}

}

}

$rand = rand(0,count($fotos)-1);

return $fotos[$rand];

// return array(count($fotos),1,1);

}



$s->service($HTTP_RAW_POST_DATA);