. */ if(basename($_SERVER['SCRIPT_FILENAME'])==basename(__FILE__)) exit; PhpWsdl::RegisterHook('InterpretKeywordpw_elementHook','internal','PhpWsdlElement::InterpretElement'); /** * An element of a complex type * * @author Andreas Zimmermann, wan24.de */ class PhpWsdlElement extends PhpWsdlParam{ /** * Can the value be NULL? * * @var boolean */ public $NillAble=true; /** * Minimum number of elements * * @var int */ public $MinOccurs=1; /** * Maximum number of elements * * @var int|string */ public $MaxOccurs=1; /** * Constructor * * @param string $name The name * @param string $type The type name * @param array $settings Optional the settings hash array (default: NULL) */ public function PhpWsdlElement($name,$type,$settings=null) { self::__construct($name, $type, $settings); } public function __construct($name,$type,$settings=null){ PhpWsdl::Debug('New complex type element '.$name); parent::PhpWsdlParam($name,$type,$settings); $this->NillAble=!in_array($type,PhpWsdl::$NonNillable); if(!is_null($settings)){ if(isset($settings['nillable'])) $this->NillAble=$settings['nillable']=='1'||$settings['nillable']=='true'; if(isset($settings['minoccurs'])) $this->MinOccurs=$settings['minoccurs']; if(isset($settings['maxoccurs'])) $this->MaxOccurs=$settings['maxoccurs']; } } /** * Create the WSDL * * @param PhpWsdl $pw The PhpWsdl object * @return string The WSDL */ public function CreateElement($pw){ PhpWsdl::Debug('Create WSDL definition for element '.$this->Name); $res='IncludeDocs&&!$pw->Optimize&&!is_null($this->Docs)){ $res.='>'."\n"; $res.=''."\n"; $res.='Docs.']]>'."\n"; $res.=''."\n"; $res.=''; }else{ $res.=' />'; } return $res; } /** * Create the HTML documentation for a complex type element * * @param array $data */ public function CreateElementHtml($data){ PhpWsdl::Debug('CreateElementHtml for '.$data['element']->Name); $res=&$data['res']; $e=&$data['element']; if(in_array($e->Type,PhpWsdl::$BasicTypes)){ $res[]='
  • '.$e->Type.' '.$e->Name.''; }else{ $res[]='
  • '.$e->Type.' '.$e->Name.''; } $o=sizeof($res)-1; $temp=Array( 'nillable = '.(($e->NillAble)?'true':'false').'', 'minoccurs = '.$e->MinOccurs.'', 'maxoccurs = '.$e->MaxOccurs.'', ); $res[$o].=' ('.implode(', ',$temp).')'; if(!is_null($e->Docs)) $res[$o].='
    '.nl2br(htmlentities($e->Docs)).''; $res[$o].='
  • '; PhpWsdl::CallHook( 'CreateElementHtmlHook', $data ); } /** * Interpret a element keyword * * @param array $data The parser data * @return boolean Response */ public static function InterpretElement($data){ $info=explode(' ',$data['keyword'][1],3); if(sizeof($info)<2) return true; $name=substr($info[1],1); if(substr($name,strlen($name)-1,1)==';') $name=substr($name,0,strlen($name)-1); PhpWsdl::Debug('Interpret element '.$name); if($data['server']->ParseDocs) if(sizeof($info)>2) $data['settings']['docs']=trim($info[2]); $data['elements'][]=new PhpWsdlElement($name,$info[0],$data['settings']); $data['settings']=Array(); return false; } }