private function putFileInDirectory($directory, $localFile, $destinationName) { $createDirectory = false; // TODO confirm is this is the best way to do this // it maybe a noop but calling get_file_info might be faster try { $newFolder = new Box_Client_Folder(); $newFolder->attr('name', $directory); $newFolder->attr('parent_id', $this->boxFolderId); $newFolder->attr('share', 0); $status = $this->box->create($newFolder); if ($status !== self::statusCreatedOk && $status !== self::statusFolderExists) { getLogger()->warn(sprintf('Box API returned an unexpected response of (%s) from folder create call', $status)); return false; } } catch (Box_Rest_Client_Exception $e) { getLogger()->warn('Box exception from folder create call', $e); return false; } try { // The way Box_Rest_Client works it uses the file's name as the display name $file = new Box_Client_File($localFile, $destinationName); $file->attr('folder_id', $newFolder->attr('folder_id')); $result = $this->box->upload($file, array('new_copy' => '1'), true); if ($result === self::statusUploadOk) { $this->metaDataMap[$localFile] = array('boxFileId' => $file->attr('id')); getLogger()->info(sprintf('Successfully stored file (%s) on Box.', $destinationName)); return true; } else { getLogger()->crit('Could not put file on Box.', $e); return false; } } catch (Box_Rest_Client_Exception $e) { getLogger()->warn('Box exception from upload call', $e); return false; } }
/** * * Imports the tree structure and allows us to provide some extended functionality * at some point. Don't run import manually. It expects certain things that are * delivered through the API. Instead, if you need a tree structure of something, * simply call Box_Rest_Client->folder(folder_id); and it will automatically return * the right stuff. * * Due to an inconsistency with the Box.net ReST API, this section invovles a few * more checks than normal to ensure that all the necessary values are available * when doing the import. * @param array $tree */ public function import(array $tree) { foreach ($tree['@attributes'] as $key => $val) { $this->attr[$key] = $val; } if (array_key_exists('folders', $tree)) { if (array_key_exists('folder', $tree['folders'])) { if (array_key_exists('@attributes', $tree['folders']['folder'])) { // this is the case when there is a single folder within the root $box_folder = new Box_Client_Folder(); $box_folder->import($tree['folders']['folder']); $this->folder[] = $box_folder; } else { // this is the case when there are multiple folders within the root foreach ($tree['folders']['folder'] as $i => $folder) { $box_folder = new Box_Client_Folder(); $box_folder->import($folder); $this->folder[] = $box_folder; } } } } if (array_key_exists('files', $tree)) { if (array_key_exists('file', $tree['files'])) { if (array_key_exists('@attributes', $tree['files']['file'])) { // this is the case when there is a single file within a directory $box_file = new Box_Client_File(); $box_file->import($tree['files']['file']); $this->file[] = $box_file; } else { // this is the case when there are multiple files in a directory foreach ($tree['files']['file'] as $i => $file) { $box_file = new Box_Client_File(); $box_file->import($file); $this->file[] = $box_file; } } } } }