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\system\dropbox;
  4: 
  5: use webfilesframework\core\datasystem\file\system\MDirectory;
  6: 
  7: /**
  8:  * description
  9:  *
 10:  * @author     Sebastian Monzel < mail@sebastianmonzel.de >
 11:  * @since      0.1.7
 12:  */
 13: class MDropboxDirectory extends MDirectory
 14: {
 15: 
 16:     private $dropboxAccount;
 17:     private $dropboxFolderPath;
 18:     private $directoryMetadata;
 19: 
 20:     /**
 21:      * Enter description here ...
 22:      * @param $path
 23:      * @param $dropboxAccount
 24:      */
 25:     public function __construct($path, MDropboxAccount $dropboxAccount)
 26:     {
 27:         parent::__construct($path);
 28:         $this->dropboxFolderPath = $path;
 29:         $this->dropboxAccount = $dropboxAccount;
 30:         $this->directoryMetadata = $this->dropboxAccount->getDropboxApi()->metaData($path);
 31:         //var_dump($this->directoryMetadata);
 32:     }
 33: 
 34:     public function getFiles($initMetadata = true)
 35:     {
 36:         //echo "MDropboxDirectory->getFiles(";
 37:         if ($initMetadata) {
 38:             //echo "true";
 39:         } else {
 40:             //echo "false";
 41:         }
 42:         //echo ")<br />";
 43:         $files = array();
 44:         $metdadataBody = $this->directoryMetadata['body'];
 45: 
 46:         foreach ($metdadataBody->contents as $value) {
 47:             if (!$value->is_dir) {
 48:                 $dropboxFile = new MDropboxFile($this->dropboxAccount, $value->path, $initMetadata);
 49:                 $date = $value->modified;
 50:                 $dropboxFile->setDate($date);
 51:                 array_push($files, $dropboxFile);
 52:             }
 53:         }
 54: 
 55:         return $files;
 56: 
 57:     }
 58: 
 59:     public function getLatestFiles($count)
 60:     {
 61:         //echo ("MDropboxDirectory->getLatestFiles(". $count.")<br />");
 62:         $filesArray = $this->getFiles(false);
 63:         //echo count($filesArray);
 64:         //var_export($filesArray);
 65:         $latestFilesArray = array_slice($filesArray, $count * -1);
 66:         //echo count($latestFilesArray);
 67:         foreach ($latestFilesArray as $latestFile) {
 68:             //$latestFile->initMetadata();
 69:         }
 70:         return $latestFilesArray;
 71:     }
 72: 
 73: 
 74:     public function getFileNames()
 75:     {
 76:         $fileNames = array();
 77:         $metdadataBody = $this->directoryMetadata['body'];
 78: 
 79:         foreach ($metdadataBody->contents as $value) {
 80:             if (!$value->is_dir) {
 81:                 $lastSlash = strrpos($value->path, '/');
 82:                 $path = substr($value->path, $lastSlash + 1);
 83:                 array_push($fileNames, $path);
 84:             }
 85:         }
 86: 
 87:         return $fileNames;
 88:     }
 89: 
 90:     public function getSubdirectories()
 91:     {
 92:         $subdirectories = array();
 93:         $metdadataBody = $this->directoryMetadata['body'];
 94: 
 95:         foreach ($metdadataBody['contents'] as $value) {
 96:             if (!$value->is_dir) {
 97:                 $dropboxDirectory = new MDropboxDirectory($this->dropboxAccount, $value->path);
 98:                 array_push($subdirectories, $dropboxDirectory);
 99:             }
100:         }
101: 
102:         return $subdirectories;
103:     }
104: 
105: 
106:     /**
107:      * Enter description here ...
108:      * @param MDirectory $directory
109:      * @param $recursivly
110:      * @param $folder
111:      */
112:     public function syncToLocalDirectory(MDirectory $directory, $recursivly, $folder)
113:     {
114: 
115:         //var_dump($folder);
116: 
117:         $folder = $folder['body'];
118: 
119:         //var_dump($folder);
120: 
121:         $dropboxFolderPath = new MDirectory($directory->getFolderName() . "/" . $folder->path);
122:         if (!$dropboxFolderPath->exists()) {
123:             $dropboxFolderPath->create();
124:         }
125: 
126:         $files = $directory->getFiles();
127:         $contents = $folder->contents;
128: 
129:         if (sizeof($files) != sizeof($contents) + 2) {
130: 
131:             //DATEIEN MIT DEM GROESSTEN NAMEN ALS ERSTES SYNCHRONISIEREN
132:             $reverse = array_reverse($contents);
133: 
134:             foreach ($reverse as $value) {
135:                 //echo "value:\n";
136:                 //var_dump($value);
137:                 if (!$value->is_dir) {
138:                     //SYNC ACTUAL DIRECTORY FILES
139:                     if ($value->mime_type == 'image/jpeg') {
140: 
141:                         $this->downloadImage($directory, utf8_encode($value->path));
142:                     } else {
143:                         $this->downloadFile($directory, utf8_encode($value->path));
144:                     }
145:                 } else {
146:                     //SYNC SUBDIRECTORIES
147:                     if ($recursivly) {
148:                         if (!file_exists("." . $value->path)) {
149: 
150:                             $dropboxDirectory = new MDropboxDirectory($value->path, $this->dropboxAccount);
151: 
152:                             $this->syncToLocalDirectory(
153:                             // TODO Subfolder-Pfad zusammenbauen
154:                                 $directory,
155:                                 true,
156:                                 $dropboxDirectory->getFolderMetadata()
157:                             );
158:                         }
159:                     }
160:                 }
161:             }
162: 
163:         }
164:     }
165: 
166:     /**
167:      * Enter description here ...
168:      * @param MDirectory $rootFolder
169:      * @param string $filePath
170:      */
171:     private function downloadFile(MDirectory $rootFolder, $filePath)
172:     {
173: 
174:         $file = $this->dropboxAccount->getDropboxApi()->getFile($filePath);
175:         $filePath = $rootFolder->getFolderName() . $filePath;
176:         $this->saveToFilesystem($filePath, $file);
177:     }
178: 
179:     /**
180:      * Enter description here ...
181:      * @param MDirectory $rootFolder
182:      * @param string $filePath
183:      */
184:     private function downloadImage(MDirectory $rootFolder, $filePath)
185:     {
186: 
187:         $file = $this->dropboxAccount->getDropboxApi()->thumbnails($filePath, 'JPEG', 'l');
188:         $filePath = $rootFolder->getFolderName() . $filePath;
189:         $this->saveToFilesystem($filePath, $file);
190:     }
191: 
192:     /**
193:      * Enter description here ...
194:      * @param $filePath
195:      * @param unknown_type $file
196:      */
197:     private function saveToFilesystem($filePath, $file)
198:     {
199:         if (!file_exists("." . $filePath)) {
200:             $fp = fopen("." . $filePath, "w");
201:             fputs($fp, $file['data']);
202:             fclose($fp);
203:         }
204:     }
205: 
206:     /**
207:      *
208:      * Enter description here ...
209:      */
210:     public function getFolderMetadata()
211:     {
212:         return $this->directoryMetadata;
213:     }
214: 
215: }
216: 
API documentation generated by ApiGen