Overview

Namespaces

  • webfilesframework
    • codegeneration
      • general
      • php
    • core
      • datastore
        • functions
          • filter
          • sorting
        • types
          • database
            • resultHandler
          • directory
          • googlecalendar
          • mail
          • remote
      • datasystem
        • database
        • file
          • format
            • media
              • image
                • handler
          • system
            • dropbox
      • datatypes
        • time
      • time
    • io
      • form
        • formItem
        • validation
        • webfile
      • request

Classes

  • webfilesframework\codegeneration\general\MAbstractClass
  • webfilesframework\codegeneration\general\MAbstractClassAttribute
  • webfilesframework\codegeneration\general\MAbstractClassMethod
  • webfilesframework\codegeneration\general\MAbstractClassMethodParameter
  • webfilesframework\codegeneration\general\MAbstractCodeItem
  • webfilesframework\codegeneration\MCodeItemFactory
  • webfilesframework\codegeneration\MProgrammingLanguage
  • webfilesframework\codegeneration\MWebfileClassGeneration
  • webfilesframework\codegeneration\php\MPhpClassAttribute
  • webfilesframework\codegeneration\php\MPhpClassMethod
  • webfilesframework\codegeneration\php\MPhpClassMethodParameter
  • webfilesframework\codegeneration\php\MPhpWebfileClass
  • webfilesframework\core\datastore\functions\filter\MSubstringFiltering
  • webfilesframework\core\datastore\functions\sorting\MAscendingSorting
  • webfilesframework\core\datastore\functions\sorting\MDescendingSorting
  • webfilesframework\core\datastore\MAbstractCachableDatastore
  • webfilesframework\core\datastore\MAbstractDatastore
  • webfilesframework\core\datastore\MCombinedDatastore
  • webfilesframework\core\datastore\MDatastoreFactory
  • webfilesframework\core\datastore\MDatastoreTransfer
  • webfilesframework\core\datastore\types\database\MDatabaseDatastore
  • webfilesframework\core\datastore\types\database\MSampleWebfile
  • webfilesframework\core\datastore\types\database\resultHandler\MMysqlResultHandler
  • webfilesframework\core\datastore\types\directory\MDirectoryDatastore
  • webfilesframework\core\datastore\types\directory\MDirectoryDatastoreMetainformation
  • webfilesframework\core\datastore\types\directory\MDirectoryDatastoreWebfile
  • webfilesframework\core\datastore\types\googlecalendar\MEvent
  • webfilesframework\core\datastore\types\googlecalendar\MGoogleCalendarDatastore
  • webfilesframework\core\datastore\types\mail\MImapDatastore
  • webfilesframework\core\datastore\types\mail\MMail
  • webfilesframework\core\datastore\types\mail\MMailAccount
  • webfilesframework\core\datastore\types\remote\MRemoteDatastore
  • webfilesframework\core\datastore\types\remote\MRemoteDatastoreEndpoint
  • webfilesframework\core\datasystem\database\MDatabaseConnection
  • webfilesframework\core\datasystem\database\MDatabaseDatatypes
  • webfilesframework\core\datasystem\database\MDatabaseTable
  • webfilesframework\core\datasystem\database\MDatabaseTableColumn
  • webfilesframework\core\datasystem\file\format\media\image\handler\MAbstractImageLibraryHandler
  • webfilesframework\core\datasystem\file\format\media\image\handler\MGdHandler
  • webfilesframework\core\datasystem\file\format\media\image\handler\MImageMagickHandler
  • webfilesframework\core\datasystem\file\format\media\image\MImage
  • webfilesframework\core\datasystem\file\format\media\image\MQrCodeImage
  • webfilesframework\core\datasystem\file\format\media\MYoutubeVideo
  • webfilesframework\core\datasystem\file\format\MWebfile
  • webfilesframework\core\datasystem\file\format\MWebfileStream
  • webfilesframework\core\datasystem\file\system\dropbox\MDropboxAccount
  • webfilesframework\core\datasystem\file\system\dropbox\MDropboxDirectory
  • webfilesframework\core\datasystem\file\system\dropbox\MDropboxFile
  • webfilesframework\core\datasystem\file\system\MDirectory
  • webfilesframework\core\datasystem\file\system\MFile
  • webfilesframework\core\datatypes\time\MTimestampHelper
  • webfilesframework\core\time\MTimespan
  • webfilesframework\core\time\MWeekday
  • webfilesframework\io\form\formItem\MAbstractFormItem
  • webfilesframework\io\form\formItem\MCheckboxesFormItem
  • webfilesframework\io\form\formItem\MDateFormItem
  • webfilesframework\io\form\formItem\MDateTimeFormItem
  • webfilesframework\io\form\formItem\MDropdownMenueFormItem
  • webfilesframework\io\form\formItem\MHiddenFormItem
  • webfilesframework\io\form\formItem\MHtmlTextareaFormItem
  • webfilesframework\io\form\formItem\MPasswordFormItem
  • webfilesframework\io\form\formItem\MTextareaFormItem
  • webfilesframework\io\form\formItem\MTextfieldFormItem
  • webfilesframework\io\form\formItem\MTimeFormItem
  • webfilesframework\io\form\formItem\MWeekdayFormItem
  • webfilesframework\io\form\MForm
  • webfilesframework\io\form\MFormItemFactory
  • webfilesframework\io\form\validation\MValidator
  • webfilesframework\io\form\webfile\MWebfileFormHandler
  • webfilesframework\io\form\webfile\MWebfileFormVisualizer
  • webfilesframework\io\request\MAbstractHttpRequest
  • webfilesframework\io\request\MGetHttpRequest
  • webfilesframework\io\request\MPostHttpRequest
  • webfilesframework\io\request\MUrl

Interfaces

  • webfilesframework\core\datastore\functions\MIDatastoreFunction
  • webfilesframework\core\datastore\MISingleDatasourceDatastore
  • webfilesframework\core\datastore\types\database\resultHandler\MIResultHandler
  • webfilesframework\core\datastore\types\googlecalendar\MISecretStore

Exceptions

  • webfilesframework\core\datastore\MDatastoreException
  • webfilesframework\core\datastore\types\database\MDatabaseDatastoreException
  • webfilesframework\MWebfilesFrameworkException
  • Overview
  • Namespace
  • Class
  1: <?php
  2: 
  3: namespace webfilesframework\core\datasystem\file\format;
  4: 
  5: use webfilesframework\core\datasystem\file\format\MWebfile;
  6: use webfilesframework\MWebfilesFrameworkException;
  7: 
  8: /**
  9:  * Defines the representation of a list of webfiles.
 10:  *
 11:  * @author     Sebastian Monzel < mail@sebastianmonzel.de >
 12:  * @since      0.1.7
 13:  */
 14: class MWebfileStream
 15: {
 16: 
 17:     private $webfiles;
 18: 
 19:     /**
 20:      * MWebfileStream constructor.
 21:      *
 22:      * @param $input
 23:      *
 24:      * @throws MWebfilesFrameworkException
 25:      * @throws \ReflectionException
 26:      */
 27:     public function __construct($input)
 28:     {
 29: 
 30:         if (is_array($input)) {
 31:             $this->validateWebfilesArray($input);
 32:             $this->webfiles = $input;
 33:         } else if (is_string($input)) {
 34:             $this->webfiles = $this->unmarshall($input);
 35:         } else if ($input instanceof MWebfile) {
 36:             $this->webfiles = array();
 37:             array_push($this->webfiles, $input);
 38:         } else if (isset($input)) {
 39:             throw new MWebfilesFrameworkException("Cannot handle input for creating webfile stream. input: " . $input);
 40:         }
 41:     }
 42: 
 43: 
 44:     /**
 45:      * @param $webfiles
 46:      *
 47:      * @throws MWebfilesFrameworkException
 48:      */
 49:     private function validateWebfilesArray($webfiles) {
 50: 
 51:         foreach ($webfiles as $webfile) {
 52:             if ( ! $webfile instanceof MWebfile) {
 53:                 throw new MWebfilesFrameworkException("Not all elements in array are from type MWebfile.");
 54:             }
 55:         }
 56:         
 57:     }
 58: 
 59:     private function marshall()
 60:     {
 61: 
 62:         $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
 63: 
 64:         $xml .= "<webfilestream><webfiles>";
 65:         foreach ($this->webfiles as $webfile) {
 66:             $xml .= $webfile->marshall(false);
 67:         }
 68:         $xml .= "</webfiles></webfilestream>";
 69:         return $xml;
 70:     }
 71: 
 72:     /**
 73:      * @param $input
 74:      *
 75:      * @return array
 76:      * @throws MWebfilesFrameworkException
 77:      * @throws \ReflectionException
 78:      */
 79:     private function unmarshall($input)
 80:     {
 81: 
 82:         $webfilesResultArray = array();
 83: 
 84:         $root = $this->parseAndValidateWebfilesStreamXml($input);
 85:         $webfilesChildren = $root->webfiles->children();
 86: 
 87:         /** @var \SimpleXMLElement $webfileChild */
 88:         foreach ($webfilesChildren as $webfileChild) {
 89:             array_push(
 90:                 $webfilesResultArray, MWebfile::staticUnmarshall($webfileChild->asXML()));
 91:         }
 92: 
 93:         return $webfilesResultArray;
 94:     }
 95: 
 96:     /**
 97:      * @param string $input
 98:      * @return \SimpleXMLElement
 99:      * @throws MWebfilesFrameworkException
100:      */
101:     private function parseAndValidateWebfilesStreamXml($input) {
102: 
103:         $root = @simplexml_load_string($input);
104: 
105:         if ( $root == null ) {
106:             throw new MWebfilesFrameworkException(
107:                 "Error on reading xml of webfile stream: No root element given. Input: " . $input);
108:         }
109: 
110:         if ( $root === false ) {
111:             throw new MWebfilesFrameworkException(
112:                 "Error on reading xml of webfile stream: Input: " . $input);
113:         }
114: 
115:         $rootChildren = $root->children();
116: 
117:         if ( count($rootChildren) != 1 ) {
118:             throw new MWebfilesFrameworkException("Root element has not exactly one child. Input: " . $input);
119:         }
120: 
121:         /** @var \SimpleXMLElement $rootChild */
122:         foreach ($rootChildren as $rootChild) {
123:             if ( $rootChild->getName() != "webfiles" ) {
124:                 throw new MWebfilesFrameworkException("No webfiles child exists on root element. Input: " . $input);
125:             }
126:         }
127: 
128:         return $root;
129:     }
130: 
131: 
132:     public function getXML()
133:     {
134:         return $this->marshall();
135:     }
136: 
137:     public function getWebfiles()
138:     {
139:         return $this->webfiles;
140:     }
141: }
142: 
API documentation generated by ApiGen