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)); } }
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)); } }
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 }
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));
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; }
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> <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> <img style="position:relative;top:15px"src="index.php?extern=/images/48x48/actions/dialog-close.png" />Error uploading files: ' . $e->getMessage() . '</center>'; exit; } }
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); }
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; }
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); }
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'); } }
/** * 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 . '¶ms[checknum]=' . $checknum . '¶ms[hash]=' . $hash . '¶ms[filename]=' . $filenameBegin . '%pagenumber%' . $filenameEnd . '¶ms[index]=%pagenumber%¶ms[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 . '¶ms[hash]=' . $hash . '¶ms[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); }
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.'); } }