Aleksander Machniak
2016-05-18 930a3ceac0aeb42474fb0a6129517aaa15b794b4
program/lib/Roundcube/rcube.php
@@ -505,7 +505,7 @@
        }
        ini_set('session.cookie_secure', $is_secure);
        ini_set('session.name', $sess_name ? $sess_name : 'roundcube_sessid');
        ini_set('session.name', $sess_name ?: 'roundcube_sessid');
        ini_set('session.use_cookies', 1);
        ini_set('session.use_only_cookies', 1);
        ini_set('session.cookie_httponly', 1);
@@ -601,7 +601,7 @@
            $attrib = array('name' => $attrib);
        }
        $name = $attrib['name'] ? $attrib['name'] : '';
        $name = (string) $attrib['name'];
        // attrib contain text values: use them from now
        if (($setval = $attrib[strtolower($_SESSION['language'])]) || ($setval = $attrib['en_us'])) {
@@ -619,7 +619,7 @@
        // replace vars in text
        if (is_array($attrib['vars'])) {
            foreach ($attrib['vars'] as $var_key => $var_value) {
                $text = str_replace($var_key[0]!='$' ? '$'.$var_key : $var_key, $var_value, $text);
                $text = str_replace($var_key[0] != '$' ? '$'.$var_key : $var_key, $var_value, $text);
            }
        }
@@ -685,7 +685,7 @@
     */
    public function load_language($lang = null, $add = array(), $merge = array())
    {
        $lang = $this->language_prop(($lang ? $lang : $_SESSION['language']));
        $lang = $this->language_prop($lang ?: $_SESSION['language']);
        // load localized texts
        if (empty($this->texts) || $lang != $_SESSION['language']) {
@@ -1142,12 +1142,16 @@
        // trigger logging hook
        if (is_object(self::$instance) && is_object(self::$instance->plugins)) {
            $log  = self::$instance->plugins->exec_hook('write_log', array('name' => $name, 'date' => $date, 'line' => $line));
            $log = self::$instance->plugins->exec_hook('write_log',
                array('name' => $name, 'date' => $date, 'line' => $line));
            $name = $log['name'];
            $line = $log['line'];
            $date = $log['date'];
            if ($log['abort'])
            if ($log['abort']) {
                return true;
            }
        }
        // add session ID to the log
@@ -1169,32 +1173,25 @@
        // per-user logging is activated
        if (self::$instance && self::$instance->config->get('per_user_logging', false) && self::$instance->get_user_id()) {
            $log_dir = self::$instance->get_user_log_dir();
            if (empty($log_dir))
            if (empty($log_dir) && $name != 'errors') {
                return false;
            }
        }
        else if (!empty($log['dir'])) {
            $log_dir = $log['dir'];
        }
        else if (self::$instance) {
            $log_dir = self::$instance->config->get('log_dir');
        if (empty($log_dir)) {
            if (!empty($log['dir'])) {
                $log_dir = $log['dir'];
            }
            else if (self::$instance) {
                $log_dir = self::$instance->config->get('log_dir');
            }
        }
        if (empty($log_dir)) {
            $log_dir = RCUBE_INSTALL_PATH . 'logs';
        }
        // try to open specific log file for writing
        $logfile = $log_dir.'/'.$name;
        if ($fp = @fopen($logfile, 'a')) {
            fwrite($fp, $line);
            fflush($fp);
            fclose($fp);
            return true;
        }
        trigger_error("Error writing to log file $logfile; Please check permissions", E_USER_WARNING);
        return false;
        return file_put_contents("$log_dir/$name", $line, FILE_APPEND) !== false;
    }
    /**
@@ -1267,7 +1264,7 @@
     */
    public static function log_bug($arg_arr)
    {
        $program = strtoupper(!empty($arg_arr['type']) ? $arg_arr['type'] : 'php');
        $program = strtoupper($arg_arr['type'] ?: 'php');
        $level   = self::get_instance()->config->get('debug_level');
        // disable errors for ajax requests, write to log instead (#1487831)
@@ -1277,11 +1274,18 @@
        // write error to local log file
        if (($level & 1) || !empty($arg_arr['fatal'])) {
            $post_query = '';
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                $post_query = '?_task='.urlencode($_POST['_task']).'&_action='.urlencode($_POST['_action']);
            }
            else {
                $post_query = '';
                foreach (array('_task', '_action') as $arg) {
                    if ($_POST[$arg] && !$_GET[$arg]) {
                        $post_query[$arg] = $_POST[$arg];
                    }
                }
                if (!empty($post_query)) {
                    $post_query = (strpos($_SERVER['REQUEST_URI'], '?') != false ? '&' : '?')
                        . http_build_query($post_query, '', '&');
                }
            }
            $log_entry = sprintf("%s Error: %s%s (%s %s)",
@@ -1493,6 +1497,7 @@
                $host = preg_replace('/:[0-9]+$/', '', $host);
                if ($host && preg_match('/\.[a-z]+$/i', $host)) {
                    $domain_part = $host;
                    break;
                }
            }
        }
@@ -1674,18 +1679,10 @@
     */
    protected function message_head($message, $unset = array())
    {
        // Mail_mime >= 1.9.0
        if (method_exists($message, 'isMultipart')) {
            foreach ($unset as $header) {
                $headers[$header] = null;
            }
        }
        else {
            $headers = $message->headers();
            foreach ($unset as $header) {
                unset($headers[$header]);
            }
            $message->_headers = array();
        // requires Mail_mime >= 1.9.0
        $headers = array();
        foreach ((array) $unset as $header) {
            $headers[$header] = null;
        }
        return $message->txtHeaders($headers, true);