Add missed files
parent
bfa914d8b2
commit
e60c91acbb
@ -0,0 +1,28 @@
|
||||
<?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.
|
||||
*/
|
||||
|
||||
$installedVersion = \OCP\Config::getAppValue('documents', 'installed_version');
|
||||
|
||||
if (version_compare($installedVersion, '0.7', '<=')) {
|
||||
\OCP\Config::setAppValue('documents', 'unstable', 'false');
|
||||
$session = new \OCA\Documents\Db_Session();
|
||||
|
||||
$query = \OC_DB::prepare('UPDATE `*PREFIX*documents_session` SET `genesis_url`=? WHERE `es_id`=?');
|
||||
|
||||
foreach ($session->getCollection() as $sessionData){
|
||||
$sessionData['genesis_url'] = \OCA\Documents\Genesis::DOCUMENTS_DIRNAME . $sessionData['genesis_url'];
|
||||
$query->execute(array(
|
||||
$sessionData['genesis_url'],
|
||||
$sessionData['es_id']
|
||||
));
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
/**
|
||||
* ownCloud - Documents App
|
||||
*
|
||||
* @author Victor Dubiniuk
|
||||
* @copyright 2013 Victor Dubiniuk victor.dubiniuk@gmail.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Documents;
|
||||
|
||||
class Genesis {
|
||||
|
||||
const DOCUMENTS_DIRNAME='/documents';
|
||||
|
||||
protected $view;
|
||||
|
||||
protected $path;
|
||||
|
||||
protected $hash;
|
||||
|
||||
|
||||
/**
|
||||
* Create new genesis document
|
||||
* @param OCA\Documents\View $view Filesystem view with root '/user/files'
|
||||
* @param string $path relative path
|
||||
* @param string $owner file owner
|
||||
* */
|
||||
public function __construct(\OCA\Documents\View $view, $path, $owner){
|
||||
$this->view = new View('/' . $owner);
|
||||
$this->hash = $this->getDocumentHash($view, $path);
|
||||
|
||||
if (!$this->view->file_exists(self::DOCUMENTS_DIRNAME)){
|
||||
$this->view->mkdir(self::DOCUMENTS_DIRNAME );
|
||||
}
|
||||
|
||||
$this->path = self::DOCUMENTS_DIRNAME . '/' . $this->hash . '.odt';
|
||||
|
||||
if (!$this->view->file_exists($this->path)){
|
||||
//copy new genesis to /user/documents/{hash}.odt
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
$this->view->copy('/files' . $path, $this->path);
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
}
|
||||
|
||||
try {
|
||||
$this->validate($this->view, $this->path);
|
||||
} catch (\Exception $e){
|
||||
throw new \Exception('Failed to copy genesis');
|
||||
}
|
||||
}
|
||||
|
||||
public function getPath(){
|
||||
return $this->path;
|
||||
}
|
||||
|
||||
public function getHash(){
|
||||
return $this->hash;
|
||||
}
|
||||
|
||||
public static function getHashByPath($path){
|
||||
return preg_replace('|([a-zA-Z0-9])*\..*$|', '\1', $path);
|
||||
}
|
||||
|
||||
protected function getDocumentHash($view, $path){
|
||||
$this->validate($view, $path);
|
||||
return sha1($view->file_get_contents($path));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if genesis is valid
|
||||
* @param OCA\Documents\View $view
|
||||
* @param string $path relative to the view
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function validate($view, $path){
|
||||
if (!$view->file_exists($path)){
|
||||
throw new \Exception('Document not found ' . $path);
|
||||
}
|
||||
if (!$view->is_file($path)){
|
||||
throw new \Exception('Object ' . $path . ' is not a file.');
|
||||
}
|
||||
//TODO check if it is a valid odt
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue