[ Index ]
 

Code source de eZ Publish 3.9.0

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/lib/ezsoap/classes/ -> ezsoapcodec.php (source)

   1  <?php
   2  //
   3  // Definition of eZSOAPCodec class
   4  //
   5  // Created on: <03-Jan-2006 10:12:37 hovik>
   6  //
   7  // SOFTWARE NAME: eZ publish
   8  // SOFTWARE RELEASE: 3.9.0
   9  // BUILD VERSION: 17785
  10  // COPYRIGHT NOTICE: Copyright (C) 1999-2006 eZ systems AS
  11  // SOFTWARE LICENSE: GNU General Public License v2.0
  12  // NOTICE: >
  13  //   This program is free software; you can redistribute it and/or
  14  //   modify it under the terms of version 2.0  of the GNU General
  15  //   Public License as published by the Free Software Foundation.
  16  //
  17  //   This program is distributed in the hope that it will be useful,
  18  //   but WITHOUT ANY WARRANTY; without even the implied warranty of
  19  //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20  //   GNU General Public License for more details.
  21  //
  22  //   You should have received a copy of version 2.0 of the GNU General
  23  //   Public License along with this program; if not, write to the Free
  24  //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  25  //   MA 02110-1301, USA.
  26  //
  27  //
  28  
  29  /*! \file ezsoapcodec.php
  30  */
  31  
  32  /*!
  33    \class eZSOAPCodec ezsoapcodec.php
  34    \brief The class eZSOAPCodec does
  35  
  36  */
  37  
  38  class eZSOAPCodec
  39  {
  40      /*!
  41       Constructor
  42      */
  43      function eZSOAPCodec()
  44      {
  45      }
  46  
  47      /*!
  48        \static
  49        Encodes a PHP variable into a SOAP datatype.
  50      */
  51      function encodeValue( $name, $value )
  52      {
  53          switch ( gettype( $value ) )
  54          {
  55              case "string" :
  56              {
  57                  $node = eZDOMDocument::createElementNode( $name );
  58                  $attr = eZDOMDocument::createAttributeNode( "type", EZ_SOAP_XSD_PREFIX . ":string" );
  59                  $attr->setPrefix( EZ_SOAP_XSI_PREFIX );
  60                  $node->appendAttribute( $attr );
  61                  $node->appendChild( eZDOMDocument::createTextNode( $value ) );
  62  
  63                  return $node;
  64              } break;
  65  
  66              case "boolean" :
  67              {
  68                  $node = eZDOMDocument::createElementNode( $name );
  69                  $attr = eZDOMDocument::createAttributeNode( "type", EZ_SOAP_XSD_PREFIX . ":boolean" );
  70                  $attr->setPrefix( EZ_SOAP_XSI_PREFIX );
  71                  $node->appendAttribute( $attr );
  72                  if ( $value === true )
  73                      $node->appendChild( eZDOMDocument::createTextNode( "true" ) );
  74                  else
  75                      $node->appendChild( eZDOMDocument::createTextNode( "false" ) );
  76  
  77                  return $node;
  78              } break;
  79  
  80              case "integer" :
  81              {
  82                  $node = eZDOMDocument::createElementNode( $name );
  83                  $attr = eZDOMDocument::createAttributeNode( "type", EZ_SOAP_XSD_PREFIX . ":int" );
  84                  $attr->setPrefix( EZ_SOAP_XSI_PREFIX );
  85                  $node->appendAttribute( $attr );
  86                  $node->appendChild( eZDOMDocument::createTextNode( $value ) );
  87  
  88                  return $node;
  89              } break;
  90  
  91              case "double" :
  92              {
  93                  $node = eZDOMDocument::createElementNode( $name );
  94                  $attr = eZDOMDocument::createAttributeNode( "type", EZ_SOAP_XSD_PREFIX . ":float" );
  95                  $attr->setPrefix( EZ_SOAP_XSI_PREFIX );
  96                  $node->appendAttribute( $attr );
  97                  $node->appendChild( eZDOMDocument::createTextNode( $value ) );
  98  
  99                  return $node;
 100              } break;
 101  
 102              case "array" :
 103              {
 104                  $arrayCount = count( $value );
 105  
 106                  $isStruct = false;
 107                  // Check for struct
 108                  $i = 0;
 109                  foreach( $value as $key => $val )
 110                  {
 111                      if ( $i !== $key )
 112                      {
 113                          $isStruct = true;
 114                          break;
 115                      }
 116                      $i++;
 117                  }
 118  
 119                  if ( $isStruct == true )
 120                  {
 121                      $node = eZDOMDocument::createElementNode( $name );
 122                      // Type def
 123                      $typeAttr = eZDOMDocument::createAttributeNode( "type", EZ_SOAP_ENC_PREFIX . ":SOAPStruct" );
 124                      $typeAttr->setPrefix( EZ_SOAP_XSI_PREFIX );
 125                      $node->appendAttribute( $typeAttr );
 126  
 127                      foreach( $value as $key => $val )
 128                      {
 129                          $subNode = eZSOAPCodec::encodeValue( (string)$key, $val );
 130                          $node->appendChild( $subNode );
 131                          unset( $subNode );
 132                      }
 133                      return $node;
 134                  }
 135                  else
 136                  {
 137                      $node = eZDOMDocument::createElementNode( $name );
 138                      // Type def
 139                      $typeAttr = eZDOMDocument::createAttributeNode( "type", EZ_SOAP_ENC_PREFIX . ":Array" );
 140                      $typeAttr->setPrefix( EZ_SOAP_XSI_PREFIX );
 141                      $node->appendAttribute( $typeAttr );
 142  
 143                      // Array type def
 144                      $arrayTypeAttr = eZDOMDocument::createAttributeNode( "arrayType", EZ_SOAP_XSD_PREFIX . ":string[$arrayCount]" );
 145                      $arrayTypeAttr->setPrefix( EZ_SOAP_ENC_PREFIX );
 146                      $node->appendAttribute( $arrayTypeAttr );
 147  
 148                      foreach ( $value as $arrayItem )
 149                      {
 150                          $subNode = eZSOAPCodec::encodeValue( "item", $arrayItem );
 151                          $node->appendChild( $subNode );
 152                          unset( $subNode );
 153                      }
 154  
 155                      return  $node;
 156                  }
 157              } break;
 158          }
 159  
 160          return false;
 161      }
 162  }
 163  
 164  ?>


Généré le : Sat Feb 24 10:30:04 2007 par Balluche grâce à PHPXref 0.7