Exemple #1
0
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     ob_start('mb_output_handler');
     MMapManager::startSession();
     //check if the session has expired
     MMapManager::checkSessionExpiration();
     $return = null;
     $dataManager = DataManager::getInstance();
     $POST = $request->getPOST();
     $params = array();
     if (isset($POST['params'])) {
         $params = $dataManager->doInput($POST['params']);
     } else {
         if ($request->issetGET('params')) {
             $params = $request->getGET('params');
         }
     }
     $return = array();
     foreach ($params as $call) {
         $call[2] = json_encode($call[2]);
         $_POST['params'] = $call[2];
         $request->setPost('params', $call[2]);
         $_GET['message'] = $call[1];
         $request->setGET('message', $call[1]);
         $_GET['checknum'] = $call[0];
         $request->setGET('checknum', $call[0]);
         MMapMsg::getInstance()->processRequest($request, $response);
         MMapManager::getInstance()->doResponse($response);
         $response->clear();
         $content = ob_get_contents();
         ob_clean();
         $return[] = $content;
     }
     $response->setBodyRenderer(new DataManagerBodyRenderer($return));
 }
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     ob_start('mb_output_handler');
     MMapManager::startSession();
     MMapManager::checkSessionExpiration();
     $username = $request->issetPOST('username') ? $request->getPOST('username') : '';
     $password = $request->issetPOST('password') ? $request->getPOST('password') : '';
     $loginPage = $request->issetPOST('loginPage') ? $request->getPOST('loginPage') : '';
     $subject = new Subject();
     $loginContext = new LoginContext('eyeos-login', $subject);
     $cred = new EyeosPasswordCredential();
     $cred->setUsername($username);
     $cred->setPassword($password, true);
     $subject->getPrivateCredentials()->append($cred);
     try {
         $loginContext->login();
         $memoryManager = MemoryManager::getInstance();
         Kernel::enterSystemMode();
         $memoryManager->set('isExternLogin', 1);
         $memoryManager->set('username', $username);
         $memoryManager->set('password', $password);
         $memoryManager->set('loginPage', $loginPage);
         Kernel::exitSystemMode();
         header("Location: index.php");
     } catch (Exception $e) {
         header("Location:" . $loginPage . "?errorLogin=1");
     }
 }
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     ob_start('mb_output_handler');
     MMapManager::startSession();
     //check if the session has expired
     MMapManager::checkSessionExpiration();
     $return = null;
     $dataManager = DataManager::getInstance();
     // restore current process using checknum
     $myProcManager = ProcManager::getInstance();
     $myProcess = $myProcManager->getProcessByChecknum($request->getGET('checknum'));
     $myProcManager->setCurrentProcess($myProcess);
     $appDesc = new EyeMobileApplicationDescriptor($myProcess->getName());
     $POST = $request->getPOST();
     $params = array();
     if (isset($POST['params'])) {
         $params = $dataManager->doInput($POST['params']);
     } else {
         if ($request->issetGET('params')) {
             $params = $request->getGET('params');
         }
     }
     $methodName = $request->getGET('message');
     // calling an ExecModule
     if (strpos($methodName, '__') === 0) {
         $moduleName = explode('_', substr($methodName, 2));
         $methodName = $moduleName[1];
         //ex: "FileChooser"
         $moduleName = $moduleName[0];
         //ex: "browsePath"
         $return = call_user_func_array(array($appDesc->getApplicationClassName(), '__callModule'), array($moduleName, $methodName, $params));
     } else {
         if ($appDesc->isJavascriptOnlyApplication()) {
             $return = call_user_func(array('EyeosJavascriptApplicationExecutable', $methodName), $params);
         } else {
             if (method_exists($appDesc->getApplicationClassName(), $methodName)) {
                 $return = call_user_func(array($appDesc->getApplicationClassName(), $methodName), $params);
             } else {
                 //If no function is present, call the NOT mobile function
                 MMapMsg::getInstance()->processRequest($request, $response);
                 return;
             }
             //				try {
             //					$return = call_user_func(array($appDesc->getApplicationClassName(), $methodName), $params);
             //				} catch (Exception $e) {
             //					//If no function is present, call the NOT mobile function
             //					MMapMsg::getInstance()->processRequest($request, $response);
             //					return;
             //				}
         }
     }
     if ($response->getBodyRenderer() === null && $response->getBody() == '') {
         $response->setBodyRenderer(new DataManagerBodyRenderer($return));
     }
 }
Exemple #4
0
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     ob_start('mb_output_handler');
     MMapManager::startSession();
     //check if the session has expired
     MMapManager::checkSessionExpiration();
     $return = null;
     $dataManager = DataManager::getInstance();
     // restore current process using checknum
     $myProcManager = ProcManager::getInstance();
     $myProcess = $myProcManager->getProcessByChecknum($request->getGET('checknum'));
     $myProcManager->setCurrentProcess($myProcess);
     $appDesc = new EyeosApplicationDescriptor($myProcess->getName());
     $POST = $request->getPOST();
     $params = array();
     if (isset($POST['params'])) {
         $params = $dataManager->doInput($POST['params']);
     } else {
         if ($request->issetGET('params')) {
             $params = $request->getGET('params');
         }
     }
     $methodName = $request->getGET('message');
     // calling an ExecModule
     if (strpos($methodName, '__') === 0) {
         $moduleName = explode('_', substr($methodName, 2));
         $methodName = $moduleName[1];
         //ex: "FileChooser"
         $moduleName = $moduleName[0];
         //ex: "browsePath"
         $return = call_user_func_array(array($appDesc->getApplicationClassName(), '__callModule'), array($moduleName, $methodName, $params));
     } else {
         if ($appDesc->isJavascriptOnlyApplication()) {
             $return = call_user_func(array('EyeosJavascriptApplicationExecutable', $methodName), $params);
         } else {
             $return = call_user_func(array($appDesc->getApplicationClassName(), $methodName), $params);
         }
     }
     //try to force mime type. If there is a previous mime type defined at application level
     //this have no effect
     if (!headers_sent()) {
         $response->getHeaders()->append('Content-type:text/plain');
     }
     if ($response->getBodyRenderer() === null && $response->getBody() == '') {
         $response->setBodyRenderer(new DataManagerBodyRenderer($return));
     }
 }
Exemple #5
0
 public static function __run(AppExecutionContext $context, MMapResponse $response)
 {
     $args = $context->getArgs();
     if (!isset($args[0]) || !is_string($args[0])) {
         throw new EyeMissingArgumentException('Missing filename to open.');
     }
     try {
         $file = FSI::getFile($args[0]);
     } catch (Exception $e) {
         throw new EyeInvalidArgumentException('args[0] must be a valid path to a file.', 0, $e);
     }
     $appName = false;
     if ($file->isDirectory()) {
         $appName = 'files';
     } else {
         $extension = utf8_strtolower($file->getExtension());
         // TODO: Currently hard-coded here but in the future associations will be read from a DB.
         // We must have general entries, common to all the users of the system, that will be used
         // as default, and then user-customized entries with a higher priority on the general ones.
         switch ($extension) {
             //
             //	VIEWER
             //
             case 'jpg':
             case 'gif':
             case 'jpeg':
             case 'png':
             case 'htm':
             case 'html':
             case 'flv':
             case 'm4a':
             case 'mp3':
                 $appName = 'viewer';
                 break;
                 //
                 //	EDITOR
                 //
             //
             //	EDITOR
             //
             case 'txt':
             case 'xml':
             case 'ini':
             case 'js':
             case 'sql':
             case 'log':
                 $appName = 'femto';
                 break;
         }
     }
     // Association found: execute matching application
     if ($appName) {
         $myProcess = ProcManager::getInstance()->getCurrentProcess();
         // prepare context and execute application
         $currentAppDesc = new EyeosApplicationDescriptor($appName);
         $appContext = new AppExecutionContext();
         $appContext->setParentProcess($myProcess);
         $appContext->setApplicationDescriptor($currentAppDesc);
         $appContext->setArgs(clone $args);
         MMapGetApp::getInstance()->processRequest(MMapManager::getCurrentRequest(), $response, $appContext);
         // Kill our process
         $context->setExecuteJavascript(false);
         ProcManager::getInstance()->kill($myProcess);
         return;
     }
     // Otherwise, show the OpenWith dialog
 }
Exemple #6
0
session_save_path('./tmp/');
session_set_cookie_params(0, null, null, false, true);
//make sure that garbage collector is running!
ini_set('session.gc_probability', 1);
$__startTime = microtime(true);
$__startMemory = memory_get_usage();
try {
    //Load bootstrap script
    require './' . SYSTEM_DIR . '/' . BOOT_DIR . '/Bootstrap.php';
    //Startup
    Bootstrap::init();
    $__endBootstrapTime = microtime(true);
    $__endBootstrapMemory = memory_get_usage();
    //Process incoming request through MMap
    $request = new MMapRequest();
    MMapManager::getInstance()->processRequest($request, new MMapResponse());
    // Temporary - Should be moved into a function
    $__endRequestTime = microtime(true);
    $__endRequestMemory = memory_get_usage();
    $logger = Logger::getLogger('root.metrics');
    if ($logger->isInfoEnabled()) {
        $logger->info('Time: ' . sprintf('%01.2f', $__endRequestTime - $__startTime) . 's / Mem.: ' . sprintf('%01.2f', ($__endRequestMemory - $__startMemory) / 1024) . 'KB (Bootstrap Time: ' . sprintf('%01.2f', $__endBootstrapTime - $__startTime) . 's / Mem: ' . sprintf('%01.2f', ($__endBootstrapMemory - $__startMemory) / 1024) . 'KB) [' . $request->getUrl() . ']');
    }
} catch (Exception $e) {
    // Log and display the exception that reached this section
    // (this should normally *not* happen in a fully set-up production environment)
    // Log with log4php if available
    if (class_exists('Logger')) {
        $logger = Logger::getRootLogger();
        $logger->fatal('Uncaught exception detected in the root page! It is likely to come from the bootstrap.');
        $logger->fatal(ExceptionStackUtil::getStackTrace($e, false));
Exemple #7
0
 public function processRequest(MMapRequest $request, MMapResponse $response, AppExecutionContext $appContext = null)
 {
     $status = ob_get_status();
     $response->getHeaders()->append('Content-type:text/javascript');
     if (isset($status['name']) && $status['name'] != 'ob_gzhandler') {
         ob_start("ob_gzhandler");
     }
     try {
         MMapManager::startSession();
         if (!$appContext instanceof AppExecutionContext) {
             $appContext = new AppExecutionContext();
             $appContext->initFromRequest($request);
         }
         $appDesc = $appContext->getApplicationDescriptor();
         // Check if the session has expired only if the application we want to execute is not "init" nor "logout"
         // FIXME: Not sure this way for checking session is the best here (maybe a flag in the metadata instead?)
         if ($appDesc->getName() != 'init' && $appDesc->getName() != 'logout') {
             MMapManager::checkSessionExpiration();
         }
         // Restore parent process if available
         try {
             $checknum = (int) $request->getGET('checknum');
             $procFather = ProcManager::getInstance()->getProcessByChecknum($checknum);
             ProcManager::getInstance()->setCurrentProcess($procFather);
             // Access control is based on current user, contained in the login context of
             // the current process, so we can only perform security checks when a process
             // is active.
             // In case no login context is defined, we can be sure that almost nothing unsafe
             // will be done, because this element is required in most of the operations.
             if ($procFather->getLoginContext() !== null) {
                 SecurityManager::getInstance()->checkExecute($appDesc);
             }
         } catch (EyeProcException $e) {
         }
         // Start process (PHP)
         $this->startProcess($appContext);
         // Append necessary scripts and execute JS code (actually, only append it to the $response body)
         $appDesc->executeJavascript($appContext, $response);
     } catch (Exception $e) {
         self::$Logger->error('Uncaught exception while processing request: ' . $request);
         self::$Logger->error('Exception message: ' . $e->getMessage());
         if (self::$Logger->isDebugEnabled()) {
             self::$Logger->debug(ExceptionStackUtil::getStackTrace($e, false));
         }
         // Special processing on session expiration
         if ($e instanceof EyeSessionExpiredException) {
             $controlMessageBodyRenderer = new ControlMessageBodyRenderer(ControlMessageBodyRenderer::TYPE_SESSION_EXPIRED);
         } else {
             // Remove incomplete process
             $proc = $appContext->getProcess();
             if ($proc instanceof Process) {
                 try {
                     ProcManager::getInstance()->kill($proc);
                 } catch (Exception $e) {
                     self::$Logger->error('Cannot kill incomplete process: ' . $proc);
                     self::$Logger->error('Exception message: ' . $e->getMessage());
                 }
             }
             $controlMessageBodyRenderer = new ControlMessageBodyRenderer(ControlMessageBodyRenderer::TYPE_EXCEPTION, $e);
         }
         // When using qx.io.ScriptLoader on the JS side, no callback proxy is available
         // to intercept control messages, so we're using a little workaround here by
         // calling directly eyeos._callbackProxyWithContent() with the exception summary
         // in argument.
         $responseContent = $controlMessageBodyRenderer->getRenderedBody();
         $response->setBody('eyeos._callbackProxyWithContent(null, null, null, ' . $responseContent . ');');
     }
     $this->handleClientMessageQueue($response);
 }
 public function __construct()
 {
     $this->myMMapManager = MMapManager::getInstance();
 }
 /**
  * Return the scaled version of image.
  *
  * @param Array $params = (
  *		maxHeight => integer,		Max Height of output image
  *		maxWidth => integer,		Max Width of output image
  *		path => string				Path of input image
  * )
  */
 public static function getScaledImage($params)
 {
     if ($params === null || !is_array($params)) {
         throw new EyeInvalidArgumentException('Missing or invalid $params');
     }
     if (!isset($params['path']) || !is_string($params['path'])) {
         throw new EyeInvalidArgumentException('Missing or invalid $params[\'path\']');
     }
     $path = $params['path'];
     $maxHeight = isset($params['maxHeight']) ? intval($params['maxHeight']) : null;
     $maxWidth = isset($params['maxWidth']) ? intval($params['maxWidth']) : null;
     $response = MMapManager::getCurrentResponse();
     $myFile = FSI::getFile($params['path']);
     if (method_exists($myFile, 'getRealFile')) {
         $fileName = AdvancedPathLib::getPhpLocalHackPath($myFile->getRealFile()->getAbsolutePath());
     } else {
         $fileName = $params['path'];
     }
     $info = GetImageSize($fileName);
     $width = $info[0];
     $height = $info[1];
     $mime = $info['mime'];
     //Calculate new dimensions
     $newDimensions = self::calculateDimensions(array('height' => $height, 'width' => $width, 'maxHeight' => $maxHeight, 'maxWidth' => $maxWidth));
     $newHeight = $newDimensions['height'];
     $newWidth = $newDimensions['width'];
     if ($newHeight == $height && $newWidth == $width) {
         //No resize is necessary
         $imageData = $myFile->getContents();
     } else {
         // What sort of image?
         $type = substr(strrchr($mime, '/'), 1);
         switch ($type) {
             case 'jpeg':
                 $image_create_func = 'ImageCreateFromJPEG';
                 $image_save_func = 'ImageJPEG';
                 $new_image_ext = 'jpg';
                 break;
             case 'png':
                 $image_create_func = 'ImageCreateFromPNG';
                 $image_save_func = 'ImagePNG';
                 $new_image_ext = 'png';
                 break;
             case 'bmp':
                 $image_create_func = 'ImageCreateFromBMP';
                 $image_save_func = 'ImageBMP';
                 $new_image_ext = 'bmp';
                 break;
             case 'gif':
                 $image_create_func = 'ImageCreateFromGIF';
                 $image_save_func = 'ImageGIF';
                 $new_image_ext = 'gif';
                 break;
             case 'vnd.wap.wbmp':
                 $image_create_func = 'ImageCreateFromWBMP';
                 $image_save_func = 'ImageWBMP';
                 $new_image_ext = 'bmp';
                 break;
             case 'xbm':
                 $image_create_func = 'ImageCreateFromXBM';
                 $image_save_func = 'ImageXBM';
                 $new_image_ext = 'xbm';
                 break;
             default:
                 $image_create_func = 'ImageCreateFromJPEG';
                 $image_save_func = 'ImageJPEG';
                 $new_image_ext = 'jpg';
         }
         // Create blank image with new dimensions
         $imageData = ImageCreateTrueColor($newWidth, $newHeight);
         $originalImage = $image_create_func($fileName);
         ImageCopyResampled($imageData, $originalImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
         $image_save_func($imageData);
     }
     $imagevariable = ob_get_contents();
     ob_end_clean();
     header('Content-Type:' . $mime);
     header('Content-Length: ' . strlen($imagevariable));
     header('Accept-Ranges: bytes');
     header('X-Pad: avoid browser bug');
     echo $imagevariable;
     exit;
 }
Exemple #10
0
 public static function submitFile($path)
 {
     try {
         if (!isset($_FILES['Filedata'])) {
             echo '<div style="font-size:20px;font-family:Helvetica, Arial, Verdana, Sans, FreeSans;margin-top:80px;margin-right:15px;"><center>&nbsp;&nbsp;<img style="position:relative;top:15px"src="index.php?extern=/images/48x48/actions/dialog-close.png" />Error uploading files</center>';
             exit;
         }
         $Logger = Logger::getLogger('application.upload');
         foreach ($_FILES['Filedata']['name'] as $k => $v) {
             if (!empty($v)) {
                 $filename = $_FILES['Filedata']['name'][$k];
                 if (!isset($_POST['UPLOAD_IDENTIFIER'])) {
                     $filename = utf8_encode($filename);
                 }
                 $tmpPath = $_FILES['Filedata']['tmp_name'][$k];
                 $Logger->debug("Filename: " . $filename);
                 if (!is_uploaded_file($tmpPath)) {
                     throw new EyeFileNotFoundException('Uploaded file not found at "' . $tmpPath . '".');
                 }
                 $request = MMapManager::getCurrentRequest();
                 $destPath = $path;
                 $filename = str_replace('?', '_', $filename);
                 $filename = str_replace('#', '_', $filename);
                 $tmp = pathinfo($filename);
                 if (isset($tmp['extension']) && "lnk" == $tmp['extension']) {
                     throw new EyeFileNotFoundException('This file cannot be uploaded (file type banned)');
                 }
                 /*
                 if ( '?' == $filename{0} ) {
                 	$filename{0} = "_";
                 }
                 */
                 $destFile = FSI::getFile($destPath . '/' . $filename);
                 //The uploaded file is necessarily on the local filesystem and we want to avoid any
                 //permission check through EyeLocalFile, so we use LocalFile directly
                 $tmpFile = new LocalFile($tmpPath);
                 $num = 1;
                 $extension = AdvancedPathLib::pathinfo($filename, PATHINFO_EXTENSION);
                 $filename = AdvancedPathLib::pathinfo($filename, PATHINFO_FILENAME);
                 $Logger->debug("CLASS: " . get_class($destFile));
                 $Logger->debug("Exists: " . $destFile->exists());
                 //exit();
                 while ($destFile->exists()) {
                     $newBasename = $filename . ' (' . $num++ . ')' . ($extension ? '.' . $extension : '');
                     $destFile = FSI::getFile($destPath . '/' . $newBasename);
                 }
                 $destFile->checkWritePermission();
                 $tmpFile->moveTo($destFile);
                 $currentUser = ProcManager::getInstance()->getCurrentProcess()->getLoginContext()->getEyeosUser();
                 $settings = MetaManager::getInstance()->retrieveMeta($currentUser);
                 $message = new ClientBusMessage('file', 'uploadComplete', self::getFileInfo($destFile, $settings));
                 ClientMessageBusController::getInstance()->queueMessage($message);
                 $event = new FileEvent($destFile);
                 $destFile->fireEvent('fileWritten', $event);
             }
         }
         register_shutdown_function('endRequestUpload');
     } catch (EyeException $e) {
         echo '<div style="font-size:20px;font-family:Helvetica, Arial, Verdana, Sans, FreeSans;margin-top:80px;margin-right:15px;"><center>&nbsp;&nbsp;<img style="position:relative;top:15px"src="index.php?extern=/images/48x48/actions/dialog-close.png" />Error uploading files: ' . $e->getMessage() . '</center>';
         exit;
     }
 }
Exemple #11
0
 private static function startLogin(MMapResponse $response)
 {
     // start Process
     $loginProcess = new Process('login');
     ProcManager::getInstance()->execute($loginProcess);
     // prepare context and execute application
     $loginAppDesc = new EyeosApplicationDescriptor('login');
     $appContext = new AppExecutionContext();
     $appContext->setApplicationDescriptor($loginAppDesc);
     $appContext->setIncludeBody(true);
     $appContext->setProcess($loginProcess);
     MMapGetApp::getInstance()->processRequest(MMapManager::getCurrentRequest(), $response, $appContext);
 }
Exemple #12
0
 public static function viewTempImg($params)
 {
     $parts = explode('_', $params);
     $filepath = 'home:///';
     $myFile = FSI::getFile($filepath);
     $myFile->checkWritePermission();
     $myRealFile = $myFile->getRealFile();
     $fileNameDestination = AdvancedPathLib::getPhpLocalHackPath($myRealFile->getPath());
     $fileNameDestination .= '/.office/' . utf8_basename($parts[0]) . '/' . utf8_basename($params);
     $info = pathinfo($fileNameDestination);
     $myExt = strtolower($info['extension']);
     $response = MMapManager::getCurrentResponse();
     header('Content-Type: image/' . $myExt);
     header('Content-Length: ' . filesize($fileNameDestination));
     header('Accept-Ranges: bytes');
     header('X-Pad: avoid browser bug');
     readfile($fileNameDestination);
     exit;
 }
Exemple #13
0
 public static function getImg($path)
 {
     if (dirname($path) == 'images') {
         $name = utf8_basename($path);
         $info = pathinfo($path);
         $filepath = 'home:///';
         $myFile = FSI::getFile($filepath);
         $myRealFile = $myFile->getRealFile();
         $fileNameDestination = AdvancedPathLib::getPhpLocalHackPath($myRealFile->getPath());
         $fileNameDestination .= '/.office/documents/' . ProcManager::getInstance()->getCurrentProcess()->getPid();
         $fileNameDestination .= '/images/' . $name;
         header('Content-Type: image/' . $info['extension']);
         header('Content-Length: ' . filesize($fileNameDestination));
         header('Accept-Ranges: bytes');
         header('X-Pad: avoid browser bug');
         readfile($fileNameDestination);
         exit;
     } else {
         $myFile = FSI::getFile($path);
         $len = $myFile->getSize();
         $response = MMapManager::getCurrentResponse();
         $myExt = strtolower($myFile->getExtension());
         // setting headers
         $response->getHeaders()->append('Content-Type: image/' . $myExt);
         $response->getHeaders()->append('Content-Length: ' . $len);
         $response->getHeaders()->append('Accept-Ranges: bytes');
         $response->getHeaders()->append('X-Pad: avoid browser bug');
         // preparing the rendering of the response (with the content of target file)
         $response->setBodyRenderer(new FileReaderBodyRenderer($myFile->getInputStream()));
     }
 }
 public function getAvatarPicture($params)
 {
     $userId = $params[0];
     $user = UMManager::getInstance()->getUserById($params['userId']);
     $settings = MetaManager::getInstance()->retrieveMeta($user);
     $file = null;
     if ($settings->get('eyeos.user.picture.url') !== null) {
         $file = FSI::getFile($settings->get('eyeos.user.picture.url'));
     }
     if ($file === null || !$file->isReadable()) {
         $file = FSI::getFile('sys:///extern/images/empty_profile.png');
     }
     $response = MMapManager::getCurrentResponse();
     $bodyrenderer = new FileReaderBodyRenderer($file->getInputStream());
     // Set headers
     $response->getHeaders()->append('Content-Type: ' . mime_content_type($file->getName()));
     $response->getHeaders()->append('Content-Length: ' . $file->getSize());
     $response->getHeaders()->append('Accept-Ranges: bytes');
     $response->getHeaders()->append('X-Pad: avoid browser bug');
     $response->setBodyRenderer($bodyrenderer);
 }
Exemple #15
0
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     self::$Logger->debug('Processing request: ' . $request);
     self::$CurrentRequest = $request;
     self::$CurrentResponse = $response;
     try {
         $managerFound = false;
         foreach ($this->getAllMMapManagers() as $MMapManagerName) {
             $myManager = call_user_func(array($MMapManagerName, 'getInstance'));
             if ($myManager->checkRequest($request)) {
                 $managerFound = true;
                 $myManager->processRequest($request, $response);
                 break;
             }
         }
         // default manager => draw initial screen
         if (!$managerFound) {
             $myManager = MMapScreen::getInstance();
             $myManager->processRequest($request, $response);
         }
     } catch (Exception $e) {
         $response->getHeaders()->append('Content-type:text/plain');
         self::$Logger->error('Uncaught exception while processing request: ' . $request);
         self::$Logger->error('Exception message: ' . $e->getMessage() . ' [' . $e->getFile() . ' - l.' . $e->getLine() . ']');
         self::$Logger->error(ExceptionStackUtil::getStackTrace($e, false));
         if ($e instanceof EyeSessionExpiredException) {
             $controlMessageBodyRenderer = new ControlMessageBodyRenderer(ControlMessageBodyRenderer::TYPE_SESSION_EXPIRED);
         } else {
             $controlMessageBodyRenderer = new ControlMessageBodyRenderer(ControlMessageBodyRenderer::TYPE_EXCEPTION, $e);
         }
         $response->setBodyRenderer($controlMessageBodyRenderer);
     }
     if (self::$Logger->isInfoEnabled()) {
         self::$Logger->info('Finished processing request: ' . $request . ', preparing to render response...');
         if (self::$Logger->isDebugEnabled()) {
             self::$Logger->debug((string) $response);
         }
     }
     $this->handleClientMessageQueue($response);
     $this->renderResponse($response);
     if (self::$Logger->isInfoEnabled()) {
         self::$Logger->info('Finished rendering response');
     }
 }
Exemple #16
0
    /**
     * Create a HTML page with a full preview of the document
     * 
     * @param Array (
     *		hash => string,			directory inside .office home of the user
     *		images => Array ()		filenames of full size images
     *		actualPage => integer	index of actual page
     * )
     * 
     */
    public static function createHtmlFullDocumentPreview($params)
    {
        if ($params === null || !is_array($params)) {
            throw new EyeInvalidArgumentException('Missing or invalid $params');
        }
        if (!isset($params['checknum'])) {
            throw new EyeInvalidArgumentException('Missing or invalid $params[\'checknum\']');
        }
        if (!isset($params['hash'])) {
            throw new EyeInvalidArgumentException('Missing or invalid $params[\'hash\']');
        }
        if (!isset($params['filename'])) {
            throw new EyeInvalidArgumentException('Missing or invalid $params[\'filename\']');
        }
        if (!isset($params['index'])) {
            throw new EyeInvalidArgumentException('Missing or invalid $params[\'index\']');
        }
        if (!isset($params['pagescount'])) {
            throw new EyeInvalidArgumentException('Missing or invalid $params[\'index\']');
        }
        $checknum = $params['checknum'];
        $hash = $params['hash'];
        $filename = $params['filename'];
        $filenameBegin = substr($filename, 0, strpos($filename, '-') + 1);
        $filenameEnd = strchr($filename, '.');
        $index = $params['index'];
        $pagesCount = $params['pagescount'];
        $linkSkel = 'index.php?message=createHtmlFullDocumentPreview&mobile=1&checknum=' . $checknum . '&params[checknum]=' . $checknum . '&params[hash]=' . $hash . '&params[filename]=' . $filenameBegin . '%pagenumber%' . $filenameEnd . '&params[index]=%pagenumber%&params[pagescount]=' . $pagesCount;
        $headerParams = array('pages' => array(), 'actualPage' => $index);
        //Create pages links
        for ($i = 0; $i < $pagesCount; ++$i) {
            $newLink = str_replace('%pagenumber%', $i, $linkSkel);
            $headerParams['pages'][] = array('url' => $newLink, 'name' => 'Page ' . (string) ($i + 1));
        }
        // Disabled next / prev / Select if we are just showing one page
        if ($pagesCount == 1) {
            $headerParams['showBackButton'] = false;
            $headerParams['showNextButton'] = false;
            $headerParams['showSelectButton'] = false;
        }
        $imageUrl = 'index.php?message=getScaledImageByHash&mobile=1&checknum=' . $checknum . '&params[hash]=' . $hash . '&params[filename]=' . $filename;
        $imageUrl = str_replace('"', '', $imageUrl);
        $html = '
			<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
			<html>
			  <head>
				<title>eyeOS mobile version</title>
				<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
				<!--<meta name="viewport" content="initial-scale=0.7"/>-->
				
				<link rel="stylesheet" href="eyeos/extern/js/jquery/lib/jquerymobile/jquery.mobile-1.0a3.css" />
				<!-- <link rel="stylesheet" href="eyeos/extern/js/jquery/lib/jquerymobile/jquery.mobile-1.0a3.min.css" /> -->
				<link rel="icon" type="image/png" href="index.php?extern=images/favicon.png" />
				<style type="text/css">
					body {
						width:				100%;
						padding:			0;
						margin:				0;
						background-color:	#CCCCCC;
					}
					#page_Container {
						margin-bottom:		30px;
						padding-top:		60px;
					}
					#page {
						max-width:			98%;
						width:				98%;
					}
				</style>
			  </head>
			  <body>' . self::createHtmlNavigationHeader($headerParams) . '<center id="page_Container">
					<img id="page" src="' . $imageUrl . '" />
				</center>
			</body>
			</html>';
        $response = MMapManager::getCurrentResponse();
        $response->setBody($html);
    }
 /**
  * @param array(
  * 		'workgroupId' => workgroupId
  * )
  */
 public function getWorkgroupPicture($params)
 {
     if (!isset($params['workgroupId']) || !is_string($params['workgroupId'])) {
         throw new EyeInvalidArgumentException('Missing or invalid $params[\'workgroupId\'].');
     }
     $workgroup = UMManager::getInstance()->getWorkgroupById($params['workgroupId']);
     $settings = MetaManager::getInstance()->retrieveMeta($workgroup);
     $file = null;
     if ($settings->get('eyeos.workgroup.picture.url') !== null) {
         $file = FSI::getFile($settings->get('eyeos.workgroup.picture.url'));
     }
     if ($file === null || !$file->isReadable()) {
         $file = FSI::getFile('sys:///extern/images/workgroup-empty.png');
     }
     $response = MMapManager::getCurrentResponse();
     $bodyrenderer = new FileReaderBodyRenderer($file->getInputStream());
     // Set headers
     $response->getHeaders()->append('Content-Type: image/' . $file->getExtension());
     $response->getHeaders()->append('Content-Length: ' . $file->getSize());
     $response->getHeaders()->append('Accept-Ranges: bytes');
     $response->getHeaders()->append('X-Pad: avoid browser bug');
     $response->setBodyRenderer($bodyrenderer);
 }
Exemple #18
0
 public static function getImg($path)
 {
     $myFile = FSI::getFile($path);
     $len = $myFile->getSize();
     $response = MMapManager::getCurrentResponse();
     $myExt = strtolower($myFile->getExtension());
     // setting headers
     $response->getHeaders()->append('Content-Type: image/' . $myExt);
     $response->getHeaders()->append('Content-Length: ' . $len);
     $response->getHeaders()->append('Accept-Ranges: bytes');
     $response->getHeaders()->append('X-Pad: avoid browser bug');
     // preparing the rendering of the response (with the content of target file)
     $response->setBodyRenderer(new FileReaderBodyRenderer($myFile->getInputStream()));
 }
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     ob_start('mb_output_handler');
     MMapManager::startSession();
     // restore process context
     $myProcManager = ProcManager::getInstance();
     $myProcess = $myProcManager->getProcessByChecknum($request->getGET('checknum'));
     $myProcManager->setCurrentProcess($myProcess);
     // process request
     $externFile = FSI::getFile('sys:///' . APPS_DIR . '/' . $request->getGET('appName') . '/' . $request->getGET('appFile'));
     $type = $request->issetGET('type') ? $request->getGET('type') : '';
     if (strpos($externFile->getAbsolutePath(), 'sys:///' . APPS_DIR . '/') === 0) {
         $myExt = $externFile->getExtension();
         if ($externFile->isReadable()) {
             $len = $externFile->getSize();
             if ($type == 'text') {
                 $response->getHeaders()->append('Content-type: text/plain');
             } else {
                 if ($type == 'js' || $myExt == 'js') {
                     $response->getHeaders()->append('Content-type: text/javascript');
                 } else {
                     if ($myExt == 'htm' || $myExt == 'html' || $myExt == 'xhtml') {
                         $response->getHeaders()->append('Content-type: text/html');
                     } else {
                         if ($type == 'image' && !empty($myExt) || $myExt == 'png' || $myExt == 'jpg' || $myExt == 'gif') {
                             $response->getHeaders()->append('Content-Type: image/' . $myExt);
                         } else {
                             if ($type == 'download') {
                                 $response->getHeaders()->append('Content-Type: application/force-download');
                                 $response->getHeaders()->append('Content-Description: File Transfer');
                                 $response->getHeaders()->append('Content-Disposition: attachment; filename="' . $externFile->getName() . '"');
                             } else {
                                 if ($type == 'css' || $myExt == 'css') {
                                     $response->getHeaders()->append(array('Content-type: text/css', true));
                                 } else {
                                     if ($type == 'xml' || $myExt == 'xml' || $myExt == 'xsl') {
                                         $response->getHeaders()->append('Content-type: text/xml');
                                     } else {
                                         if ($type == 'swf' || $myExt == 'swf') {
                                             $response->getHeaders()->append('Content-type: application/x-shockwave-flash');
                                         } else {
                                             if ($type == 'mp3' || $myExt == 'mp3') {
                                                 $response->getHeaders()->append('Content-type: audio/mpeg3');
                                             } else {
                                                 if ($type == 'mp4' || $myExt == 'mp4') {
                                                     $response->getHeaders()->append('Content-type: video/mp4');
                                                 } else {
                                                     if ($type == 'flv' || $myExt == 'flv') {
                                                         $response->getHeaders()->append('Content-type: video/x-flv');
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             $response->getHeaders()->append('Content-Length: ' . $len);
             $response->getHeaders()->append('Accept-Ranges: bytes');
             $response->getHeaders()->append('X-Pad: avoid browser bug');
             $response->getHeaders()->append('Cache-Control: ');
             $response->getHeaders()->append('pragma: ');
             if (self::$Logger->isDebugEnabled()) {
                 self::$Logger->debug('Preparing to output file: ' . $externFile->getAbsolutePath());
             }
             $response->setBodyRenderer(new FileReaderBodyRenderer($externFile->getInputStream()));
         }
     } else {
         self::$Logger->warn('Illegal path given: ' . $externFile->getAbsolutePath() . '. Operation cancelled.');
     }
 }