|
System | : | Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686 |
Software | : | Apache. PHP/5.3.6-13ubuntu3.10 |
ID | : | uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
|
|
Safe Mode | : | OFF |
Open_Basedir | : | OFF |
Freespace | : | 24.4 GB of 70.42 GB (34.65%) |
|
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON |
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
|
[ System Info ]
[ Processes ]
[ SQL Manager ]
[ Eval ]
[ Encoder ]
[ Mailer ]
[ Back Connection ]
[ Backdoor Server ]
[ Kernel Exploit Search ]
[ MD5 Decrypter ]
[ Reverse IP ]
[ Kill Shell ]
[ FTP Brute-Force ]
|
|
/
http/
mail/
program/
include/
- drwxr-xr-x
|
Viewing file: rcmail_output_json.php (7.33 KB) -rw-r--r--Select action/file-type:  ( +) |  ( +) |  ( +) | Code ( +) | Session ( +) |  ( +) | SDB ( +) |  ( +) |  ( +) |  ( +) |  ( +) |  ( +) |
<?php
/* +-----------------------------------------------------------------------+ | program/include/rcmail_output_json.php | | | | This file is part of the Roundcube Webmail client | | Copyright (C) 2008-2012, The Roundcube Dev Team | | | | Licensed under the GNU General Public License version 3 or | | any later version with exceptions for skins & plugins. | | See the README file for a full license statement. | | | | PURPOSE: | | Class to handle JSON (AJAX) output | +-----------------------------------------------------------------------+ | Author: Thomas Bruederli <roundcube@gmail.com> | | Author: Aleksander Machniak <alec@alec.pl> | +-----------------------------------------------------------------------+ */
/** * View class to produce JSON responses * * @package Core * @subpackage View */ class rcmail_output_json extends rcmail_output { protected $texts = array(); protected $commands = array(); protected $callbacks = array(); protected $message = null;
public $type = 'js'; public $ajax_call = true;
/** * Issue command to set page title * * @param string $title New page title */ public function set_pagetitle($title) { if ($this->config->get('devel_mode') && !empty($_SESSION['username'])) $name = $_SESSION['username']; else $name = $this->config->get('product_name');
$this->command('set_pagetitle', empty($name) ? $title : $name.' :: '.$title); }
/** * Register a template object handler * * @param string $obj Object name * @param string $func Function name to call */ public function add_handler($obj, $func) { // ignore }
/** * Register a list of template object handlers * * @param array $arr Hash array with object=>handler pairs */ public function add_handlers($arr) { // ignore }
/** * Call a client method * * @param string Method to call * @param ... Additional arguments */ public function command() { $cmd = func_get_args();
if (strpos($cmd[0], 'plugin.') === 0) $this->callbacks[] = $cmd; else $this->commands[] = $cmd; }
/** * Add a localized label to the client environment */ public function add_label() { $args = func_get_args(); if (count($args) == 1 && is_array($args[0])) $args = $args[0];
foreach ($args as $name) { $this->texts[$name] = $this->app->gettext($name); } }
/** * Invoke display_message command * * @param string $message Message to display * @param string $type Message type [notice|confirm|error] * @param array $vars Key-value pairs to be replaced in localized text * @param boolean $override Override last set message * @param int $timeout Message displaying time in seconds * @uses self::command() */ public function show_message($message, $type='notice', $vars=null, $override=true, $timeout=0) { if ($override || !$this->message) { if ($this->app->text_exists($message)) { if (!empty($vars)) { $vars = array_map(array('rcmail', 'Q'), $vars); } $msgtext = $this->app->gettext(array('name' => $message, 'vars' => $vars)); } else $msgtext = $message;
$this->message = $message; $this->command('display_message', $msgtext, $type, $timeout * 1000); } }
/** * Delete all stored env variables and commands */ public function reset() { parent::reset(); $this->texts = array(); $this->commands = array(); }
/** * Redirect to a certain url * * @param mixed $p Either a string with the action or url parameters as key-value pairs * @param int $delay Delay in seconds * @see rcmail::url() */ public function redirect($p = array(), $delay = 1) { $location = $this->app->url($p); $this->remote_response(sprintf("window.setTimeout(function(){ %s.redirect('%s',true); }, %d);", self::JS_OBJECT_NAME, $location, $delay)); exit; }
/** * Send an AJAX response to the client. */ public function send() { $this->remote_response(); exit; }
/** * Show error page and terminate script execution * * @param int $code Error code * @param string $message Error message */ public function raise_error($code, $message) { $this->show_message("Application Error ($code): $message", 'error'); $this->remote_response(); exit; }
/** * Send an AJAX response with executable JS code * * @param string $add Additional JS code * @param boolean True if output buffer should be flushed * @return void * @deprecated */ protected function remote_response($add='') { static $s_header_sent = false;
if (!$s_header_sent) { $s_header_sent = true; $this->nocacheing_headers(); header('Content-Type: text/plain; charset=' . $this->get_charset()); }
// unset default env vars unset($this->env['task'], $this->env['action'], $this->env['comm_path']);
$rcmail = rcmail::get_instance(); $response['action'] = $rcmail->action;
if ($unlock = rcube_utils::get_input_value('_unlock', rcube_utils::INPUT_GPC)) { $response['unlock'] = $unlock; }
if (!empty($this->env)) $response['env'] = $this->env;
if (!empty($this->texts)) $response['texts'] = $this->texts;
// send function calls $response['exec'] = $this->get_js_commands() . $add;
if (!empty($this->callbacks)) $response['callbacks'] = $this->callbacks;
// trigger generic hook where plugins can put additional content to the response $hook = $this->app->plugins->exec_hook("render_response", array('response' => $response));
// save some memory $response = $hook['response']; unset($hook['response']);
echo self::json_serialize($response); }
/** * Return executable javascript code for all registered commands * * @return string $out */ protected function get_js_commands() { $out = '';
foreach ($this->commands as $i => $args) { $method = array_shift($args); foreach ($args as $i => $arg) { $args[$i] = self::json_serialize($arg); }
$out .= sprintf( "this.%s(%s);\n", preg_replace('/^parent\./', '', $method), implode(',', $args) ); }
return $out; } }
|