private function clear_topics_subject($topic_subject, $stop_list_fancy_simtopics, $lang = 'English')
 {
     $word_list = array();
     $topic_subject = forum_trim(preg_replace('/[ \\t]+/', ' ', $topic_subject));
     // strip extra whitespaces and tabs
     // REMOVE SHORT
     if (!empty($topic_subject)) {
         // Put all unique words in the title into an array, and remove uppercases
         $word_list = array_unique(explode(' ', utf8_strtolower($topic_subject)));
         if ($lang != 'English') {
             foreach ($word_list as $key => $word) {
                 // Lets eliminate all words of 2 characters or less
                 if (utf8_strlen(forum_trim($word)) < 3) {
                     unset($word_list[$key]);
                 }
             }
         }
     }
     // Remove any stop words from our array
     if (!empty($word_list) && !empty($stop_list_fancy_simtopics)) {
         // MAKE STOPLIST lowercased
         function _makeitlow($value)
         {
             return utf8_strtolower($value);
         }
         $stop_list_fancy_simtopics = array_map('_makeitlow', $stop_list_fancy_simtopics);
         $word_list = array_diff($word_list, $stop_list_fancy_simtopics);
     }
     // Rebuild our cleaned up topic title
     $topic_subject = !empty($word_list) ? implode(' ', $word_list) : '';
     return $topic_subject;
 }
Example #2
0
function is_reserved_url($full_url)
{
    global $base_url, $forum_config;
    static $urls = array();
    if (empty($urls)) {
        $urls = explode("\n", $forum_config['o_hcs_redirect_links']);
        array_push($urls, $base_url);
    }
    foreach ($urls as $cur_url) {
        if (strlen($cur_url) > 0 && strlen($full_url)) {
            if (FALSE !== strpos(forum_trim($full_url), forum_trim($cur_url))) {
                return TRUE;
            }
        }
    }
    return FALSE;
}
 function fancy_css_src_cb($p)
 {
     global $fancy_css_base;
     $_m = array();
     $_a = explode(',', $p[1]);
     foreach ($_a as $b) {
         $b = forum_trim($b);
         $_b = explode('=', $b);
         if ($_b[0] == 'src') {
             $quoteChar = $_b[1][0] === "'" || $_b[1][0] === '"' ? $_b[1][0] : '';
             $url = $quoteChar === '' ? $_b[1] : substr($_b[1], 1, strlen($_b[1]) - 2);
             if (strpos($url, 'http') === 0 || strpos($url, '/') === 0 || strpos($url, 'ftp') === 0 || strpos($url, 'data:') === 0) {
                 // do nothing
             } else {
                 $_b[1] = "{$quoteChar}{$fancy_css_base}{$url}{$quoteChar}";
             }
         }
         array_push($_m, implode('=', $_b));
     }
     return 'AlphaImageLoader(' . implode(',', $_m) . ')';
 }
function forum_mail($to, $subject, $message, $reply_to_email = '', $reply_to_name = '')
{
    global $forum_config, $lang_common;
    // Default sender address
    $from_name = sprintf($lang_common['Forum mailer'], $forum_config['o_board_title']);
    $from_email = $forum_config['o_webmaster_email'];
    ($hook = get_hook('em_fn_forum_mail_start')) ? eval($hook) : null;
    // Do a little spring cleaning
    $to = forum_trim(preg_replace('#[\\n\\r]+#s', '', $to));
    $subject = forum_trim(preg_replace('#[\\n\\r]+#s', '', $subject));
    $from_email = forum_trim(preg_replace('#[\\n\\r:]+#s', '', $from_email));
    $from_name = forum_trim(preg_replace('#[\\n\\r:]+#s', '', str_replace('"', '', $from_name)));
    $reply_to_email = forum_trim(preg_replace('#[\\n\\r:]+#s', '', $reply_to_email));
    $reply_to_name = forum_trim(preg_replace('#[\\n\\r:]+#s', '', str_replace('"', '', $reply_to_name)));
    // Set up some headers to take advantage of UTF-8
    $from = "=?UTF-8?B?" . base64_encode($from_name) . "?=" . ' <' . $from_email . '>';
    $subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";
    $headers = 'From: ' . $from . "\r\n" . 'Date: ' . gmdate('r') . "\r\n" . 'MIME-Version: 1.0' . "\r\n" . 'Content-transfer-encoding: 8bit' . "\r\n" . 'Content-type: text/plain; charset=utf-8' . "\r\n" . 'X-Mailer: PunBB Mailer';
    // If we specified a reply-to email, we deal with it here
    if (!empty($reply_to_email)) {
        $reply_to = "=?UTF-8?B?" . base64_encode($reply_to_name) . "?=" . ' <' . $reply_to_email . '>';
        $headers .= "\r\n" . 'Reply-To: ' . $reply_to;
    }
    // Make sure all linebreaks are CRLF in message (and strip out any NULL bytes)
    $message = str_replace(array("\n", ""), array("\r\n", ''), forum_linebreaks($message));
    ($hook = get_hook('em_fn_forum_mail_pre_send')) ? eval($hook) : null;
    if ($forum_config['o_smtp_host'] != '') {
        smtp_mail($to, $subject, $message, $headers);
    } else {
        // Change the linebreaks used in the headers according to OS
        if (strtoupper(substr(PHP_OS, 0, 3)) == 'MAC') {
            $headers = str_replace("\r\n", "\r", $headers);
        } else {
            if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') {
                $headers = str_replace("\r\n", "\n", $headers);
            }
        }
        mail($to, $subject, $message, $headers);
    }
}
 public static function data_validation($question, &$poll_answers, &$poll_days, &$poll_votes, $read_unvote_users, $revote)
 {
     global $lang_pun_poll, $lang_common, $forum_config, $errors;
     $errors = array();
     if (empty($question)) {
         $errors[] = $lang_pun_poll['Empty question'];
     }
     if (empty($poll_answers) || !is_array($poll_answers)) {
         $errors[] = $lang_pun_poll['Empty answers'];
     }
     $answers = array();
     foreach ($poll_answers as $answer) {
         $ans = forum_trim($answer);
         if (!empty($ans)) {
             $answers[] = $ans;
         }
     }
     if (!empty($answers)) {
         $answers = array_unique($answers);
     }
     $poll_answers = $answers;
     if (count($poll_answers) < 2) {
         $errors[] = $lang_pun_poll['Min cnt options'];
     }
     if (count($poll_answers) > $forum_config['p_pun_poll_max_answers']) {
         $errors[] = sprintf($lang_pun_poll['Max cnt options'], $forum_config['p_pun_poll_max_answers']);
     }
     if ($poll_days !== FALSE && $poll_votes !== FALSE) {
         $errors[] = $lang_pun_poll['Days, votes count'];
     } else {
         if ($poll_days !== FALSE) {
             $poll_days = intval($poll_days) > 0 ? intval($poll_days) : FALSE;
             if (!$poll_days || $poll_days > 90) {
                 $errors[] = $lang_pun_poll['Days limit'];
             }
         } else {
             if ($poll_votes !== FALSE) {
                 $poll_votes = intval($poll_votes) > 0 ? intval($poll_votes) : FALSE;
                 if (!$poll_votes || $poll_votes > 500) {
                     $errors[] = $lang_pun_poll['Votes count'];
                 }
             }
         }
     }
     if ($read_unvote_users !== FALSE) {
         if (!$forum_config['p_pun_poll_enable_read'] || $read_unvote_users != 0 && $read_unvote_users != 1) {
             message($lang_common['Bad request']);
         }
     }
     if ($revote !== FALSE) {
         if (!$forum_config['p_pun_poll_enable_revote'] || $revote != 0 && $revote != 1) {
             message($lang_common['Bad request']);
         }
     }
 }
Example #6
0
if ($forum_user['language'] != 'English' && file_exists(FORUM_ROOT . 'extensions/fancy_tracker/lang/' . $forum_user['language'] . '/fancy_tracker.php')) {
    require FORUM_ROOT . 'extensions/fancy_tracker/lang/' . $forum_user['language'] . '/fancy_tracker.php';
} else {
    require FORUM_ROOT . 'extensions/fancy_tracker/lang/English/fancy_tracker.php';
}
$query = array('SELECT' => 'COUNT(*) AS enabled', 'FROM' => 'extensions', 'WHERE' => 'id=\'fancy_tracker\' AND disabled=0');
$result = $forum_db->query_build($query) or Fancy_Tracker::benc_error('Unable to check for extension.');
if ($forum_db->result($result) != '1') {
    message($lang_common['Bad request']);
}
if ($forum_user['g_use_tracker'] == '0') {
    message($lang_common['No view']);
}
$action = isset($_GET['action']) ? forum_trim($_GET['action']) : FALSE;
if ($action == 'get') {
    $info_hash = isset($_GET['hash']) ? forum_trim($_GET['hash']) : '';
    if (!Fancy_Tracker::is_info_hash($info_hash)) {
        message($lang_common['Bad request']);
    }
    if (!file_exists(FORUM_ROOT . 'extensions/fancy_tracker/torrents/' . $info_hash . '.torrent')) {
        message($lang_tracker['File not exists']);
    }
    $query = array('SELECT' => 't.name', 'FROM' => 'torrents AS t', 'WHERE' => 'UPPER(t.info_hash) = UPPER(\'' . $forum_db->escape($info_hash) . '\')');
    $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
    $name = $forum_db->result($result);
    if (is_null($name) || $name === false) {
        message($lang_common['Bad request']);
    }
    if (strlen($forum_user['passkey']) != 32) {
        $forum_user['passkey'] = md5($forum_user['salt'] . $forum_user['id'] . time() . $forum_user['username'] . $forum_user['password']);
        $query = array('UPDATE' => 'users', 'SET' => 'passkey=\'' . $forum_db->escape($forum_user['passkey']) . '\'', 'WHERE' => 'id=' . $forum_user['id']);
 /**
  * Транслит + убирает все лишние символы заменяя на символ $delimer
  *
  * @param unknown_type $string
  * @param unknown_type $delimer
  * @return unknown
  */
 private function normalize($string, $delimer = '-')
 {
     $string = strtr($string, $this->translate);
     return forum_trim(preg_replace('/[^\\w]+/i', $delimer, $string), $delimer);
 }
 private function prepare_message(&$errors)
 {
     if (!isset($_POST['req_message'])) {
         message(App::$lang_common['Bad request']);
     }
     $message = forum_linebreaks(forum_trim($_POST['req_message']));
     if ($message == '') {
         $errors[] = App::$lang['No message'];
     } else {
         if (strlen($message) > App::$forum_config['o_reputation_maxmessage']) {
             $errors[] = sprintf(App::$lang['Too long message'], App::$forum_config['o_reputation_maxmessage']);
         }
     }
     if (App::$forum_config['p_message_bbcode'] == '1' || App::$forum_config['o_make_links'] == '1') {
         if (!defined('FORUM_PARSER_LOADED')) {
             require FORUM_ROOT . 'include/parser.php';
         }
         $message = preparse_bbcode($message, $errors);
     }
     return $message;
 }
Example #9
0
function xml_to_array($raw_xml)
{
    $xml_parser = xml_parser_create();
    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($xml_parser, XML_OPTION_SKIP_WHITE, 0);
    xml_parse_into_struct($xml_parser, $raw_xml, $vals);
    xml_parser_free($xml_parser);
    $_tmp = '';
    foreach ($vals as $xml_elem) {
        $x_tag = $xml_elem['tag'];
        $x_level = $xml_elem['level'];
        $x_type = $xml_elem['type'];
        if ($x_level != 1 && $x_type == 'close') {
            if (isset($multi_key[$x_tag][$x_level])) {
                $multi_key[$x_tag][$x_level] = 1;
            } else {
                $multi_key[$x_tag][$x_level] = 0;
            }
        }
        if ($x_level != 1 && $x_type == 'complete') {
            if ($_tmp == $x_tag) {
                $multi_key[$x_tag][$x_level] = 1;
            }
            $_tmp = $x_tag;
        }
    }
    foreach ($vals as $xml_elem) {
        $x_tag = $xml_elem['tag'];
        $x_level = $xml_elem['level'];
        $x_type = $xml_elem['type'];
        if ($x_type == 'open') {
            $level[$x_level] = $x_tag;
        }
        $start_level = 1;
        $php_stmt = '$xml_array';
        if ($x_type == 'close' && $x_level != 1) {
            $multi_key[$x_tag][$x_level]++;
        }
        while ($start_level < $x_level) {
            $php_stmt .= '[$level[' . $start_level . ']]';
            if (isset($multi_key[$level[$start_level]][$start_level]) && $multi_key[$level[$start_level]][$start_level]) {
                $php_stmt .= '[' . ($multi_key[$level[$start_level]][$start_level] - 1) . ']';
            }
            ++$start_level;
        }
        $add = '';
        if (isset($multi_key[$x_tag][$x_level]) && $multi_key[$x_tag][$x_level] && ($x_type == 'open' || $x_type == 'complete')) {
            if (!isset($multi_key2[$x_tag][$x_level])) {
                $multi_key2[$x_tag][$x_level] = 0;
            } else {
                $multi_key2[$x_tag][$x_level]++;
            }
            $add = '[' . $multi_key2[$x_tag][$x_level] . ']';
        }
        if (isset($xml_elem['value']) && forum_trim($xml_elem['value']) != '' && !array_key_exists('attributes', $xml_elem)) {
            if ($x_type == 'open') {
                $php_stmt_main = $php_stmt . '[$x_type]' . $add . '[\'content\'] = $xml_elem[\'value\'];';
            } else {
                $php_stmt_main = $php_stmt . '[$x_tag]' . $add . ' = $xml_elem[\'value\'];';
            }
            eval($php_stmt_main);
        }
        if (array_key_exists('attributes', $xml_elem)) {
            if (isset($xml_elem['value'])) {
                $php_stmt_main = $php_stmt . '[$x_tag]' . $add . '[\'content\'] = $xml_elem[\'value\'];';
                eval($php_stmt_main);
            }
            foreach ($xml_elem['attributes'] as $key => $value) {
                $php_stmt_att = $php_stmt . '[$x_tag]' . $add . '[\'attributes\'][$key] = $value;';
                eval($php_stmt_att);
            }
        }
    }
    if (isset($xml_array)) {
        // Make sure there's an array of notes (even if there is only one)
        if (isset($xml_array['extension']['note'])) {
            if (!is_array(current($xml_array['extension']['note']))) {
                $xml_array['extension']['note'] = array($xml_array['extension']['note']);
            }
        } else {
            $xml_array['extension']['note'] = array();
        }
        // Make sure there's an array of hooks (even if there is only one)
        if (isset($xml_array['extension']['hooks']) && isset($xml_array['extension']['hooks']['hook'])) {
            if (!is_array(current($xml_array['extension']['hooks']['hook']))) {
                $xml_array['extension']['hooks']['hook'] = array($xml_array['extension']['hooks']['hook']);
            }
        }
    }
    return isset($xml_array) ? $xml_array : array();
}
Example #10
0
 public static function route($override_path = null)
 {
     if ($override_path == null and !isset($_GET['r'])) {
         return false;
     }
     if ($override_path == null) {
         $override_path = $_GET['r'];
     }
     $params = explode('/', preg_replace('/[^a-zA-Z0-9\\-_\\/]/', '', $override_path));
     foreach ($params as $key => $cur_param) {
         if (forum_trim($cur_param) == '') {
             message(App::$lang_common['Bad request']);
         }
         //unset ($params[$key]);
     }
     //unset($_GET['r']);
     $route['extension'] = array_shift($params);
     $route['controller'] = 'default';
     $route['action'] = 'index';
     $route['arguments'] = array();
     if (count($params) > 1) {
         $route['controller'] = array_shift($params);
         $route['action'] = array_shift($params);
         if (count($params) > 0) {
             $route['arguments'] = $params;
         }
     } else {
         $route['controller'] = array_shift($params);
     }
     /*
      * TODO
      * Check action. If preffixed "_" then to deny access.
      * Or refactoring with replace action calling only with preffix 'action_' on class method
      * 
      *  */
     $controller_name = $route['extension'] . '_controller_' . $route['controller'];
     self::$controller_instance = new $controller_name(FORUM_ROOT . 'extensions' . DS . $route['extension'] . DS);
     self::$controller_instance->self_url = App::$base_url . '/extensions/' . $route['extension'];
     // self::$controller_instance->attach ( Logger::get_instance(FORUM_CACHE_DIR.'controller_log.txt'));
     /*
      * TODO
      * Arguments must be pairs: key->value
      * Need check
      */
     if (!empty($route['arguments'])) {
         $params_count = count($route['arguments']);
         $i = 0;
         do {
             self::$controller_instance->__set($route['arguments'][$i], $route['arguments'][++$i]);
         } while (++$i < $params_count - 1);
     }
     if (method_exists(self::$controller_instance, $route['action'])) {
         call_user_func(array(self::$controller_instance, $route['action']));
     } else {
         message('Invalid action <strong>' . forum_htmlencode($route['action']) . '</strong> on controller ' . forum_htmlencode($controller_name));
     }
     defined('FORUM_PAGE') or define('FORUM_PAGE', self::$controller_instance->page);
     defined('FORUM_PAGE_SECTION') or define('FORUM_PAGE_SECTION', self::$controller_instance->section);
     extract($GLOBALS, EXTR_REFS);
     if (View::$instance) {
         if (View::$forum_override) {
             echo View::$instance->render();
         } else {
             require FORUM_ROOT . 'header.php';
             ob_start();
             echo View::$instance->render();
             $tpl_temp = forum_trim(ob_get_contents());
             $tpl_main = str_replace('<!-- forum_main -->', $tpl_temp, $tpl_main);
             ob_end_clean();
             require FORUM_ROOT . 'footer.php';
         }
     }
     die;
 }
Example #11
0
function generate_ext_versions_cache($inst_exts, $repository_urls, $repository_url_by_extension)
{
    $forum_ext_last_versions = array();
    $forum_ext_repos = array();
    foreach (array_unique(array_merge($repository_urls, $repository_url_by_extension)) as $url) {
        //Get repository timestamp
        $remote_file = get_remote_file($url . '/timestamp', 2);
        $repository_timestamp = empty($remote_file['content']) ? '' : forum_trim($remote_file['content']);
        unset($remote_file);
        if (!is_numeric($repository_timestamp)) {
            continue;
        }
        if (!isset($forum_ext_repos[$url]['timestamp'])) {
            $forum_ext_repos[$url]['timestamp'] = $repository_timestamp;
        }
        if ($forum_ext_repos[$url]['timestamp'] <= $repository_timestamp) {
            foreach ($inst_exts as $ext) {
                $remote_file = get_remote_file($url . '/' . $ext['id'] . '/lastversion', 2);
                $version = empty($remote_file['content']) ? '' : forum_trim($remote_file['content']);
                unset($remote_file);
                if (empty($version) || !preg_match('~^[0-9a-zA-Z\\. +-]+$~u', $version)) {
                    continue;
                }
                $forum_ext_repos[$url]['extension_versions'][$ext['id']] = $version;
                //If key with current extension exist in array, compare it with version in rep-ry
                if (!isset($forum_ext_last_versions[$ext['id']]) || version_compare($forum_ext_last_versions[$ext['id']]['version'], $version, '<')) {
                    $forum_ext_last_versions[$ext['id']] = array('version' => $version, 'repo_url' => $url);
                    $remote_file = get_remote_file($url . '/' . $ext['id'] . '/lastchanges', 2);
                    $last_changes = empty($remote_file['content']) ? '' : forum_trim($remote_file['content']);
                    unset($remote_file);
                    if (!empty($last_changes)) {
                        $forum_ext_last_versions[$ext['id']]['changes'] = $last_changes;
                    }
                }
            }
            //Write timestamp to cache
            $forum_ext_repos[$url]['timestamp'] = $repository_timestamp;
        }
    }
    if (array_keys($forum_ext_last_versions) != array_keys($inst_exts)) {
        foreach ($inst_exts as $ext) {
            if (!in_array($ext['id'], array_keys($forum_ext_last_versions))) {
                $forum_ext_last_versions[$ext['id']] = array('version' => $ext['version'], 'repo_url' => '', 'changes' => '');
            }
        }
    }
    ($hook = get_hook('ch_generate_ext_versions_cache_check_repository')) ? eval($hook) : null;
    // Output config as PHP code
    $fh = @fopen(FORUM_CACHE_DIR . 'cache_ext_version_notifications.php', 'wb');
    if (!$fh) {
        error('Unable to write configuration cache file to cache directory. Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
    }
    fwrite($fh, '<?php' . "\n\n" . 'if (!defined(\'FORUM_EXT_VERSIONS_LOADED\')) define(\'FORUM_EXT_VERSIONS_LOADED\', 1);' . "\n\n" . '$forum_ext_repos = ' . var_export($forum_ext_repos, true) . ';' . "\n\n" . ' $forum_ext_last_versions = ' . var_export($forum_ext_last_versions, true) . ";\n\n" . '$forum_ext_versions_update_cache = ' . time() . ";\n\n" . '?>');
    fclose($fh);
}
Example #12
0
 function get_table_info($table_name, $no_prefix = false)
 {
     // Grab table info
     $result = $this->query('SELECT sql FROM sqlite_master WHERE tbl_name = \'' . ($no_prefix ? '' : $this->prefix) . $this->escape($table_name) . '\' ORDER BY type DESC') or error(__FILE__, __LINE__);
     $table = array();
     $table['indices'] = array();
     $num_rows = 0;
     while ($cur_index = $this->fetch_assoc($result)) {
         if (!isset($table['sql'])) {
             $table['sql'] = $cur_index['sql'];
         } else {
             $table['indices'][] = $cur_index['sql'];
         }
         ++$num_rows;
     }
     // Check for empty
     if ($num_rows < 1) {
         return;
     }
     // Work out the columns in the table currently
     $table_lines = explode("\n", $table['sql']);
     $table['columns'] = array();
     foreach ($table_lines as $table_line) {
         $table_line = forum_trim($table_line);
         if (substr($table_line, 0, 12) == 'CREATE TABLE') {
             continue;
         } else {
             if (substr($table_line, 0, 11) == 'PRIMARY KEY') {
                 $table['primary_key'] = $table_line;
             } else {
                 if (substr($table_line, 0, 6) == 'UNIQUE') {
                     $table['unique'] = $table_line;
                 } else {
                     if (substr($table_line, 0, strpos($table_line, ' ')) != '') {
                         $table['columns'][substr($table_line, 0, strpos($table_line, ' '))] = forum_trim(substr($table_line, strpos($table_line, ' ')));
                     }
                 }
             }
         }
     }
     return $table;
 }
function redirect($destination_url, $message)
{
    global $forum_db, $forum_config, $lang_common, $forum_user, $base_url, $forum_loader;
    define('FORUM_PAGE', 'redirect');
    ($hook = get_hook('fn_redirect_start')) ? eval($hook) : null;
    // Prefix with base_url (unless it's there already)
    if (strpos($destination_url, 'http://') !== 0 && strpos($destination_url, 'https://') !== 0 && strpos($destination_url, '/') !== 0) {
        $destination_url = $base_url . '/' . $destination_url;
    }
    // Do a little spring cleaning
    $destination_url = preg_replace('/([\\r\\n])|(%0[ad])|(;[\\s]*data[\\s]*:)/i', '', $destination_url);
    // If the delay is 0 seconds, we might as well skip the redirect all together
    if ($forum_config['o_redirect_delay'] == '0') {
        header('Location: ' . str_replace('&amp;', '&', $destination_url));
    }
    // Send no-cache headers
    header('Expires: Thu, 21 Jul 1977 07:30:00 GMT');
    // When yours truly first set eyes on this world! :)
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: post-check=0, pre-check=0', false);
    header('Pragma: no-cache');
    // For HTTP/1.0 compability
    // Send the Content-type header in case the web server is setup to send something else
    header('Content-type: text/html; charset=utf-8');
    // Load the redirect template
    if (file_exists(FORUM_ROOT . 'style/' . $forum_user['style'] . '/redirect.tpl')) {
        $tpl_path = FORUM_ROOT . 'style/' . $forum_user['style'] . '/redirect.tpl';
    } else {
        $tpl_path = FORUM_ROOT . 'include/template/redirect.tpl';
    }
    ($hook = get_hook('fn_redirect_pre_template_loaded')) ? eval($hook) : null;
    $tpl_redir = forum_trim(file_get_contents($tpl_path));
    ($hook = get_hook('fn_redirect_template_loaded')) ? eval($hook) : null;
    // START SUBST - <!-- forum_local -->
    $tpl_redir = str_replace('<!-- forum_local -->', 'xml:lang="' . $lang_common['lang_identifier'] . '" lang="' . $lang_common['lang_identifier'] . '" dir="' . $lang_common['lang_direction'] . '"', $tpl_redir);
    // END SUBST - <!-- forum_local -->
    // START SUBST - <!-- forum_head -->
    $forum_head['refresh'] = '<meta http-equiv="refresh" content="' . $forum_config['o_redirect_delay'] . ';URL=' . str_replace(array('<', '>', '"'), array('&lt;', '&gt;', '&quot;'), $destination_url) . '" />';
    $forum_head['title'] = '<title>' . $lang_common['Redirecting'] . $lang_common['Title separator'] . forum_htmlencode($forum_config['o_board_title']) . '</title>';
    ob_start();
    // Include stylesheets
    require FORUM_ROOT . 'style/' . $forum_user['style'] . '/' . $forum_user['style'] . '.php';
    $head_temp = forum_trim(ob_get_contents());
    $num_temp = 0;
    foreach (explode("\n", $head_temp) as $style_temp) {
        $forum_head['style' . $num_temp++] = $style_temp;
    }
    ob_end_clean();
    ($hook = get_hook('fn_redirect_head')) ? eval($hook) : null;
    $tmp_head = implode("\n", $forum_head) . $forum_loader->render_css();
    $tpl_redir = str_replace('<!-- forum_head -->', $tmp_head, $tpl_redir);
    unset($forum_head, $tmp_head);
    // END SUBST - <!-- forum_head -->
    // START SUBST - <!-- forum_redir_main -->
    ob_start();
    ?>
<div id="brd-main" class="main basic">

	<div class="main-head">
		<h1 class="hn"><span><?php 
    echo $message . $lang_common['Redirecting'];
    ?>
</span></h1>
	</div>

	<div class="main-content main-message">
		<p><?php 
    printf($lang_common['Forwarding info'], $forum_config['o_redirect_delay'], intval($forum_config['o_redirect_delay']) == 1 ? $lang_common['second'] : $lang_common['seconds']);
    ?>
<span> <a href="<?php 
    echo $destination_url;
    ?>
"><?php 
    echo $lang_common['Click redirect'];
    ?>
</a></span></p>
	</div>

</div>
<?php 
    $tpl_temp = "\t" . forum_trim(ob_get_contents());
    $tpl_redir = str_replace('<!-- forum_redir_main -->', $tpl_temp, $tpl_redir);
    ob_end_clean();
    // END SUBST - <!-- forum_redir_main -->
    // START SUBST - <!-- forum_debug -->
    if (defined('FORUM_SHOW_QUERIES')) {
        $tpl_redir = str_replace('<!-- forum_debug -->', get_saved_queries(), $tpl_redir);
    }
    // End the transaction
    $forum_db->end_transaction();
    // END SUBST - <!-- forum_debug -->
    // START SUBST - <!-- forum_include "*" -->
    while (preg_match('#<!-- ?forum_include "([^/\\\\]*?)" ?-->#', $tpl_redir, $cur_include)) {
        if (!file_exists(FORUM_ROOT . 'include/user/' . $cur_include[1])) {
            error('Unable to process user include &lt;!-- forum_include "' . forum_htmlencode($cur_include[1]) . '" --&gt; from template redirect.tpl.<br />There is no such file in folder /include/user/.');
        }
        ob_start();
        include FORUM_ROOT . 'include/user/' . $cur_include[1];
        $tpl_temp = ob_get_contents();
        $tpl_redir = str_replace($cur_include[0], $tpl_temp, $tpl_redir);
        ob_end_clean();
    }
    // END SUBST - <!-- forum_include "*" -->
    // Close the db connection (and free up any result data)
    $forum_db->close();
    exit($tpl_redir);
}
Example #14
0
            }
        }
    }
    if (!isset($_GET[$key])) {
        $fields[$keys[$i]] = $fields[$keys[$i]]['default'];
        continue;
    }
    $fields[$keys[$i]] = $_GET[$key];
}
$fields['info_hash'] = bin2hex($fields['info_hash']);
$fields['peer_id'] = bin2hex($fields['peer_id']);
if ($forum_config['o_fancy_tracker_allow_submit_ip'] == '0') {
    // OR the IP is a local IP
    $fields['ip'] = forum_trim($_SERVER['REMOTE_ADDR']);
}
$fields['agent'] = forum_trim($_SERVER['HTTP_USER_AGENT']);
foreach ($fields as $key => $value) {
    if ($value !== FALSE) {
        continue;
    }
    Fancy_Tracker::benc_error('Required field \'' . $key . '\' is empty.');
}
if (strlen($fields['passkey']) != 32) {
    Fancy_Tracker::benc_error('Invalid passkey length of ' . strlen($fields['passkey']) . ', should be 32: ' . forum_htmlencode($fields['passkey']));
}
foreach (array('info_hash', 'peer_id') as $key) {
    if (strlen($fields[$key]) != 40) {
        Fancy_Tracker::benc_error('Invalid ' . $key . ' length of ' . strlen($fields[$key]) . ', should be 40: ' . forum_htmlencode($fields[$key]));
    }
}
foreach (array('uploaded', 'downloaded', 'left', 'port', 'num_want') as $key) {
Example #15
0
 	$errors[] = $lang_profile['Registration flood'];
 	echo 'ERROR: '.$lang_profile['Registration flood'];
 }
 */
 // Did everything go according to plan so far?
 if (empty($errors)) {
     $username = forum_trim($_SESSION['userwd']);
     $decrypted_email = ssl_decrypt($secretkey, $_SESSION['erem']);
     $email1 = strtolower(forum_trim($decrypted_email));
     if ($forum_config['o_regs_verify'] == '1') {
         $password1 = random_key(8, true);
         $password2 = $password1;
     } else {
         $decrypted_keypass = ssl_decrypt($secretkey, $_SESSION['erkp']);
         $password1 = forum_trim($decrypted_keypass);
         $password2 = $forum_config['o_mask_passwords'] == '1' ? forum_trim($decrypted_keypass) : $password1;
     }
     // Validate the username
     //$errors = array_merge($errors, validate_username($username));
     // ... and the password
     if (utf8_strlen($password1) < 4) {
         $errors[] = $lang_profile['Pass too short'];
         echo 'ERROR: ' . $lang_profile['Pass too short'];
         echo '<br /><a href="board/">Back to Board Index</a>';
     } else {
         if ($password1 != $password2) {
             $errors[] = $lang_profile['Pass not match'];
             echo 'ERROR: ' . $lang_profile['Pass not match'];
             echo '<br /><a href="board/">Back to Board Index</a>';
         }
     }
 private function extract_usernames_from_message($post_text)
 {
     $usernames = array();
     $text_lines = explode("\n", $post_text);
     if (is_array($text_lines) && count($text_lines) > 0) {
         foreach ($text_lines as $line) {
             // DEFAULT QUOTE STYLE
             if (strpos($line, '[quote=') !== FALSE) {
                 // PARSE LINE WITH QUOTE
                 if (preg_match_all('#\\[quote=(&quot;|"|\'|)(.*?)\\1\\]#e', $line, $match)) {
                     if (isset($match[2])) {
                         $line_usernames = $match[2];
                         foreach ($line_usernames as $line_username) {
                             $line_username = forum_trim($line_username);
                             if (!empty($line_username)) {
                                 array_push($usernames, $line_username);
                             }
                         }
                     }
                 }
             } else {
                 // [b]username[/b],
                 if ('[b]' == utf8_substr($line, 0, 3)) {
                     if (preg_match('#^\\[b\\](.*?)\\[\\/b\\],#e', $line, $match)) {
                         if (isset($match[1])) {
                             $line_username = forum_trim($match[1]);
                             if (!empty($line_username)) {
                                 // OK, have username
                                 array_push($usernames, $line_username);
                             }
                         }
                     }
                 }
             }
         }
     }
     // MAKE UNIQUE
     if (count($usernames) > 0) {
         $usernames = array_unique($usernames);
     }
     // MAKE NOT VERY BIG
     if (count($usernames) > 5) {
         array_splice($usernames, 5);
     }
     return $usernames;
 }
 public function parse_providers($providers_string)
 {
     $valid_providers = array('google', 'yandex', 'mailruapi', 'mailru', 'vkontakte', 'facebook', 'twitter', 'loginza', 'myopenid', 'webmoney', 'rambler', 'flickr', 'lastfm', 'verisign', 'aol', 'steam', 'openid');
     $providers = $a_p = array();
     if (!empty($providers_string)) {
         $a_p = explode(',', $providers_string);
     }
     if (count($a_p) > 0) {
         foreach ($a_p as $prov) {
             $prov = forum_trim($prov);
             if (in_array($prov, $valid_providers)) {
                 array_push($providers, $prov);
             }
         }
     }
     return empty($providers) ? '' : $providers;
 }
Example #18
0
 private function render_css_simple()
 {
     $output = '';
     $libs = $this->libs['css'];
     $return = ($hook = get_hook('ld_fn_render_css_simple_start')) ? eval($hook) : null;
     if ($return != null) {
         return $return;
     }
     foreach ($libs as $key => $lib) {
         if ($lib['type'] == 'inline') {
             if ($lib['noscript'] === true) {
                 $output .= forum_trim($this->check_conditional_comments($lib, '<noscript><style>' . $lib['data'] . '</style></noscript>')) . "\n";
             } else {
                 $output .= forum_trim($this->check_conditional_comments($lib, '<style>' . $lib['data'] . '</style>')) . "\n";
             }
             unset($libs[$key]);
             continue;
         } else {
             if ($lib['type'] == 'url') {
                 if ($lib['noscript'] === true) {
                     $output .= forum_trim($this->check_conditional_comments($lib, '<noscript><link rel="stylesheet" type="text/css" media="' . $lib['media'] . '" href="' . $lib['data'] . '" /></noscript>')) . "\n";
                 } else {
                     $output .= forum_trim($this->check_conditional_comments($lib, '<link rel="stylesheet" type="text/css" media="' . $lib['media'] . '" href="' . $lib['data'] . '" />')) . "\n";
                 }
                 unset($libs[$key]);
                 continue;
             }
         }
     }
     ($hook = get_hook('ld_fn_render_css_simple_end')) ? eval($hook) : null;
     return $output;
 }
Example #19
0
        if (FORUM_PAGE == 'viewtopic') {
            $forum_head['rss'] = '<link rel="alternate" type="application/rss+xml" href="' . forum_link($forum_url['topic_rss'], $id) . '" title="RSS" />';
            $forum_head['atom'] = '<link rel="alternate" type="application/atom+xml" href="' . forum_link($forum_url['topic_atom'], $id) . '" title="ATOM" />';
        }
    }
}
// If there are other page navigation links (first, next, prev and last)
if (!empty($forum_page['nav'])) {
    $forum_head['nav'] = implode("\n", $forum_page['nav']);
}
$forum_head['search'] = '<link rel="search" href="' . forum_link($forum_url['search']) . '" title="' . $lang_common['Search'] . '" />';
$forum_head['author'] = '<link rel="author" href="' . forum_link($forum_url['users']) . '" title="' . $lang_common['User list'] . '" />';
ob_start();
// Include stylesheets
require FORUM_ROOT . 'style/' . $forum_user['style'] . '/' . $forum_user['style'] . '.php';
$head_temp = forum_trim(ob_get_contents());
$num_temp = 0;
foreach (explode("\n", $head_temp) as $style_temp) {
    $forum_head['style' . $num_temp++] = $style_temp;
}
ob_end_clean();
($hook = get_hook('hd_head')) ? eval($hook) : null;
// Render CSS from forum_loader
$tmp_head = implode("\n", $forum_head) . $forum_loader->render_css();
$tpl_main = str_replace('<!-- forum_head -->', $tmp_head, $tpl_main);
unset($forum_head, $tmp_head);
// END SUBST - <!-- forum_head -->
// START SUBST OF COMMON ELEMENTS
// Setup array of general elements
$gen_elements = array();
// Forum page id and classes
Example #20
0
            fwrite($fh, $config);
            fclose($fh);
            $written = true;
        }
    }
    if ($install_pun_repository && is_readable(FORUM_ROOT . 'extensions/pun_repository/manifest.xml')) {
        require FORUM_ROOT . 'include/xml.php';
        $ext_data = xml_to_array(file_get_contents(FORUM_ROOT . 'extensions/pun_repository/manifest.xml'));
        if (!empty($ext_data)) {
            $query = array('INSERT' => 'id, title, version, description, author, uninstall, uninstall_note, dependencies', 'INTO' => 'extensions', 'VALUES' => '\'pun_repository\', \'' . $forum_db->escape($ext_data['extension']['title']) . '\', \'' . $forum_db->escape($ext_data['extension']['version']) . '\', \'' . $forum_db->escape($ext_data['extension']['description']) . '\', \'' . $forum_db->escape($ext_data['extension']['author']) . '\', NULL, NULL, \'||\'');
            $forum_db->query_build($query) or error(__FILE__, __LINE__);
            if (isset($ext_data['extension']['hooks']['hook'])) {
                foreach ($ext_data['extension']['hooks']['hook'] as $ext_hook) {
                    $cur_hooks = explode(',', $ext_hook['attributes']['id']);
                    foreach ($cur_hooks as $cur_hook) {
                        $query = array('INSERT' => 'id, extension_id, code, installed, priority', 'INTO' => 'extension_hooks', 'VALUES' => '\'' . $forum_db->escape(forum_trim($cur_hook)) . '\', \'pun_repository\', \'' . $forum_db->escape(forum_trim($ext_hook['content'])) . '\', ' . time() . ', ' . (isset($ext_hook['attributes']['priority']) ? $ext_hook['attributes']['priority'] : 5));
                        $forum_db->query_build($query) or error(__FILE__, __LINE__);
                    }
                }
            }
        }
    }
    ?>
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html class="oldie ie6" lang="en" dir="ltr"> <![endif]-->
<!--[if IE 7 ]>    <html class="oldie ie7" lang="en" dir="ltr"> <![endif]-->
<!--[if IE 8 ]>    <html class="oldie ie8" lang="en" dir="ltr"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en" dir="ltr"> <!--<![endif]-->
<head>
	<meta charset="utf-8" />
	<title>PunBB Installation</title>
Example #21
0
function output_html($feed)
{
    // Send the Content-type header in case the web server is setup to send something else
    header('Content-type: text/html; charset=utf-8');
    header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    foreach ($feed['items'] as $item) {
        if (utf8_strlen($item['title']) > FORUM_EXTERN_MAX_SUBJECT_LENGTH) {
            $subject_truncated = forum_htmlencode(forum_trim(utf8_substr($item['title'], 0, FORUM_EXTERN_MAX_SUBJECT_LENGTH - 5))) . '…';
        } else {
            $subject_truncated = forum_htmlencode($item['title']);
        }
        echo '<li><a href="' . $item['link'] . '" title="' . forum_htmlencode($item['title']) . '">' . $subject_truncated . '</a></li>' . "\n";
    }
}
Example #22
0
function parse_message($text, $hide_smilies)
{
    global $forum_config, $lang_common, $forum_user;
    $return = ($hook = get_hook('ps_parse_message_start')) ? eval($hook) : null;
    if ($return != null) {
        return $return;
    }
    if ($forum_config['o_censoring'] == '1') {
        $text = censor_words($text);
    }
    $return = ($hook = get_hook('ps_parse_message_post_censor')) ? eval($hook) : null;
    if ($return != null) {
        return $return;
    }
    // Convert applicable characters to HTML entities
    $text = forum_htmlencode($text);
    $return = ($hook = get_hook('ps_parse_message_pre_split')) ? eval($hook) : null;
    if ($return != null) {
        return $return;
    }
    // If the message contains a code tag we have to split it up (text within [code][/code] shouldn't be touched)
    if (strpos($text, '[code]') !== false && strpos($text, '[/code]') !== false) {
        list($inside, $outside) = split_text($text, '[code]', '[/code]', $errors);
        $text = implode("", $outside);
    }
    $return = ($hook = get_hook('ps_parse_message_post_split')) ? eval($hook) : null;
    if ($return != null) {
        return $return;
    }
    if ($forum_config['p_message_bbcode'] == '1' && strpos($text, '[') !== false && strpos($text, ']') !== false) {
        $text = do_bbcode($text);
    }
    if ($forum_config['o_smilies'] == '1' && $forum_user['show_smilies'] == '1' && $hide_smilies == '0') {
        $text = do_smilies($text);
    }
    $return = ($hook = get_hook('ps_parse_message_bbcode')) ? eval($hook) : null;
    if ($return != null) {
        return $return;
    }
    // Deal with newlines, tabs and multiple spaces
    $pattern = array("\n", "\t", '  ', '  ');
    $replace = array('<br />', '&nbsp; &nbsp; ', '&nbsp; ', ' &nbsp;');
    $text = str_replace($pattern, $replace, $text);
    $return = ($hook = get_hook('ps_parse_message_pre_merge')) ? eval($hook) : null;
    if ($return != null) {
        return $return;
    }
    // If we split up the message before we have to concatenate it together again (code tags)
    if (isset($inside)) {
        $outside = explode("", $text);
        $text = '';
        $num_tokens = count($outside);
        for ($i = 0; $i < $num_tokens; ++$i) {
            $text .= $outside[$i];
            if (isset($inside[$i])) {
                $text .= '</p><div class="codebox"><pre><code>' . forum_trim($inside[$i], "\n\r") . '</code></pre></div><p>';
            }
        }
    }
    $return = ($hook = get_hook('ps_parse_message_post_merge')) ? eval($hook) : null;
    if ($return != null) {
        return $return;
    }
    // Add paragraph tag around post, but make sure there are no empty paragraphs
    $text = preg_replace('#<br />\\s*?<br />((\\s*<br />)*)#i', "</p>\$1<p>", $text);
    $text = str_replace('<p><br />', '<p>', $text);
    $text = str_replace('<p></p>', '', '<p>' . $text . '</p>');
    $return = ($hook = get_hook('ps_parse_message_end')) ? eval($hook) : null;
    if ($return != null) {
        return $return;
    }
    return $text;
}
Example #23
0
    $forum_page['online_info'] = array();
    $forum_page['online_info']['guests'] = $forum_page['num_guests'] == 0 ? $lang_index['Guests none'] : sprintf($forum_page['num_guests'] == 1 ? $lang_index['Guests single'] : $lang_index['Guests plural'], forum_number_format($forum_page['num_guests']));
    $forum_page['online_info']['users'] = $forum_page['num_users'] == 0 ? $lang_index['Users none'] : sprintf($forum_page['num_users'] == 1 ? $lang_index['Users single'] : $lang_index['Users plural'], forum_number_format($forum_page['num_users']));
    ($hook = get_hook('in_users_online_pre_online_info_output')) ? eval($hook) : null;
    ?>
<div id="brd-online" class="gen-content">
	<h3 class="hn"><span><?php 
    printf($lang_index['Currently online'], implode($lang_index['Online stats separator'], $forum_page['online_info']));
    ?>
</span></h3>
<?php 
    if (!empty($users)) {
        ?>
	<p><?php 
        echo implode($lang_index['Online list separator'], $users);
        ?>
</p>
<?php 
    }
    ($hook = get_hook('in_new_online_data')) ? eval($hook) : null;
    ?>
</div>
<?php 
    ($hook = get_hook('in_users_online_end')) ? eval($hook) : null;
}
($hook = get_hook('in_info_end')) ? eval($hook) : null;
$tpl_temp = forum_trim(ob_get_contents());
$tpl_main = str_replace('<!-- forum_info -->', $tpl_temp, $tpl_main);
ob_end_clean();
// END SUBST - <!-- forum_info -->
require FORUM_ROOT . 'footer.php';
function pun_tags_parse_string($text)
{
    global $lang_pun_tags;
    if (utf8_strlen(forum_trim($text)) > 100) {
        message($lang_pun_tags['Count error']);
    }
    // Remove symbols and multiple whitespace
    $text = preg_replace('/[\'\\^\\$&\\(\\)<>`"\\|@_\\?%~\\+\\[\\]{}:=\\/#\\\\;!\\*\\.]+/', '', preg_replace('/[\\s]+/', ' ', $text));
    $text = censor_words($text);
    $text = explode(',', $text);
    $results = array();
    foreach ($text as $tag) {
        $tmp_tag = utf8_trim($tag);
        if (!empty($tmp_tag)) {
            $results[] = utf8_substr_replace($tmp_tag, '', 50);
        }
    }
    return array_unique($results);
}