Track and log failures
This commit is contained in:
parent
32b08e7040
commit
2635421222
@ -16,10 +16,10 @@ class Controller {
|
||||
|
||||
/**
|
||||
* Process partial/complete file download
|
||||
* @param type $args - array containing session id as anelement with a key es_id
|
||||
* @param array $args - array containing session id as anelement with a key es_id
|
||||
*/
|
||||
public static function serve($args){
|
||||
\OCP\JSON::checkLoggedIn();
|
||||
self::preDispatch(false);
|
||||
|
||||
$session = Session::getSession(@$args['es_id']);
|
||||
$filename = isset($session['genesis_url']) ? $session['genesis_url'] : '';
|
||||
@ -29,53 +29,63 @@ class Controller {
|
||||
}
|
||||
|
||||
public static function startSession($args){
|
||||
$uid = self::getUser();
|
||||
$uid = self::preDispatch();
|
||||
try{
|
||||
$fileId = @$_POST['fileid'];
|
||||
if (!$fileId){
|
||||
throw new \Exception('No fileId has been passed');
|
||||
}
|
||||
|
||||
$officeView = View::initOfficeView($uid);
|
||||
$genesisPath = View::storeDocument($uid, $fileId);
|
||||
if (!$genesisPath){
|
||||
throw new \Exception('Unable to copy document. Check permissions and make sure you have enought free space.');
|
||||
}
|
||||
|
||||
if ($genesisPath){
|
||||
$session = Session::getSessionByFileId($fileId);
|
||||
try {
|
||||
if (!$session){
|
||||
if (!$session || empty($session)){
|
||||
$hash = View::getHashByGenesis($uid, $genesisPath);
|
||||
$session = Session::add($genesisPath, $hash, $fileId);
|
||||
}
|
||||
|
||||
$session['member_id'] = (string) Member::add($session['es_id'], \OCP\User::getUser(), self::getRandomColor());
|
||||
|
||||
$session['member_id'] = (string) Member::add($session['es_id'], $uid, Helper::getRandomColor());
|
||||
\OCP\JSON::success($session);
|
||||
exit();
|
||||
} catch (\Exception $e){
|
||||
//TODO: Log
|
||||
throw $e; //Debug
|
||||
}
|
||||
}
|
||||
Helper::warnLog('Starting a session failed. Reason:') . $e->getMessage();
|
||||
\OCP\JSON::error();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
public static function joinSession($args){
|
||||
$esId = @$args['es_id'];
|
||||
\OCP\JSON::checkLoggedIn();
|
||||
$uid = self::preDispatch();
|
||||
try{
|
||||
if ($esId){
|
||||
$session = Session::getSession($esId);
|
||||
if (!$esId){
|
||||
throw new \Exception('Session id is empty');
|
||||
}
|
||||
|
||||
$session['member_id'] = (string) Member::add($session['es_id'], \OCP\User::getUser(), self::getRandomColor());
|
||||
$session = Session::getSession($esId);
|
||||
if (!$session || empty($session)){
|
||||
throw new \Exception('Session doesn\'t exist');
|
||||
}
|
||||
|
||||
$session['member_id'] = (string) Member::add($session['es_id'], $uid, Helper::getRandomColor());
|
||||
\OCP\JSON::success($session);
|
||||
exit();
|
||||
}
|
||||
|
||||
throw new \Exception();
|
||||
} catch (\Exception $e){
|
||||
//TODO: Log
|
||||
}
|
||||
Helper::warnLog('Joining a session failed. Reason:') . $e->getMessage();
|
||||
\OCP\JSON::error();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the document content to its origin
|
||||
*/
|
||||
public static function save(){
|
||||
$uid = self::getUser();
|
||||
$uid = self::preDispatch();
|
||||
$esId = @$_POST['es_id'];
|
||||
$memberId = @$_POST['member_id'];
|
||||
$content = @$_POST['content'];
|
||||
@ -89,21 +99,22 @@ class Controller {
|
||||
if ($canWrite){
|
||||
$view->file_put_contents($path, $content);
|
||||
} else {
|
||||
// TODO: report an error
|
||||
// TODO: report an error, broke a plate, burn a house, conquer the galaxy
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function listSessions(){
|
||||
self::getUser();
|
||||
self::preDispatch();
|
||||
$sessions = Session::getAll();
|
||||
if (!is_array($sessions)){
|
||||
$sessions = array();
|
||||
}
|
||||
|
||||
$preparedSessions = array_map(
|
||||
function($x){return ($x['es_id']);},
|
||||
$sessions
|
||||
function($x){
|
||||
return ($x['es_id']);
|
||||
}, $sessions
|
||||
);
|
||||
\OCP\JSON::success(array(
|
||||
"session_list" => $preparedSessions
|
||||
@ -111,7 +122,7 @@ class Controller {
|
||||
}
|
||||
|
||||
public static function sessionInfo(){
|
||||
self::getUser();
|
||||
self::preDispatch();
|
||||
$items = @$_POST['items'];
|
||||
$info = array();
|
||||
|
||||
@ -125,15 +136,16 @@ class Controller {
|
||||
}
|
||||
|
||||
public static function listSessionsHtml(){
|
||||
self::getUser();
|
||||
self::preDispatch();
|
||||
$sessions = Session::getAll();
|
||||
if (!is_array($sessions)){
|
||||
$sessions = array();
|
||||
}
|
||||
|
||||
$preparedSessions = array_map(
|
||||
function($x){return ($x['es_id']);},
|
||||
$sessions
|
||||
function($x){
|
||||
return ($x['es_id']);
|
||||
}, $sessions
|
||||
);
|
||||
|
||||
$invites = Invite::getAllInvites();
|
||||
@ -147,13 +159,15 @@ class Controller {
|
||||
echo $tmpl->fetchPage();
|
||||
}
|
||||
|
||||
protected static function getRandomColor(){
|
||||
$str = dechex(floor(rand(0, 16777215)));
|
||||
$str = str_pad($str, 6, "0", STR_PAD_LEFT);
|
||||
return '#' . $str;
|
||||
/**
|
||||
* Do security precheck
|
||||
* @param bool callcheck - whether security token check is needed
|
||||
* @return string userId of the currently logged in user
|
||||
*/
|
||||
protected static function preDispatch($callcheck = true){
|
||||
if ($callcheck){
|
||||
\OCP\JSON::callCheck();
|
||||
}
|
||||
|
||||
protected static function getUser(){
|
||||
\OCP\JSON::checkLoggedIn();
|
||||
return \OCP\User::getUser();
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ class UserController {
|
||||
* Search users according to the pattern
|
||||
*/
|
||||
public static function search(){
|
||||
$uid = self::getUser();
|
||||
$uid = self::preDispatch();
|
||||
if (@$_GET['search']){
|
||||
$found = array();
|
||||
$users = array();
|
||||
@ -45,7 +45,7 @@ class UserController {
|
||||
* Invite users to the editing session
|
||||
*/
|
||||
public static function invite(){
|
||||
self::getUser();
|
||||
self::preDispatch();
|
||||
$invitees = @$_POST['users'];
|
||||
|
||||
if (is_array($invitees)){
|
||||
@ -67,7 +67,7 @@ class UserController {
|
||||
* Stub - sends a generic avatar
|
||||
*/
|
||||
public static function sendAvatar(){
|
||||
$uid = self::getUser();
|
||||
$uid = self::preDispatch(false);
|
||||
$image = new \OC_Image('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');
|
||||
\OC_Util::obEnd();
|
||||
|
||||
@ -75,10 +75,14 @@ class UserController {
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the user is logged in
|
||||
* @return string userid of the current user
|
||||
* Do security precheck
|
||||
* @param bool callcheck - whether security token check is needed
|
||||
* @return string userId of the currently logged in user
|
||||
*/
|
||||
protected static function getUser(){
|
||||
protected static function preDispatch($callcheck = true){
|
||||
if ($callcheck){
|
||||
\OCP\JSON::callCheck();
|
||||
}
|
||||
\OCP\JSON::checkLoggedIn();
|
||||
return \OCP\User::getUser();
|
||||
}
|
||||
|
35
lib/helper.php
Normal file
35
lib/helper.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/**
|
||||
* ownCloud - Office 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\Office;
|
||||
|
||||
class Helper{
|
||||
|
||||
const APP_ID = 'office';
|
||||
|
||||
public static function getRandomColor(){
|
||||
$str = dechex(floor(rand(0, 16777215)));
|
||||
$str = str_pad($str, 6, "0", STR_PAD_LEFT);
|
||||
return '#' . $str;
|
||||
}
|
||||
|
||||
public static function debugLog($message){
|
||||
self::log($message, \OCP\Util::DEBUG);
|
||||
}
|
||||
|
||||
public static function warnLog($message){
|
||||
self::log($message, \OCP\Util::WARN);
|
||||
}
|
||||
|
||||
public static function log($message, $level){
|
||||
\OCP\Util::writeLog(self::APP_ID, $message, $level);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user