<?php

/**
 * ownCloud - Documents App
 *
 * @author Victor Dubiniuk
 * @copyright 2013 Victor Dubiniuk victor.dubiniuk@gmail.com
 *
 * This file is licensed under the Affero General Public License version 3 or
 * later.
 */

namespace OCA\Documents;

class DocumentController extends Controller{
	const ODT_TEMPLATE = '[encoded data, 11648 characters]';
	
	public static function create($args){
		$uid = self::preDispatch();
		
		$view = new \OC\Files\View('/' . $uid . '/files');
		$path = Helper::getNewFileName($view, '/New Document.odt');
		
		$view->file_put_contents(
				$path, 
				base64_decode(self::ODT_TEMPLATE)
		);
	}


/**
	 * Process partial/complete file download
	 * @param array $args - array containing session id as an element with a key es_id 
	 */
	public static function serve($args){
		$session = new Db_Session();
		$sessionData = $session->load(@$args['es_id'])->getData();
			
		$file = new File(@$sessionData['file_id']);
		if (!$file->isPublicShare()){
			self::preDispatch(false);
		} else {
			self::preDispatchGuest(false);
		}
		
		$filename = isset($sessionData['genesis_url']) ? $sessionData['genesis_url'] : '';
		$documentsView = new View('/' . $sessionData['owner']);
		$download = new Download($documentsView->initDocumentsView(), $filename);
		$download->sendResponse();
	}

	/**
	 * lists the documents the user has access to (including shared files, once the code in core has been fixed)
	 * also adds session and member info for these files
	 */
	public static function listAll(){
		self::preDispatch();
		
		$documents = Storage::getDocuments();

		$fileIds = array();
		
		//$previewAvailable = \OCP\Preview::show($file);
		foreach ($documents as $key=>$document) {
			//\OCP\Preview::show($document['path']);
			$documents[$key]['icon'] = preg_replace('/\.png$/', '.svg', \OC_Helper::mimetypeIcon($document['mimetype']));
			$fileIds[] = $document['fileid'];
		}

		$session = new Db_Session();
		$sessions = $session->getCollectionBy('file_id', $fileIds);

		$members = array();
		$member = new Db_Member();
		foreach ($sessions as $session) {
			$members[$session['es_id']] = $member->getCollectionBy('es_id', $session['es_id']);
		}

		\OCP\JSON::success(array('documents' => $documents,'sessions' => $sessions,'members' => $members));
	}
}