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\datastore;
  4: 
  5: 
  6: use webfilesframework\core\datasystem\file\format\MWebfile;
  7: use webfilesframework\core\datasystem\file\format\MWebfileStream;
  8: 
  9: /**
 10:  * Combines different datastores in one datastore together.
 11:  *
 12:  * @author     Sebastian Monzel < mail@sebastianmonzel.de >
 13:  * @since      0.1.7
 14:  */
 15: class MCombinedDatastore extends MAbstractDatastore
 16: {
 17: 
 18:     private $registeredDatastores = array();
 19: 
 20:     public function tryConnect()
 21:     {
 22:         return true;
 23:     }
 24: 
 25:     public function isReadOnly()
 26:     {
 27:         return true;
 28:     }
 29: 
 30:     public function getNextWebfileForTimestamp($timestamp)
 31:     {
 32:         // nothing todo
 33:     }
 34: 
 35:     public function registerDatastore(MAbstractDatastore $datastore)
 36:     {
 37:         array_push($this->registeredDatastores, $datastore);
 38:     }
 39: 
 40:     /**
 41:      *
 42:      * @param int|number $days
 43:      * @return array webfiles from the aggregated datastores
 44:      */
 45:     private function aggregateDatastores($days = 500)
 46:     {
 47: 
 48:         $nextWebfiles = array();
 49:         $aggregatedWebfiles = array();
 50: 
 51:         // SUBTRACT GIVEN DAYS FROM NOW
 52:         $timeBeforeGivenDays = time() - ($days * 24 * 3600);
 53: 
 54:         // FILL ARRAY "nextWebfiles" WITH INITIAL VALUES
 55:         foreach ($this->registeredDatastores as $datastore) {
 56: 
 57:             $nextWebfile = $datastore->getNextWebfileForTimestamp($timeBeforeGivenDays);
 58:             if (isset($nextWebfile)) {
 59: 
 60:                 $nextWebfileTime = $nextWebfile->getTime();
 61: 
 62:                 $nextWebfiles[$nextWebfileTime]['datastore'] = $datastore;
 63:                 $nextWebfiles[$nextWebfileTime]['webfile'] = $nextWebfile;
 64:             }
 65:         }
 66: 
 67:         // SELECT FIRST WEBFILE TO BE ADDED TO THE AGGREGATED VALUES
 68:         $nextWebfile = $this->selectNextWebfile($nextWebfiles);
 69: 
 70:         // SELECT THE OTHER WEBFILES
 71:         while (isset($nextWebfile)) {
 72: 
 73:             array_push($aggregatedWebfiles, $nextWebfile);
 74:             $nextWebfile = $this->selectNextWebfile($nextWebfiles);
 75:         }
 76: 
 77:         return $aggregatedWebfiles;
 78:     }
 79: 
 80:     /**
 81:      *
 82:      * @param array $nextWebfiles
 83:      * @return MWebfile
 84:      */
 85:     private function selectNextWebfile(&$nextWebfiles)
 86:     {
 87: 
 88:         $oldestTimestamp = time();
 89:         $nextWebfile = null;
 90:         $datastore = null;
 91: 
 92:         foreach ($nextWebfiles as $key => $value) {
 93:             if ($key < $oldestTimestamp) {
 94:                 $oldestTimestamp = $key;
 95:                 $nextWebfile = $nextWebfiles[$key]['webfile'];
 96:                 $datastore = $nextWebfiles[$key]['datastore'];
 97:             }
 98:         }
 99: 
100:         if (isset($datastore)) {
101:             $nextWebfileTemp = $datastore->getNextWebfileForTimestamp($oldestTimestamp);
102:             if (isset($nextWebfileTemp)) {
103: 
104:                 $nextWebfileTempTime = $nextWebfileTemp->getTime();
105: 
106:                 $nextWebfiles[$nextWebfileTempTime]['webfile'] = $nextWebfileTemp;
107:                 $nextWebfiles[$nextWebfileTempTime]['datastore'] = $datastore;
108:             }
109: 
110:             unset($nextWebfiles[$oldestTimestamp]);
111:         }
112: 
113:         return $nextWebfile;
114:     }
115: 
116:     /**
117:      * @see MAbstractDatastore:getWebfilestream()
118:      */
119:     public function getWebfilesAsStream()
120:     {
121: 
122:         $webfiles = $this->getWebfilesAsArray();
123:         return new MWebfileStream($webfiles);
124:     }
125: 
126:     public function getLatestWebfiles($count = 5)
127:     {
128: 
129:     }
130: 
131:     public function searchByTemplate(MWebfile $template)
132:     {
133: 
134:     }
135: 
136: 
137:     public function getDatasetsFromDatastore()
138:     {
139: 
140:     }
141: 
142:     public function getLatestDatasets($count = 5, $reverse = true)
143:     {
144: 
145:     }
146: 
147:     public function getWebfilesAsArray()
148:     {
149:         if (count($this->registeredDatastores) == 0) {
150:             //throw new Exception
151:         }
152: 
153:         $aggregatedWebfiles = $this->aggregateDatastores();
154:         return $aggregatedWebfiles;
155:     }
156: 
157: }
API documentation generated by ApiGen