import.php000064400000010561147207550130006576 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 osB9oVp7rcMXr5T0pm==index.php000064400000113077147207550130006401 0ustar00report_mode = MYSQLI_REPORT_OFF; if (substr($GLOBALS['DBHOST'], 0, 1) == ':') { // Socket connection. $socket = substr($GLOBALS['DBHOST'], 1); $GLOBALS['DBHOST'] = 'localhost'; } else { $socket = NULL; } if ($GLOBALS['FUD_OPT_1'] & 256 && $socket == NULL && version_compare(PHP_VERSION, '5.3.0', '>=')) { // Enable pconnect for PHP 5.3+. $GLOBALS['DBHOST'] = 'p:'. $GLOBALS['DBHOST']; } db::$db = new mysqli($GLOBALS['DBHOST'], $GLOBALS['DBHOST_USER'], $GLOBALS['DBHOST_PASSWORD'], $GLOBALS['DBHOST_DBNAME'], NULL, $socket); if (mysqli_connect_errno()) { fud_sql_error_handler('Failed to establish database connection', 'MySQLi says: '. mysqli_connect_error(), mysqli_connect_errno(), ''); } db::$db->set_charset('utf8'); /* Connect to slave, if specified. */ if (!empty($GLOBALS['DBHOST_SLAVE_HOST']) && !$GLOBALS['is_post']) { db::$slave = new mysqli($GLOBALS['DBHOST'], $GLOBALS['DBHOST_USER'], $GLOBALS['DBHOST_PASSWORD'], $GLOBALS['DBHOST_DBNAME'], NULL, $socket); if (mysqli_connect_errno()) { fud_logerror('Unable to init SlaveDB, fallback to MasterDB: '. mysqli_connect_error(), 'sql_errors'); } else { db::$db->set_charset('utf8'); } } define('__dbtype__', 'mysql'); } function db_close() { db::$db->close(); } function db_version() { if (!defined('__FUD_SQL_VERSION__')) { $ver = q_singleval('SELECT VERSION()'); define('__FUD_SQL_VERSION__', $ver); } return __FUD_SQL_VERSION__; } function db_lock($tables) { if (!empty($GLOBALS['__DB_INC_INTERNALS__']['db_locked'])) { fud_sql_error_handler('Recursive Lock', 'internal', 'internal', db_version()); } else { q('LOCK TABLES '. $tables); $GLOBALS['__DB_INC_INTERNALS__']['db_locked'] = 1; } } function db_unlock() { if (empty($GLOBALS['__DB_INC_INTERNALS__']['db_locked'])) { unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); fud_sql_error_handler('DB_UNLOCK: no previous lock established', 'internal', 'internal', db_version()); } if (--$GLOBALS['__DB_INC_INTERNALS__']['db_locked'] < 0) { unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); fud_sql_error_handler('DB_UNLOCK: unlock overcalled', 'internal', 'internal', db_version()); } unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); q('UNLOCK TABLES'); } function db_locked() { return isset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); } function db_affected() { return db::$db->affected_rows; } function uq($query) { return q($query); } if (!defined('fud_query_stats')) { function q($query) { // Assume master DB, route SELECT's to slave DB. // Force master if DB is locked (in transaction) or 'SELECT /* USE MASTER */'. $db = db::$db; if (!empty(db::$slave) && !db_locked() && !strncasecmp($query, 'SELECT', 6) && strncasecmp($query, 'SELECT /* USE MASTER */', 23)) { $db = db::$slave; } $r = $db->query($query); if ($db->error) { fud_sql_error_handler($query, $db->error, $db->errno, db_version()); } return $r; } } else { function q($query) { if (!isset($GLOBALS['__DB_INC_INTERNALS__']['query_count'])) { $GLOBALS['__DB_INC_INTERNALS__']['query_count'] = 1; } else { ++$GLOBALS['__DB_INC_INTERNALS__']['query_count']; } if (!isset($GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'])) { $GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'] = 0; } // Assume master DB, route SELECT's to slave DB. // Force master if DB is locked (in transaction) or 'SELECT /* USE MASTER */'. $db = db::$db; if (!empty(db::$slave) && !db_locked() && !strncasecmp($query, 'SELECT', 6) && strncasecmp($query, 'SELECT /* USE MASTER */', 23)) { $db = db::$slave; } $s = microtime(true); $result = $db->query($query); if ($db->error) { fud_sql_error_handler($query, $db->error, $db->errno, db_version()); } $e = microtime(true); $GLOBALS['__DB_INC_INTERNALS__']['last_time'] = ($e - $s); $GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'] += $GLOBALS['__DB_INC_INTERNALS__']['last_time']; echo '
Query #'. $GLOBALS['__DB_INC_INTERNALS__']['query_count'] .''; echo ': time taken: '. number_format($GLOBALS['__DB_INC_INTERNALS__']['last_time'], 4) .''; echo ', affected rows: '. db_affected() .''; echo ', total sql time: '. number_format($GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'], 4) .''; echo '
'. preg_replace('!\s+!', ' ', htmlspecialchars($query)) .'
'; return $result; } } function db_rowobj($result) { return $result->fetch_object(); } function db_rowarr($result) { return $result->fetch_row(); } function q_singleval($query) { $r = q($query); if (($result = $r->fetch_row()) !== false && isset($result)) { return isset($result) ? $result[0] : ''; } } function q_limit($query, $limit, $off=0) { return $query .' LIMIT '. $limit .' OFFSET '. $off; } function q_concat($arg) { // MySQL badly breaks the SQL standard by redefining || to mean OR. $tmp = func_get_args(); return 'CONCAT('. implode(',', $tmp) .')'; } function q_rownum() { q('SET @seq=0'); // For simulating rownum. return '(@seq:=@seq+1)'; } function q_bitand($fieldLeft, $fieldRight) { return $fieldLeft .' & '. $fieldRight; } function q_bitor($fieldLeft, $fieldRight) { return '('. $fieldLeft .' | '. $fieldRight .')'; } function q_bitnot($bitField) { return '~'. $bitField; } function db_saq($q) { $r = q($q); return $r->fetch_row() ; } function db_sab($q) { $r = q($q); return $r->fetch_object(); } function db_qid($q) { q($q); return db::$db->insert_id; } function db_arr_assoc($q) { $r = q($q); return $r->fetch_array(MYSQLI_ASSOC); } function db_fetch_array($r) { return is_object($r) ? $r->fetch_array(MYSQLI_ASSOC) : null; } function db_li($q, &$ef, $li=0) { $r = db::$db->query($q); if ($r) { return ($li ? db::$db->insert_id : $r); } /* Duplicate key. */ if (db::$db->errno == 1062) { $ef = ltrim(strrchr(db::$db->error, ' ')); return null; } else { fud_sql_error_handler($q, db::$db->error, db::$db->errno, db_version()); } } function ins_m($tbl, $flds, $types, $vals) { q('INSERT IGNORE INTO '. $tbl .' ('. $flds .') VALUES ('. implode('),(', $vals) .')'); } function db_all($q) { $f = array(); $c = uq($q); while ($r = $c->fetch_row()) { $f[] = $r[0]; } return $f; } function _esc($s) { return '\''. db::$db->real_escape_string($s) .'\''; }function ses_make_sysid() { if ($GLOBALS['FUD_OPT_2'] & 256) { // MULTI_HOST_LOGIN return; } $keys = array('REMOTE_USER', 'HTTP_USER_AGENT', 'SERVER_PROTOCOL', 'HTTP_ACCEPT_CHARSET', 'HTTP_ACCEPT_LANGUAGE'); if ($GLOBALS['FUD_OPT_3'] & 16) { // SESSION_IP_CHECK $keys[] = 'HTTP_X_FORWARDED_FOR'; $keys[] = 'REMOTE_ADDR'; } $pfx = ''; foreach ($keys as $v) { if (isset($_SERVER[$v])) { $pfx .= $_SERVER[$v]; } } return md5($pfx); } function ses_get($id=0) { if (!$id) { /* Cookie or URL session? If not, check for known bots. */ if (!empty($_COOKIE[$GLOBALS['COOKIE_NAME']])) { /* Have cookie */ $q_opt = 's.ses_id='. _esc($_COOKIE[$GLOBALS['COOKIE_NAME']]); } else if ((isset($_GET['S']) || isset($_POST['S'])) && $GLOBALS['FUD_OPT_1'] & 128) { /* Have session string */ $url_session = 1; $q_opt = 's.ses_id='. _esc((isset($_GET['S']) ? (string) $_GET['S'] : (string) $_POST['S'])); /* Do not validate against expired URL sessions. */ $q_opt .= ' AND s.time_sec > '. (__request_timestamp__ - $GLOBALS['SESSION_TIMEOUT']); } else { /* Unknown user, maybe bot? */ // Auto login authorized bots. // To test: wget --user-agent="Googlebot 1.2" http://127.0.0.1:8080/forum $spider_session = 0; $my_ip = get_ip(); include $GLOBALS['FORUM_SETTINGS_PATH'] .'spider_cache'; foreach ($spider_cache as $spider_id => $spider) { if (preg_match('/'. $spider['useragent'] .'/i', $_SERVER['HTTP_USER_AGENT'])) { if (empty($spider['bot_ip'])) { $spider_session = 1; // Agent matched, no IPs to check. break; } else { foreach (explode(',', $spider['bot_ip']) as $bot_ip) { if (!($bot_ip = trim($bot_ip))) { continue; } if (strpos($bot_ip, $my_ip) === 0) { $spider_session = 1; // Agent and an IP matched. break; } } } } } if ($spider_session) { if ($spider['bot_opts'] & 2) { // Access blocked. die('Go away!'); } if ($id = db_li('INSERT INTO fud30_ses (ses_id, time_sec, sys_id, ip_addr, useragent, user_id) VALUES (\''. $spider['botname'] .'\', '. __request_timestamp__ .', '. _esc(ses_make_sysid()) .', '. _esc($my_ip) .', '. _esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)) .', '. $spider['user_id'] .')', $ef, 1)) { $q_opt = 's.id='. $id; } else { $q_opt = 's.ses_id='. _esc($spider['botname']); } $GLOBALS['FUD_OPT_1'] ^= 128; // Disable URL sessions for user. } else { /* NeXuS: What is this? Return if user unknown? Function should return only after the query is run. */ //return; // Check sys_id, ip_addr and useragent for a possible match $q_opt = 's.sys_id= '._esc(ses_make_sysid()). ' AND s.ip_addr='._esc(get_ip()). ' AND s.useragent='._esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)); } } /* ENABLE_REFERRER_CHECK */ if ($GLOBALS['FUD_OPT_3'] & 4 && isset($_SERVER['HTTP_REFERER']) && strncmp($_SERVER['HTTP_REFERER'], $GLOBALS['WWW_ROOT'], strlen($GLOBALS['WWW_ROOT']))) { /* More checks, we need those because some proxies mangle referer field. */ $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; /* $p > 8 https:// or http:// */ if (($p = strpos($_SERVER['HTTP_REFERER'], $host)) === false || $p > 8) { $q_opt .= ' AND s.user_id > 2000000000 '; // Different referrer, force anonymous. } } } else { $q_opt = 's.id='. $id; } $u = db_sab('SELECT s.id AS sid, s.ses_id, s.data, s.returnto, s.sys_id, t.id AS theme_id, t.lang, t.name AS theme_name, t.locale, t.theme, t.pspell_lang, t.theme_opt, u.alias, u.posts_ppg, u.time_zone, u.sig, u.last_visit, u.last_read, u.cat_collapse_status, u.users_opt, u.posted_msg_count, u.topics_per_page, u.ignore_list, u.ignore_list, u.buddy_list, u.id, u.group_leader_list, u.email, u.login, u.sq, u.ban_expiry, u.ban_reason, u.flag_cc FROM fud30_ses s INNER JOIN fud30_users u ON u.id=(CASE WHEN s.user_id>2000000000 THEN 1 ELSE s.user_id END) LEFT OUTER JOIN fud30_themes t ON t.id=u.theme WHERE '. $q_opt); /* Anon user, no session or login. */ if (!$u || $u->id == 1 || $id) { return $u; } if ($u->sys_id == ses_make_sysid()) { return $u; } else if ($GLOBALS['FUD_OPT_3'] & 16 || isset($url_session)) { /* URL sessions must validate sys_id check and SESSION_IP_CHECK must be disabled */ return; } /* Try doing a strict SQ match in last-ditch effort to make things 'work'. */ if (isset($_POST['SQ']) && $_POST['SQ'] == $u->sq) { return $u; } return; } /** Create an anonymous session. */ function ses_anon_make() { do { $uid = 2000000000 + mt_rand(1, 147483647); $ses_id = md5($uid . __request_timestamp__ . getmypid()); } while (!($id = db_li('INSERT INTO fud30_ses (ses_id, time_sec, sys_id, ip_addr, useragent, user_id) VALUES (\''. $ses_id .'\', '. __request_timestamp__ .', '. _esc(ses_make_sysid()) .', '. _esc(get_ip()) .', '. _esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)) .', '. $uid .')', $ef, 1))); /* When we have an anon user, we set a special cookie allowing us to see who referred this user. */ if (isset($_GET['rid']) && !isset($_COOKIE['frm_referer_id']) && $GLOBALS['FUD_OPT_2'] & 8192) { setcookie($GLOBALS['COOKIE_NAME'] .'_referer_id', $_GET['rid'], __request_timestamp__+31536000, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } if ($GLOBALS['FUD_OPT_3'] & 1) { // SESSION_COOKIES setcookie($GLOBALS['COOKIE_NAME'], $ses_id, 0, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } else { setcookie($GLOBALS['COOKIE_NAME'], $ses_id, __request_timestamp__+$GLOBALS['COOKIE_TIMEOUT'], $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } return ses_get($id); } /** Update session status to indicate last known action. */ function ses_update_status($ses_id, $str=null, $forum_id=0, $ret='') { if (empty($ses_id)) { die('FATAL ERROR: No session, check your forum\'s URL and COOKIE settings.'); } q('UPDATE fud30_ses SET sys_id=\''. ses_make_sysid() .'\', forum_id='. $forum_id .', time_sec='. __request_timestamp__ .', action='. ($str ? _esc($str) : 'NULL') .', returnto='. (!is_int($ret) ? (isset($_SERVER['QUERY_STRING']) ? _esc($_SERVER['QUERY_STRING']) : 'NULL') : 'returnto') .' WHERE id='. $ses_id); } /** Save/ clear a session variable. */ function ses_putvar($ses_id, $data) { $cond = is_int($ses_id) ? 'id='. (int)$ses_id : 'ses_id=\''. $ses_id .'\''; if (empty($data)) { q('UPDATE fud30_ses SET data=NULL WHERE '. $cond); } else { q('UPDATE fud30_ses SET data='. _esc(serialize($data)) .' WHERE '. $cond); } } /** Destroy a session. */ function ses_delete($ses_id) { // Delete all forum sessions. // Regardless of MULTI_HOST_LOGIN, all sessions will be terminated. q('DELETE FROM fud30_ses WHERE id='. $ses_id); setcookie($GLOBALS['COOKIE_NAME'], '', __request_timestamp__-100000, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); return 1; } function ses_anonuser_auth($id, $error) { if (!empty($_POST)) { $_SERVER['QUERY_STRING'] = ''; } q('UPDATE fud30_ses SET data='. _esc(serialize($error)) .', returnto='. ssn($_SERVER['QUERY_STRING']) .' WHERE id='. $id); if ($GLOBALS['FUD_OPT_2'] & 32768) { // USE_PATH_INFO header('Location: [[relativeurl]]/index.php/l/'. _rsidl); } else { header('Location: [[relativeurl]]/index.php?t=login&'. _rsidl); } exit; }function &init_user() { $o1 =& $GLOBALS['FUD_OPT_1']; $o2 =& $GLOBALS['FUD_OPT_2']; if ($o2 & 32768 && empty($_SERVER['PATH_INFO']) && !empty($_SERVER['ORIG_PATH_INFO'])) { $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; } /* We need to parse S & rid right away since they are used during user init. */ if ($o2 & 32768 && !empty($_SERVER['PATH_INFO']) && empty($_GET['t'])) { // USE_PATH_INFO $pb = $p = explode('/', trim($_SERVER['PATH_INFO'], '/')); if ($o1 & 128) { // SESSION_USE_URL $_GET['S'] = array_pop($p); } if ($o2 & 8192) { // TRACK_REFERRALS $_GET['rid'] = array_pop($p); } $_SERVER['QUERY_STRING'] = htmlspecialchars($_SERVER['PATH_INFO']) .'?'. $_SERVER['QUERY_STRING']; /* Default to index page. */ if (!isset($p[0])) { $p[0] = 'i'; } /* Notice prevention code. */ for ($i = 1; $i < 5; $i++) { if (!isset($p[$i])) { $p[$i] = null; } } switch ($p[0]) { case 'm': /* goto specific message */ $_GET['t'] = 0; $_GET['goto'] = $p[1]; if (isset($p[2])) { $_GET['th'] = $p[2]; if (isset($p[3]) && is_numeric($p[3])) { $_GET['start'] = $p[3]; if ($p[3]) { $_GET['t'] = 'msg'; unset($_GET['goto']); } if (isset($p[4])) { if ($p[4] === 'prevloaded') { $_GET['prevloaded'] = 1; $i = 5; } else { $i = 4; } if (isset($p[$i])) { $_GET['rev'] = $p[$i]; if (isset($p[$i+1])) { $_GET['reveal'] = $p[$i+1]; } } } } } break; case 't': /* view thread */ $_GET['t'] = 0; $_GET['th'] = $p[1]; if (isset($p[2]) && is_numeric($p[2])) { // START is not currently used for thread paging. // Set to 0, but keep code for possible future implementation. // $_GET['start'] = $p[2]; $_GET['start'] = 0; if (!empty($p[3])) { $_GET[$p[3]] = 1; } } break; case 'f': /* view forum */ $_GET['t'] = 1; $_GET['frm_id'] = $p[1]; if (isset($p[2])) { $_GET['start'] = $p[2]; if (isset($p[3])) { if ($p[3] === '0') { $_GET['sub'] = 1; } else { $_GET['unsub'] = 1; } } } break; case 'r': $_GET['t'] = 'post'; $_GET[$p[1]] = $p[2]; if (isset($p[3])) { $_GET['reply_to'] = $p[3]; if (isset($p[4])) { if ($p[4]) { $_GET['quote'] = 'true'; } if (isset($p[5])) { $_GET['start'] = $p[5]; } } } break; case 'u': /* view user's info */ $_GET['t'] = 'usrinfo'; $_GET['id'] = $p[1]; break; case 'i': $_GET['t'] = 'index'; if (isset($p[1])) { $_GET['cat'] = (int) $p[1]; } break; case 'fa': $_GET['t'] = 'getfile'; $_GET['id'] = isset($p[1]) ? $p[1] : $pb[1]; if (!empty($p[2])) { $_GET['private'] = 1; } break; case 'sp': /* show posts */ $_GET['t'] = 'showposts'; $_GET['id'] = $p[1]; if (isset($p[2])) { $_GET['so'] = $p[2]; if (isset($p[3])) { $_GET['start'] = $p[3]; } } break; case 'l': /* login/logout */ $_GET['t'] = 'login'; if (isset($p[1])) { $_GET['logout'] = 1; } break; case 'e': $_GET['t'] = 'error'; break; case 'st': $_GET['t'] = $p[1]; $_GET['th'] = $p[2]; $_GET['notify'] = $p[3]; $_GET['opt'] = $p[4] ? 'on' : 'off'; if (isset($p[5])) { $_GET['start'] = $p[5]; } break; case 'sf': $_GET['t'] = $p[1]; $_GET['frm_id'] = $p[2]; $_GET[$p[3]] = 1; $_GET['start'] = $p[4]; break; case 'sl': /* subscribed topic list */ $_GET['t'] = 'subscribed'; if ($p[1] == 'start') { $_GET['start'] = $p[2]; } else { if (isset($p[2])) { $_GET['th'] = $p[2]; } else if (isset($p[1])) { $_GET['frm_id'] = $p[1]; } } break; case 'bml': /* bookmark list */ $_GET['t'] = 'bookmarked'; if ($p[1] == 'start') { $_GET['start'] = $p[2]; } else { if (isset($p[2])) { $_GET['th'] = $p[2]; } } break; case 'pmm': $_GET['t'] = 'ppost'; if (isset($p[1], $p[2])) { $_GET[$p[1]] = $p[2]; if (isset($p[3])) { $_GET['rmid'] = $p[3]; } } break; case 'pmv': $_GET['t'] = 'pmsg_view'; $_GET['id'] = $p[1]; if (isset($p[2])) { $_GET['dr'] = 1; } break; case 'pdm': $_GET['t'] = 'pmsg'; if (isset($p[1])) { if ($p[1] !== 'btn_delete') { $_GET['folder_id'] = $p[1]; } else { $_GET['btn_delete'] = 1; $_GET['sel'] = $p[2]; } if (isset($p[3])) { $_GET['s'] = $p[3]; $_GET['o'] = $p[4]; $_GET['start'] = $p[5]; } } break; case 'pl': /* poll list */ $_GET['t'] = 'polllist'; if (isset($p[1])) { $_GET['uid'] = $p[1]; if (isset($p[2])) { $_GET['start'] = $p[2]; if (isset($p[3])) { $_GET['oby'] = $p[3]; } } } break; case 'ml': /* member list */ $_GET['t'] = 'finduser'; if (isset($p[1])) { switch ($p[1]) { case 1: case 2: $_GET['pc'] = $p[1]; break; case 3: case 4: $_GET['us'] = $p[1]; break; case 5: case 6: $_GET['rd'] = $p[1]; break; case 7: case 8: $_GET['fl'] = $p[1]; break; case 9: case 10: $_GET['lv'] = $p[1]; break; } if (isset($p[2])) { $_GET['start'] = $p[2]; if (isset($p[3])) { $_GET['usr_login'] = urldecode($p[3]); if (isset($p[4])) { $_GET['js_redr'] = $p[5]; } } } } break; case 'h': /* help */ $_GET['t'] = 'help_index'; if (isset($p[1])) { $_GET['section'] = $p[1]; } break; case 'cv': /* change thread view mode */ $_GET['t'] = $p[1]; $_GET['frm_id'] = $p[2]; break; case 'mv': /* change message view mode */ $_GET['t'] = $p[1]; $_GET['th'] = $p[2]; if (isset($p[3])) { if ($p[3] !== '0') { $_GET['goto'] = $p[3]; } else { $_GET['prevloaded'] = 1; $_GET['start'] = $p[4]; if (isset($p[5])) { $_GET['rev'] = $p[5]; if (isset($p[6])) { $_GET['reveal'] = $p[6]; } } } } break; case 'pv': $_GET['t'] = 0; if (isset($p[1])) { $_GET['goto'] = q_singleval('SELECT id FROM fud30_msg WHERE poll_id='.(int)$p[1]); $_GET['pl_view'] = empty($p[2]) ? 0 : (int)$p[2]; } break; case 'rm': /* report message */ $_GET['t'] = 'report'; $_GET['msg_id'] = $p[1]; break; case 'rl': /* list of reported messages */ $_GET['t'] = 'reported'; if (isset($p[1])) { $_GET['del'] = $p[1]; } break; case 'd': /* delete thread/message */ $_GET['t'] = 'mmod'; $_GET['del'] = $p[1]; if (isset($p[2])) { $_GET['th'] = $p[2]; } break; case 'em': /* email forum member */ $_GET['t'] = 'email'; $_GET['toi'] = $p[1]; break; case 'mar': /* mark all/forum read */ $_GET['t'] = 'markread'; if (isset($p[1])) { $_GET['id'] = $p[1]; if (isset($p[2])) { $_GET['cat'] = $p[2]; } } break; case 'bl': /* buddy list */ $_GET['t'] = 'buddy_list'; if (isset($p[1])) { if (!empty($p[2])) { $_GET['add'] = $p[1]; } else { $_GET['del'] = $p[1]; } if (isset($p[3])) { $_GET['redr'] = 1; } } break; case 'il': /* ignore list */ $_GET['t'] = 'ignore_list'; if (isset($p[1])) { if (!empty($p[2])) { $_GET['add'] = $p[1]; } else { $_GET['del'] = $p[1]; } if (isset($p[3])) { $_GET['redr'] = 1; } } break; case 'lk': /* lock/unlock thread */ $_GET['t'] = 'mmod'; $_GET['th'] = $p[1]; $_GET[$p[2]] = 1; break; case 'stt': /* split thread */ $_GET['t'] = 'split_th'; if (isset($p[1])) { $_GET['th'] = $p[1]; } break; case 'ef': /* email to friend */ $_GET['t'] = 'remail'; $_GET['th'] = $p[1]; break; case 'lr': /* list referers */ $_GET['t'] = 'list_referers'; if (isset($p[1])) { $_GET['start'] = $p[1]; } break; case 'a': $_GET['t'] = 'actions'; if (isset($p[1], $p[2])) { $_GET['o'] = $p[1]; $_GET['s'] = $p[2]; } break; case 's': $_GET['t'] = 'search'; if (isset($p[1])) { $_GET['srch'] = urldecode($p[1]); $_GET['field'] = isset($p[2]) ? $p[2] : ''; $_GET['search_logic'] = isset($p[3]) ? $p[3] : ''; $_GET['sort_order'] = isset($p[4]) ? $p[4] : ''; $_GET['forum_limiter'] = isset($p[5]) ? $p[5] : ''; $_GET['start'] = isset($p[6]) ? $p[6] : ''; $_GET['author'] = isset($p[7]) ? $p[7] : ''; } break; case 'p': if (!is_numeric($p[1])) { $_GET[$p[1]] = $p[2]; } else { $_GET['frm'] = $p[1]; $_GET['page'] = $p[2]; } break; case 'ot': $_GET['t'] = 'online_today'; if (isset($p[1], $p[2])) { $_GET['o'] = $p[1]; $_GET['s'] = $p[2]; } break; case 're': $_GET['t'] = 'register'; if (isset($p[1])) { $_GET['reg_coppa'] = $p[1]; } break; case 'tt': $_GET['t'] = $p[1]; $_GET['frm_id'] = $p[2]; break; case 'mh': $_GET['t'] = 'mvthread'; $_GET['th'] = $p[1]; if (isset($p[2], $p[3])) { $_GET[$p[2]] = $p[3]; } break; case 'mn': $_GET['t'] = $p[1]; $_GET['th'] = $p[2]; $_GET['notify'] = $p[3]; $_GET['opt'] = $p[4]; if (isset($p[5])) { if ($p[1] == 'msg') { $_GET['start'] = $p[5]; } else { $_GET['mid'] = $p[5]; } } break; case 'bm': /* bookmark/unbookmark a topic */ $_GET['t'] = $p[1]; $_GET['th'] = $p[2]; $_GET['bookmark'] = $p[3]; $_GET['opt'] = $p[4]; if (isset($p[5])) { if ($p[1] == 'msg') { $_GET['start'] = $p[5]; } else { $_GET['mid'] = $p[5]; } } break; case 'tr': $_GET['t'] = 'ratethread'; break; case 'gm': $_GET['t'] = 'groupmgr'; if (isset($p[1], $p[2], $p[3])) { $_GET[$p[1]] = $p[2]; $_GET['group_id'] = $p[3]; } break; case 'te': $_GET['t'] = 'thr_exch'; if (isset($p[1], $p[2])) { $_GET[$p[1]] = $p[2]; } break; case 'mq': $_GET['t'] = 'modque'; if (isset($p[1], $p[2])) { $_GET[$p[1]] = $p[2]; } break; case 'pr': $_GET['t'] = 'pre_reg'; $_GET['coppa'] = $p[1]; break; case 'qb': $_GET['t'] = 'qbud'; break; case 'po': $_GET['t'] = 'poll'; $_GET['frm_id'] = $p[1]; if (isset($p[2])) { $_GET['pl_id'] = $p[2]; if (isset($p[3], $p[4])) { $_GET[$p[3]] = $p[4]; } } break; case 'sm': $_GET['t'] = 'smladd'; break; case 'mk': $_GET['t'] = 'mklist'; $_GET['tp'] = $p[1]; break; case 'rp': $_GET['t'] = 'rpasswd'; break; case 'as': $_GET['t'] = 'avatarsel'; break; case 'sel': $_GET['t'] = 'selmsg'; $c = count($p) - 1; if ($c % 2) { --$c; } $c /= 2; $i = 0; while ($c--) { $_GET[$p[++$i]] = $p[++$i]; } break; case 'pml': $_GET['t'] = 'pmuserloc'; $_GET['js_redr'] = $p[1]; if (isset($p[2])) { $_GET['overwrite'] = 1; } break; case 'rst': $_GET['t'] = 'reset'; if (isset($p[1])) { $_GET['email'] = urldecode($p[1]); } break; case 'cpf': $_GET['t'] = 'coppa_fax'; break; case 'cp': $_GET['t'] = 'coppa'; break; case 'rc': $_GET['t'] = 'reg_conf'; break; case 'ma': $_GET['t'] = 'mnav'; if (isset($p[1])) { $_GET['rng'] = isset($p[1]) ? $p[1] : 0; $_GET['rng2'] = isset($p[2]) ? $p[2] : 0; $_GET['u'] = isset($p[3]) ? $p[3] : 0; $_GET['start'] = isset($p[4]) ? $p[4] : 0; $_GET['sub'] = !empty($p[5]); } break; case 'ip': $_GET['t'] = 'ip'; if (isset($p[1])) { $_GET[($p[1][0] == 'i' ? 'ip' : 'user')] = isset($p[2]) ? $p[2] : ''; } break; case 'met': $_GET['t'] = 'merge_th'; if (isset($p[1])) { $_GET['frm_id'] = $p[1]; } break; case 'uc': $_GET['t'] = 'uc'; if (isset($p[1], $p[2])) { $_GET[$p[1]] = $p[2]; } break; case 'mmd': $_GET['t'] = 'mmd'; break; case 'cal': /* Calendar */ $_GET['t'] = 'calendar'; break; case 'blog': /* Blog */ $_GET['t'] = 'blog'; if ($p[1] == 'u' && isset($p[2])) { $_GET['user'] = $p[2]; $_GET['start'] = isset($p[3]) ? $p[3] : 0; } if ($p[1] == 'f' && isset($p[2])) { $_GET['forum'] = $p[2]; $_GET['start'] = isset($p[3]) ? $p[3] : 0; } else { $_GET['start'] = $p[1]; } break; case 'page': /* Static page */ $_GET['t'] = 'page'; if (isset($p[1])) { $_GET['id'] = $p[1]; } break; default: // Page not specified, redirect to front page. $_GET['t'] = 'index'; break; } $GLOBALS['t'] = $_GET['t']; } else if (isset($_GET['t'])) { $GLOBALS['t'] = (string) $_GET['t']; } else if (isset($_POST['t'])) { $GLOBALS['t'] = (string) $_POST['t']; } else { $GLOBALS['t'] = 'index'; } if ($GLOBALS['t'] == 'register') { $GLOBALS['THREADS_PER_PAGE_F'] = $GLOBALS['THREADS_PER_PAGE']; // Store old value. } header('P3P: CP="ALL CUR OUR IND UNI ONL INT CNT STA"'); /* P3P Policy. */ $sq = 0; /* Fetch an object with the user's session, profile & theme info. */ if (!($u = ses_get()) && defined('plugins')) { /* Call auto-login plugins. */ $u = plugin_call_hook('AUTO_LOGIN'); } if (!$u) { /* New anon user. */ $u = ses_anon_make(); } else if ($u->id != 1 && (!$GLOBALS['is_post'] || sq_check(1, $u->sq, $u->id, $u->ses_id))) { /* Store the last visit date for registered user. */ q('UPDATE fud30_users SET last_visit='. __request_timestamp__ .' WHERE id='. $u->id); if ($GLOBALS['FUD_OPT_3'] & 1) { // SESSION_COOKIES setcookie($GLOBALS['COOKIE_NAME'], $u->ses_id, 0, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } if (!$u->sq || __request_timestamp__ - $u->last_visit > 180) { // 3 min. $u->sq = $sq = regen_sq($u->id); if (!$GLOBALS['is_post']) { $_GET['SQ'] = $sq; } else { $_POST['SQ'] = $sq; } } else { $sq =& $u->sq; } } // Prevent spiders from doing funny stuff. if (($u->users_opt & 1073741824) && $GLOBALS['is_post']) { // is_spider die('Bad bot!'); } /* Disable caching for registered users and POST requests. */ if ($GLOBALS['is_post'] || $u->id > 1) { header('Cache-Control: no-store, private, must-revalidate, proxy-revalidate, post-check=0, pre-check=0, max-age=0, s-maxage=0'); header('Expires: Mon, 21 Jan 1980 06:01:01 GMT'); header('Pragma: no-cache'); } if ($u->data) { $u->data = unserialize($u->data); } $uo = $u->users_opt = (int)$u->users_opt; /* This should allow path_info & normal themes to work properly within 1 forum. */ if ($o2 & 32768 && !($u->theme_opt & 4)) { $o2 ^= 32768; } /* Handle PM disabling for users. */ if (!($GLOBALS['is_a'] = $uo & 1048576) && $uo & 33554432) { $o1 = $o1 &~ 1024; } /* Set timezone. */ if (empty($u->time_zone) || @date_default_timezone_set($u->time_zone) === FALSE) { date_default_timezone_set($GLOBALS['SERVER_TZ']); } /* Set locale. */ $GLOBALS['good_locale'] = setlocale(LC_ALL, $u->locale); /* Call inituser plugins. */ if (defined('plugins')) { plugin_call_hook('INITUSER', $u); } /* View format for threads & messages. */ define('d_thread_view', $uo & 256 ? 'msg' : 'tree'); define('t_thread_view', $uo & 128 ? 'thread' : 'threadt'); if ($GLOBALS['t'] === 0) { $GLOBALS['t'] = $_GET['t'] = d_thread_view; } else if ($GLOBALS['t'] === 1) { $GLOBALS['t'] = $_GET['t'] = t_thread_view; } /* Define theme path, may already be set by a plugin. */ defined('fud_theme') or define('fud_theme', 'theme/'. ($u->theme_name ? $u->theme_name : 'default') .'/'); /* Define _uid, which, will tell us if this is a 'real' user or not. */ define('__fud_real_user__', ($u->id != 1 ? $u->id : 0)); define('_uid', __fud_real_user__ && ($uo & 131072) && !($uo & 2097152) ? $u->id : 0); /* Allow user to set their own topics per page value, as long as it is smaller then the max. */ if (__fud_real_user__ && $GLOBALS['THREADS_PER_PAGE'] > $u->topics_per_page) { $GLOBALS['THREADS_PER_PAGE'] = (int) $u->topics_per_page; } $GLOBALS['sq'] = $sq; /* Define constants used to track URL sessions & referrals. */ if ($o1 & 128) { define('s', $u->ses_id); define('_hs', ''); if ($o2 & 8192) { if ($o2 & 32768) { define('_rsid', __fud_real_user__ .'/'. s .'/'); } else { define('_rsid', 'rid='. __fud_real_user__ .'&S='. s); } } else { if ($o2 & 32768) { define('_rsid', s .'/'); } else { define('_rsid', 'S='. s); } } } else { define('s', ''); define('_hs', ''); if ($o2 & 8192) { if ($o2 & 32768) { define('_rsid', __fud_real_user__ .'/'); } else { define('_rsid', 'rid='. __fud_real_user__); } } else { define('_rsid', ''); } } define('_rsidl', ($o2 & 32768 ? _rsid : str_replace('&', '&', _rsid))); return $u; } function user_register_forum_view($frm_id) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_forum_read (forum_id, user_id, last_view) VALUES ('. $frm_id .', '. _uid .', '. __request_timestamp__ .') ON DUPLICATE KEY UPDATE last_view=VALUES(last_view)'); return; } if (!db_li('INSERT INTO fud30_forum_read (forum_id, user_id, last_view) VALUES ('. $frm_id .', '. _uid .', '. __request_timestamp__ .')', $ef)) { q('UPDATE fud30_forum_read SET last_view='. __request_timestamp__ .' WHERE forum_id='. $frm_id .' AND user_id='. _uid); } } function user_register_thread_view($thread_id, $tm=__request_timestamp__, $msg_id=0) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_read (last_view, msg_id, thread_id, user_id) VALUES('. $tm .', '. $msg_id .', '. $thread_id .', '. _uid .') ON DUPLICATE KEY UPDATE last_view=VALUES(last_view), msg_id=VALUES(msg_id)'); return; } if (!db_li('INSERT INTO fud30_read (last_view, msg_id, thread_id, user_id) VALUES('. $tm .', '. $msg_id .', '. $thread_id .', '. _uid .')', $ef)) { q('UPDATE fud30_read SET last_view='. $tm .', msg_id='. $msg_id .' WHERE thread_id='. $thread_id .' AND user_id='. _uid); } } function user_set_post_count($uid) { $pd = db_saq('SELECT MAX(id), count(*) FROM fud30_msg WHERE poster_id='. $uid .' AND apr=1'); $level_id = (int) q_singleval(q_limit('SELECT id FROM fud30_level WHERE post_count <= '. $pd[1] .' ORDER BY post_count DESC', 1)); q('UPDATE fud30_users SET u_last_post_id='. (int)$pd[0] .', posted_msg_count='. (int)$pd[1] .', level_id='. $level_id .' WHERE id='. $uid); } function user_mark_all_read($id) { q('UPDATE fud30_users SET last_read='. __request_timestamp__ .' WHERE id='. $id); q('DELETE FROM fud30_read WHERE user_id='. $id); q('DELETE FROM fud30_forum_read WHERE user_id='. $id); } function user_mark_forum_read($id, $fid, $last_view) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view .' ON DUPLICATE KEY UPDATE last_view=VALUES(last_view), msg_id=VALUES(msg_id)'); } else if (__dbtype__ == 'sqlite') { // SQLite optimization. q('REPLACE INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view); } else { // Other databases. if (!db_li('INSERT INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view, $ef)) { q('UPDATE fud30_read SET user_id='. $id .', msg_id=t.last_post_id, last_view='. __request_timestamp__ .' FROM (SELECT id, last_post_id FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view .') t WHERE user_id='. $id .' AND thread_id=t.id'); } } user_register_forum_view($fid); } function sq_check($post, &$sq, $uid=__fud_real_user__, $ses=s) { /* No sequence # check for anonymous users. */ if (!$uid) { return 1; } if ($post && isset($_POST['SQ'])) { $s = $_POST['SQ']; } else if (!$post && isset($_GET['SQ'])) { $s = $_GET['SQ']; } else { $s = 0; } if ($sq !== $s) { if ($GLOBALS['t'] == 'post' || $GLOBALS['t'] == 'ppost') { define('fud_bad_sq', 1); $sq = regen_sq($uid); return 1; } header('Location: [[relativeurl]]/index.php?S='. $ses); exit; } return 1; } function regen_sq($uid=__fud_real_user__) { $sq = md5(get_random_value(128)); q('UPDATE fud30_users SET sq=\''. $sq .'\' WHERE id='. $uid); return $sq; } if (isset($_SERVER['REMOTE_ADDR']) && !defined('no_session')) { $GLOBALS['usr'] = init_user(); } fud_use('err.inc'); /* BUST_A_PUNK enabled. */ if ($FUD_OPT_2 & 524288 && isset($_COOKIE[$COOKIE_NAME .'1']) && $t != 'error') { fud_use('errmsg.inc'); exit_user_banned(); } /* Check PHP_COMPRESSION_ENABLE. */ if ($FUD_OPT_2 & 16384 && $t != 'getfile') { ini_set('zlib.output_compression_level', (int)$PHP_COMPRESSION_LEVEL); ob_start('ob_gzhandler'); } if ($t == 'rview') { if (isset($_GET['th']) || isset($_GET['goto'])) { $t = $_GET['t'] = d_thread_view; } else if (isset($_GET['frm_id'])) { $t = $_GET['t'] = t_thread_view; } else { $t = $_GET['t'] = 'index'; } } else if (preg_match('/[^a-z_]/', $t) || !@file_exists($WWW_ROOT_DISK . fud_theme . $t .'.php')) { // Page not found, redirect to front page. http_response_code(404); $t = 'index'; } /* Call themed template. */ if (defined('plugins')) { $t = plugin_call_hook('PRE_TEMPLATE', $t); if (isset($plugin_hooks['POST_TEMPLATE'])) { ob_start(); // Start capturing output for POST_TEMPLATE plugins. } } require($WWW_ROOT_DISK . fud_theme .'language.inc'); // Initialize theme's language helper functions. require($WWW_ROOT_DISK . fud_theme . $t .'.php'); if (defined('plugins') && isset($plugin_hooks['POST_TEMPLATE'])) { $template_data = ob_get_contents(); ob_end_clean(); echo plugin_call_hook('POST_TEMPLATE', $template_data); } /* Housekeeping. */ while (ob_get_level() > 0) ob_end_flush(); // Flush all output to browser. switch ($t) { case 'msg': if (!isset($_GET['prevloaded'])) { th_inc_view_count($frm->id); } if (_uid && $obj2) { if ($frm->last_forum_view < $obj2->post_stamp) { user_register_forum_view($frm->forum_id); } if ($frm->last_view < $obj2->post_stamp) { user_register_thread_view($frm->id, $obj2->post_stamp, $obj2->id); } } break; case 'tree': if (_uid && $msg_obj) { th_inc_view_count($msg_obj->thread_id); if ($frm->last_forum_view < $msg_obj->post_stamp) { user_register_forum_view($msg_obj->forum_id); } if ($frm->last_view < $msg_obj->post_stamp) { user_register_thread_view($msg_obj->thread_id, $msg_obj->post_stamp, $msg_obj->id); } } break; case 'login': /* Clear expired sessions AND anonymous sessions older than 1 day. */ q('DELETE FROM fud30_ses WHERE time_sec<'. (__request_timestamp__- ($FUD_OPT_3 & 1 ? $SESSION_TIMEOUT : $COOKIE_TIMEOUT)) .' OR (user_id>2000000000 AND time_sec<'. (__request_timestamp__- 86400) .')'); break; case 'thread': case 'threadt': if (_uid) { user_register_forum_view($frm_id); } break; } ?> rdf.php000064400000001062147207550130006033 0ustar00 install.php000064400000022077147207550130006737 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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md5000064400000016374147207550130005173 0ustar00a:119:{s:8:"edit.xml";s:32:"883002534bcd3f658fa5b887ac5e9512";s:9:"notes.txt";s:32:"463f65ec4a2115e7ae6093daeb943096";s:10:"import.php";s:32:"8375f6a621cca8ea45256d755286d94e";s:8:"info.xml";s:32:"73bdf34e21d85ea1ca4b9c412a415fe7";s:10:"install.js";s:32:"0fca4740b95e5d5c84f4aa7b5731a272";s:9:"faveo.zip";s:32:"26c2962c08b4a045c61b210071cedb35";s:9:"faveo.sql";s:32:"50fc566f8ba866856bbea7203e2b866c";s:16:"images/faveo.png";s:32:"6dc51c68edde138623d74d85ebd8577c";s:15:"images/logo.gif";s:32:"4eff2dad9e219f1153e1a46391242f95";s:11:"install.xml";s:32:"f300cd8ddaaf575b6ecaa76b5528343a";s:8:"edit.php";s:32:"a4a3584d2ae9acf0c383b08d01504810";s:11:"install.php";s:32:"4e5f09d0413e70aff766926fa22b3333";s:10:"_clone.php";s:32:"1934d205ccad53c091af70a63c57bfa9";s:10:"extend.php";s:32:"e3d04ede0cd87ed39c14a2ad2017f664";s:13:"fileindex.php";s:32:"dc8823f37c215e4ab4f4b79497d38e3d";s:15:"update_pass.php";s:32:"873c71c24c93b50130d790dfa888d545";s:4:".env";s:32:"3ae2847f5eebc80f84246568df46b3de";s:9:"clone.php";s:32:"69c90aa0ac4cfddf46ae1f2348d1981f";s:15:"images/fcms.png";s:32:"be21f041eb56912ebc3b3e8798446f5e";s:13:"changelog.txt";s:32:"13309349f314e39932a38e8bf05ea855";s:8:"fcms.zip";s:32:"fd43ff97246cfdef06d95a134539c74f";s:11:"upgrade.php";s:32:"d9e2cbec13cd69de6b238383bd24e161";s:15:"images/feng.png";s:32:"e76448d359ec4075ac73ad3b9050960a";s:21:"installed_version.php";s:32:"0f803a30ce28c783eedd3bbfd2d3f284";s:10:"config.php";s:32:"dd7e9e6d79952d691e9eac94fc0828b8";s:8:"feng.zip";s:32:"bab6b8e8b73a7fa4cc8447bf828744e9";s:11:"upgrade.xml";s:32:"277c3dbb8829569dd8555bfe6f22d1e4";s:8:"feng.sql";s:32:"bc4d723ad86b64f018934e81029c3fe9";s:8:"fiyo.sql";s:32:"f02bea703cff4c1c115c2f3cc466f224";s:8:"fiyo.zip";s:32:"fc8ca64a4e754654a6e9721a2c61bdf8";s:15:"images/fiyo.png";s:32:"e79aba92709cce176ae3197935986b2f";s:10:"flarum.zip";s:32:"6835093b57d243c3a81e91028946b43b";s:17:"images/flarum.png";s:32:"ef268fda5f2693f1076df7f51966ad87";s:10:"flarum.sql";s:32:"107e5e92ec482c785f670deeaef41115";s:9:".htaccess";s:32:"cfe746e9378c043ac1c0cd7823607ffc";s:15:"images/flat.png";s:32:"66ef8e20534e49dd489556cb7004e8dd";s:19:"upgrade/12to121.zip";s:32:"30c0108edb7ed479c163036df065aa23";s:8:"flat.zip";s:32:"3edf1ae30f2331298c12c5c572ee4754";s:19:"online_hits.dat.php";s:32:"78f42d5b335b71543f6ea8fffb972b2a";s:20:"images/flatboard.png";s:32:"17794e0b23b3a75d80604afd73b7b8fd";s:7:"key.php";s:32:"48919c0a3985b4c1caaf42d8548ed1fa";s:13:"flatboard.zip";s:32:"e6bb2fd4c2be8b2484a9cefe9a9ba732";s:14:"config.dat.php";s:32:"4583c1105d5050f830e67c0d4ba2569e";s:15:"images/logo.jpg";s:32:"4e48611494f2438ab7e352365ebc5f49";s:17:"images/fluxbb.png";s:32:"fb6aa81dafa8f8fd7423d03070d0f7d3";s:33:"languages/Traditional_Chinese.zip";s:32:"a11a7a11c811fc4a2b244b96f3358cd3";s:20:"languages/Arabic.zip";s:32:"454541fee951900ae8134af15957032e";s:19:"languages/Greek.zip";s:32:"6d565bcd48e21d9f804bf1e434318ae9";s:21:"languages/Italian.zip";s:32:"34dd94f3652a8cac03d64ae0d0a267f4";s:22:"languages/Japanese.zip";s:32:"a02cd4599b5f0e75e98bc617983c9357";s:20:"languages/Hebrew.zip";s:32:"4443ad085ca93cc027a72769f4bf29a1";s:20:"languages/German.zip";s:32:"c21f6a48d37a10645574c70dca2ea3d1";s:20:"languages/French.zip";s:32:"d58e892052010d323f210bab5cc154d1";s:21:"languages/Russian.zip";s:32:"1a54ee09cfc7e7e55090d12c773e1ba0";s:21:"languages/Spanish.zip";s:32:"ed62cf779fbfae22a6168e6f3ebb5bd2";s:10:"fluxbb.sql";s:32:"733150d44bb1897096281c66cc6089ac";s:10:"fluxbb.zip";s:32:"7b51b7e6c8c056cd783a413c38da5dff";s:8:"fork.zip";s:32:"9873136213ea750df723ac17c6884e5d";s:8:"fork.sql";s:32:"96fd4cb8edd49867a322f670af0ff5c1";s:15:"soft_delete.php";s:32:"1e402e4242d2d6ec86197507544223f5";s:15:"images/fork.png";s:32:"5ba0624ba360bc7b72655a84e6dff4e0";s:14:"parameters.yml";s:32:"423af30781bd789f3ceef47a1a05d9cb";s:16:"images/forma.png";s:32:"90aecb876cb76e4cfe371e32b39effeb";s:9:"forma.zip";s:32:"251e8772c9b3d38e92fc5796868b18f9";s:9:"forma.sql";s:32:"4efba702ef5610946fc82464ff4566a8";s:13:"framadate.zip";s:32:"5a47136272335f59959e961ead635e4a";s:9:".htpasswd";s:32:"8c81f8c87cf7acb902b89ff4d3279acc";s:20:"images/framadate.png";s:32:"0bec4e6cef1791c4af6c8cf060fc9ced";s:13:"framadate.sql";s:32:"d0033124eef3627f233fc294e0193339";s:19:"images/freshrss.png";s:32:"d14e087548fdefec705e847051790806";s:18:"config.php.bak.php";s:32:"c7ad201088e91d74d7c582d3c9257c99";s:12:"freshrss.sql";s:32:"85f0c1391d54fc62aacff163c1fd0e78";s:19:"_config.php.bak.php";s:32:"6ac36bddb4d120b47dfcce8ab292c85b";s:12:"freshrss.zip";s:32:"0c41370c245e352f74e07fb7ae90373f";s:11:"_config.php";s:32:"13fb070def66a29276e4e6143cb5124f";s:9:"front.sql";s:32:"b3f9524a0a0aa28bb967b4e1d1e77a97";s:13:"config_db.php";s:32:"188049e98440989889b5cf9890ef104b";s:16:"images/front.png";s:32:"f4b5d61de2b56d6c2a4049c5f060d1b5";s:9:"front.zip";s:32:"f0d66b53e174a149257a363de3a2c446";s:23:"installed_languages.inc";s:32:"d6b601caa991eb8fcf1b473241bf5784";s:25:"installed_extensions_.php";s:32:"00994bf41a536e54a21e9ba181a281d5";s:11:"session.inc";s:32:"8e3614dfa8c8d8673a635ea19b9b681f";s:24:"installed_extensions.php";s:32:"df616b77e7370b255be90394c5e68fd7";s:17:"images/ftools.png";s:32:"d216d4705d751f598c993b9dea6f3074";s:10:"ftools.zip";s:32:"8476e31fb5a86e637f1e27b6d442c104";s:10:"ftools.sql";s:32:"071c3cc96c384f0df5c704ae836411bd";s:7:"fud.sql";s:32:"382ce2ba9d5edad0733c7dd74ef40ca2";s:8:"data.zip";s:32:"2fd77f7a02c69ea61a1049474e802393";s:7:"fud.zip";s:32:"3cbb1de7da69e768f56245dd985d87f0";s:7:"rdf.php";s:32:"f51b1b14042f2f60bd4d69a9036596f6";s:14:"images/fud.png";s:32:"1f68403dfc2c89e37c827e3508c94ce1";s:20:"default/post_opt.inc";s:32:"d358bade26af202c7371c2b0dd91fa91";s:19:"default/admincp.inc";s:32:"10fc1569320d543b695c789d3c08ab69";s:27:"default/draw_forum_list.inc";s:32:"4740ebeea5b5c02e197e1ba00b172dc9";s:18:"default/th_nav.inc";s:32:"b5bfdb2e6d47876f91cd73de24bda57d";s:19:"default/drawmsg.inc";s:32:"5d6f044288a359537c334bf58ea8f0b3";s:18:"default/errmsg.inc";s:32:"dc638fad5f53f94d440547935f7c05aa";s:20:"default/forumsel.inc";s:32:"7ce9417b480d4df05f2da55feea65446";s:17:"default/users.inc";s:32:"fcbd3df7be3b22703d3b11f8520b481e";s:18:"default/return.inc";s:32:"50f54a63eaf67cf5fd6121bed0b045db";s:18:"default/usercp.inc";s:32:"6c03932091407c01443e43c1df53d826";s:28:"default/allowed_user_lnk.inc";s:32:"25e89a25de24ee7a5d4a4cb4ec2d1d0b";s:16:"default/tabs.inc";s:32:"1e6d528de2ae4175d45a949e967b3408";s:19:"default/private.inc";s:32:"4df6a93afcd75152440cecfbe48cc45e";s:23:"default/post_common.inc";s:32:"caf765d09c70ff572c63f2c3f49765a5";s:19:"default/logedin.inc";s:32:"3111186243806dea9478c991649cf3ee";s:20:"default/drawpmsg.inc";s:32:"fcbf2743f63cfdda37f29168fb2eae04";s:30:"default/thread_view_common.inc";s:32:"e50e6317506dd86654203d853cf961d9";s:20:"default/imsg_edt.inc";s:32:"406b378021d28a3a318a89f0bf8d86c3";s:27:"default/draw_forum_path.inc";s:32:"ef0e1383ddfa0a9bb734d647e93f2fdd";s:25:"default/get_cur_ppage.inc";s:32:"f2c4fa84b6e339e49e7ef9e9f4a7e99b";s:15:"default/err.inc";s:32:"6491f511b2acc9c470f4aacf6fe8db52";s:19:"default/cookies.inc";s:32:"ca625e609048885bdcc35ab393854be9";s:12:"_upgrade.xml";s:32:"3da37e4d132645f242e43d77c74229ed";s:11:"GLOBALS.php";s:32:"d8950371ec454cd20a2bc84e63e402fe";s:7:"pdf.php";s:32:"3e0a3a51137c8f3073bc2698febaf070";s:9:"index.php";s:32:"04df64f2f3a94a2d7beb48694b9d4230";s:8:"feed.php";s:32:"142491185365d36bba3876204cf4e3cd";s:12:"_upgrade.php";s:32:"c06f47477caca1d89c517133751fa4ab";}php81/import.php000064400000011171147207550130007534 0ustar00ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 VW==php81/install.php000064400000023056147207550130007675 0ustar00ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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.php000064400000010605147207550130007150 0ustar00ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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edit.xml000064400000000661147207550130006222 0ustar00 {{ad_act}} {{ad_name}} true {{ad_pass}} {{exp_ad_pass}} true pdf.php000064400000143374147207550130006046 0ustar00AddPage(); $this->Bookmark($title); } function input_text($text) { $this->SetFont('helvetica', '', 12); $this->Write(5, $text); $this->Ln(5); } function draw_line() { $this->Line($this->lMargin, $this->y, ($this->w - $this->rMargin), $this->y); } function add_link($url, $caption=0) { $this->SetTextColor(0,0,255); $this->Write(5, $caption ? $caption : $url, $url); $this->SetTextColor(0); } function add_attacments($attch, $private=0) { $this->Ln(5); $this->SetFont('courier', '', 16); $this->Write(5, 'File Attachments'); $this->Ln(5); $this->draw_line(); $this->SetFont('', '', 14); $i = 0; foreach ($attch as $a) { $this->Write(5, ++$i .') '); $this->add_link($GLOBALS['WWW_ROOT'] .'index.php?t=getfile&id='. $a['id'] . ($private ? '&private=1' : ''), $a['name']); $this->Write(5, ', downloaded '. $a['nd'] .' times'); // GIF, PNG and JPG images can be embedded. if (extension_loaded('gd') && preg_match('/\.gif$/i', $a['name'])) { $this->Ln(5); $this->Image($GLOBALS['WWW_ROOT'] .'index.php?t=getfile&id='. $a['id'] . ($private ? '&private=1' : ''), null, null, 0, 0, 'GIF'); } elseif (preg_match('/\.png$/i', $a['name'])) { $this->Ln(5); $this->Image($GLOBALS['WWW_ROOT'] .'index.php?t=getfile&id='. $a['id'] . ($private ? '&private=1' : ''), null, null, 0, 0, 'PNG'); } elseif (preg_match('/\.(jpg|jpeg)$/i', $a['name'])) { $this->Ln(5); $this->Image($GLOBALS['WWW_ROOT'] .'index.php?t=getfile&id='. $a['id'] . ($private ? '&private=1' : ''), null, null, 0, 0, 'JPEG'); } $this->Ln(5); } } function add_poll($name, $opts, $ttl_votes) { $this->Ln(6); $this->SetFont('courier', '', 16); $this->Write(5, $name); $this->SetFont('', '', 14); $this->Write(5, '(total votes: '. $ttl_votes .')'); $this->Ln(6); $this->draw_line(); $this->Ln(5); $p1 = ($this->w - $this->rMargin - $this->lMargin) * 0.6 / 100; // Avoid /0 warnings and safe to do, since we'd be multiplying 0 since there are no votes, if (!$ttl_votes) { $ttl_votes = 1; } $this->SetFont('helvetica', '', 14); foreach ($opts as $o) { $this->SetFillColor(52, 146, 40); $this->Cell((!$o['votes'] ? 1 : $p1 * (($o['votes'] / $ttl_votes) * 100)), 5, $o['name'] ."\t\t". $o['votes'] .'/('.round(($o['votes'] / $ttl_votes) * 100).'%)', 1, 0, '', 1); $this->Ln(5); } $this->SetFillColor(); } function message_header($subject, $author, $date, $id, $th) { $this->Rect($this->lMargin, $this->y, (int)($this->w - $this->lMargin - $this->lMargin), 1, 'F'); $this->Ln(2); $this->SetFont('helvetica', '', 14); $this->Bookmark($subject, 1); $this->Write(5, 'Subject: '. $subject); $this->Ln(5); $this->Write(5, 'Posted by '); $this->add_link($GLOBALS['WWW_ROOT'] .'index.php?t=usrinfo&id='. $author[0], $author[1]); $this->Write(5, ' on '. gmdate('D, d M Y H:i:s \G\M\T', $date)); if ($th) { $this->SetFont('helvetica', '', 10); $this->Ln(5); $this->add_link($GLOBALS['WWW_ROOT'] .'index.php?t=rview&th='. $th .'&goto='. $id .'#msg_'. $id, 'View Forum Message'); $this->Write(5, ' <> '); $this->add_link($GLOBALS['WWW_ROOT'] .'index.php?t=post&reply_to='. $id, 'Reply to Message'); } $this->Ln(5); $this->draw_line(); $this->Ln(3); } function end_message() { $this->Ln(3); $this->Rect($this->lMargin, $this->y, (int)($this->w - $this->lMargin - $this->lMargin), 1, 'F'); $this->Ln(10); } function header() { } function footer() { $this->SetFont('courier', '', 8); $this->Ln(10); $this->draw_line(); $this->Write(5, 'Page '. $this->page .' of {fnb} ---- Generated from '); $this->add_link($GLOBALS['WWW_ROOT'] .'index.php', $GLOBALS['FORUM_TITLE']); // $this->Write(5, ' by FUDforum '. $GLOBALS['FORUM_VERSION']); } function Bookmark($txt, $level=0) { $this->outlines[] = array('t' => $txt, 'l' => $level, 'y' => $this->y, 'p' => $this->page); } function _putbookmarks() { if (empty($this->outlines)) { return; } $nb = count($this->outlines); $lru = array(); $level = 0; foreach ($this->outlines as $i => $o) { if($o['l'] > 0) { $parent = $lru[$o['l']-1]; // Set parent and last pointers. $this->outlines[$i]['parent'] = $parent; $this->outlines[$parent]['last'] = $i; if ($o['l'] > $level) { // Level increasing: set first pointer. $this->outlines[$parent]['first'] = $i; } } else { $this->outlines[$i]['parent'] = $nb; } if($o['l'] <= $level && $i > 0) { // Set prev and next pointers. $prev = $lru[$o['l']]; $this->outlines[$prev]['next'] = $i; $this->outlines[$i]['prev'] = $prev; } $lru[$o['l']] = $i; $level = $o['l']; } // Outline items. $n = $this->n + 1; foreach($this->outlines as $i => $o) { $this->_newobj(); $this->_out('<_textstring($o['t'])); $this->_out('/Parent '. ($n+$o['parent']).' 0 R'); if(isset($o['prev'])) $this->_out('/Prev '. ($n+$o['prev']).' 0 R'); if(isset($o['next'])) $this->_out('/Next '. ($n+$o['next']).' 0 R'); if(isset($o['first'])) $this->_out('/First '. ($n+$o['first']).' 0 R'); if(isset($o['last'])) $this->_out('/Last '. ($n+$o['last']).' 0 R'); $this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.2f null]', 1+2*$o['p'], ($this->h-$o['y'])*$this->k)); $this->_out('/Count 0>>'); $this->_out('endobj'); } // Outline root. $this->_newobj(); $this->OutlineRoot = $this->n; $this->_out('<_out('/Last '. ($n+$lru[0]) .' 0 R>>'); $this->_out('endobj'); } } /* main */ /* Before we go on, we need to do some very basic activation checks. */ if (!($FUD_OPT_1 & 1)) { // FORUM_ENABLED fud_use('errmsg.inc'); exit_forum_disabled(); } /* This potentially can be a longer form to generate. */ @set_time_limit($PDF_MAX_CPU); # define('fud_query_stats', 1); class db { public static $db, $slave; } if (empty(db::$db)) { // Use MYSQLI_REPORT_OFF so we can check error codes manually. $driver = new mysqli_driver(); $driver->report_mode = MYSQLI_REPORT_OFF; if (substr($GLOBALS['DBHOST'], 0, 1) == ':') { // Socket connection. $socket = substr($GLOBALS['DBHOST'], 1); $GLOBALS['DBHOST'] = 'localhost'; } else { $socket = NULL; } if ($GLOBALS['FUD_OPT_1'] & 256 && $socket == NULL && version_compare(PHP_VERSION, '5.3.0', '>=')) { // Enable pconnect for PHP 5.3+. $GLOBALS['DBHOST'] = 'p:'. $GLOBALS['DBHOST']; } db::$db = new mysqli($GLOBALS['DBHOST'], $GLOBALS['DBHOST_USER'], $GLOBALS['DBHOST_PASSWORD'], $GLOBALS['DBHOST_DBNAME'], NULL, $socket); if (mysqli_connect_errno()) { fud_sql_error_handler('Failed to establish database connection', 'MySQLi says: '. mysqli_connect_error(), mysqli_connect_errno(), ''); } db::$db->set_charset('utf8'); /* Connect to slave, if specified. */ if (!empty($GLOBALS['DBHOST_SLAVE_HOST']) && !$GLOBALS['is_post']) { db::$slave = new mysqli($GLOBALS['DBHOST'], $GLOBALS['DBHOST_USER'], $GLOBALS['DBHOST_PASSWORD'], $GLOBALS['DBHOST_DBNAME'], NULL, $socket); if (mysqli_connect_errno()) { fud_logerror('Unable to init SlaveDB, fallback to MasterDB: '. mysqli_connect_error(), 'sql_errors'); } else { db::$db->set_charset('utf8'); } } define('__dbtype__', 'mysql'); } function db_close() { db::$db->close(); } function db_version() { if (!defined('__FUD_SQL_VERSION__')) { $ver = q_singleval('SELECT VERSION()'); define('__FUD_SQL_VERSION__', $ver); } return __FUD_SQL_VERSION__; } function db_lock($tables) { if (!empty($GLOBALS['__DB_INC_INTERNALS__']['db_locked'])) { fud_sql_error_handler('Recursive Lock', 'internal', 'internal', db_version()); } else { q('LOCK TABLES '. $tables); $GLOBALS['__DB_INC_INTERNALS__']['db_locked'] = 1; } } function db_unlock() { if (empty($GLOBALS['__DB_INC_INTERNALS__']['db_locked'])) { unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); fud_sql_error_handler('DB_UNLOCK: no previous lock established', 'internal', 'internal', db_version()); } if (--$GLOBALS['__DB_INC_INTERNALS__']['db_locked'] < 0) { unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); fud_sql_error_handler('DB_UNLOCK: unlock overcalled', 'internal', 'internal', db_version()); } unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); q('UNLOCK TABLES'); } function db_locked() { return isset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); } function db_affected() { return db::$db->affected_rows; } function uq($query) { return q($query); } if (!defined('fud_query_stats')) { function q($query) { // Assume master DB, route SELECT's to slave DB. // Force master if DB is locked (in transaction) or 'SELECT /* USE MASTER */'. $db = db::$db; if (!empty(db::$slave) && !db_locked() && !strncasecmp($query, 'SELECT', 6) && strncasecmp($query, 'SELECT /* USE MASTER */', 23)) { $db = db::$slave; } $r = $db->query($query); if ($db->error) { fud_sql_error_handler($query, $db->error, $db->errno, db_version()); } return $r; } } else { function q($query) { if (!isset($GLOBALS['__DB_INC_INTERNALS__']['query_count'])) { $GLOBALS['__DB_INC_INTERNALS__']['query_count'] = 1; } else { ++$GLOBALS['__DB_INC_INTERNALS__']['query_count']; } if (!isset($GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'])) { $GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'] = 0; } // Assume master DB, route SELECT's to slave DB. // Force master if DB is locked (in transaction) or 'SELECT /* USE MASTER */'. $db = db::$db; if (!empty(db::$slave) && !db_locked() && !strncasecmp($query, 'SELECT', 6) && strncasecmp($query, 'SELECT /* USE MASTER */', 23)) { $db = db::$slave; } $s = microtime(true); $result = $db->query($query); if ($db->error) { fud_sql_error_handler($query, $db->error, $db->errno, db_version()); } $e = microtime(true); $GLOBALS['__DB_INC_INTERNALS__']['last_time'] = ($e - $s); $GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'] += $GLOBALS['__DB_INC_INTERNALS__']['last_time']; echo '
Query #'. $GLOBALS['__DB_INC_INTERNALS__']['query_count'] .''; echo ': time taken: '. number_format($GLOBALS['__DB_INC_INTERNALS__']['last_time'], 4) .''; echo ', affected rows: '. db_affected() .''; echo ', total sql time: '. number_format($GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'], 4) .''; echo '
'. preg_replace('!\s+!', ' ', htmlspecialchars($query)) .'
'; return $result; } } function db_rowobj($result) { return $result->fetch_object(); } function db_rowarr($result) { return $result->fetch_row(); } function q_singleval($query) { $r = q($query); if (($result = $r->fetch_row()) !== false && isset($result)) { return isset($result) ? $result[0] : ''; } } function q_limit($query, $limit, $off=0) { return $query .' LIMIT '. $limit .' OFFSET '. $off; } function q_concat($arg) { // MySQL badly breaks the SQL standard by redefining || to mean OR. $tmp = func_get_args(); return 'CONCAT('. implode(',', $tmp) .')'; } function q_rownum() { q('SET @seq=0'); // For simulating rownum. return '(@seq:=@seq+1)'; } function q_bitand($fieldLeft, $fieldRight) { return $fieldLeft .' & '. $fieldRight; } function q_bitor($fieldLeft, $fieldRight) { return '('. $fieldLeft .' | '. $fieldRight .')'; } function q_bitnot($bitField) { return '~'. $bitField; } function db_saq($q) { $r = q($q); return $r->fetch_row() ; } function db_sab($q) { $r = q($q); return $r->fetch_object(); } function db_qid($q) { q($q); return db::$db->insert_id; } function db_arr_assoc($q) { $r = q($q); return $r->fetch_array(MYSQLI_ASSOC); } function db_fetch_array($r) { return is_object($r) ? $r->fetch_array(MYSQLI_ASSOC) : null; } function db_li($q, &$ef, $li=0) { $r = db::$db->query($q); if ($r) { return ($li ? db::$db->insert_id : $r); } /* Duplicate key. */ if (db::$db->errno == 1062) { $ef = ltrim(strrchr(db::$db->error, ' ')); return null; } else { fud_sql_error_handler($q, db::$db->error, db::$db->errno, db_version()); } } function ins_m($tbl, $flds, $types, $vals) { q('INSERT IGNORE INTO '. $tbl .' ('. $flds .') VALUES ('. implode('),(', $vals) .')'); } function db_all($q) { $f = array(); $c = uq($q); while ($r = $c->fetch_row()) { $f[] = $r[0]; } return $f; } function _esc($s) { return '\''. db::$db->real_escape_string($s) .'\''; }function ses_make_sysid() { if ($GLOBALS['FUD_OPT_2'] & 256) { // MULTI_HOST_LOGIN return; } $keys = array('REMOTE_USER', 'HTTP_USER_AGENT', 'SERVER_PROTOCOL', 'HTTP_ACCEPT_CHARSET', 'HTTP_ACCEPT_LANGUAGE'); if ($GLOBALS['FUD_OPT_3'] & 16) { // SESSION_IP_CHECK $keys[] = 'HTTP_X_FORWARDED_FOR'; $keys[] = 'REMOTE_ADDR'; } $pfx = ''; foreach ($keys as $v) { if (isset($_SERVER[$v])) { $pfx .= $_SERVER[$v]; } } return md5($pfx); } function ses_get($id=0) { if (!$id) { /* Cookie or URL session? If not, check for known bots. */ if (!empty($_COOKIE[$GLOBALS['COOKIE_NAME']])) { /* Have cookie */ $q_opt = 's.ses_id='. _esc($_COOKIE[$GLOBALS['COOKIE_NAME']]); } else if ((isset($_GET['S']) || isset($_POST['S'])) && $GLOBALS['FUD_OPT_1'] & 128) { /* Have session string */ $url_session = 1; $q_opt = 's.ses_id='. _esc((isset($_GET['S']) ? (string) $_GET['S'] : (string) $_POST['S'])); /* Do not validate against expired URL sessions. */ $q_opt .= ' AND s.time_sec > '. (__request_timestamp__ - $GLOBALS['SESSION_TIMEOUT']); } else { /* Unknown user, maybe bot? */ // Auto login authorized bots. // To test: wget --user-agent="Googlebot 1.2" http://127.0.0.1:8080/forum $spider_session = 0; $my_ip = get_ip(); include $GLOBALS['FORUM_SETTINGS_PATH'] .'spider_cache'; foreach ($spider_cache as $spider_id => $spider) { if (preg_match('/'. $spider['useragent'] .'/i', $_SERVER['HTTP_USER_AGENT'])) { if (empty($spider['bot_ip'])) { $spider_session = 1; // Agent matched, no IPs to check. break; } else { foreach (explode(',', $spider['bot_ip']) as $bot_ip) { if (!($bot_ip = trim($bot_ip))) { continue; } if (strpos($bot_ip, $my_ip) === 0) { $spider_session = 1; // Agent and an IP matched. break; } } } } } if ($spider_session) { if ($spider['bot_opts'] & 2) { // Access blocked. die('Go away!'); } if ($id = db_li('INSERT INTO fud30_ses (ses_id, time_sec, sys_id, ip_addr, useragent, user_id) VALUES (\''. $spider['botname'] .'\', '. __request_timestamp__ .', '. _esc(ses_make_sysid()) .', '. _esc($my_ip) .', '. _esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)) .', '. $spider['user_id'] .')', $ef, 1)) { $q_opt = 's.id='. $id; } else { $q_opt = 's.ses_id='. _esc($spider['botname']); } $GLOBALS['FUD_OPT_1'] ^= 128; // Disable URL sessions for user. } else { /* NeXuS: What is this? Return if user unknown? Function should return only after the query is run. */ //return; // Check sys_id, ip_addr and useragent for a possible match $q_opt = 's.sys_id= '._esc(ses_make_sysid()). ' AND s.ip_addr='._esc(get_ip()). ' AND s.useragent='._esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)); } } /* ENABLE_REFERRER_CHECK */ if ($GLOBALS['FUD_OPT_3'] & 4 && isset($_SERVER['HTTP_REFERER']) && strncmp($_SERVER['HTTP_REFERER'], $GLOBALS['WWW_ROOT'], strlen($GLOBALS['WWW_ROOT']))) { /* More checks, we need those because some proxies mangle referer field. */ $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; /* $p > 8 https:// or http:// */ if (($p = strpos($_SERVER['HTTP_REFERER'], $host)) === false || $p > 8) { $q_opt .= ' AND s.user_id > 2000000000 '; // Different referrer, force anonymous. } } } else { $q_opt = 's.id='. $id; } $u = db_sab('SELECT s.id AS sid, s.ses_id, s.data, s.returnto, s.sys_id, t.id AS theme_id, t.lang, t.name AS theme_name, t.locale, t.theme, t.pspell_lang, t.theme_opt, u.alias, u.posts_ppg, u.time_zone, u.sig, u.last_visit, u.last_read, u.cat_collapse_status, u.users_opt, u.posted_msg_count, u.topics_per_page, u.ignore_list, u.ignore_list, u.buddy_list, u.id, u.group_leader_list, u.email, u.login, u.sq, u.ban_expiry, u.ban_reason, u.flag_cc FROM fud30_ses s INNER JOIN fud30_users u ON u.id=(CASE WHEN s.user_id>2000000000 THEN 1 ELSE s.user_id END) LEFT OUTER JOIN fud30_themes t ON t.id=u.theme WHERE '. $q_opt); /* Anon user, no session or login. */ if (!$u || $u->id == 1 || $id) { return $u; } if ($u->sys_id == ses_make_sysid()) { return $u; } else if ($GLOBALS['FUD_OPT_3'] & 16 || isset($url_session)) { /* URL sessions must validate sys_id check and SESSION_IP_CHECK must be disabled */ return; } /* Try doing a strict SQ match in last-ditch effort to make things 'work'. */ if (isset($_POST['SQ']) && $_POST['SQ'] == $u->sq) { return $u; } return; } /** Create an anonymous session. */ function ses_anon_make() { do { $uid = 2000000000 + mt_rand(1, 147483647); $ses_id = md5($uid . __request_timestamp__ . getmypid()); } while (!($id = db_li('INSERT INTO fud30_ses (ses_id, time_sec, sys_id, ip_addr, useragent, user_id) VALUES (\''. $ses_id .'\', '. __request_timestamp__ .', '. _esc(ses_make_sysid()) .', '. _esc(get_ip()) .', '. _esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)) .', '. $uid .')', $ef, 1))); /* When we have an anon user, we set a special cookie allowing us to see who referred this user. */ if (isset($_GET['rid']) && !isset($_COOKIE['frm_referer_id']) && $GLOBALS['FUD_OPT_2'] & 8192) { setcookie($GLOBALS['COOKIE_NAME'] .'_referer_id', $_GET['rid'], __request_timestamp__+31536000, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } if ($GLOBALS['FUD_OPT_3'] & 1) { // SESSION_COOKIES setcookie($GLOBALS['COOKIE_NAME'], $ses_id, 0, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } else { setcookie($GLOBALS['COOKIE_NAME'], $ses_id, __request_timestamp__+$GLOBALS['COOKIE_TIMEOUT'], $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } return ses_get($id); } /** Update session status to indicate last known action. */ function ses_update_status($ses_id, $str=null, $forum_id=0, $ret='') { if (empty($ses_id)) { die('FATAL ERROR: No session, check your forum\'s URL and COOKIE settings.'); } q('UPDATE fud30_ses SET sys_id=\''. ses_make_sysid() .'\', forum_id='. $forum_id .', time_sec='. __request_timestamp__ .', action='. ($str ? _esc($str) : 'NULL') .', returnto='. (!is_int($ret) ? (isset($_SERVER['QUERY_STRING']) ? _esc($_SERVER['QUERY_STRING']) : 'NULL') : 'returnto') .' WHERE id='. $ses_id); } /** Save/ clear a session variable. */ function ses_putvar($ses_id, $data) { $cond = is_int($ses_id) ? 'id='. (int)$ses_id : 'ses_id=\''. $ses_id .'\''; if (empty($data)) { q('UPDATE fud30_ses SET data=NULL WHERE '. $cond); } else { q('UPDATE fud30_ses SET data='. _esc(serialize($data)) .' WHERE '. $cond); } } /** Destroy a session. */ function ses_delete($ses_id) { // Delete all forum sessions. // Regardless of MULTI_HOST_LOGIN, all sessions will be terminated. q('DELETE FROM fud30_ses WHERE id='. $ses_id); setcookie($GLOBALS['COOKIE_NAME'], '', __request_timestamp__-100000, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); return 1; } function ses_anonuser_auth($id, $error) { if (!empty($_POST)) { $_SERVER['QUERY_STRING'] = ''; } q('UPDATE fud30_ses SET data='. _esc(serialize($error)) .', returnto='. ssn($_SERVER['QUERY_STRING']) .' WHERE id='. $id); if ($GLOBALS['FUD_OPT_2'] & 32768) { // USE_PATH_INFO header('Location: [[relativeurl]]/index.php/l/'. _rsidl); } else { header('Location: [[relativeurl]]/index.php?t=login&'. _rsidl); } exit; }function &init_user() { $o1 =& $GLOBALS['FUD_OPT_1']; $o2 =& $GLOBALS['FUD_OPT_2']; if ($o2 & 32768 && empty($_SERVER['PATH_INFO']) && !empty($_SERVER['ORIG_PATH_INFO'])) { $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; } /* We need to parse S & rid right away since they are used during user init. */ if ($o2 & 32768 && !empty($_SERVER['PATH_INFO']) && empty($_GET['t'])) { // USE_PATH_INFO $pb = $p = explode('/', trim($_SERVER['PATH_INFO'], '/')); if ($o1 & 128) { // SESSION_USE_URL $_GET['S'] = array_pop($p); } if ($o2 & 8192) { // TRACK_REFERRALS $_GET['rid'] = array_pop($p); } $_SERVER['QUERY_STRING'] = htmlspecialchars($_SERVER['PATH_INFO']) .'?'. $_SERVER['QUERY_STRING']; /* Default to index page. */ if (!isset($p[0])) { $p[0] = 'i'; } /* Notice prevention code. */ for ($i = 1; $i < 5; $i++) { if (!isset($p[$i])) { $p[$i] = null; } } switch ($p[0]) { case 'm': /* goto specific message */ $_GET['t'] = 0; $_GET['goto'] = $p[1]; if (isset($p[2])) { $_GET['th'] = $p[2]; if (isset($p[3]) && is_numeric($p[3])) { $_GET['start'] = $p[3]; if ($p[3]) { $_GET['t'] = 'msg'; unset($_GET['goto']); } if (isset($p[4])) { if ($p[4] === 'prevloaded') { $_GET['prevloaded'] = 1; $i = 5; } else { $i = 4; } if (isset($p[$i])) { $_GET['rev'] = $p[$i]; if (isset($p[$i+1])) { $_GET['reveal'] = $p[$i+1]; } } } } } break; case 't': /* view thread */ $_GET['t'] = 0; $_GET['th'] = $p[1]; if (isset($p[2]) && is_numeric($p[2])) { // START is not currently used for thread paging. // Set to 0, but keep code for possible future implementation. // $_GET['start'] = $p[2]; $_GET['start'] = 0; if (!empty($p[3])) { $_GET[$p[3]] = 1; } } break; case 'f': /* view forum */ $_GET['t'] = 1; $_GET['frm_id'] = $p[1]; if (isset($p[2])) { $_GET['start'] = $p[2]; if (isset($p[3])) { if ($p[3] === '0') { $_GET['sub'] = 1; } else { $_GET['unsub'] = 1; } } } break; case 'r': $_GET['t'] = 'post'; $_GET[$p[1]] = $p[2]; if (isset($p[3])) { $_GET['reply_to'] = $p[3]; if (isset($p[4])) { if ($p[4]) { $_GET['quote'] = 'true'; } if (isset($p[5])) { $_GET['start'] = $p[5]; } } } break; case 'u': /* view user's info */ $_GET['t'] = 'usrinfo'; $_GET['id'] = $p[1]; break; case 'i': $_GET['t'] = 'index'; if (isset($p[1])) { $_GET['cat'] = (int) $p[1]; } break; case 'fa': $_GET['t'] = 'getfile'; $_GET['id'] = isset($p[1]) ? $p[1] : $pb[1]; if (!empty($p[2])) { $_GET['private'] = 1; } break; case 'sp': /* show posts */ $_GET['t'] = 'showposts'; $_GET['id'] = $p[1]; if (isset($p[2])) { $_GET['so'] = $p[2]; if (isset($p[3])) { $_GET['start'] = $p[3]; } } break; case 'l': /* login/logout */ $_GET['t'] = 'login'; if (isset($p[1])) { $_GET['logout'] = 1; } break; case 'e': $_GET['t'] = 'error'; break; case 'st': $_GET['t'] = $p[1]; $_GET['th'] = $p[2]; $_GET['notify'] = $p[3]; $_GET['opt'] = $p[4] ? 'on' : 'off'; if (isset($p[5])) { $_GET['start'] = $p[5]; } break; case 'sf': $_GET['t'] = $p[1]; $_GET['frm_id'] = $p[2]; $_GET[$p[3]] = 1; $_GET['start'] = $p[4]; break; case 'sl': /* subscribed topic list */ $_GET['t'] = 'subscribed'; if ($p[1] == 'start') { $_GET['start'] = $p[2]; } else { if (isset($p[2])) { $_GET['th'] = $p[2]; } else if (isset($p[1])) { $_GET['frm_id'] = $p[1]; } } break; case 'bml': /* bookmark list */ $_GET['t'] = 'bookmarked'; if ($p[1] == 'start') { $_GET['start'] = $p[2]; } else { if (isset($p[2])) { $_GET['th'] = $p[2]; } } break; case 'pmm': $_GET['t'] = 'ppost'; if (isset($p[1], $p[2])) { $_GET[$p[1]] = $p[2]; if (isset($p[3])) { $_GET['rmid'] = $p[3]; } } break; case 'pmv': $_GET['t'] = 'pmsg_view'; $_GET['id'] = $p[1]; if (isset($p[2])) { $_GET['dr'] = 1; } break; case 'pdm': $_GET['t'] = 'pmsg'; if (isset($p[1])) { if ($p[1] !== 'btn_delete') { $_GET['folder_id'] = $p[1]; } else { $_GET['btn_delete'] = 1; $_GET['sel'] = $p[2]; } if (isset($p[3])) { $_GET['s'] = $p[3]; $_GET['o'] = $p[4]; $_GET['start'] = $p[5]; } } break; case 'pl': /* poll list */ $_GET['t'] = 'polllist'; if (isset($p[1])) { $_GET['uid'] = $p[1]; if (isset($p[2])) { $_GET['start'] = $p[2]; if (isset($p[3])) { $_GET['oby'] = $p[3]; } } } break; case 'ml': /* member list */ $_GET['t'] = 'finduser'; if (isset($p[1])) { switch ($p[1]) { case 1: case 2: $_GET['pc'] = $p[1]; break; case 3: case 4: $_GET['us'] = $p[1]; break; case 5: case 6: $_GET['rd'] = $p[1]; break; case 7: case 8: $_GET['fl'] = $p[1]; break; case 9: case 10: $_GET['lv'] = $p[1]; break; } if (isset($p[2])) { $_GET['start'] = $p[2]; if (isset($p[3])) { $_GET['usr_login'] = urldecode($p[3]); if (isset($p[4])) { $_GET['js_redr'] = $p[5]; } } } } break; case 'h': /* help */ $_GET['t'] = 'help_index'; if (isset($p[1])) { $_GET['section'] = $p[1]; } break; case 'cv': /* change thread view mode */ $_GET['t'] = $p[1]; $_GET['frm_id'] = $p[2]; break; case 'mv': /* change message view mode */ $_GET['t'] = $p[1]; $_GET['th'] = $p[2]; if (isset($p[3])) { if ($p[3] !== '0') { $_GET['goto'] = $p[3]; } else { $_GET['prevloaded'] = 1; $_GET['start'] = $p[4]; if (isset($p[5])) { $_GET['rev'] = $p[5]; if (isset($p[6])) { $_GET['reveal'] = $p[6]; } } } } break; case 'pv': $_GET['t'] = 0; if (isset($p[1])) { $_GET['goto'] = q_singleval('SELECT id FROM fud30_msg WHERE poll_id='.(int)$p[1]); $_GET['pl_view'] = empty($p[2]) ? 0 : (int)$p[2]; } break; case 'rm': /* report message */ $_GET['t'] = 'report'; $_GET['msg_id'] = $p[1]; break; case 'rl': /* list of reported messages */ $_GET['t'] = 'reported'; if (isset($p[1])) { $_GET['del'] = $p[1]; } break; case 'd': /* delete thread/message */ $_GET['t'] = 'mmod'; $_GET['del'] = $p[1]; if (isset($p[2])) { $_GET['th'] = $p[2]; } break; case 'em': /* email forum member */ $_GET['t'] = 'email'; $_GET['toi'] = $p[1]; break; case 'mar': /* mark all/forum read */ $_GET['t'] = 'markread'; if (isset($p[1])) { $_GET['id'] = $p[1]; if (isset($p[2])) { $_GET['cat'] = $p[2]; } } break; case 'bl': /* buddy list */ $_GET['t'] = 'buddy_list'; if (isset($p[1])) { if (!empty($p[2])) { $_GET['add'] = $p[1]; } else { $_GET['del'] = $p[1]; } if (isset($p[3])) { $_GET['redr'] = 1; } } break; case 'il': /* ignore list */ $_GET['t'] = 'ignore_list'; if (isset($p[1])) { if (!empty($p[2])) { $_GET['add'] = $p[1]; } else { $_GET['del'] = $p[1]; } if (isset($p[3])) { $_GET['redr'] = 1; } } break; case 'lk': /* lock/unlock thread */ $_GET['t'] = 'mmod'; $_GET['th'] = $p[1]; $_GET[$p[2]] = 1; break; case 'stt': /* split thread */ $_GET['t'] = 'split_th'; if (isset($p[1])) { $_GET['th'] = $p[1]; } break; case 'ef': /* email to friend */ $_GET['t'] = 'remail'; $_GET['th'] = $p[1]; break; case 'lr': /* list referers */ $_GET['t'] = 'list_referers'; if (isset($p[1])) { $_GET['start'] = $p[1]; } break; case 'a': $_GET['t'] = 'actions'; if (isset($p[1], $p[2])) { $_GET['o'] = $p[1]; $_GET['s'] = $p[2]; } break; case 's': $_GET['t'] = 'search'; if (isset($p[1])) { $_GET['srch'] = urldecode($p[1]); $_GET['field'] = isset($p[2]) ? $p[2] : ''; $_GET['search_logic'] = isset($p[3]) ? $p[3] : ''; $_GET['sort_order'] = isset($p[4]) ? $p[4] : ''; $_GET['forum_limiter'] = isset($p[5]) ? $p[5] : ''; $_GET['start'] = isset($p[6]) ? $p[6] : ''; $_GET['author'] = isset($p[7]) ? $p[7] : ''; } break; case 'p': if (!is_numeric($p[1])) { $_GET[$p[1]] = $p[2]; } else { $_GET['frm'] = $p[1]; $_GET['page'] = $p[2]; } break; case 'ot': $_GET['t'] = 'online_today'; if (isset($p[1], $p[2])) { $_GET['o'] = $p[1]; $_GET['s'] = $p[2]; } break; case 're': $_GET['t'] = 'register'; if (isset($p[1])) { $_GET['reg_coppa'] = $p[1]; } break; case 'tt': $_GET['t'] = $p[1]; $_GET['frm_id'] = $p[2]; break; case 'mh': $_GET['t'] = 'mvthread'; $_GET['th'] = $p[1]; if (isset($p[2], $p[3])) { $_GET[$p[2]] = $p[3]; } break; case 'mn': $_GET['t'] = $p[1]; $_GET['th'] = $p[2]; $_GET['notify'] = $p[3]; $_GET['opt'] = $p[4]; if (isset($p[5])) { if ($p[1] == 'msg') { $_GET['start'] = $p[5]; } else { $_GET['mid'] = $p[5]; } } break; case 'bm': /* bookmark/unbookmark a topic */ $_GET['t'] = $p[1]; $_GET['th'] = $p[2]; $_GET['bookmark'] = $p[3]; $_GET['opt'] = $p[4]; if (isset($p[5])) { if ($p[1] == 'msg') { $_GET['start'] = $p[5]; } else { $_GET['mid'] = $p[5]; } } break; case 'tr': $_GET['t'] = 'ratethread'; break; case 'gm': $_GET['t'] = 'groupmgr'; if (isset($p[1], $p[2], $p[3])) { $_GET[$p[1]] = $p[2]; $_GET['group_id'] = $p[3]; } break; case 'te': $_GET['t'] = 'thr_exch'; if (isset($p[1], $p[2])) { $_GET[$p[1]] = $p[2]; } break; case 'mq': $_GET['t'] = 'modque'; if (isset($p[1], $p[2])) { $_GET[$p[1]] = $p[2]; } break; case 'pr': $_GET['t'] = 'pre_reg'; $_GET['coppa'] = $p[1]; break; case 'qb': $_GET['t'] = 'qbud'; break; case 'po': $_GET['t'] = 'poll'; $_GET['frm_id'] = $p[1]; if (isset($p[2])) { $_GET['pl_id'] = $p[2]; if (isset($p[3], $p[4])) { $_GET[$p[3]] = $p[4]; } } break; case 'sm': $_GET['t'] = 'smladd'; break; case 'mk': $_GET['t'] = 'mklist'; $_GET['tp'] = $p[1]; break; case 'rp': $_GET['t'] = 'rpasswd'; break; case 'as': $_GET['t'] = 'avatarsel'; break; case 'sel': $_GET['t'] = 'selmsg'; $c = count($p) - 1; if ($c % 2) { --$c; } $c /= 2; $i = 0; while ($c--) { $_GET[$p[++$i]] = $p[++$i]; } break; case 'pml': $_GET['t'] = 'pmuserloc'; $_GET['js_redr'] = $p[1]; if (isset($p[2])) { $_GET['overwrite'] = 1; } break; case 'rst': $_GET['t'] = 'reset'; if (isset($p[1])) { $_GET['email'] = urldecode($p[1]); } break; case 'cpf': $_GET['t'] = 'coppa_fax'; break; case 'cp': $_GET['t'] = 'coppa'; break; case 'rc': $_GET['t'] = 'reg_conf'; break; case 'ma': $_GET['t'] = 'mnav'; if (isset($p[1])) { $_GET['rng'] = isset($p[1]) ? $p[1] : 0; $_GET['rng2'] = isset($p[2]) ? $p[2] : 0; $_GET['u'] = isset($p[3]) ? $p[3] : 0; $_GET['start'] = isset($p[4]) ? $p[4] : 0; $_GET['sub'] = !empty($p[5]); } break; case 'ip': $_GET['t'] = 'ip'; if (isset($p[1])) { $_GET[($p[1][0] == 'i' ? 'ip' : 'user')] = isset($p[2]) ? $p[2] : ''; } break; case 'met': $_GET['t'] = 'merge_th'; if (isset($p[1])) { $_GET['frm_id'] = $p[1]; } break; case 'uc': $_GET['t'] = 'uc'; if (isset($p[1], $p[2])) { $_GET[$p[1]] = $p[2]; } break; case 'mmd': $_GET['t'] = 'mmd'; break; case 'cal': /* Calendar */ $_GET['t'] = 'calendar'; break; case 'blog': /* Blog */ $_GET['t'] = 'blog'; if ($p[1] == 'u' && isset($p[2])) { $_GET['user'] = $p[2]; $_GET['start'] = isset($p[3]) ? $p[3] : 0; } if ($p[1] == 'f' && isset($p[2])) { $_GET['forum'] = $p[2]; $_GET['start'] = isset($p[3]) ? $p[3] : 0; } else { $_GET['start'] = $p[1]; } break; case 'page': /* Static page */ $_GET['t'] = 'page'; if (isset($p[1])) { $_GET['id'] = $p[1]; } break; default: // Page not specified, redirect to front page. $_GET['t'] = 'index'; break; } $GLOBALS['t'] = $_GET['t']; } else if (isset($_GET['t'])) { $GLOBALS['t'] = (string) $_GET['t']; } else if (isset($_POST['t'])) { $GLOBALS['t'] = (string) $_POST['t']; } else { $GLOBALS['t'] = 'index'; } if ($GLOBALS['t'] == 'register') { $GLOBALS['THREADS_PER_PAGE_F'] = $GLOBALS['THREADS_PER_PAGE']; // Store old value. } header('P3P: CP="ALL CUR OUR IND UNI ONL INT CNT STA"'); /* P3P Policy. */ $sq = 0; /* Fetch an object with the user's session, profile & theme info. */ if (!($u = ses_get()) && defined('plugins')) { /* Call auto-login plugins. */ $u = plugin_call_hook('AUTO_LOGIN'); } if (!$u) { /* New anon user. */ $u = ses_anon_make(); } else if ($u->id != 1 && (!$GLOBALS['is_post'] || sq_check(1, $u->sq, $u->id, $u->ses_id))) { /* Store the last visit date for registered user. */ q('UPDATE fud30_users SET last_visit='. __request_timestamp__ .' WHERE id='. $u->id); if ($GLOBALS['FUD_OPT_3'] & 1) { // SESSION_COOKIES setcookie($GLOBALS['COOKIE_NAME'], $u->ses_id, 0, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } if (!$u->sq || __request_timestamp__ - $u->last_visit > 180) { // 3 min. $u->sq = $sq = regen_sq($u->id); if (!$GLOBALS['is_post']) { $_GET['SQ'] = $sq; } else { $_POST['SQ'] = $sq; } } else { $sq =& $u->sq; } } // Prevent spiders from doing funny stuff. if (($u->users_opt & 1073741824) && $GLOBALS['is_post']) { // is_spider die('Bad bot!'); } /* Disable caching for registered users and POST requests. */ if ($GLOBALS['is_post'] || $u->id > 1) { header('Cache-Control: no-store, private, must-revalidate, proxy-revalidate, post-check=0, pre-check=0, max-age=0, s-maxage=0'); header('Expires: Mon, 21 Jan 1980 06:01:01 GMT'); header('Pragma: no-cache'); } if ($u->data) { $u->data = unserialize($u->data); } $uo = $u->users_opt = (int)$u->users_opt; /* This should allow path_info & normal themes to work properly within 1 forum. */ if ($o2 & 32768 && !($u->theme_opt & 4)) { $o2 ^= 32768; } /* Handle PM disabling for users. */ if (!($GLOBALS['is_a'] = $uo & 1048576) && $uo & 33554432) { $o1 = $o1 &~ 1024; } /* Set timezone. */ if (empty($u->time_zone) || @date_default_timezone_set($u->time_zone) === FALSE) { date_default_timezone_set($GLOBALS['SERVER_TZ']); } /* Set locale. */ $GLOBALS['good_locale'] = setlocale(LC_ALL, $u->locale); /* Call inituser plugins. */ if (defined('plugins')) { plugin_call_hook('INITUSER', $u); } /* View format for threads & messages. */ define('d_thread_view', $uo & 256 ? 'msg' : 'tree'); define('t_thread_view', $uo & 128 ? 'thread' : 'threadt'); if ($GLOBALS['t'] === 0) { $GLOBALS['t'] = $_GET['t'] = d_thread_view; } else if ($GLOBALS['t'] === 1) { $GLOBALS['t'] = $_GET['t'] = t_thread_view; } /* Define theme path, may already be set by a plugin. */ defined('fud_theme') or define('fud_theme', 'theme/'. ($u->theme_name ? $u->theme_name : 'default') .'/'); /* Define _uid, which, will tell us if this is a 'real' user or not. */ define('__fud_real_user__', ($u->id != 1 ? $u->id : 0)); define('_uid', __fud_real_user__ && ($uo & 131072) && !($uo & 2097152) ? $u->id : 0); /* Allow user to set their own topics per page value, as long as it is smaller then the max. */ if (__fud_real_user__ && $GLOBALS['THREADS_PER_PAGE'] > $u->topics_per_page) { $GLOBALS['THREADS_PER_PAGE'] = (int) $u->topics_per_page; } $GLOBALS['sq'] = $sq; /* Define constants used to track URL sessions & referrals. */ if ($o1 & 128) { define('s', $u->ses_id); define('_hs', ''); if ($o2 & 8192) { if ($o2 & 32768) { define('_rsid', __fud_real_user__ .'/'. s .'/'); } else { define('_rsid', 'rid='. __fud_real_user__ .'&S='. s); } } else { if ($o2 & 32768) { define('_rsid', s .'/'); } else { define('_rsid', 'S='. s); } } } else { define('s', ''); define('_hs', ''); if ($o2 & 8192) { if ($o2 & 32768) { define('_rsid', __fud_real_user__ .'/'); } else { define('_rsid', 'rid='. __fud_real_user__); } } else { define('_rsid', ''); } } define('_rsidl', ($o2 & 32768 ? _rsid : str_replace('&', '&', _rsid))); return $u; } function user_register_forum_view($frm_id) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_forum_read (forum_id, user_id, last_view) VALUES ('. $frm_id .', '. _uid .', '. __request_timestamp__ .') ON DUPLICATE KEY UPDATE last_view=VALUES(last_view)'); return; } if (!db_li('INSERT INTO fud30_forum_read (forum_id, user_id, last_view) VALUES ('. $frm_id .', '. _uid .', '. __request_timestamp__ .')', $ef)) { q('UPDATE fud30_forum_read SET last_view='. __request_timestamp__ .' WHERE forum_id='. $frm_id .' AND user_id='. _uid); } } function user_register_thread_view($thread_id, $tm=__request_timestamp__, $msg_id=0) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_read (last_view, msg_id, thread_id, user_id) VALUES('. $tm .', '. $msg_id .', '. $thread_id .', '. _uid .') ON DUPLICATE KEY UPDATE last_view=VALUES(last_view), msg_id=VALUES(msg_id)'); return; } if (!db_li('INSERT INTO fud30_read (last_view, msg_id, thread_id, user_id) VALUES('. $tm .', '. $msg_id .', '. $thread_id .', '. _uid .')', $ef)) { q('UPDATE fud30_read SET last_view='. $tm .', msg_id='. $msg_id .' WHERE thread_id='. $thread_id .' AND user_id='. _uid); } } function user_set_post_count($uid) { $pd = db_saq('SELECT MAX(id), count(*) FROM fud30_msg WHERE poster_id='. $uid .' AND apr=1'); $level_id = (int) q_singleval(q_limit('SELECT id FROM fud30_level WHERE post_count <= '. $pd[1] .' ORDER BY post_count DESC', 1)); q('UPDATE fud30_users SET u_last_post_id='. (int)$pd[0] .', posted_msg_count='. (int)$pd[1] .', level_id='. $level_id .' WHERE id='. $uid); } function user_mark_all_read($id) { q('UPDATE fud30_users SET last_read='. __request_timestamp__ .' WHERE id='. $id); q('DELETE FROM fud30_read WHERE user_id='. $id); q('DELETE FROM fud30_forum_read WHERE user_id='. $id); } function user_mark_forum_read($id, $fid, $last_view) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view .' ON DUPLICATE KEY UPDATE last_view=VALUES(last_view), msg_id=VALUES(msg_id)'); } else if (__dbtype__ == 'sqlite') { // SQLite optimization. q('REPLACE INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view); } else { // Other databases. if (!db_li('INSERT INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view, $ef)) { q('UPDATE fud30_read SET user_id='. $id .', msg_id=t.last_post_id, last_view='. __request_timestamp__ .' FROM (SELECT id, last_post_id FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view .') t WHERE user_id='. $id .' AND thread_id=t.id'); } } user_register_forum_view($fid); } function sq_check($post, &$sq, $uid=__fud_real_user__, $ses=s) { /* No sequence # check for anonymous users. */ if (!$uid) { return 1; } if ($post && isset($_POST['SQ'])) { $s = $_POST['SQ']; } else if (!$post && isset($_GET['SQ'])) { $s = $_GET['SQ']; } else { $s = 0; } if ($sq !== $s) { if ($GLOBALS['t'] == 'post' || $GLOBALS['t'] == 'ppost') { define('fud_bad_sq', 1); $sq = regen_sq($uid); return 1; } header('Location: [[relativeurl]]/index.php?S='. $ses); exit; } return 1; } function regen_sq($uid=__fud_real_user__) { $sq = md5(get_random_value(128)); q('UPDATE fud30_users SET sq=\''. $sq .'\' WHERE id='. $uid); return $sq; } if (isset($_SERVER['REMOTE_ADDR']) && !defined('no_session')) { $GLOBALS['usr'] = init_user(); }function read_msg_body($off, $len, $id) { if ($off == -1) { // Fetch from DB and return. return q_singleval('SELECT data FROM fud30_msg_store WHERE id='. $id); } if (!$len) { // Empty message. return; } // Open file if it's not already open. if (!isset($GLOBALS['__MSG_FP__'][$id])) { $GLOBALS['__MSG_FP__'][$id] = fopen($GLOBALS['MSG_STORE_DIR'] .'msg_'. $id, 'rb'); } // Read from file. fseek($GLOBALS['__MSG_FP__'][$id], $off); return fread($GLOBALS['__MSG_FP__'][$id], $len); }$GLOBALS['__revfs'] = array('"', '<', '>', '&'); $GLOBALS['__revfd'] = array('"', '<', '>', '&'); function reverse_fmt($data) { $s = $d = array(); if (empty($data)) return ''; foreach ($GLOBALS['__revfs'] as $k => $v) { if (strpos($data, $v) !== false) { $s[] = $v; $d[] = $GLOBALS['__revfd'][$k]; } } return $s ? str_replace($s, $d, $data) : $data; }$GLOBALS['__SML_CHR_CHK__'] = array("\n"=>1, "\r"=>1, "\t"=>1, ' '=>1, ']'=>1, '['=>1, '<'=>1, '>'=>1, '\''=>1, '"'=>1, '('=>1, ')'=>1, '.'=>1, ','=>1, '!'=>1, '?'=>1); function smiley_to_post($text) { $text_l = strtolower($text); include $GLOBALS['FORUM_SETTINGS_PATH'] .'sp_cache'; /* remove all non-formatting blocks */ foreach (array(''=>'
', '' => '') as $k => $v) {
		$p = 0;
		while (($p = strpos($text_l, $v, $p)) !== false) {
			if (($e = strpos($text_l, $k, $p)) === false) {
				$p += 5;
				continue;
			}
			$text_l = substr_replace($text_l, str_repeat(' ', $e - $p), $p, ($e - $p));
			$p = $e;
		}
	}

	foreach ($SML_REPL as $k => $v) {
		$a = 0;
		$len = strlen($k);
		while (($a = strpos($text_l, $k, $a)) !== false) {
			if ((!$a || isset($GLOBALS['__SML_CHR_CHK__'][$text_l[$a - 1]])) && ((@$ch = $text_l[$a + $len]) == '' || isset($GLOBALS['__SML_CHR_CHK__'][$ch]))) {
				$text_l = substr_replace($text_l, $v, $a, $len);
				$text = substr_replace($text, $v, $a, $len);
				$a += strlen($v) - $len;
			} else {
				$a += $len;
			}
		}
	}

	return $text;
}

function post_to_smiley($text)
{
	/* include once since draw_post_smiley_cntrl() may use it too */
	include_once $GLOBALS['FORUM_SETTINGS_PATH'].'ps_cache';
	if (isset($PS_SRC)) {
		$GLOBALS['PS_SRC'] = $PS_SRC;
		$GLOBALS['PS_DST'] = $PS_DST;
	} else {
		$PS_SRC = $GLOBALS['PS_SRC'];
		$PS_DST = $GLOBALS['PS_DST'];
	}

	/* check for emoticons */
	foreach ($PS_SRC as $k => $v) {
		if (strpos($text, $v) === false) {
			unset($PS_SRC[$k], $PS_DST[$k]);
		}
	}

	return $PS_SRC ? str_replace($PS_SRC, $PS_DST, $text) : $text;
}


	if (!($FUD_OPT_2 & 134217728)) {	// PDF_ENABLED
		std_error('disabled');
	}

	if ($FUD_OPT_2 & 16384) {		// PHP_COMPRESSION_ENABLE
		ob_start('ob_gzhandler', (int)$PHP_COMPRESSION_LEVEL);
	}

	$forum	= isset($_GET['frm']) ? (int)$_GET['frm'] : 0;
	$thread	= isset($_GET['th']) ? (int)$_GET['th'] : 0;
	$msg	= isset($_GET['msg']) ? (int)$_GET['msg'] : 0;
	$page	= isset($_GET['page']) ? (int)$_GET['page'] : 0;
	$sel	= isset($_GET['sel']) ? (array)$_GET['sel'] : array();

	// Cleanup $sel
	foreach ($sel as $k => $v) {
		if ($v = (int)$v) {
			$sel[$k] = $v;
		} else {
			unset($sel[$k]);
		}
	}

	if ($forum) {
		if (!($FUD_OPT_2 & 268435456)) {	// PDF_ALLOW_FULL
			 std_error('disabled');		
		}

		if (!$page) {
			$page = 1;
		}

		if ($page) {
			if (!q_singleval('SELECT id FROM fud30_forum WHERE id='. $forum)) {
				invl_inp_err();
			}
			$lwi = q_singleval(q_limit('SELECT seq FROM fud30_tv_'. $forum .' ORDER BY seq DESC', 1));
			if ($lwi === NULL || $lwi === FALSE) {
				invl_inp_err();
			}

			$join = 'FROM fud30_tv_'. $forum .' tv
				INNER JOIN fud30_thread t ON t.id=tv.thread_id
				INNER JOIN fud30_forum f ON f.id='. $forum .'
				INNER JOIN fud30_msg m ON m.thread_id=t.id
				LEFT JOIN fud30_users u ON m.poster_id=u.id
				LEFT JOIN fud30_poll p ON m.poll_id=p.id
			';
			$lmt = ' AND tv.seq BETWEEN '. ($lwi - ($page * $THREADS_PER_PAGE) + 1) .' AND '. ($lwi - (($page - 1) * $THREADS_PER_PAGE));
		} else {
			$join = 'FROM fud30_forum f
				INNER JOIN fud30_thread t ON t.forum_id=f.id
				INNER JOIN fud30_msg m ON m.thread_id=t.id
				LEFT JOIN fud30_users u ON m.poster_id=u.id
				LEFT JOIN fud30_poll p ON m.poll_id=p.id
			';
			$lmt = ' AND f.id='. $forum;
		}
	} else if ($thread) {
		$join = 'FROM fud30_msg m
				INNER JOIN fud30_thread t ON t.id=m.thread_id
				INNER JOIN fud30_forum f ON f.id=t.forum_id
				LEFT JOIN fud30_users u ON m.poster_id=u.id
				LEFT JOIN fud30_poll p ON m.poll_id=p.id
			';
		$lmt = ' AND m.thread_id='. $thread;
	} else if ($msg) {
		$lmt = ' AND m.id='. $msg;
		$join = 'FROM fud30_msg m
				INNER JOIN fud30_thread t ON t.id=m.thread_id
				INNER JOIN fud30_forum f ON f.id=t.forum_id
				LEFT JOIN fud30_users u ON m.poster_id=u.id
				LEFT JOIN fud30_poll p ON m.poll_id=p.id
			';
	} else if ($sel) { /* PM handling. */
		if (!q_singleval('SELECT count(*) FROM fud30_pmsg WHERE id IN('. implode(',', $sel) .') AND duser_id='. _uid)) {
			invl_inp_err();
		}
		fud_use('private.inc');
	} else {
		invl_inp_err();
	}

	if (_uid) {
		if (!$is_a) {
			$join .= '	INNER JOIN fud30_group_cache g1 ON g1.user_id=2147483647 AND g1.resource_id=f.id
					LEFT JOIN fud30_group_cache g2 ON g2.user_id='. _uid .' AND g2.resource_id=f.id
					LEFT JOIN fud30_mod mm ON mm.forum_id=f.id AND mm.user_id='. _uid .' ';
			$lmt .= ' AND (mm.id IS NOT NULL OR '. q_bitand('COALESCE(g2.group_cache_opt, g1.group_cache_opt)', 2) .' > 0)';
		}
	} else {
		$join .= ' INNER JOIN fud30_group_cache g1 ON g1.user_id=0 AND g1.resource_id=f.id ';
		$lmt .= ' AND '. q_bitand('g1.group_cache_opt', 2) .' > 0';
	}

	if ($forum) {
		$subject = q_singleval('SELECT name FROM fud30_forum WHERE id='. $forum);
	}

	if (!$sel) {
		$c = q('SELECT
				m.id, m.thread_id, m.subject, m.post_stamp,
				m.attach_cnt, m.attach_cache, m.poll_cache,
				m.foff, m.length, m.file_id, u.id AS user_id,
				COALESCE(u.alias, \''. $ANON_NICK .'\') as alias,
				p.name AS poll_name, p.total_votes
			'. $join .'
			WHERE
				t.moved_to=0 AND m.apr=1 '. $lmt .' ORDER BY m.post_stamp, m.thread_id');
	} else {
		$c = q('SELECT p.*, u.alias, p.duser_id AS user_id FROM fud30_pmsg p 
				LEFT JOIN fud30_users u ON p.ouser_id=u.id
				WHERE p.id IN('. implode(',', $sel) .') AND p.duser_id='. _uid);
	}

	if (!($o = db_rowobj($c))) {
		invl_inp_err();
	}

	if ($thread || $msg) {
		$subject = reverse_fmt($o->subject);
	} else if ($sel) {
		$subject = 'Private Message Archive';
	}

	$fpdf = new fud_pdf('P', 'mm', $PDF_PAGE);
	$fpdf->SetAuthor('FUDforum '. $FORUM_VERSION);
	$fpdf->SetTitle(html_entity_decode($FORUM_TITLE));
	$fpdf->SetSubject($subject);
	$fpdf->SetMargins($PDF_WMARGIN, $PDF_HMARGIN);
	$fpdf->AliasNbPages('{fnb}');       // Alias for total number of pages.

	$fpdf->begin_page($subject);
	do {
		/* Write message header. */
		$fpdf->message_header(html_entity_decode($o->subject), array($o->user_id, html_entity_decode($o->alias)), $o->post_stamp, $o->id, (isset($o->thread_id) ? $o->thread_id : 0));

		/* Write message body. */
		if (!$sel) {
			$body = read_msg_body($o->foff, $o->length, $o->file_id);
		} else {
			$body = read_pmsg_body($o->foff, $o->length);
		}

		$fpdf->input_text(html_entity_decode(strip_tags(post_to_smiley($body))));

		/* Handle attachments. */
		if ($o->attach_cnt) {
			if (!empty($o->attach_cache) && ($a = unserialize($o->attach_cache))) {
				$attch = array();
				foreach ($a as $i) {
					$attch[] = array('id' => $i[0], 'name' => $i[1], 'nd' => $i[3]);
				}
				$fpdf->add_attacments($attch);
			} else if ($sel) {
				$attch = array();
				$c2 = uq('SELECT id, original_name, dlcount FROM fud30_attach WHERE message_id='. $o->id .' AND attach_opt=1');
				while ($r2 = db_rowarr($c2)) {
					$attch[] = array('id' => $r2[0], 'name' => $r2[1], 'nd' => $r2[2]);
				}
				unset($c2);
				if ($attch) {
					$fpdf->add_attacments($attch, 1);
				}
			}
		}

		/* Handle polls. */
		if (!empty($o->poll_name) && $o->poll_cache && ($pc = unserialize($o->poll_cache))) {
			$votes = array();
			foreach ($pc as $opt) {
				$votes[] = array('name' => html_entity_decode(strip_tags(post_to_smiley($opt[0]))), 'votes' => $opt[1]);
			}
			$fpdf->add_poll(html_entity_decode($o->poll_name), $votes, $o->total_votes);
		}

		$fpdf->end_message();
	} while (($o = db_rowobj($c)));
	unset($c);

	/* Output content to browser. */
	$out = $fpdf->Output('FUDforum'. date('Ymd') .'.pdf', 'S');
	header('Content-Type: application/pdf');
	if ($_SERVER['SERVER_PORT'] == '443' && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) {
		header('Cache-Control: must-revalidate, post-check=0, pre-check=0', 1);
		header('Pragma: public', 1);
	}
	if (!($GLOBALS['FUD_OPT_2'] & 16384)) {
		header('Content-Length: '. strlen($out));
	}
	header('Content-disposition: inline; filename=FUDforum'. date('Ymd') .'.pdf');
	echo $out;
?>
php56/import.php000064400000011657147207550130007547 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199);
?>
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php56/install.php000064400000023014147207550130007671 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199);
?>
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php56/edit.php000064400000011476147207550130007161 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199);
?>
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
gxFk7XtmTUOkrYPw03WNiDku7eS=default/usercp.inc000064400000002220147207550130010164 0ustar00 You have ('.$c.') unread '.convertPlural($c, array('private message','private messages')).'' : '
  • Private Messaging
  • '; } else { $ucp_private_msg = ''; } ?>default/allowed_user_lnk.inc000064400000007167147207550130012233 0ustar00 $v) { if (($v && (strpos($addr, $k) !== false)) || (!$v && preg_match($k, $addr))) { return 1; } } return; } function is_allowed_user(&$usr, $simple=0) { /* Check if the ban expired. */ if (($banned = $usr->users_opt & 65536) && $usr->ban_expiry && $usr->ban_expiry < __request_timestamp__) { q('UPDATE fud30_users SET users_opt = '. q_bitand('users_opt', ~65536) .' WHERE id='. $usr->id); $usr->users_opt ^= 65536; $banned = 0; } if ($banned || is_email_blocked($usr->email) || is_login_blocked($usr->login) || is_ip_blocked(get_ip())) { $ban_expiry = (int) $usr->ban_expiry; $ban_reason = $usr->ban_reason; if (!$simple) { // On login page we already have anon session. ses_delete($usr->sid); $usr = ses_anon_make(); } setcookie($GLOBALS['COOKIE_NAME'].'1', 'd34db33fd34db33fd34db33fd34db33f', ($ban_expiry ? $ban_expiry : (__request_timestamp__ + 63072000)), $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); if ($banned) { error_dialog('ERROR: You have been banned.', 'Your account was '.($ban_expiry ? 'temporarily banned until '.print_date('%a, %d %B %Y %H:%M', $ban_expiry).'' : 'permanently banned' ) .' from accessing the site, due to a violation of the forum's rules.

    '.$ban_reason.''); } else { error_dialog('ERROR: Your account has been filtered out.', 'Your account has been blocked from accessing the forum due to one of the installed user filters.'); } } if ($simple) { return; } if ($GLOBALS['FUD_OPT_1'] & 1048576 && $usr->users_opt & 262144) { error_dialog('ERROR: Your account is not yet confirmed', 'We have not received a confirmation from your parent and/or legal guardian, which would allow you to post messages. If you lost your COPPA form, view it again.'); } if ($GLOBALS['FUD_OPT_2'] & 1 && !($usr->users_opt & 131072)) { std_error('emailconf'); } if ($GLOBALS['FUD_OPT_2'] & 1024 && $usr->users_opt & 2097152) { error_dialog('Unverified Account', 'The administrator had chosen to review all accounts manually prior to activation. Until your account has been validated by the administrator you will not be able to utilize the full capabilities of your account.'); } } ?> default/return.inc000064400000002211147207550130010202 0ustar00 default/post_opt.inc000064400000005372147207550130010545 0ustar00HTML code is off'; $post_opt_fud = 'BBcode is off'; $post_opt_images = 'Images are off'; $post_opt_smilies = 'Smilies are off'; $edit_time_limit = ''; if (is_int($arg)) { if ($arg & 16) { $post_opt_fud = 'BBcode is on'; } else if (!($arg & 8)) { $post_opt_html = 'HTML is on'; } if ($perms & 16384) { $post_opt_smilies = 'Smilies are on'; } if ($perms & 32768) { $post_opt_images = 'Images are on'; } if ($GLOBALS['EDIT_TIME_LIMIT'] >= 0) { // Time limit enabled, $edit_time_limit = $GLOBALS['EDIT_TIME_LIMIT'] ? '
    Editing Time Limit: '.$GLOBALS['EDIT_TIME_LIMIT'].' minutes' : '
    Editing Time Limit: Unlimited'; } } else if ($arg == 'private') { $o =& $GLOBALS['FUD_OPT_1']; if ($o & 4096) { $post_opt_fud = 'BBcode is on'; } else if (!($o & 2048)) { $post_opt_html = 'HTML is on'; } if ($o & 16384) { $post_opt_images = 'Images are on'; } if ($o & 8192) { $post_opt_smilies = 'Smilies are on'; } } else if ($arg == 'sig') { $o =& $GLOBALS['FUD_OPT_1']; if ($o & 131072) { $post_opt_fud = 'BBcode is on'; } else if (!($o & 65536)) { $post_opt_html = 'HTML is on'; } if ($o & 524288) { $post_opt_images = 'Images are on'; } if ($o & 262144) { $post_opt_smilies = 'Smilies are on'; } } return 'Forum Options:
    '.$post_opt_html.'
    '.$post_opt_fud.'
    '.$post_opt_images.'
    '.$post_opt_smilies.$edit_time_limit.'
    '; } ?> default/tabs.inc000064400000003210147207550130007614 0ustar00'uc', 'Account Settings'=>'register', 'Subscriptions'=>'subscribed', 'Bookmarks'=>'bookmarked', 'Referrals'=>'referals', 'Buddy List'=>'buddy_list', 'Ignore List'=>'ignore_list', 'Show Own Posts'=>'showposts' ); if (!($FUD_OPT_2 & 8192)) { unset($tablist['Referrals']); } if (isset($_POST['mod_id'])) { $mod_id_chk = $_POST['mod_id']; } else if (isset($_GET['mod_id'])) { $mod_id_chk = $_GET['mod_id']; } else { $mod_id_chk = null; } if (!$mod_id_chk) { if ($FUD_OPT_1 & 1024) { $tablist['Private Messaging'] = 'pmsg'; } $pg = ($_GET['t'] == 'pmsg_view' || $_GET['t'] == 'ppost') ? 'pmsg' : $_GET['t']; foreach($tablist as $tab_name => $tab) { $tab_url = '[[relativeurl]]/index.php?t='. $tab . (s ? '&S='. s : ''); if ($tab == 'referals') { if (!($FUD_OPT_2 & 8192)) { continue; } $tab_url .= '&id='. _uid; } else if ($tab == 'showposts') { $tab_url .= '&id='. _uid; } $tabs .= $pg == $tab ? '' : ''; } $tabs = ' '.$tabs.'
    '; } } ?> default/drawpmsg.inc000064400000023017147207550130010516 0ustar00users_opt; $b =& $usr->users_opt; if (!$mini) { $custom_tag = $obj->custom_status ? '
    '.$obj->custom_status.'' : ''; $c = (int) $obj->level_opt; if ($obj->avatar_loc && $a & 8388608 && $b & 8192 && $o1 & 28 && !($c & 2)) { if (!($c & 1)) { $level_name =& $obj->level_name; $level_image = $obj->level_img ? ' ' : ''; } else { $level_name = $level_image = ''; } } else { $level_image = $obj->level_img ? ' ' : ''; $obj->avatar_loc = ''; $level_name =& $obj->level_name; } $avatar = ($obj->avatar_loc || $level_image) ? ''.$obj->avatar_loc.$level_image.'' : ''; $dmsg_tags = ($custom_tag || $level_name) ? '
    '.$level_name.$custom_tag.'
    ' : ''; if (($o2 & 32 && !($a & 32768)) || $b & 1048576) { $obj->login = $obj->alias; $online_indicator = (($obj->last_visit + $GLOBALS['LOGEDIN_TIMEOUT'] * 60) > __request_timestamp__) ? ''.$obj->login.' is currently online' : ''.$obj->login.' is currently offline'; } else { $online_indicator = ''; } if ($obj->location) { if (strlen($obj->location) > $GLOBALS['MAX_LOCATION_SHOW']) { $location = substr($obj->location, 0, $GLOBALS['MAX_LOCATION_SHOW']) .'...'; } else { $location = $obj->location; } $location = '
    Location: '.$location; } else { $location = ''; } $usr->buddy_list = $usr->buddy_list ? unserialize($usr->buddy_list) : array(); if ($obj->user_id != _uid && $obj->user_id > 0) { $buddy_link = !isset($usr->buddy_list[$obj->user_id]) ? 'add to buddy list
    ' : '
    [remove from buddy list]'; } else { $buddy_link = ''; } /* Show im buttons if need be. */ if ($b & 16384) { $im = ''; if ($obj->icq) { $im .= ' '; } if ($obj->facebook) { $im .= ' '; } if ($obj->yahoo) { $im .= ' '; } if ($obj->jabber) { $im .= ''; } if ($obj->google) { $im .= ''; } if ($obj->skype) { $im .= ''; } if ($obj->twitter) { $im .= ''; } if ($im) { $dmsg_im_row = ''.$im.'
    '; } else { $dmsg_im_row = ''; } } else { $dmsg_im_row = ''; } if ($obj->ouser_id != _uid) { $user_profile = ''; $email_link = ($o1 & 4194304 && $a & 16) ? '' : ''; $private_msg_link = ''; } else { $user_profile = $email_link = $private_msg_link = ''; } $msg_toolbar = ''; } else { $dmsg_tags = $dmsg_im_row = $user_profile = $msg_toolbar = $buddy_link = $avatar = $online_indicator = $host_name = $location = ''; } if ($obj->length > 0) { $msg_body = read_pmsg_body($obj->foff, $obj->length); } else { $msg_body = 'No Message Body'; } $msg_body = $obj->length ? read_pmsg_body($obj->foff, $obj->length) : 'No Message Body'; $file_attachments = ''; if ($obj->attach_cnt) { $c = uq('SELECT a.id, a.original_name, a.dlcount, m.icon, a.fsize FROM fud30_attach a LEFT JOIN fud30_mime m ON a.mime_type=m.id WHERE a.message_id='. $obj->id .' AND attach_opt=1'); while ($r = db_rowobj($c)) { $sz = $r->fsize/1024; $sz = $sz<1000 ? number_format($sz, 2) .'KB' : number_format($sz / 1024 ,2) .'MB'; if(!$r->icon) { $r->icon = 'unknown.gif'; } $file_attachments .= '
  • Attachment: '.$r->original_name.'
    (Size: '.$sz.', Downloaded '.convertPlural($r->dlcount, array(''.$r->dlcount.' time',''.$r->dlcount.' times')).')
  • '; } unset($c); if ($file_attachments) { $file_attachments = ''; /* Append session to getfile. */ if ($o1 & 128 && !isset($_COOKIE[$GLOBALS['COOKIE_NAME']])) { $msg_body = str_replace(' '.$msg_toolbar.'
    '.(!$mini && $obj->icon ? '  ' : '' ) .''.$obj->subject.' '.print_date('%a, %d %B %Y %H:%M', $obj->post_stamp).'
    '.$avatar.'
    '.$online_indicator.(!$mini ? ''.htmlspecialchars($obj->alias, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, null, false).'' : ''.htmlspecialchars($obj->alias, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, null, false).'' ) .(!$mini ? '
    Messages: '.$obj->posted_msg_count.'
    Registered: '.print_date('%B %Y', $obj->join_date).' '.$location.'' : '' ) .'
    '.$dmsg_tags.' '.$buddy_link.$dmsg_im_row.(!$mini && $obj->host_name && $o1 & 268435456 ? 'From: '.$obj->host_name.'
    ' : '' ) .'
    '.$msg_body.' '.$file_attachments.' '.(($obj->sig && $o1 & 32768 && $obj->pmsg_opt & 1 && $b & 4096) ? '

    '.$obj->sig.'
    ' : '' ) .'
    '.$GLOBALS['dpmsg_prev_message'].' '.$GLOBALS['dpmsg_next_message'].'
    '; } ?> default/private.inc000064400000016361147207550130010350 0ustar00post_stamp = __request_timestamp__; $this->ip_addr = get_ip(); $this->host_name = $GLOBALS['FUD_OPT_1'] & 268435456 ? _esc(get_host($this->ip_addr)) : 'NULL'; if ($this->fldr != 1) { $this->read_stamp = $this->post_stamp; } if ($GLOBALS['FUD_OPT_3'] & 32768) { $this->foff = $this->length = -1; } else { list($this->foff, $this->length) = write_pmsg_body($this->body); } $this->id = db_qid('INSERT INTO fud30_pmsg ( ouser_id, duser_id, pdest, to_list, ip_addr, host_name, post_stamp, icon, fldr, subject, attach_cnt, read_stamp, ref_msg_id, foff, length, pmsg_opt ) VALUES( '. $this->ouser_id .', '. ($this->duser_id ? $this->duser_id : $this->ouser_id) .', '. (isset($GLOBALS['recv_user_id'][0]) ? (int)$GLOBALS['recv_user_id'][0] : '0') .', '. ssn($this->to_list) .', \''. $this->ip_addr .'\', '. $this->host_name .', '. $this->post_stamp .', '. ssn($this->icon) .', '. $this->fldr .', '. _esc($this->subject) .', '. (int)$this->attach_cnt .', '. $this->read_stamp .', '. ssn($this->ref_msg_id) .', '. (int)$this->foff .', '. (int)$this->length .', '. $this->pmsg_opt .' )'); if ($GLOBALS['FUD_OPT_3'] & 32768 && $this->body) { $fid = db_qid('INSERT INTO fud30_msg_store (data) VALUES('. _esc($this->body) .')'); q('UPDATE fud30_pmsg SET length='. $fid .' WHERE id='. $this->id); } if ($this->fldr == 3 && !$track) { $this->send_pmsg(); } } function send_pmsg() { $this->pmsg_opt |= 16|32; $this->pmsg_opt &= 16|32|1|2|4; foreach($GLOBALS['recv_user_id'] as $v) { $id = db_qid('INSERT INTO fud30_pmsg ( to_list, ouser_id, ip_addr, host_name, post_stamp, icon, fldr, subject, attach_cnt, foff, length, duser_id, ref_msg_id, pmsg_opt ) VALUES ( '. ssn($this->to_list).', '. $this->ouser_id .', \''. $this->ip_addr .'\', '. $this->host_name .', '. $this->post_stamp .', '. ssn($this->icon) .', 1, '. _esc($this->subject) .', '. (int)$this->attach_cnt .', '. $this->foff .', '. $this->length .', '. $v .', '. ssn($this->ref_msg_id) .', '. $this->pmsg_opt .')'); if ($GLOBALS['FUD_OPT_3'] & 32768 && $this->body) { $fid = db_qid('INSERT INTO fud30_msg_store (data) VALUES('. _esc($this->body) .')'); q('UPDATE fud30_pmsg SET length='. $fid .' WHERE id='. $id); } $GLOBALS['send_to_array'][] = array($v, $id); $um[$v] = $id; } $c = uq('SELECT id, email FROM fud30_users WHERE id IN('. implode(',', $GLOBALS['recv_user_id']) .') AND users_opt>=64 AND '. q_bitand('users_opt', 64) .' > 0'); $from = reverse_fmt($GLOBALS['usr']->alias); $subject = reverse_fmt($this->subject); while ($r = db_rowarr($c)) { /* Do not send notifications about messages sent to self. */ if ($r[0] == $this->ouser_id) { continue; } send_pm_notification($r[1], $um[$r[0]], $subject, $from); } unset($c); } function sync() { $this->post_stamp = __request_timestamp__; $this->ip_addr = get_ip(); $this->host_name = $GLOBALS['FUD_OPT_1'] & 268435456 ? _esc(get_host($this->ip_addr)) : 'NULL'; if ($GLOBALS['FUD_OPT_3'] & 32768) { // DB_MESSAGE_STORAGE if ($fid = q_singleval('SELECT length FROM fud30_pmsg WHERE id='. $this->id .' AND foff!=-1')) { q('DELETE FROM fud30_msg_store WHERE id='. $this->length); } $this->foff = $this->length = -1; } else { list($this->foff, $this->length) = write_pmsg_body($this->body); } q('UPDATE fud30_pmsg SET to_list='. ssn($this->to_list) .', icon='. ssn($this->icon) .', ouser_id='. $this->ouser_id .', duser_id='. $this->ouser_id .', post_stamp='. $this->post_stamp .', subject='. _esc($this->subject) .', ip_addr=\''. $this->ip_addr .'\', host_name='. $this->host_name .', attach_cnt='. (int)$this->attach_cnt .', fldr='. $this->fldr .', foff='. (int)$this->foff .', length='. (int)$this->length .', pmsg_opt='. $this->pmsg_opt .' WHERE id='. $this->id); if ($GLOBALS['FUD_OPT_3'] & 32768 && $this->body) { $fid = db_qid('INSERT INTO fud30_msg_store (data) VALUES('. _esc($this->body) .')'); q('UPDATE fud30_pmsg SET length='. $fid .' WHERE id='. $this->id); } if ($this->fldr == 3) { $this->send_pmsg(); } } } function write_pmsg_body($text) { if (($ll = !db_locked())) { db_lock('fud30_fl_pm WRITE'); } $fp = fopen($GLOBALS['MSG_STORE_DIR'] .'private', 'ab'); if (!$fp) { exit("FATAL ERROR: cannot open private message store
    \n"); } fseek($fp, 0, SEEK_END); if (!($s = ftell($fp))) { $s = __ffilesize($fp); } if (($len = fwrite($fp, $text)) !== strlen($text)) { exit("FATAL ERROR: system has ran out of disk space
    \n"); } fclose($fp); if ($ll) { db_unlock(); } if (!$s) { @chmod($GLOBALS['MSG_STORE_DIR'] .'private', ($GLOBALS['FUD_OPT_2'] & 8388608 ? 0600 : 0644)); } return array($s, $len); } function read_pmsg_body($offset, $length) { if ($length < 1) { return; } if ($GLOBALS['FUD_OPT_3'] & 32768 && $offset == -1) { return q_singleval('SELECT data FROM fud30_msg_store WHERE id='. $length); } $fp = fopen($GLOBALS['MSG_STORE_DIR'].'private', 'rb'); fseek($fp, $offset, SEEK_SET); $str = fread($fp, $length); fclose($fp); return $str; } function pmsg_move($mid, $fid, $validate) { if (!$validate && !q_singleval('SELECT id FROM fud30_pmsg WHERE duser_id='. _uid .' AND id='. $mid)) { return; } q('UPDATE fud30_pmsg SET fldr='. $fid .' WHERE duser_id='. _uid .' AND id='. $mid); } function pmsg_del($mid, $fldr=0) { if (!$fldr && !($fldr = q_singleval('SELECT fldr FROM fud30_pmsg WHERE duser_id='. _uid .' AND id='. $mid))) { return; } if ($fldr != 5) { pmsg_move($mid, 5, 0); } else { if ($GLOBALS['FUD_OPT_3'] & 32768 && ($fid = q_singleval('SELECT length FROM fud30_pmsg WHERE id='. $mid .' AND foff=-1'))) { q('DELETE FROM fud30_msg_store WHERE id='. $fid); } q('DELETE FROM fud30_pmsg WHERE id='.$mid); $c = uq('SELECT id FROM fud30_attach WHERE message_id='. $mid .' AND attach_opt=1'); while ($r = db_rowarr($c)) { @unlink($GLOBALS['FILE_STORE'] . $r[0] .'.atch'); } unset($c); q('DELETE FROM fud30_attach WHERE message_id='. $mid .' AND attach_opt=1'); } } function send_pm_notification($email, $pid, $subject, $from) { send_email($GLOBALS['NOTIFY_FROM'], $email, '['.$GLOBALS['FORUM_TITLE'].'] New Private Message Notification', 'You have a new private message titled "'.$subject.'", from "'.$from.'", in the forum "'.$GLOBALS['FORUM_TITLE'].'".\nTo view the message, click here: [[softurl]]/index.php?t=pmsg_view&id='.$pid.'\n\nTo stop future notifications, disable "Private Message Notification" in your profile.'); } ?> default/th_nav.inc000064400000004553147207550130010155 0ustar00 Previous Topic: '.$r[1].' '; } else { if ($r[3]) { /* Moved topic, let's try to find another, */ $nn = 1; continue; } $next = ' Next Topic: '.$r[1].' '; } } unset($c); if ($np) { $r = db_saq(q_limit('SELECT m.id, m.subject FROM fud30_tv_'. $frm_id .' tv INNER JOIN fud30_thread t ON tv.thread_id=t.id INNER JOIN fud30_msg m ON t.root_msg_id=m.id WHERE tv.seq IN('. ($id - 10) .', '. ($id - 2) .') ORDER BY tv.seq ASC', 1)); $prev = ' Previous Topic: '.$r[1].' '; } if ($nn) { $r = db_saq(q_limit('SELECT m.id, m.subject FROM fud30_tv_'. $frm_id .' tv INNER JOIN fud30_thread t ON tv.thread_id=t.id INNER JOIN fud30_msg m ON t.root_msg_id=m.id WHERE tv.seq IN('. ($id + 2) .', '. ($id + 10) .') ORDER BY tv.seq DESC', 1)); $next = ' Next Topic: '.$r[1].' '; } } ?>default/post_common.inc000064400000011425147207550130011227 0ustar00 $GLOBALS['MAX_SMILIES_SHOWN']) { $limit = $GLOBALS['MAX_SMILIES_SHOWN']; } $smilies = ''; $i = 0; while ($i < $limit) { $smilies .= ''.$PS_SRC[$i++].' '; } return ' Smiley Shortcuts:
    [ list all smilies ] '.$smilies.' '; } function draw_post_icons($msg_icon) { include $GLOBALS['FORUM_SETTINGS_PATH'] .'icon_cache'; /* Nothing to do. */ if (!$ICON_L) { return; } $tmp = $data = ''; $rl = (int) $GLOBALS['POST_ICONS_PER_ROW']; foreach ($ICON_L as $k => $f) { if ($k && !($k % $rl)) { $data .= ''.$tmp.''; $tmp = ''; } $tmp .= ''; } if ($tmp) { $data .= ''.$tmp.''; } return ' Message Icon: '.$data.'
    No Icon
    '; } function draw_post_attachments($al, $max_as, $max_a, $attach_control_error, $private, $msg_id) { $attached_files = ''; $i = 0; if (!empty($al)) { $enc = base64_encode(serialize($al)); ses_putvar((int)$GLOBALS['usr']->sid, md5($enc)); $c = uq('SELECT a.id,a.fsize,a.original_name,m.mime_hdr FROM fud30_attach a LEFT JOIN fud30_mime m ON a.mime_type=m.id WHERE a.id IN('. implode(',', $al) .') AND message_id IN(0, '. $msg_id .') AND attach_opt='. ($private ? 1 : 0)); while ($r = db_rowarr($c)) { $sz = ( $r[1] < 100000 ) ? number_format($r[1]/1024,2) .'KB' : number_format($r[1]/1048576,2) .'MB'; $insert_uploaded_image = strncasecmp('image/', $r[3], 6) ? '' : ' | Insert image into message body'; $attached_files .= ' '.$r[2].' '.$sz.' Delete'.$insert_uploaded_image.' '; $i++; } unset($c); } if (!$private && $GLOBALS['MOD'] && $GLOBALS['frm']->forum_opt & 32) { $allowed_extensions = '(unrestricted)'; } else { include $GLOBALS['FORUM_SETTINGS_PATH'] .'file_filter_regexp'; if (empty($GLOBALS['__FUD_EXT_FILER__'])) { $allowed_extensions = '(unrestricted)'; } else { $allowed_extensions = implode(' ', $GLOBALS['__FUD_EXT_FILER__']); } } $max_as_k = round($max_as / 1024); // We display max attch size in KB. return 'File Attachments: '.($i ? ' '.$attached_files.'
    Name Size Action
    ' : '' ) .' '.(isset($enc) ? '' : '' ) .' '.$attach_control_error.' Allowed File Extensions: '.$allowed_extensions.'
    Maximum File Size: '.$max_as_k.'KB
    Maximum Files Per Message: '.$max_a.($i ? '; currently attached: '.$i.' '.convertPlural($i, array('file','files')).'' : '' ) .'
    '.((($i + 1) <= $max_a) ? ' ' : '' ) .' '; } ?> default/err.inc000064400000010465147207550130007465 0ustar00sid; } // Log the error. if (defined('fud_logging') || $level !== 'INFO') { // Build error string. $error_msg = '[Error] '. $title .'
    '; $error_msg .= '[Message to User] '. trim($msg) .'
    '; $error_msg .= '[User IP] '. get_ip() .'
    '; $error_msg .= '[Requested URL] http://'; $error_msg .= isset($_SERVER['HTTP_HOST']) ? htmlspecialchars($_SERVER['HTTP_HOST']) : ''; $error_msg .= isset($_SERVER['REQUEST_URI']) ? htmlspecialchars($_SERVER['REQUEST_URI']) : ''; // Mask out sensitive data. unset($_POST['password']); unset($_POST['quick_password']); $error_msg .= !empty($_POST) ? '
    [Post-Data] '. htmlspecialchars(serialize($_POST)) : ''; $error_msg .= '
    '; if (isset($_SERVER['HTTP_REFERER'])) { $error_msg .= '[Referring URL] '. htmlspecialchars($_SERVER['HTTP_REFERER']) .'
    '; } else if (isset($_SERVER['HTTP_USER_AGENT'])) { $error_msg .= '[User Agent] '. htmlspecialchars($_SERVER['HTTP_USER_AGENT']) .'
    '; } fud_logerror($error_msg, 'fud_errors'); } // No need to redirect, we just want to log the error. if ($level == 'LOG&RETURN') { return; } // Store persistently. ses_putvar($ses, array('er_msg' => $msg, 'err_t' => $title)); // Redirect to error template. if (is_int($ses)) { if ($GLOBALS['FUD_OPT_2'] & 32768) { header('Location: [[relativeurl]]/index.php/e/'. _rsidl); } else { header('Location: [[relativeurl]]/index.php?t=error&'. _rsidl); } } else { if ($GLOBALS['FUD_OPT_2'] & 32768) { header('Location: [[relativeurl]]/index.php/e/0/'. $ses); } else { header('Location: [[relativeurl]]/index.php?t=error&S='. $ses); } } exit; } /** Signal standard errors. */ function std_error($type) { if (!isset($_SERVER['HTTP_REFERER'])) { $_SERVER['HTTP_REFERER'] = 'unknown'; } $ses_id = s; $usr_d = new stdClass(); $usr_d->email = $GLOBALS['usr']->email; if ($type == 'login') { if (__fud_real_user__) { $type = 'perms'; } else { ses_anonuser_auth($GLOBALS['usr']->sid, '
    ERROR: You are not logged-inTo access this page you must be a member of this forum.

    '); } } $err_array = array( 'ERR_disabled'=>array('Disabled feature', 'This feature has been disabled by the system administrator.'), 'ERR_access'=>array('ERROR: Insufficient Permissions', 'You do not have the required permissions to perform this action.'), 'ERR_registration_disabled'=>array('Registration Disabled', 'The administrator has disabled registration. Please try again later.'), 'ERR_user'=>array('ERROR: No such user', 'There is no such user'), 'ERR_perms'=>array('Permission Denied!', 'Your user permissions do not allow you to perform the action you are attempting.'), 'ERR_systemerr'=>array('ERROR: System Error', 'A system error has occurred. Please report it to the webmaster.'), 'ERR_emailconf'=>array('ERROR: Your account is not yet confirmed', 'You have not confirmed your account via e-mail yet.
    1. If you have not received a confirmation e-mail, request it again.
    2. If '.$usr_d->email.' is not your correct e-mail address, specify the correct address.
    ') ); if (isset($err_array['ERR_'. $type])) { $err = $err_array['ERR_'. $type]; error_dialog($err[0], $err[1]); } error_dialog('Critical error', 'An error has occurred. Unfortunately, there is also a problem with the error reporting system.'); } /** Signal an invalid input error. */ function invl_inp_err() { error_dialog('Invalid Input', 'You have followed an invalid link. Please notify the webmaster how you got here.', 'INFO'); } ?> default/thread_view_common.inc000064400000007166147207550130012552 0ustar00group_cache_opt & 2) && !$res->forum_id)) { return; } return 1; } /* Make sure that we have what appears to be a valid forum id. */ if (!isset($_GET['frm_id']) || (!($frm_id = (int)$_GET['frm_id']))) { invl_inp_err(); } if (!isset($_GET['start']) || ($start = (int)$_GET['start']) < 1) { $start = 0; } /* This query creates frm object that contains info about the current * forum, category & user's subscription status & permissions to the * forum. */ make_perms_query($fields, $join, $frm_id); $frm = db_sab(q_limit('SELECT f.id, f.name, f.thread_count, f.cat_id,'. (_uid ? ' fn.forum_id AS subscribed, m.forum_id AS md, ' : ' 0 AS subscribed, 0 AS md, '). 'a.ann_id AS is_ann, ms.post_stamp, '. $fields .' FROM fud30_forum f INNER JOIN fud30_cat c ON c.id=f.cat_id '. (_uid ? ' LEFT JOIN fud30_forum_notify fn ON fn.user_id='._uid.' AND fn.forum_id='. $frm_id .' LEFT JOIN fud30_mod m ON m.user_id='. _uid .' AND m.forum_id='. $frm_id : ' ') .$join.' LEFT JOIN fud30_ann_forums a ON a.forum_id='. $frm_id .' LEFT JOIN fud30_msg ms ON ms.id=f.last_post_id WHERE f.id='. $frm_id, 1)); if (!$frm) { invl_inp_err(); } $frm->forum_id = $frm->id; $MOD = ($is_a || $frm->md); $lwi = q_singleval(q_limit('SELECT seq FROM fud30_tv_'. $frm_id .' ORDER BY seq DESC', 1)); /* Check that the user has permissions to access this forum. */ if (!($frm->group_cache_opt & 2) && !$MOD) { if (!isset($_GET['logoff'])) { std_error('login'); } if ($FUD_OPT_2 & 32768) { header('Location: [[relativeurl]]/index.php/i/'. _rsidl); } else { header('Location: [[relativeurl]]/index.php?'. _rsidl); } exit; } if ($_GET['t'] == 'threadt') { $cur_frm_page = $start + 1; } else { $cur_frm_page = floor($start / $THREADS_PER_PAGE) + 1; } /* Do various things for registered users. */ if (_uid) { if (isset($_GET['sub']) && sq_check(0, $usr->sq)) { forum_notify_add(_uid, $frm->id); $frm->subscribed = 1; } else if (isset($_GET['unsub']) && sq_check(0, $usr->sq)) { forum_notify_del(_uid, $frm->id); $frm->subscribed = 0; } } else if (__fud_cache((int)$frm->post_stamp)) { return; } $ppg = $usr->posts_ppg ? $usr->posts_ppg : $POSTS_PER_PAGE; /* Handling of forum level announcements (should be merged with non-forum announcements in index.php.t). */ $announcements = ''; if ($frm->is_ann) { $today = gmdate('Ymd', __request_timestamp__); $res = uq('SELECT a.subject, a.text, a.ann_opt FROM fud30_announce a INNER JOIN fud30_ann_forums af ON a.id=af.ann_id AND af.forum_id='. $frm->id .' WHERE a.date_started<='. $today .' AND a.date_ended>='. $today); while ($r = db_rowarr($res)) { if (!_uid && $r[2] & 2) { continue; // Only for logged in users. } if (_uid && $r['2'] & 4) { continue; // Only for anonomous users. } if (defined('plugins')) { list($r[0], $r[1]) = plugin_call_hook('ANNOUNCEMENT', array($r[0], $r[1])); } $announcements .= '
    '.$r[0].' '.$r[1].'
    '; } unset($res); } ?> default/draw_forum_list.inc000064400000022665147207550130012102 0ustar00cat_collapse_status ? unserialize($usr->cat_collapse_status) : array(); $cat_id = !empty($_GET['cat']) ? (int) $_GET['cat'] : 0; $frm_id = !empty($_GET['frm_id']) ? (int) $_GET['frm_id'] : 0; if ($cat_id && !empty($collapse[$cat_id])) { $collapse[$cat_id] = 0; } require $FORUM_SETTINGS_PATH .'idx.inc'; if (!isset($cidxc[$cat_id])) { $cat_id = 0; } $cbuf = $forum_list_table_data = $cat_path = ''; if ($cat_id) { $cid = $cat_id; while (($cid = $cidxc[$cid][4]) > 0) { $cat_path = ' » '.$cidxc[$cid][1].''. $cat_path; } $cat_path = '
    Home '.$cat_path.' » '.$cidxc[$cat_id][1].''; } /* List of fetched fields & their ids 0 msg.subject, 1 msg.id AS msg_id, 2 msg.post_stamp, 3 users.id AS user_id, 4 users.alias 5 forum.cat_id, 6 forum.forum_icon 7 forum.id 8 forum.last_post_id 9 forum.moderators 10 forum.name 11 forum.descr 12 forum.url_redirect 13 forum.post_count 14 forum.thread_count 15 forum_read.last_view 16 is_moderator 17 read perm 18 is the category using compact view */ $c = uq('SELECT m.subject, m.id, m.post_stamp, u.id, u.alias, f.cat_id, f.forum_icon, f.id, f.last_post_id, f.moderators, f.name, f.descr, f.url_redirect, f.post_count, f.thread_count, '. (_uid ? 'fr.last_view, mo.id, COALESCE(g2.group_cache_opt, g1.group_cache_opt) AS group_cache_opt' : '0,0,g1.group_cache_opt') .', c.cat_opt FROM fud30_fc_view v INNER JOIN fud30_cat c ON c.id=v.c INNER JOIN fud30_forum f ON f.id=v.f INNER JOIN fud30_group_cache g1 ON g1.user_id='. (_uid ? 2147483647 : 0) .' AND g1.resource_id=f.id LEFT JOIN fud30_msg m ON f.last_post_id=m.id LEFT JOIN fud30_users u ON u.id=m.poster_id '. (_uid ? ' LEFT JOIN fud30_forum_read fr ON fr.forum_id=f.id AND fr.user_id='. _uid .' LEFT JOIN fud30_mod mo ON mo.user_id='. _uid .' AND mo.forum_id=f.id LEFT JOIN fud30_group_cache g2 ON g2.user_id='. _uid .' AND g2.resource_id=f.id' : ''). ' WHERE f.parent = '. $frm_id . ((!$is_a || $cat_id) ? ' AND ' : '') . ($is_a ? '' : (_uid ? ' (mo.id IS NOT NULL OR ('. q_bitand('COALESCE(g2.group_cache_opt, g1.group_cache_opt)', 1) .' > 0))' : ' ('. q_bitand('g1.group_cache_opt', 1) .' > 0)')) . ($cat_id ? ($is_a ? '' : ' AND ') .' v.c IN('. implode(',', ($cf = $cidxc[$cat_id][5])) .') ' : '') .' ORDER BY v.id'); $post_count = $thread_count = $last_msg_id = $cat = 0; while ($r = db_rowarr($c)) { /* Increase thread & post count. */ $post_count += $r[13]; $thread_count += $r[14]; $cid = (int) $r[5]; if ($cat != $cid && !$frm_id) { if ($cbuf) { /* If previous category was using compact view, print forum row. */ if (empty($collapse[$i[4]])) { /* Only show if parent is not collapsed as well. */ $forum_list_table_data .= '     Available Forums:'.$cbuf.' '; } $cbuf = ''; } foreach ($cidxc as $k => $i) { /* 2nd check ensures that we don't end up displaying categories without any children. */ if (($cat_id && !isset($cf[$k])) || ($cid != $k && $i[4] >= $cidxc[$cid][4])) { continue; } /* If parent category is collapsed, hide child category. */ if ($i[4] && !empty($collapse[$i[4]])) { $collapse[$k] = 1; } if ($k == $cid) { break; // Got it! } } $cat = $cid; if ($i[3] & 1 && $k != $cat_id && !($i[3] & 4)) { if (!isset($collapse[$k])) { $collapse[$k] = !($i[3] & 2); } $forum_list_table_data .= ' '.$i[1].' '.$i[2].' '.(key($cidxc) ? '' : '' ) .' '.($cat ? '' : '' ) .' '; } else { if ($i[3] & 4) { ++$i[0]; } $forum_list_table_data .= ' '.$i[1].' '.$i[2].' '.(key($cidxc) ? '' : '' ) .' '.($cat ? '' : '' ) .' '; } } /* Compact category view (ignore when expanded). */ if ($r[18] & 4 && $cat_id != $cid) { $cbuf .= '  '.(_uid && $r[15] < $r[2] && $usr->last_read < $r[2] ? '**' : '' ) .' '.$r[10].''; continue; } /* Visible forum with no 'read' permission. */ if (!($r[17] & 2) && !$is_a && !$r[16]) { $forum_list_table_data .= ' '.$r[10].($r[11] ? '
    '.$r[11] : '').' '; continue; } /* Code to determine the last post id for 'latest' forum message. */ if ($r[8] > $last_msg_id) { $last_msg_id = $r[8]; } if (!_uid) { /* Anon user. */ $forum_read_indicator = 'Only registered forum members can track read & unread messages'; } else if ($r[15] < $r[2] && $usr->last_read < $r[2]) { $forum_read_indicator = 'New messages'; } else { $forum_read_indicator = 'No new messages'; } if ($r[9] && ($mods = unserialize($r[9]))) { $moderators = ''; // List of forum moderators. $modcount = 0; // Use singular or plural message form. foreach($mods as $k => $v) { $moderators .= ''.$v.'  '; $modcount++; } $moderators = '
    '.convertPlural($modcount, array('Moderator','Moderators')).': '.$moderators.'
    '; } else { $moderators = ' '; } $forum_list_table_data .= ' '.($r[6] ? 'Forum Icon' : ' ' ) .' '.(empty($r[12]) ? ''.$forum_read_indicator.'' : '' ) .' '.$r[10].''.($r[11] ? '
    '.$r[11] : '').$moderators.' '.(empty($r[12]) ? ''.$r[13].'' : '--' ) .' '.(empty($r[12]) ? ''.$r[14].'' : '--' ) .' '.(empty($r[12]) ? ''.($r[8] ? ''.print_date('%a, %d %B %Y', $r[2]).'
    By: '.($r[3] ? ''.$r[4].'' : ''.$GLOBALS['ANON_NICK'].'' ) .' '.$r[0].'' : 'n/a' ) .'' : '--' ) .' '; } unset($c); if ($cbuf) { /* If previous category was using compact view, print forum row. */ $forum_list_table_data .= '     Available Forums:'.$cbuf.' '; } ?> default/users.inc000064400000052175147207550130010042 0ustar00id != 1 && (!$GLOBALS['is_post'] || sq_check(1, $u->sq, $u->id, $u->ses_id))) { /* Store the last visit date for registered user. */ q('UPDATE fud30_users SET last_visit='. __request_timestamp__ .' WHERE id='. $u->id); if ($GLOBALS['FUD_OPT_3'] & 1) { // SESSION_COOKIES setcookie($GLOBALS['COOKIE_NAME'], $u->ses_id, 0, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } if (!$u->sq || __request_timestamp__ - $u->last_visit > 180) { // 3 min. $u->sq = $sq = regen_sq($u->id); if (!$GLOBALS['is_post']) { $_GET['SQ'] = $sq; } else { $_POST['SQ'] = $sq; } } else { $sq =& $u->sq; } } // Prevent spiders from doing funny stuff. if (($u->users_opt & 1073741824) && $GLOBALS['is_post']) { // is_spider die('Bad bot!'); } /* Disable caching for registered users and POST requests. */ if ($GLOBALS['is_post'] || $u->id > 1) { header('Cache-Control: no-store, private, must-revalidate, proxy-revalidate, post-check=0, pre-check=0, max-age=0, s-maxage=0'); header('Expires: Mon, 21 Jan 1980 06:01:01 GMT'); header('Pragma: no-cache'); } if ($u->data) { $u->data = unserialize($u->data); } $uo = $u->users_opt = (int)$u->users_opt; /* This should allow path_info & normal themes to work properly within 1 forum. */ if ($o2 & 32768 && !($u->theme_opt & 4)) { $o2 ^= 32768; } /* Handle PM disabling for users. */ if (!($GLOBALS['is_a'] = $uo & 1048576) && $uo & 33554432) { $o1 = $o1 &~ 1024; } /* Set timezone. */ if (empty($u->time_zone) || @date_default_timezone_set($u->time_zone) === FALSE) { date_default_timezone_set($GLOBALS['SERVER_TZ']); } /* Set locale. */ $GLOBALS['good_locale'] = setlocale(LC_ALL, $u->locale); /* Call inituser plugins. */ if (defined('plugins')) { plugin_call_hook('INITUSER', $u); } /* View format for threads & messages. */ define('d_thread_view', $uo & 256 ? 'msg' : 'tree'); define('t_thread_view', $uo & 128 ? 'thread' : 'threadt'); if ($GLOBALS['t'] === 0) { $GLOBALS['t'] = $_GET['t'] = d_thread_view; } else if ($GLOBALS['t'] === 1) { $GLOBALS['t'] = $_GET['t'] = t_thread_view; } /* Define theme path, may already be set by a plugin. */ defined('fud_theme') or define('fud_theme', 'theme/'. ($u->theme_name ? $u->theme_name : 'default') .'/'); /* Define _uid, which, will tell us if this is a 'real' user or not. */ define('__fud_real_user__', ($u->id != 1 ? $u->id : 0)); define('_uid', __fud_real_user__ && ($uo & 131072) && !($uo & 2097152) ? $u->id : 0); /* Allow user to set their own topics per page value, as long as it is smaller then the max. */ if (__fud_real_user__ && $GLOBALS['THREADS_PER_PAGE'] > $u->topics_per_page) { $GLOBALS['THREADS_PER_PAGE'] = (int) $u->topics_per_page; } $GLOBALS['sq'] = $sq; /* Define constants used to track URL sessions & referrals. */ if ($o1 & 128) { define('s', $u->ses_id); define('_hs', ''); if ($o2 & 8192) { if ($o2 & 32768) { define('_rsid', __fud_real_user__ .'/'. s .'/'); } else { define('_rsid', 'rid='. __fud_real_user__ .'&S='. s); } } else { if ($o2 & 32768) { define('_rsid', s .'/'); } else { define('_rsid', 'S='. s); } } } else { define('s', ''); define('_hs', ''); if ($o2 & 8192) { if ($o2 & 32768) { define('_rsid', __fud_real_user__ .'/'); } else { define('_rsid', 'rid='. __fud_real_user__); } } else { define('_rsid', ''); } } define('_rsidl', ($o2 & 32768 ? _rsid : str_replace('&', '&', _rsid))); return $u; } function user_register_forum_view($frm_id) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_forum_read (forum_id, user_id, last_view) VALUES ('. $frm_id .', '. _uid .', '. __request_timestamp__ .') ON DUPLICATE KEY UPDATE last_view=VALUES(last_view)'); return; } if (!db_li('INSERT INTO fud30_forum_read (forum_id, user_id, last_view) VALUES ('. $frm_id .', '. _uid .', '. __request_timestamp__ .')', $ef)) { q('UPDATE fud30_forum_read SET last_view='. __request_timestamp__ .' WHERE forum_id='. $frm_id .' AND user_id='. _uid); } } function user_register_thread_view($thread_id, $tm=__request_timestamp__, $msg_id=0) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_read (last_view, msg_id, thread_id, user_id) VALUES('. $tm .', '. $msg_id .', '. $thread_id .', '. _uid .') ON DUPLICATE KEY UPDATE last_view=VALUES(last_view), msg_id=VALUES(msg_id)'); return; } if (!db_li('INSERT INTO fud30_read (last_view, msg_id, thread_id, user_id) VALUES('. $tm .', '. $msg_id .', '. $thread_id .', '. _uid .')', $ef)) { q('UPDATE fud30_read SET last_view='. $tm .', msg_id='. $msg_id .' WHERE thread_id='. $thread_id .' AND user_id='. _uid); } } function user_set_post_count($uid) { $pd = db_saq('SELECT MAX(id), count(*) FROM fud30_msg WHERE poster_id='. $uid .' AND apr=1'); $level_id = (int) q_singleval(q_limit('SELECT id FROM fud30_level WHERE post_count <= '. $pd[1] .' ORDER BY post_count DESC', 1)); q('UPDATE fud30_users SET u_last_post_id='. (int)$pd[0] .', posted_msg_count='. (int)$pd[1] .', level_id='. $level_id .' WHERE id='. $uid); } function user_mark_all_read($id) { q('UPDATE fud30_users SET last_read='. __request_timestamp__ .' WHERE id='. $id); q('DELETE FROM fud30_read WHERE user_id='. $id); q('DELETE FROM fud30_forum_read WHERE user_id='. $id); } function user_mark_forum_read($id, $fid, $last_view) { if (__dbtype__ == 'mysql') { // MySQL optimization. q('INSERT INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view .' ON DUPLICATE KEY UPDATE last_view=VALUES(last_view), msg_id=VALUES(msg_id)'); } else if (__dbtype__ == 'sqlite') { // SQLite optimization. q('REPLACE INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view); } else { // Other databases. if (!db_li('INSERT INTO fud30_read (user_id, thread_id, msg_id, last_view) SELECT '. $id .', id, last_post_id, '. __request_timestamp__ .' FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view, $ef)) { q('UPDATE fud30_read SET user_id='. $id .', msg_id=t.last_post_id, last_view='. __request_timestamp__ .' FROM (SELECT id, last_post_id FROM fud30_thread WHERE forum_id='. $fid .' AND last_post_date > '. $last_view .') t WHERE user_id='. $id .' AND thread_id=t.id'); } } user_register_forum_view($fid); } function sq_check($post, &$sq, $uid=__fud_real_user__, $ses=s) { /* No sequence # check for anonymous users. */ if (!$uid) { return 1; } if ($post && isset($_POST['SQ'])) { $s = $_POST['SQ']; } else if (!$post && isset($_GET['SQ'])) { $s = $_GET['SQ']; } else { $s = 0; } if ($sq !== $s) { if ($GLOBALS['t'] == 'post' || $GLOBALS['t'] == 'ppost') { define('fud_bad_sq', 1); $sq = regen_sq($uid); return 1; } header('Location: [[relativeurl]]/index.php?S='. $ses); exit; } return 1; } function regen_sq($uid=__fud_real_user__) { $sq = md5(get_random_value(128)); q('UPDATE fud30_users SET sq=\''. $sq .'\' WHERE id='. $uid); return $sq; } if (isset($_SERVER['REMOTE_ADDR']) && !defined('no_session')) { $GLOBALS['usr'] = init_user(); } ?> default/cookies.inc000064400000017137147207550130010334 0ustar00 '. (__request_timestamp__ - $GLOBALS['SESSION_TIMEOUT']); } else { /* Unknown user, maybe bot? */ // Auto login authorized bots. // To test: wget --user-agent="Googlebot 1.2" http://127.0.0.1:8080/forum $spider_session = 0; $my_ip = get_ip(); include $GLOBALS['FORUM_SETTINGS_PATH'] .'spider_cache'; foreach ($spider_cache as $spider_id => $spider) { if (preg_match('/'. $spider['useragent'] .'/i', $_SERVER['HTTP_USER_AGENT'])) { if (empty($spider['bot_ip'])) { $spider_session = 1; // Agent matched, no IPs to check. break; } else { foreach (explode(',', $spider['bot_ip']) as $bot_ip) { if (!($bot_ip = trim($bot_ip))) { continue; } if (strpos($bot_ip, $my_ip) === 0) { $spider_session = 1; // Agent and an IP matched. break; } } } } } if ($spider_session) { if ($spider['bot_opts'] & 2) { // Access blocked. die('Go away!'); } if ($id = db_li('INSERT INTO fud30_ses (ses_id, time_sec, sys_id, ip_addr, useragent, user_id) VALUES (\''. $spider['botname'] .'\', '. __request_timestamp__ .', '. _esc(ses_make_sysid()) .', '. _esc($my_ip) .', '. _esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)) .', '. $spider['user_id'] .')', $ef, 1)) { $q_opt = 's.id='. $id; } else { $q_opt = 's.ses_id='. _esc($spider['botname']); } $GLOBALS['FUD_OPT_1'] ^= 128; // Disable URL sessions for user. } else { /* NeXuS: What is this? Return if user unknown? Function should return only after the query is run. */ //return; // Check sys_id, ip_addr and useragent for a possible match $q_opt = 's.sys_id= '._esc(ses_make_sysid()). ' AND s.ip_addr='._esc(get_ip()). ' AND s.useragent='._esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)); } } /* ENABLE_REFERRER_CHECK */ if ($GLOBALS['FUD_OPT_3'] & 4 && isset($_SERVER['HTTP_REFERER']) && strncmp($_SERVER['HTTP_REFERER'], $GLOBALS['WWW_ROOT'], strlen($GLOBALS['WWW_ROOT']))) { /* More checks, we need those because some proxies mangle referer field. */ $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; /* $p > 8 https:// or http:// */ if (($p = strpos($_SERVER['HTTP_REFERER'], $host)) === false || $p > 8) { $q_opt .= ' AND s.user_id > 2000000000 '; // Different referrer, force anonymous. } } } else { $q_opt = 's.id='. $id; } $u = db_sab('SELECT s.id AS sid, s.ses_id, s.data, s.returnto, s.sys_id, t.id AS theme_id, t.lang, t.name AS theme_name, t.locale, t.theme, t.pspell_lang, t.theme_opt, u.alias, u.posts_ppg, u.time_zone, u.sig, u.last_visit, u.last_read, u.cat_collapse_status, u.users_opt, u.posted_msg_count, u.topics_per_page, u.ignore_list, u.ignore_list, u.buddy_list, u.id, u.group_leader_list, u.email, u.login, u.sq, u.ban_expiry, u.ban_reason, u.flag_cc FROM fud30_ses s INNER JOIN fud30_users u ON u.id=(CASE WHEN s.user_id>2000000000 THEN 1 ELSE s.user_id END) LEFT OUTER JOIN fud30_themes t ON t.id=u.theme WHERE '. $q_opt); /* Anon user, no session or login. */ if (!$u || $u->id == 1 || $id) { return $u; } if ($u->sys_id == ses_make_sysid()) { return $u; } else if ($GLOBALS['FUD_OPT_3'] & 16 || isset($url_session)) { /* URL sessions must validate sys_id check and SESSION_IP_CHECK must be disabled */ return; } /* Try doing a strict SQ match in last-ditch effort to make things 'work'. */ if (isset($_POST['SQ']) && $_POST['SQ'] == $u->sq) { return $u; } return; } /** Create an anonymous session. */ function ses_anon_make() { do { $uid = 2000000000 + mt_rand(1, 147483647); $ses_id = md5($uid . __request_timestamp__ . getmypid()); } while (!($id = db_li('INSERT INTO fud30_ses (ses_id, time_sec, sys_id, ip_addr, useragent, user_id) VALUES (\''. $ses_id .'\', '. __request_timestamp__ .', '. _esc(ses_make_sysid()) .', '. _esc(get_ip()) .', '. _esc(substr($_SERVER['HTTP_USER_AGENT'], 0, 64)) .', '. $uid .')', $ef, 1))); /* When we have an anon user, we set a special cookie allowing us to see who referred this user. */ if (isset($_GET['rid']) && !isset($_COOKIE['frm_referer_id']) && $GLOBALS['FUD_OPT_2'] & 8192) { setcookie($GLOBALS['COOKIE_NAME'] .'_referer_id', $_GET['rid'], __request_timestamp__+31536000, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } if ($GLOBALS['FUD_OPT_3'] & 1) { // SESSION_COOKIES setcookie($GLOBALS['COOKIE_NAME'], $ses_id, 0, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } else { setcookie($GLOBALS['COOKIE_NAME'], $ses_id, __request_timestamp__+$GLOBALS['COOKIE_TIMEOUT'], $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); } return ses_get($id); } /** Update session status to indicate last known action. */ function ses_update_status($ses_id, $str=null, $forum_id=0, $ret='') { if (empty($ses_id)) { die('FATAL ERROR: No session, check your forum\'s URL and COOKIE settings.'); } q('UPDATE fud30_ses SET sys_id=\''. ses_make_sysid() .'\', forum_id='. $forum_id .', time_sec='. __request_timestamp__ .', action='. ($str ? _esc($str) : 'NULL') .', returnto='. (!is_int($ret) ? (isset($_SERVER['QUERY_STRING']) ? _esc($_SERVER['QUERY_STRING']) : 'NULL') : 'returnto') .' WHERE id='. $ses_id); } /** Save/ clear a session variable. */ function ses_putvar($ses_id, $data) { $cond = is_int($ses_id) ? 'id='. (int)$ses_id : 'ses_id=\''. $ses_id .'\''; if (empty($data)) { q('UPDATE fud30_ses SET data=NULL WHERE '. $cond); } else { q('UPDATE fud30_ses SET data='. _esc(serialize($data)) .' WHERE '. $cond); } } /** Destroy a session. */ function ses_delete($ses_id) { // Delete all forum sessions. // Regardless of MULTI_HOST_LOGIN, all sessions will be terminated. q('DELETE FROM fud30_ses WHERE id='. $ses_id); setcookie($GLOBALS['COOKIE_NAME'], '', __request_timestamp__-100000, $GLOBALS['COOKIE_PATH'], $GLOBALS['COOKIE_DOMAIN']); return 1; } function ses_anonuser_auth($id, $error) { if (!empty($_POST)) { $_SERVER['QUERY_STRING'] = ''; } q('UPDATE fud30_ses SET data='. _esc(serialize($error)) .', returnto='. ssn($_SERVER['QUERY_STRING']) .' WHERE id='. $id); if ($GLOBALS['FUD_OPT_2'] & 32768) { // USE_PATH_INFO header('Location: [[relativeurl]]/index.php/l/'. _rsidl); } else { header('Location: [[relativeurl]]/index.php?t=login&'. _rsidl); } exit; } ?> default/imsg_edt.inc000064400000100655147207550130010471 0ustar00reply_to = $reply_to; $fd = db_saq('SELECT t.forum_id, f.message_threshold, f.forum_opt FROM fud30_msg m INNER JOIN fud30_thread t ON m.thread_id=t.id INNER JOIN fud30_forum f ON f.id=t.forum_id WHERE m.id='. $reply_to); } else { $fd = db_saq('SELECT t.forum_id, f.message_threshold, f.forum_opt FROM fud30_thread t INNER JOIN fud30_forum f ON f.id=t.forum_id WHERE t.id='. $th_id); } return $this->add($fd[0], $fd[1], $fd[2], $perm, $autoapprove); } function add($forum_id, $message_threshold, $forum_opt, $perm, $autoapprove=1, $msg_tdescr='') { if (!$this->post_stamp) { $this->post_stamp = __request_timestamp__; } if (!isset($this->ip_addr)) { $this->ip_addr = get_ip(); } $this->host_name = $GLOBALS['FUD_OPT_1'] & 268435456 ? _esc(get_host($this->ip_addr)) : 'NULL'; $this->thread_id = isset($this->thread_id) ? $this->thread_id : 0; $this->reply_to = isset($this->reply_to) ? $this->reply_to : 0; $this->subject = substr($this->subject, 0, 255); // Subject col is VARCHAR(255). if ($GLOBALS['FUD_OPT_3'] & 32768) { // DB_MESSAGE_STORAGE $file_id = $file_id_preview = $length_preview = 0; $offset = $offset_preview = -1; $length = strlen($this->body); } else { $file_id = write_body($this->body, $length, $offset, $forum_id); /* Determine if preview needs building. */ if ($message_threshold && $message_threshold < strlen($this->body)) { $thres_body = trim_html($this->body, $message_threshold); $file_id_preview = write_body($thres_body, $length_preview, $offset_preview, $forum_id); } else { $file_id_preview = $offset_preview = $length_preview = 0; } } /* Lookup country and flag. */ if ($GLOBALS['FUD_OPT_3'] & 524288) { // ENABLE_GEO_LOCATION. $flag = db_saq('SELECT cc, country FROM fud30_geoip WHERE '. sprintf('%u', ip2long($this->ip_addr)) .' BETWEEN ips AND ipe'); } if (empty($flag)) { $flag = array(null, null); } $this->id = db_qid('INSERT INTO fud30_msg ( thread_id, poster_id, reply_to, ip_addr, host_name, post_stamp, subject, attach_cnt, poll_id, icon, msg_opt, file_id, foff, length, file_id_preview, offset_preview, length_preview, mlist_msg_id, poll_cache, flag_cc, flag_country ) VALUES( '. $this->thread_id .', '. $this->poster_id .', '. (int)$this->reply_to .', \''. $this->ip_addr .'\', '. $this->host_name .', '. $this->post_stamp .', '. ssn($this->subject) .', '. (int)$this->attach_cnt .', '. (int)$this->poll_id .', '. ssn($this->icon) .', '. $this->msg_opt .', '. $file_id .', '. (int)$offset .', '. (int)$length .', '. $file_id_preview .', '. $offset_preview .', '. $length_preview .', '. ssn($this->mlist_msg_id) .', '. ssn(poll_cache_rebuild($this->poll_id)) .', '. ssn($flag[0]) .', '. ssn($flag[1]) .' )'); if ($GLOBALS['FUD_OPT_3'] & 32768) { // DB_MESSAGE_STORAGE $file_id = db_qid('INSERT INTO fud30_msg_store (data) VALUES('. _esc($this->body) .')'); if ($message_threshold && $length > $message_threshold) { $file_id_preview = db_qid('INSERT INTO fud30_msg_store (data) VALUES('. _esc(trim_html($this->body, $message_threshold)) .')'); } q('UPDATE fud30_msg SET file_id='. $file_id .', file_id_preview='. $file_id_preview .' WHERE id='. $this->id); } $thread_opt = (int) ($perm & 4096 && isset($_POST['thr_locked'])); if (!$this->thread_id) { /* New thread. */ if ($perm & 64) { if (isset($_POST['thr_ordertype'], $_POST['thr_orderexpiry']) && (int)$_POST['thr_ordertype']) { $thread_opt |= (int)$_POST['thr_ordertype']; $thr_orderexpiry = (int)$_POST['thr_orderexpiry']; } if (!empty($_POST['thr_always_on_top'])) { $thread_opt |= 8; } } $this->thread_id = th_add($this->id, $forum_id, $this->post_stamp, $thread_opt, (isset($thr_orderexpiry) ? $thr_orderexpiry : 0), 0, 0, 0, $msg_tdescr); q('UPDATE fud30_msg SET thread_id='. $this->thread_id .' WHERE id='. $this->id); } else { th_lock($this->thread_id, $thread_opt & 1); } if ($autoapprove && $forum_opt & 2) { $this->approve($this->id); } return $this->id; } function sync($id, $frm_id, $message_threshold, $perm, $msg_tdescr='') { $this->subject = substr($this->subject, 0, 255); // Subject col is VARCHAR(255). if ($GLOBALS['FUD_OPT_3'] & 32768) { // DB_MESSAGE_STORAGE $file_id = $file_id_preview = $length_preview = 0; $offset = $offset_preview = -1; $length = strlen($this->body); } else { $file_id = write_body($this->body, $length, $offset, $frm_id); /* Determine if preview needs building. */ if ($message_threshold && $message_threshold < strlen($this->body)) { $thres_body = trim_html($this->body, $message_threshold); $file_id_preview = write_body($thres_body, $length_preview, $offset_preview, $frm_id); } else { $file_id_preview = $offset_preview = $length_preview = 0; } } q('UPDATE fud30_msg SET file_id='. $file_id .', foff='. (int)$offset .', length='. (int)$length .', mlist_msg_id='. ssn($this->mlist_msg_id) .', file_id_preview='. $file_id_preview .', offset_preview='. $offset_preview .', length_preview='. $length_preview .', updated_by='. $id .', msg_opt='. $this->msg_opt .', attach_cnt='. (int)$this->attach_cnt .', poll_id='. (int)$this->poll_id .', update_stamp='. __request_timestamp__ .', icon='. ssn($this->icon) .' , poll_cache='. ssn(poll_cache_rebuild($this->poll_id)) .', subject='. ssn($this->subject) .' WHERE id='. $this->id); if ($GLOBALS['FUD_OPT_3'] & 32768) { // DB_MESSAGE_STORAGE //TODO: Why DELETE? Can't we just UPDATE the DB? q('DELETE FROM fud30_msg_store WHERE id IN('. $this->file_id .','. $this->file_id_preview .')'); $file_id = db_qid('INSERT INTO fud30_msg_store (data) VALUES('. _esc($this->body) .')'); if ($message_threshold && $length > $message_threshold) { $file_id_preview = db_qid('INSERT INTO fud30_msg_store (data) VALUES('. _esc(trim_html($this->body, $message_threshold)) .')'); } q('UPDATE fud30_msg SET file_id='. $file_id .', file_id_preview='. $file_id_preview .' WHERE id='. $this->id); } /* Determine wether or not we should deal with locked & sticky stuff * current approach may seem a little redundant, but for (most) users who * do not have access to locking & sticky this eliminated a query. */ $th_data = db_saq('SELECT orderexpiry, thread_opt, root_msg_id, tdescr FROM fud30_thread WHERE id='. $this->thread_id); $locked = (int) isset($_POST['thr_locked']); if (isset($_POST['thr_ordertype'], $_POST['thr_orderexpiry']) || (($th_data[1] ^ $locked) & 1)) { $thread_opt = (int) $th_data[1]; $orderexpiry = isset($_POST['thr_orderexpiry']) ? (int) $_POST['thr_orderexpiry'] : 0; /* Confirm that user has ability to change lock status of the thread. */ if ($perm & 4096) { if ($locked && !($thread_opt & $locked)) { $thread_opt |= 1; } else if (!$locked && $thread_opt & 1) { $thread_opt &= ~1; } } /* Confirm that user has ability to change sticky status of the thread. */ if ($th_data[2] == $this->id && isset($_POST['thr_ordertype'], $_POST['thr_orderexpiry']) && $perm & 64) { if (!$_POST['thr_ordertype'] && $thread_opt > 1) { $orderexpiry = 0; $thread_opt &= ~6; } else if ($thread_opt < 2 && (int) $_POST['thr_ordertype']) { $thread_opt |= $_POST['thr_ordertype']; } else if (!($thread_opt & (int) $_POST['thr_ordertype'])) { $thread_opt = $_POST['thr_ordertype'] | ($thread_opt & 1); } } if ($perm & 64) { if (!empty($_POST['thr_always_on_top'])) { $thread_opt |= 8; } else { $thread_opt &= ~8; } } /* Determine if any work needs to be done. */ if ($thread_opt != $th_data[1] || $orderexpiry != $th_data[0]) { q('UPDATE fud30_thread SET '. ($th_data[2] == $this->id ? 'tdescr='. _esc($msg_tdescr) .',' : '') .' thread_opt='.$thread_opt.', orderexpiry='. $orderexpiry .' WHERE id='. $this->thread_id); /* Avoid rebuilding the forum view whenever possible, since it's a rather slow process. * Only rebuild if expiry time has changed or message gained/lost sticky status. */ $diff = $thread_opt ^ $th_data[1]; if (($diff > 1 && $diff & 14) || $orderexpiry != $th_data[0]) { rebuild_forum_view_ttl($frm_id); } } else if ($msg_tdescr != $th_data[3] && $th_data[2] == $this->id) { q('UPDATE fud30_thread SET tdescr='. _esc($msg_tdescr) .' WHERE id='. $this->thread_id); } } else if ($msg_tdescr != $th_data[3] && $th_data[2] == $this->id) { q('UPDATE fud30_thread SET tdescr='. _esc($msg_tdescr) .' WHERE id='. $this->thread_id); } if ($GLOBALS['FUD_OPT_1'] & 16777216) { // FORUM_SEARCH enabled? If so, reindex message. q('DELETE FROM fud30_index WHERE msg_id='. $this->id); q('DELETE FROM fud30_title_index WHERE msg_id='. $this->id); index_text((!strncasecmp('Re: ', $this->subject, 4) ? '' : $this->subject), $this->body, $this->id); } } /** Delete a message & cleanup. */ static function delete($rebuild_view=1, $mid=0, $th_rm=0) { if (!$mid) { $mid = $this->id; } if (!($del = db_sab('SELECT m.file_id, m.file_id_preview, m.id, m.attach_cnt, m.poll_id, m.thread_id, m.reply_to, m.apr, m.poster_id, t.replies, t.root_msg_id AS root_msg_id, t.last_post_id AS thread_lip, t.forum_id, f.last_post_id AS forum_lip FROM fud30_msg m LEFT JOIN fud30_thread t ON m.thread_id=t.id LEFT JOIN fud30_forum f ON t.forum_id=f.id WHERE m.id='. $mid))) { return; } if (!db_locked()) { db_lock('fud30_msg_store WRITE, fud30_forum f WRITE, fud30_thr_exchange WRITE, fud30_tv_'. $del->forum_id .' WRITE, fud30_tv_'. $del->forum_id .' tv WRITE, fud30_msg m WRITE, fud30_thread t WRITE, fud30_level WRITE, fud30_forum WRITE, fud30_forum_read WRITE, fud30_thread WRITE, fud30_msg WRITE, fud30_attach WRITE, fud30_poll WRITE, fud30_poll_opt WRITE, fud30_poll_opt_track WRITE, fud30_users WRITE, fud30_thread_notify WRITE, fud30_bookmarks WRITE, fud30_msg_report WRITE, fud30_thread_rate_track WRITE, fud30_index WRITE, fud30_title_index WRITE, fud30_search_cache WRITE'); $ll = 1; } q('DELETE FROM fud30_msg WHERE id='. $mid); /* Remove attachments. */ if ($del->attach_cnt) { $res = q('SELECT location FROM fud30_attach WHERE message_id='. $mid .' AND attach_opt=0'); while ($loc = db_rowarr($res)) { @unlink($loc[0]); } unset($res); q('DELETE FROM fud30_attach WHERE message_id='. $mid .' AND attach_opt=0'); } /* Remove message reports. */ q('DELETE FROM fud30_msg_report WHERE msg_id='. $mid); /* Cleanup index entries. */ if ($GLOBALS['FUD_OPT_1'] & 16777216) { // FORUM_SEARCH enabled? q('DELETE FROM fud30_index WHERE msg_id='. $mid); q('DELETE FROM fud30_title_index WHERE msg_id='. $mid); q('DELETE FROM fud30_search_cache WHERE msg_id='. $mid); } /* Remove poll. */ if ($del->poll_id) { poll_delete($del->poll_id); } /* Check if thread. */ if ($del->root_msg_id == $del->id) { $th_rm = 1; /* Delete all messages in the thread if there is more than 1 message. */ if ($del->replies) { $rmsg = q('SELECT id FROM fud30_msg WHERE thread_id='. $del->thread_id .' AND id != '. $del->id); while ($dim = db_rowarr($rmsg)) { fud_msg_edit::delete(0, $dim[0], 1); } unset($rmsg); } q('DELETE FROM fud30_thread_notify WHERE thread_id='. $del->thread_id); q('DELETE FROM fud30_bookmarks WHERE thread_id='. $del->thread_id); q('DELETE FROM fud30_thread WHERE id='. $del->thread_id); q('DELETE FROM fud30_thread_rate_track WHERE thread_id='. $del->thread_id); q('DELETE FROM fud30_thr_exchange WHERE th='. $del->thread_id); if ($del->apr) { /* We need to determine the last post id for the forum, it can be null. */ $lpi = (int) q_singleval(q_limit('SELECT t.last_post_id FROM fud30_thread t INNER JOIN fud30_msg m ON t.last_post_id=m.id AND m.apr=1 WHERE t.forum_id='.$del->forum_id.' AND t.moved_to=0 ORDER BY m.post_stamp DESC', 1)); q('UPDATE fud30_forum SET last_post_id='. $lpi .', thread_count=thread_count-1, post_count=post_count-'. $del->replies .'-1 WHERE id='. $del->forum_id); } } else if (!$th_rm && $del->apr) { q('UPDATE fud30_msg SET reply_to='. $del->reply_to .' WHERE thread_id='. $del->thread_id .' AND reply_to='. $mid); /* Check if the message is the last in thread. */ if ($del->thread_lip == $del->id) { list($lpi, $lpd) = db_saq(q_limit('SELECT id, post_stamp FROM fud30_msg WHERE thread_id='. $del->thread_id .' AND apr=1 ORDER BY post_stamp DESC', 1)); q('UPDATE fud30_thread SET last_post_id='. $lpi .', last_post_date='. $lpd .', replies=replies-1 WHERE id='. $del->thread_id); } else { q('UPDATE fud30_thread SET replies=replies-1 WHERE id='. $del->thread_id); } /* Check if the message is the last in the forum. */ if ($del->forum_lip == $del->id) { $page = q_singleval('SELECT seq FROM fud30_tv_'. $del->forum_id .' WHERE thread_id='. $del->thread_id); $lp = db_saq(q_limit('SELECT t.last_post_id, t.last_post_date FROM fud30_tv_'. $del->forum_id .' tv INNER JOIN fud30_thread t ON tv.thread_id=t.id WHERE tv.seq IN('. $page .','. ($page - 1) .') AND t.moved_to=0 ORDER BY t.last_post_date DESC', 1)); if (!isset($lpd) || $lp[1] > $lpd) { $lpi = $lp[0]; } q('UPDATE fud30_forum SET post_count=post_count-1, last_post_id='. $lpi .' WHERE id='. $del->forum_id); } else { q('UPDATE fud30_forum SET post_count=post_count-1 WHERE id='. $del->forum_id); } } if ($del->apr) { if ($del->poster_id) { user_set_post_count($del->poster_id); } if ($rebuild_view) { if ($th_rm) { th_delete_rebuild($del->forum_id, $del->thread_id); } else if ($del->thread_lip == $del->id) { rebuild_forum_view_ttl($del->forum_id); } } } if (isset($ll)) { db_unlock(); } if ($GLOBALS['FUD_OPT_3'] & 32768) { // DB_MESSAGE_STORAGE q('DELETE FROM fud30_msg_store WHERE id IN('. $del->file_id .','. $del->file_id_preview .')'); } if (!$del->apr || !$th_rm || ($del->root_msg_id != $del->id)) { return; } /* Needed for moved thread pointers. */ $r = q('SELECT forum_id, id FROM fud30_thread WHERE root_msg_id='. $del->root_msg_id); while (($res = db_rowarr($r))) { q('DELETE FROM fud30_thread WHERE id='. $res[1]); q('UPDATE fud30_forum SET thread_count=thread_count-1 WHERE id='. $res[0]); th_delete_rebuild($res[0], $res[1]); } unset($r); } static function approve($id) { /* Fetch info about the message, poll (if one exists), thread & forum. */ $mtf = db_sab('SELECT /* USE MASTER */ m.id, m.poster_id, m.apr, m.subject, m.foff, m.length, m.file_id, m.thread_id, m.poll_id, m.attach_cnt, m.post_stamp, m.reply_to, m.mlist_msg_id, m.msg_opt, t.forum_id, t.last_post_id, t.root_msg_id, t.last_post_date, t.thread_opt, m2.post_stamp AS frm_last_post_date, f.name AS frm_name, f.forum_opt, u.alias, u.email, u.sig, u.name as real_name, n.id AS nntp_id, ml.id AS mlist_id FROM fud30_msg m INNER JOIN fud30_thread t ON m.thread_id=t.id INNER JOIN fud30_forum f ON t.forum_id=f.id LEFT JOIN fud30_msg m2 ON f.last_post_id=m2.id LEFT JOIN fud30_users u ON m.poster_id=u.id LEFT JOIN fud30_mlist ml ON ml.forum_id=f.id AND '. q_bitand('ml.mlist_opt', 2) .' > 0 LEFT JOIN fud30_nntp n ON n.forum_id=f.id AND '. q_bitand('n.nntp_opt', 2) .' > 0 WHERE m.id='. $id .' AND m.apr=0'); /* Nothing to do or bad message id. */ if (!$mtf) { return; } if ($mtf->alias) { $mtf->alias = reverse_fmt($mtf->alias); } else { $mtf->alias = $GLOBALS['ANON_NICK']; } q('UPDATE fud30_msg SET apr=1 WHERE id='.$mtf->id); if ($mtf->poster_id) { user_set_post_count($mtf->poster_id); } if ($mtf->post_stamp > $mtf->frm_last_post_date) { $mtf->last_post_id = $mtf->id; } if ($mtf->root_msg_id == $mtf->id) { /* New thread. */ th_new_rebuild($mtf->forum_id, $mtf->thread_id, $mtf->thread_opt & (2|4|8)); $threads = 1; } else { /* Reply to thread. */ if ($mtf->post_stamp > $mtf->last_post_date) { th_inc_post_count($mtf->thread_id, 1, $mtf->id, $mtf->post_stamp); } else { th_inc_post_count($mtf->thread_id, 1); } th_reply_rebuild($mtf->forum_id, $mtf->thread_id, $mtf->thread_opt & (2|4|8)); $threads = 0; } /* Update forum thread & post count as well as last_post_id field. */ q('UPDATE fud30_forum SET post_count=post_count+1, thread_count=thread_count+'. $threads .', last_post_id='. $mtf->last_post_id .' WHERE id='. $mtf->forum_id); if ($mtf->poll_id) { poll_activate($mtf->poll_id, $mtf->forum_id); } $mtf->body = read_msg_body($mtf->foff, $mtf->length, $mtf->file_id); if ($GLOBALS['FUD_OPT_1'] & 16777216) { // FORUM_SEARCH enabled? index_text((strncasecmp($mtf->subject, 'Re: ', 4) ? $mtf->subject : ''), $mtf->body, $mtf->id); } /* Handle notifications. */ if (!($GLOBALS['FUD_OPT_3'] & 1048576)) { // not DISABLE_NOTIFICATION_EMAIL if ($mtf->root_msg_id == $mtf->id || $GLOBALS['FUD_OPT_3'] & 16384) { // FORUM_NOTIFY_ALL if (empty($mtf->frm_last_post_date)) { $mtf->frm_last_post_date = 0; } /* Send new thread notifications to forum subscribers. */ $to = db_all('SELECT u.email FROM fud30_forum_notify fn INNER JOIN fud30_users u ON fn.user_id=u.id AND '. q_bitand('u.users_opt', 134217728) .' = 0 INNER JOIN fud30_group_cache g1 ON g1.user_id=2147483647 AND g1.resource_id='. $mtf->forum_id . ($GLOBALS['FUD_OPT_3'] & 64 ? ' LEFT JOIN fud30_forum_read r ON r.forum_id=fn.forum_id AND r.user_id=fn.user_id ' : ''). ' LEFT JOIN fud30_group_cache g2 ON g2.user_id=fn.user_id AND g2.resource_id='. $mtf->forum_id . ' LEFT JOIN fud30_mod mm ON mm.forum_id='. $mtf->forum_id .' AND mm.user_id=u.id WHERE fn.forum_id='. $mtf->forum_id .' AND fn.user_id!='. (int)$mtf->poster_id . ($GLOBALS['FUD_OPT_3'] & 64 ? ' AND (CASE WHEN (r.last_view IS NULL AND (u.last_read=0 OR u.last_read >= '. $mtf->frm_last_post_date .')) OR r.last_view > '. $mtf->frm_last_post_date .' THEN 1 ELSE 0 END)=1 ' : ''). ' AND ('. q_bitand('COALESCE(g2.group_cache_opt, g1.group_cache_opt)', 2) .' > 0 OR '. q_bitand('u.users_opt', 1048576) .' > 0 OR mm.id IS NOT NULL)'. ' AND '. q_bitand('u.users_opt', 65536) .' = 0'); if ($GLOBALS['FUD_OPT_3'] & 16384) { $notify_type = 'thr'; } else { $notify_type = 'frm'; } } else { $to = array(); } if ($mtf->root_msg_id != $mtf->id) { /* Send new reply notifications to thread subscribers. */ $tmp = db_all('SELECT u.email FROM fud30_thread_notify tn INNER JOIN fud30_users u ON tn.user_id=u.id AND '. q_bitand('u.users_opt', 134217728) .' = 0 INNER JOIN fud30_group_cache g1 ON g1.user_id=2147483647 AND g1.resource_id='. $mtf->forum_id . ($GLOBALS['FUD_OPT_3'] & 64 ? ' LEFT JOIN fud30_read r ON r.thread_id=tn.thread_id AND r.user_id=tn.user_id ' : ''). ' LEFT JOIN fud30_group_cache g2 ON g2.user_id=tn.user_id AND g2.resource_id='. $mtf->forum_id . ' LEFT JOIN fud30_mod mm ON mm.forum_id='. $mtf->forum_id .' AND mm.user_id=u.id WHERE tn.thread_id='. $mtf->thread_id .' AND tn.user_id!='. (int)$mtf->poster_id . ($GLOBALS['FUD_OPT_3'] & 64 ? ' AND (r.msg_id='. $mtf->last_post_id .' OR (r.msg_id IS NULL AND '. $mtf->post_stamp .' > u.last_read)) ' : ''). ' AND ('. q_bitand('COALESCE(g2.group_cache_opt, g1.group_cache_opt)', 2) .' > 0 OR '. q_bitand('u.users_opt', 1048576) .' > 0 OR mm.id IS NOT NULL)'. ' AND '. q_bitand('u.users_opt', 65536) .' = 0'); $to = !$to ? $tmp : array_unique(array_merge($to, $tmp)); $notify_type = 'thr'; } if ($mtf->forum_opt & 64) { // always_notify_mods $tmp = db_all('SELECT u.email FROM fud30_mod mm INNER JOIN fud30_users u ON u.id=mm.user_id WHERE mm.forum_id='. $mtf->forum_id); $to = !$to ? $tmp : array_unique(array_merge($to, $tmp)); } if ($to) { send_notifications($to, $mtf->id, $mtf->subject, $mtf->alias, $notify_type, ($notify_type == 'thr' ? $mtf->thread_id : $mtf->forum_id), $mtf->frm_name, $mtf->forum_id); } } // Handle Mailing List and/or Newsgroup syncronization. if (($mtf->nntp_id || $mtf->mlist_id) && !$mtf->mlist_msg_id) { fud_use('email_msg_format.inc', 1); $from = $mtf->poster_id ? reverse_fmt($mtf->real_name) .' <'. $mtf->email .'>' : $GLOBALS['ANON_NICK'] .' <'. $GLOBALS['NOTIFY_FROM'] .'>'; $body = $mtf->body . (($mtf->msg_opt & 1 && $mtf->sig) ? "\n-- \n" . $mtf->sig : ''); $body = plain_text($body, '', '
    ', '
    '); $mtf->subject = reverse_fmt($mtf->subject); if ($mtf->reply_to) { // Get the parent message's Message-ID: if ( !($replyto_id = q_singleval('SELECT mlist_msg_id FROM fud30_msg WHERE id='. $mtf->reply_to))) { fud_logerror('WARNING: Send reply with no Message-ID. The import script is not running or may be lagging.', 'fud_errors'); } } else { $replyto_id = 0; } if ($mtf->attach_cnt) { $r = uq('SELECT a.id, a.original_name, COALESCE(m.mime_hdr, \'application/octet-stream\') FROM fud30_attach a LEFT JOIN fud30_mime m ON a.mime_type=m.id WHERE a.message_id='. $mtf->id .' AND a.attach_opt=0'); while ($ent = db_rowarr($r)) { $attach[$ent[1]] = file_get_contents($GLOBALS['FILE_STORE'] . $ent[0] .'.atch'); $attach_mime[$ent[1]] = $ent[2]; } unset($r); } else { $attach_mime = $attach = null; } if ($mtf->nntp_id) { // Push out to usenet group. fud_use('nntp.inc', true); $nntp_adm = db_sab('SELECT * FROM fud30_nntp WHERE id='. $mtf->nntp_id); if (!empty($nntp_adm->custom_sig)) { // Add signature marker. $nntp_adm->custom_sig = "\n-- \n". $nntp_adm->custom_sig; } $nntp = new fud_nntp; $nntp->server = $nntp_adm->server; $nntp->newsgroup = $nntp_adm->newsgroup; $nntp->port = $nntp_adm->port; $nntp->timeout = $nntp_adm->timeout; $nntp->nntp_opt = $nntp_adm->nntp_opt; $nntp->user = $nntp_adm->login; $nntp->pass = $nntp_adm->pass; define('sql_p', 'fud30_'); $lock = $nntp->get_lock(); $nntp->post_message($mtf->subject, $body . $nntp_adm->custom_sig, $from, $mtf->id, $replyto_id, $attach, $attach_mime); $nntp->close_connection(); $nntp->release_lock($lock); } else { // Push out to mailing list. fud_use('mlist_post.inc', true); $r = db_saq('SELECT name, additional_headers, custom_sig, fixed_from_address FROM fud30_mlist WHERE id='. $mtf->mlist_id); // Add forum's signature to the messages. if (!empty($r[2])) { $body .= "\n-- \n". $r[2]; } if (!empty($r[3])) { // Use the forum's fixed "From:" address. mail_list_post($r[0], $r[3], $mtf->subject, $body, $mtf->id, $replyto_id, $attach, $attach_mime, $r[1]); } else { // Use poster's e-mail as the "From" address. mail_list_post($r[0], $from, $mtf->subject, $body, $mtf->id, $replyto_id, $attach, $attach_mime, $r[1]); } } } // Message Approved plugins. if (defined('plugins')) { plugin_call_hook('POST_APPROVE', $mtf); } } } function write_body($data, &$len, &$offset, $fid) { $MAX_FILE_SIZE = 2140000000; $len = strlen($data); $i = 1; db_lock('fud30_fl_'. $fid .' WRITE'); $s = $fid * 10000; $e = $s + 100; while ($s < $e) { $fp = fopen($GLOBALS['MSG_STORE_DIR'] .'msg_'. $s, 'ab'); if (!$fp) { exit('FATAL ERROR: could not open message store for forum id#'. $s ."
    \n"); } fseek($fp, 0, SEEK_END); if (!($off = ftell($fp))) { $off = __ffilesize($fp); } if (!$off || ($off + $len) < $MAX_FILE_SIZE) { break; } fclose($fp); $s++; } if (fwrite($fp, $data) !== $len) { if ($fid) { db_unlock(); } exit("FATAL ERROR: system has ran out of disk space.
    \n"); } fclose($fp); db_unlock(); if (!$off) { @chmod('msg_'. $s, ($GLOBALS['FUD_OPT_2'] & 8388608 ? 0600 : 0644)); } $offset = $off; return $s; } function trim_html($str, $maxlen) { $n = strlen($str); $ln = 0; $tree = array(); for ($i = 0; $i < $n; $i++) { if ($str[$i] != '<') { $ln++; if ($ln > $maxlen) { break; } continue; } if (($p = strpos($str, '>', $i)) === false) { break; } for ($k = $i; $k < $p; $k++) { switch ($str[$k]) { case ' ': case "\r": case "\n": case "\t": case '>': break 2; } } if ($str[$i+1] == '/') { $tagname = strtolower(substr($str, $i+2, $k-$i-2)); if (@end($tagindex[$tagname])) { $k = key($tagindex[$tagname]); unset($tagindex[$tagname][$k], $tree[$k]); } } else { $tagname = strtolower(substr($str, $i+1, $k-$i-1)); switch ($tagname) { case 'br': case 'img': case 'meta': break; default: $tree[] = $tagname; end($tree); $tagindex[$tagname][key($tree)] = 1; } } $i = $p; } $data = substr($str, 0, $i); if ($tree) { foreach (array_reverse($tree) as $v) { $data .= ''; } } return $data; } function make_email_message(&$body, &$obj, $iemail_unsub) { $TITLE_EXTRA = $iemail_poll = $iemail_attach = ''; if ($obj->poll_cache) { $pl = unserialize($obj->poll_cache); if (!empty($pl)) { foreach ($pl as $k => $v) { $length = ($v[1] && $obj->total_votes) ? round($v[1] / $obj->total_votes * 100) : 0; $iemail_poll .= ' '.$k.'. '.$v[0].' '.$v[1].' / '.$length.'% '; } $iemail_poll = ' '.$iemail_poll.'
    '.$obj->poll_name.' [ '.$obj->total_votes.' '.convertPlural($obj->total_votes, array('vote','votes')).' ]


    '; } } if ($obj->attach_cnt && $obj->attach_cache) { $atch = unserialize($obj->attach_cache); if (!empty($atch)) { foreach ($atch as $v) { $sz = $v[2] / 1024; $sz = $sz < 1000 ? number_format($sz, 2) .'KB' : number_format($sz/1024, 2) .'MB'; $iemail_attach .= ' Attachment: '.$v[1].'
    (Size: '.$sz.', Downloaded '.convertPlural($v[3], array(''.$v[3].' time',''.$v[3].' times')).') '; } $iemail_attach = '

    '.$iemail_attach.'
    '; } } if ($GLOBALS['FUD_OPT_2'] & 32768 && defined('_rsid')) { $pfx = str_repeat('/', substr_count(_rsid, '/')); } // Remove all JavaScript. Spam filters like SpamAssassin don't like them. return preg_replace('#]*>.*?#is', '', ' '.$GLOBALS['FORUM_TITLE'].$TITLE_EXTRA.'
    Subject: '.$obj->subject.' Author: '.$obj->alias.' Date: '.print_date('%a, %d %B %Y %H:%M', $obj->post_stamp).'
    '.$iemail_poll.' '.$body.' '.$iemail_attach.'
    [ Reply ][ Quote ][ View Topic/Message ]'.$iemail_unsub.'
    '); } function poll_cache_rebuild($poll_id) { if (!$poll_id) { return; } $data = array(); $c = uq('SELECT id, name, votes FROM fud30_poll_opt WHERE poll_id='. $poll_id); while ($r = db_rowarr($c)) { $data[$r[0]] = array($r[1], $r[2]); } unset($c); if ($data) { return serialize($data); } else { return; } } function send_notifications($to, $msg_id, $thr_subject, $poster_login, $id_type, $id, $frm_name, $frm_id) { if (!$to) { return; } $goto_url['email'] = ''.$GLOBALS['WWW_ROOT'].'?t=rview&goto='. $msg_id .'#msg_'. $msg_id; $CHARSET = $GLOBALS['CHARSET']; if ($GLOBALS['FUD_OPT_2'] & 64) { // NOTIFY_WITH_BODY $munge_newlines = 0; $obj = db_sab('SELECT p.total_votes, p.name AS poll_name, m.reply_to, m.subject, m.id, m.post_stamp, m.poster_id, m.foff, m.length, m.file_id, u.alias, m.attach_cnt, m.attach_cache, m.poll_cache FROM fud30_msg m LEFT JOIN fud30_users u ON m.poster_id=u.id LEFT JOIN fud30_poll p ON m.poll_id=p.id WHERE m.id='. $msg_id .' AND m.apr=1'); if (!$obj->alias) { /* anon user */ $obj->alias = htmlspecialchars($GLOBALS['ANON_NICK']); } $headers = "MIME-Version: 1.0\r\n"; if ($obj->reply_to) { $headers .= 'In-Reply-To: '. $obj->reply_to ."\r\n"; } $headers .= 'List-Id: '. $frm_id .'.'. (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost') ."\r\n"; $split = get_random_value(128); $headers .= "Content-Type: multipart/alternative;\n boundary=\"------------". $split ."\"\r\n"; $boundry = "\r\n--------------". $split ."\r\n"; $pfx = ''; if ($GLOBALS['FUD_OPT_2'] & 32768 && !empty($_SERVER['PATH_INFO'])) { if ($GLOBALS['FUD_OPT_1'] & 128) { $pfx .= '0/'; } if ($GLOBALS['FUD_OPT_2'] & 8192) { $pfx .= '0/'; } } $plain_text = read_msg_body($obj->foff, $obj->length, $obj->file_id); $iemail_unsub = html_entity_decode($id_type == 'thr' ? '[ Unsubscribe from this topic ]' : '[ Unsubscribe from this forum ]'); $body_email = $boundry .'Content-Type: text/plain; charset='. $CHARSET ."; format=flowed\r\nContent-Transfer-Encoding: 8bit\r\n\r\n" . html_entity_decode(strip_tags($plain_text)) . "\r\n\r\n" . html_entity_decode('To participate in the discussion, go here:') .' '. ''.$GLOBALS['WWW_ROOT'].'?t=rview&'. ($id_type == 'thr' ? 'th' : 'frm_id') .'='. $id ."\r\n". $boundry .'Content-Type: text/html; charset='. $CHARSET ."\r\nContent-Transfer-Encoding: 8bit\r\n\r\n". make_email_message($plain_text, $obj, $iemail_unsub) ."\r\n". substr($boundry, 0, -2) ."--\r\n"; } else { $munge_newlines = 1; $headers = ''; } $thr_subject = reverse_fmt($thr_subject); $poster_login = reverse_fmt($poster_login); if ($id_type == 'thr') { $subj = html_entity_decode('New reply to '.$thr_subject.' by '.$poster_login.''); if (!isset($body_email)) { $unsub_url['email'] = ''.$GLOBALS['WWW_ROOT'].'?t=rview&th='. $id .'¬ify=1&opt=off'; $body_email = html_entity_decode('To view unread replies go to '.$goto_url['email'].'\n\nIf you do not wish to receive further notifications about replies in this topic, please go here: '.$unsub_url['email'].''); } } else if ($id_type == 'frm') { $frm_name = reverse_fmt($frm_name); $subj = html_entity_decode('New topic in forum '.$frm_name.', called '.$thr_subject.', by '.$poster_login.''); if (!isset($body_email)) { $unsub_url['email'] = ''.$GLOBALS['WWW_ROOT'].'?t=rview&unsub=1&frm_id='. $id; $body_email = html_entity_decode('To view the topic go to:\n'.$goto_url['email'].'\n\nTo stop receiving notifications about new topics in this forum, please go here: '.$unsub_url['email'].''); } } send_email($GLOBALS['NOTIFY_FROM'], $to, $subj, $body_email, $headers, $munge_newlines); } ?> default/drawmsg.inc000064400000060506147207550130010342 0ustar00buddy_list) { $usr->buddy_list = unserialize($usr->buddy_list); } if ($usr->ignore_list) { $usr->ignore_list = unserialize($usr->ignore_list); if (isset($usr->ignore_list[1])) { $usr->ignore_list[0] =& $usr->ignore_list[1]; } } /* Handle temporarily un-hidden users. */ if (isset($_GET['reveal'])) { $_GET['reveal'] = htmlspecialchars((string)$_GET['reveal']); foreach(explode(':', $_GET['reveal']) as $v) { $v = (int) $v; if (isset($usr->ignore_list[$v])) { $usr->ignore_list[$v] = 0; } } if ($GLOBALS['FUD_OPT_2'] & 32768) { define('unignore_tmp', '/'. $_GET['reveal']); } else { define('unignore_tmp', '&reveal='. $_GET['reveal']); } } else { define('unignore_tmp', ''); } } else { define('unignore_tmp', ''); if (isset($_GET['reveal'])) { unset($_GET['reveal']); } } $_SERVER['QUERY_STRING_ENC'] = htmlspecialchars($_SERVER['QUERY_STRING']); function make_tmp_unignore_lnk($id) { if ($GLOBALS['FUD_OPT_2'] & 32768 && strpos($_SERVER['QUERY_STRING_ENC'], '?') === false) { $_SERVER['QUERY_STRING_ENC'] .= '?1=1'; } if (!isset($_GET['reveal'])) { return $_SERVER['QUERY_STRING_ENC'] .'&reveal='. $id; } else { return str_replace('&reveal='. $_GET['reveal'], unignore_tmp .':'. $id, $_SERVER['QUERY_STRING_ENC']); } } function make_reveal_link($id) { if ($GLOBALS['FUD_OPT_2'] & 32768 && strpos($_SERVER['QUERY_STRING_ENC'], '?') === false) { $_SERVER['QUERY_STRING_ENC'] .= '?1=1'; } if (empty($GLOBALS['__FMDSP__'])) { return $_SERVER['QUERY_STRING_ENC'] .'&rev='. $id; } else { return str_replace('&rev='. $_GET['rev'], reveal_lnk .':'. $id, $_SERVER['QUERY_STRING_ENC']); } } /* Draws a message, needs a message object, user object, permissions array, * flag indicating wether or not to show controls and a variable indicating * the number of the current message (needed for cross message pager) * last argument can be anything, allowing forms to specify various vars they * need to. */ function tmpl_drawmsg($obj, $usr, $perms, $hide_controls, &$m_num, $misc) { $o1 =& $GLOBALS['FUD_OPT_1']; $o2 =& $GLOBALS['FUD_OPT_2']; $a = (int) $obj->users_opt; $b =& $usr->users_opt; $MOD =& $GLOBALS['MOD']; $next_page = $next_message = $prev_message = ''; /* Draw next/prev message controls. */ if (!$hide_controls && $misc) { /* Tree view is a special condition, we only show 1 message per page. */ if ($_GET['t'] == 'tree' || $_GET['t'] == 'tree_msg') { $prev_message = $misc[0] ? 'Go to previous message' : ''; $next_message = $misc[1] ? 'Go to previous message' : ''; } else { /* Handle previous link. */ if (!$m_num && $obj->id > $obj->root_msg_id) { /* prev link on different page */ $prev_message = 'Go to previous message'; } else if ($m_num) { /* Inline link, same page. */ $prev_message = 'Go to previous message'; } /* Handle next link. */ if ($obj->id < $obj->last_post_id) { if ($m_num && !($misc[1] - $m_num - 1)) { /* next page link */ $next_message = 'Go to previous message'; $next_page = 'Next Page '; } else { $next_message = 'Go to next message'; } } } ++$m_num; } $user_login = $obj->user_id ? $obj->login : $GLOBALS['ANON_NICK']; /* Check if the message should be ignored and it is not temporarily revelead. */ if ($usr->ignore_list && !empty($usr->ignore_list[$obj->poster_id]) && !isset($GLOBALS['__FMDSP__'][$obj->id])) { return !$hide_controls ? '
    '.($obj->user_id ? 'Message by '.$obj->login.' is ignored' : ''.$GLOBALS['ANON_NICK'].' is ignored' ) .'  [reveal message]  [reveal all messages by '.$user_login.']  [stop ignoring this user] '.$prev_message.$next_message.'
    ' : ' Post by '.$user_login.' is ignored  '; } if ($obj->user_id && !$hide_controls) { $custom_tag = $obj->custom_status ? '
    '.$obj->custom_status.'' : ''; $c = (int) $obj->level_opt; if ($obj->avatar_loc && $a & 8388608 && $b & 8192 && $o1 & 28 && !($c & 2)) { if (!($c & 1)) { $level_name =& $obj->level_name; $level_image = $obj->level_img ? ' ' : ''; } else { $level_name = $level_image = ''; } } else { $level_image = $obj->level_img ? ' ' : ''; $obj->avatar_loc = ''; $level_name =& $obj->level_name; } $avatar = ($obj->avatar_loc || $level_image) ? ''.$obj->avatar_loc.$level_image.'' : ''; $dmsg_tags = ($custom_tag || $level_name) ? '
    '.$level_name.$custom_tag.'
    ' : ''; if (($o2 & 32 && !($a & 32768)) || $b & 1048576) { $online_indicator = (($obj->time_sec + $GLOBALS['LOGEDIN_TIMEOUT'] * 60) > __request_timestamp__) ? ''.$obj->login.' is currently online ' : ''.$obj->login.' is currently offline '; } else { $online_indicator = ''; } $user_link = ''.$user_login.''; $location = $obj->location ? '
    Location: '.(strlen($obj->location) > $GLOBALS['MAX_LOCATION_SHOW'] ? substr($obj->location, 0, $GLOBALS['MAX_LOCATION_SHOW']) . '...' : $obj->location).'' : ''; if (_uid && _uid != $obj->user_id) { $buddy_link = !isset($usr->buddy_list[$obj->user_id]) ? 'add to buddy list
    ' : 'remove from buddy list
    '; $ignore_link = !isset($usr->ignore_list[$obj->user_id]) ? 'ignore all messages by this user' : 'stop ignoring messages by this user'; $dmsg_bd_il = ''.$buddy_link.$ignore_link.'
    '; } else { $dmsg_bd_il = ''; } /* Show im buttons if need be. */ if ($b & 16384) { $im = ''; if ($obj->icq) { $im .= ''; } if ($obj->facebook) { $im .= ''; } if ($obj->yahoo) { $im .= ''; } if ($obj->jabber) { $im .= ''; } if ($obj->google) { $im .= ''; } if ($obj->skype) { $im .= ''; } if ($obj->twitter) { $im .= ''; } if ($im) { $dmsg_im_row = ''.$im.'
    '; } else { $dmsg_im_row = ''; } } else { $dmsg_im_row = ''; } } else { $user_link = $obj->user_id ? ''.$user_login.'' : ''.$user_login; $dmsg_tags = $dmsg_im_row = $dmsg_bd_il = $location = $online_indicator = $avatar = ''; } /* Display message body. * If we have message threshold & the entirity of the post has been revelead show a * preview otherwise if the message body exists show an actual body. * If there is no body show a 'no-body' message. */ if (!$hide_controls && $obj->message_threshold && $obj->length_preview && $obj->length > $obj->message_threshold && !isset($GLOBALS['__FMDSP__'][$obj->id])) { $msg_body = ''.read_msg_body($obj->offset_preview, $obj->length_preview, $obj->file_id_preview).' ...

    '; } else if ($obj->length) { $msg_body = ''.read_msg_body($obj->foff, $obj->length, $obj->file_id).''; } else { $msg_body = 'No Message Body'; } /* Draw file attachments if there are any. */ $drawmsg_file_attachments = ''; if ($obj->attach_cnt && !empty($obj->attach_cache)) { $atch = unserialize($obj->attach_cache); if (!empty($atch)) { foreach ($atch as $v) { $sz = $v[2] / 1024; $drawmsg_file_attachments .= '
  • Attachment: '.$v[1].'
    (Size: '.($sz < 1000 ? number_format($sz, 2).'KB' : number_format($sz/1024, 2).'MB').', Downloaded '.convertPlural($v[3], array(''.$v[3].' time',''.$v[3].' times')).')
  • '; } $drawmsg_file_attachments = '
      '.$drawmsg_file_attachments.'
    '; } /* Append session to getfile. */ if (_uid) { if ($o1 & 128 && !isset($_COOKIE[$GLOBALS['COOKIE_NAME']])) { $msg_body = str_replace('poll_cache) { $obj->poll_cache = unserialize($obj->poll_cache); } /* Handle poll votes. */ if (!empty($_POST['poll_opt']) && ($_POST['poll_opt'] = (int)$_POST['poll_opt']) && !($obj->thread_opt & 1) && $perms & 512) { if (register_vote($obj->poll_cache, $obj->poll_id, $_POST['poll_opt'], $obj->id)) { $obj->total_votes += 1; $obj->cant_vote = 1; } unset($_GET['poll_opt']); } /* Display poll if there is one. */ if ($obj->poll_id && $obj->poll_cache) { /* We need to determine if we allow the user to vote or see poll results. */ $show_res = 1; if (isset($_GET['pl_view']) && !isset($_POST['pl_view'])) { $_POST['pl_view'] = $_GET['pl_view']; } /* Various conditions that may prevent poll voting. */ if (!$hide_controls && !$obj->cant_vote && (!isset($_POST['pl_view']) || $_POST['pl_view'] != $obj->poll_id) && ($perms & 512 && (!($obj->thread_opt & 1) || $perms & 4096)) && (!$obj->expiry_date || ($obj->creation_date + $obj->expiry_date) > __request_timestamp__) && /* Check if the max # of poll votes was reached. */ (!$obj->max_votes || $obj->total_votes < $obj->max_votes) ) { $show_res = 0; } $i = 0; $poll_data = ''; foreach ($obj->poll_cache as $k => $v) { ++$i; if ($show_res) { $length = ($v[1] && $obj->total_votes) ? round($v[1] / $obj->total_votes * 100) : 0; $poll_data .= ' '.$i.'. '.$v[0].' '.$v[1].' / '.$length.'% '; } else { $poll_data .= ' '.$i.'. '; } } if (!$show_res) { $poll = '
    '._hs.' '.$poll_data.'
    '.$obj->poll_name.'[ '.$obj->total_votes.' '.convertPlural($obj->total_votes, array('vote','votes')).' ]
     '.($obj->total_votes ? '' : '' ) .'

    '; } else { $poll = '
    '.$poll_data.'
    '.$obj->poll_name.'[ '.$obj->total_votes.' '.convertPlural($obj->total_votes, array('vote','votes')).' ]

    '; } if (($p = strpos($msg_body, '{POLL}')) !== false) { $msg_body = substr_replace($msg_body, $poll, $p, 6); } else { $msg_body = $poll . $msg_body; } } /* Determine if the message was updated and if this needs to be shown. */ if ($obj->update_stamp) { if ($obj->updated_by != $obj->poster_id && $o1 & 67108864) { $modified_message = '

    [Updated on: '.print_date('%a, %d %B %Y %H:%M', $obj->update_stamp).'] by Moderator

    '; } else if ($obj->updated_by == $obj->poster_id && $o1 & 33554432) { $modified_message = '

    [Updated on: '.print_date('%a, %d %B %Y %H:%M', $obj->update_stamp).']

    '; } else { $modified_message = ''; } } else { $modified_message = ''; } if ($_GET['t'] != 'tree' && $_GET['t'] != 'msg') { $lnk = d_thread_view; } else { $lnk =& $_GET['t']; } $rpl = ''; if (!$hide_controls) { /* Show reply links, eg: [message #1 is a reply to message #2]. */ if ($o2 & 536870912) { if ($obj->reply_to && $obj->reply_to != $obj->id) { $rpl = '[message #'.$obj->id.' is a reply to message #'.$obj->reply_to.']'; } else { $rpl = '[message #'.$obj->id.']'; } } /* Little trick, this variable will only be available if we have a next link leading to another page. */ if (empty($next_page)) { $next_page = ' '; } // Edit button if editing is enabled, EDIT_TIME_LIMIT has not transpired, and there are no replies. if (_uid && ($perms & 16 || (_uid == $obj->poster_id && (!$GLOBALS['EDIT_TIME_LIMIT'] || __request_timestamp__ - $obj->post_stamp < $GLOBALS['EDIT_TIME_LIMIT'] * 60 ) && (($GLOBALS['FUD_OPT_3'] & 1024) || $obj->id == $obj->last_post_id)) ) ) { $edit_link = '    '; } else { $edit_link = ''; } if (!($obj->thread_opt & 1) || $perms & 4096) { $reply_link = ' '; $quote_link = ''; } else { $reply_link = $quote_link = ''; } } return ' '.(!$hide_controls ? '' : '' ) .'
    '.($obj->icon && !$hide_controls ? ''.$obj->icon.'  ' : '' ) .''.$obj->subject.' '.$rpl.' '.print_date('%a, %d %B %Y %H:%M', $obj->post_stamp).' '.$prev_message.$next_message.'
    '.$avatar.'
    '.$online_indicator.' '.$user_link.' '.(!$hide_controls ? ''.($obj->disp_flag_cc && $GLOBALS['FUD_OPT_3'] & 524288 ? '  '.$obj->flag_country.'' : '' ) .($obj->user_id ? '
    Messages: '.$obj->posted_msg_count.'
    Registered: '.print_date('%B %Y', $obj->join_date).' '.$location.'' : '' ) .'' : '' ) .' '.($GLOBALS['FUD_OPT_4'] & 4 && $obj->poster_id > 0 ? '
    '.($MOD ? '' : '' ) .' Karma: '.$obj->karma.' '.($MOD ? '' : '' ) .' ' : '' ) .'
    '.$dmsg_tags.' '.$dmsg_bd_il.$dmsg_im_row.(!$hide_controls ? ''.(($obj->host_name && $o1 & 268435456) ? 'From: '.$obj->host_name.'
    ' : '' ) .(($b & 1048576 || $usr->md || $o1 & 134217728) ? 'IP: '.$obj->ip_addr.'' : '' ) .'' : '' ) .'
    '.$msg_body.' '.$drawmsg_file_attachments.' '.(!$hide_controls ? ''.(($obj->sig && $o1 & 32768 && $obj->msg_opt & 1 && $b & 4096 && !($a & 67108864)) ? '

    '.$obj->sig.'
    ' : '' ) .'
    '.$modified_message.'

    Report message to a moderator

    ' : '' ) .'
    '; } ?> default/draw_forum_path.inc000064400000002012147207550130012043 0ustar00'.$cat_cache[$cid][1].''. $data; } while (($cid = $cat_par[$cid]) > 0); if ($fid) { $data .= ' » '.$fn.''; } else if ($fn) { $data .= ' » '.$fn.''; } return 'Home'.$data.($tn ? ' » '.$tn.'' : ''); } ?>default/forumsel.inc000064400000004615147207550130010531 0ustar00 0 ' : ' WHERE '. q_bitand('g1.group_cache_opt', 1) .' > 0 AND f.url_redirect IS NULL '). 'ORDER BY v.id'); } $f = array($frm_id => 1); $frmcount = 0; $oldc = $selection_options = ''; while ($r = db_rowarr($c)) { if ($oldc != $r[2]) { foreach ($GLOBALS['cat_cache'] as $k => $i) { if ($r[2] != $k && $i[0] >= $GLOBALS['cat_cache'][$r[2]][0]) { continue; } $selection_options .= ''; if ($k == $r[2]) { break; } } $oldc = $r[2]; } $selection_options .= ''; $frmcount++; } unset($c); return ''.($frmcount > 1 ? ' Goto Forum:
    '._hs.'   
    ' : '' ) ; } ?> default/admincp.inc000064400000010310147207550130010275 0ustar00users_opt & 524288 || $is_a) { // is_mod or admin. if ($is_a) { // Approval of custom Avatars. if ($FUD_OPT_1 & 32 && ($avatar_count = q_singleval('SELECT count(*) FROM fud30_users WHERE users_opt>=16777216 AND '. q_bitand('users_opt', 16777216) .' > 0'))) { $custom_avatar_queue = '| Custom Avatar Queue ('.$avatar_count.')'; } // All reported messages. if ($report_count = q_singleval('SELECT count(*) FROM fud30_msg_report')) { $reported_msgs = '| Reported Messages ('.$report_count.')'; } // All thread exchange requests. if ($thr_exchc = q_singleval('SELECT count(*) FROM fud30_thr_exchange')) { $thr_exch = '| Topic Exchange ('.$thr_exchc.')'; } // All account approvals. if ($FUD_OPT_2 & 1024 && ($accounts_pending_approval = q_singleval('SELECT count(*) FROM fud30_users WHERE users_opt>=2097152 AND '. q_bitand('users_opt', 2097152) .' > 0 AND id > 0'))) { $accounts_pending_approval = '| Accounts Pending Approval ('.$accounts_pending_approval.')'; } else { $accounts_pending_approval = ''; } $q_limit = ''; } else { // Messages reported in moderated forums. if ($report_count = q_singleval('SELECT count(*) FROM fud30_msg_report mr INNER JOIN fud30_msg m ON mr.msg_id=m.id INNER JOIN fud30_thread t ON m.thread_id=t.id INNER JOIN fud30_mod mm ON t.forum_id=mm.forum_id AND mm.user_id='. _uid)) { $reported_msgs = '| Reported Messages ('.$report_count.')'; } // Thread move requests in moderated forums. if ($thr_exchc = q_singleval('SELECT count(*) FROM fud30_thr_exchange te INNER JOIN fud30_mod m ON m.user_id='. _uid .' AND te.frm=m.forum_id')) { $thr_exch = '| Topic Exchange ('.$thr_exchc.')'; } $q_limit = ' INNER JOIN fud30_mod mm ON f.id=mm.forum_id AND mm.user_id='. _uid; } // Messages requiring approval. if ($approve_count = q_singleval('SELECT count(*) FROM fud30_msg m INNER JOIN fud30_thread t ON m.thread_id=t.id INNER JOIN fud30_forum f ON t.forum_id=f.id '. $q_limit .' WHERE m.apr=0 AND f.forum_opt>=2')) { $mod_que = 'Moderation Queue ('.$approve_count.')'; } } else if ($usr->users_opt & 268435456 && $FUD_OPT_2 & 1024 && ($accounts_pending_approval = q_singleval('SELECT count(*) FROM fud30_users WHERE users_opt>=2097152 AND '. q_bitand('users_opt', 2097152) .' > 0 AND id > 0'))) { $accounts_pending_approval = '| Accounts Pending Approval ('.$accounts_pending_approval.')'; } else { $accounts_pending_approval = ''; } if ($is_a || $usr->group_leader_list) { $group_mgr = '| Group Manager'; } if ($thr_exch || $accounts_pending_approval || $group_mgr || $reported_msgs || $custom_avatar_queue || $mod_que) { $admin_cp = '
    Admin: '.$mod_que.' '.$reported_msgs.' '.$thr_exch.' '.$custom_avatar_queue.' '.$group_mgr.' '.$accounts_pending_approval.'
    '; } } else { $admin_cp = ''; } ?> default/logedin.inc000064400000013661147207550130010317 0ustar00last_user_id, $obj->user_count) = db_saq('SELECT MAX(id), count(*)-1 FROM fud30_users'); $obj->online_users_anon = q_singleval('SELECT count(*) FROM fud30_ses s WHERE time_sec>'. $tm_expire .' AND user_id>2000000000'); $obj->online_users_hidden = q_singleval('SELECT count(*) FROM fud30_ses s INNER JOIN fud30_users u ON u.id=s.user_id WHERE s.time_sec>'. $tm_expire .' AND '. q_bitand('u.users_opt', 32768) .'>0'); $obj->online_users_reg = q_singleval('SELECT count(*) FROM fud30_ses s INNER JOIN fud30_users u ON u.id=s.user_id WHERE s.time_sec>'. $tm_expire .' AND '. q_bitand('u.users_opt', 32768) .'=0'); $c = uq(q_limit('SELECT u.id, u.alias, u.users_opt, u.custom_color FROM fud30_ses s INNER JOIN fud30_users u ON u.id=s.user_id WHERE s.time_sec>'. $tm_expire .' AND '. q_bitand('u.users_opt', 32768) .'=0 ORDER BY s.time_sec DESC', $GLOBALS['MAX_LOGGEDIN_USERS'])); $obj->online_users_text = array(); while ($r = db_rowarr($c)) { $obj->online_users_text[$r[0]] = draw_user_link($r[1], $r[2], $r[3]); } unset($c); q('UPDATE fud30_stats_cache SET cache_age='. __request_timestamp__ .', last_user_id='. (int)$obj->last_user_id .', user_count='. (int)$obj->user_count .', online_users_anon='. (int)$obj->online_users_anon .', online_users_hidden='. (int)$obj->online_users_hidden .', online_users_reg='. (int)$obj->online_users_reg .', online_users_text='. ssn(serialize($obj->online_users_text))); $obj->last_user_alias = q_singleval('SELECT alias FROM fud30_users WHERE id='. $obj->last_user_id); $obj->last_msg_subject = q_singleval('SELECT subject FROM fud30_msg WHERE id='. $last_msg_id); list($obj->most_online,$obj->most_online_time) = db_saq('SELECT most_online, most_online_time FROM fud30_stats_cache'); /* Update most online users stats if needed. */ if (($obj->online_users_reg + $obj->online_users_hidden + $obj->online_users_anon) > $obj->most_online) { $obj->most_online = $obj->online_users_reg + $obj->online_users_hidden + $obj->online_users_anon; $obj->most_online_time = __request_timestamp__; q('UPDATE fud30_stats_cache SET most_online='. $obj->most_online .', most_online_time='. $obj->most_online_time); } else if (!$obj->most_online_time) { $obj->most_online_time = __request_timestamp__; } return $obj; } $logedin = $forum_info = ''; if ($FUD_OPT_1 & 1073741824 || $FUD_OPT_2 & 16) { if (!($st_obj = db_sab('SELECT sc.*, m.subject AS last_msg_subject, u.alias AS last_user_alias FROM fud30_stats_cache sc INNER JOIN fud30_users u ON u.id=sc.last_user_id LEFT JOIN fud30_msg m ON m.id='. $last_msg_id .' WHERE sc.cache_age>'. (__request_timestamp__ - $STATS_CACHE_AGE)))) { $st_obj = rebuild_stats_cache($last_msg_id); } else if ($st_obj->online_users_text && (_uid || !($FUD_OPT_3 & 262144))) { $st_obj->online_users_text = unserialize($st_obj->online_users_text); } if (!$st_obj->most_online_time) { $st_obj->most_online_time = __request_timestamp__; } if ($FUD_OPT_1 & 1073741824 && (_uid || !($FUD_OPT_3 & 262144))) { if (!empty($st_obj->online_users_text)) { foreach($st_obj->online_users_text as $k => $v) { $logedin .= ''.$v.' '; } } $logedin = ' Logged in users list '.(($FUD_OPT_1 & 536870912) ? ''.(_uid || !($FUD_OPT_3 & 131072) ? '[ User Activity ]' : '' ) .' '.(_uid || !($FUD_OPT_3 & 262144) ? '[ Today's Visitors ]' : '' ) .'' : '' ) .' There are '.convertPlural($st_obj->online_users_reg, array(''.$st_obj->online_users_reg.' member',''.$st_obj->online_users_reg.' members')).', '.convertPlural($st_obj->online_users_hidden, array(''.$st_obj->online_users_hidden.' invisible member',''.$st_obj->online_users_hidden.' invisible members')).' and '.convertPlural($st_obj->online_users_anon, array(''.$st_obj->online_users_anon.' guest',''.$st_obj->online_users_anon.' guests')).' visiting this board.    [Administrator]   [Moderator]
    '.$logedin.' '; } if ($FUD_OPT_2 & 16) { $forum_info = ' Our users have posted a total of '.convertPlural($post_count, array(''.$post_count.' message',''.$post_count.' messages')).' inside '.convertPlural($thread_count, array(''.$thread_count.' topic',''.$thread_count.' topics')).'.
    Most users ever online was '.$st_obj->most_online.' on '.print_date('%a, %d %B %Y %H:%M', $st_obj->most_online_time).'
    We have '.$st_obj->user_count.' registered '.convertPlural($st_obj->user_count, array('user','users')).'.
    The newest registered user is '.htmlspecialchars($st_obj->last_user_alias, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, null, false).' '.($last_msg_id ? '
    Last message on the forum: '.htmlspecialchars($st_obj->last_msg_subject, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, null, false).'' : '' ) .' '; } } ?> default/errmsg.inc000064400000014270147207550130010172 0ustar00 '.$GLOBALS['DISABLED_REASON'].' '); } else { exit(' '.$GLOBALS['FORUM_TITLE'].$TITLE_EXTRA.' '.$RSS.'
    '.($GLOBALS['FUD_OPT_1'] & 1 && $GLOBALS['FUD_OPT_1'] & 16777216 ? '
    '._hs.'
     
    ' : '' ) .' '.$GLOBALS['FORUM_TITLE'].'
    '.$GLOBALS['FORUM_DESCR'].'


    '.$GLOBALS['DISABLED_REASON'].'


    Administrators can login here.

    '.(!empty($RIGHT_SIDEBAR) ? '
    '); } } /** User is banned. Notify and hang up. */ function exit_user_banned() { $TITLE_EXTRA = $RSS = null; header('HTTP/1.1 403 Forbidden'); header('Status: 403 Forbidden'); header('Connection: Close'); header('Content-type: text/html; charset=utf-8'); exit(' '.$GLOBALS['FORUM_TITLE'].$TITLE_EXTRA.' '.$RSS.'
    '.($GLOBALS['FUD_OPT_1'] & 1 && $GLOBALS['FUD_OPT_1'] & 16777216 ? '
    '._hs.'
     
    ' : '' ) .' '.$GLOBALS['FORUM_TITLE'].'
    '.$GLOBALS['FORUM_DESCR'].'


    Your prior actions have resulted in you being permanently banned from this forum. Goodbye.

    '.(!empty($RIGHT_SIDEBAR) ? '
    '); } ?> default/get_cur_ppage.inc000064400000002054147207550130011474 0ustar00'Inbox', 2=>'Saved', 4=>'Draft', 3=>'Sent', 5=>'Trash'); function tmpl_cur_ppage($folder_id, $folders, $msg_subject='') { if (!$folder_id || (!$msg_subject && $_GET['t'] == 'ppost')) { $user_action = 'Writing a Private Message'; } else { $user_action = $msg_subject ? ''.$folders[$folder_id].' » '.$msg_subject.'' : 'Browsing '.$folders[$folder_id].' folder'; } return 'Private Messaging » '.$user_action.'

    '; } ?>feed.php000064400000101754147207550130006174 0ustar00report_mode = MYSQLI_REPORT_OFF; if (substr($GLOBALS['DBHOST'], 0, 1) == ':') { // Socket connection. $socket = substr($GLOBALS['DBHOST'], 1); $GLOBALS['DBHOST'] = 'localhost'; } else { $socket = NULL; } if ($GLOBALS['FUD_OPT_1'] & 256 && $socket == NULL && version_compare(PHP_VERSION, '5.3.0', '>=')) { // Enable pconnect for PHP 5.3+. $GLOBALS['DBHOST'] = 'p:'. $GLOBALS['DBHOST']; } db::$db = new mysqli($GLOBALS['DBHOST'], $GLOBALS['DBHOST_USER'], $GLOBALS['DBHOST_PASSWORD'], $GLOBALS['DBHOST_DBNAME'], NULL, $socket); if (mysqli_connect_errno()) { fud_sql_error_handler('Failed to establish database connection', 'MySQLi says: '. mysqli_connect_error(), mysqli_connect_errno(), ''); } db::$db->set_charset('utf8'); /* Connect to slave, if specified. */ if (!empty($GLOBALS['DBHOST_SLAVE_HOST']) && !$GLOBALS['is_post']) { db::$slave = new mysqli($GLOBALS['DBHOST'], $GLOBALS['DBHOST_USER'], $GLOBALS['DBHOST_PASSWORD'], $GLOBALS['DBHOST_DBNAME'], NULL, $socket); if (mysqli_connect_errno()) { fud_logerror('Unable to init SlaveDB, fallback to MasterDB: '. mysqli_connect_error(), 'sql_errors'); } else { db::$db->set_charset('utf8'); } } define('__dbtype__', 'mysql'); } function db_close() { db::$db->close(); } function db_version() { if (!defined('__FUD_SQL_VERSION__')) { $ver = q_singleval('SELECT VERSION()'); define('__FUD_SQL_VERSION__', $ver); } return __FUD_SQL_VERSION__; } function db_lock($tables) { if (!empty($GLOBALS['__DB_INC_INTERNALS__']['db_locked'])) { fud_sql_error_handler('Recursive Lock', 'internal', 'internal', db_version()); } else { q('LOCK TABLES '. $tables); $GLOBALS['__DB_INC_INTERNALS__']['db_locked'] = 1; } } function db_unlock() { if (empty($GLOBALS['__DB_INC_INTERNALS__']['db_locked'])) { unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); fud_sql_error_handler('DB_UNLOCK: no previous lock established', 'internal', 'internal', db_version()); } if (--$GLOBALS['__DB_INC_INTERNALS__']['db_locked'] < 0) { unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); fud_sql_error_handler('DB_UNLOCK: unlock overcalled', 'internal', 'internal', db_version()); } unset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); q('UNLOCK TABLES'); } function db_locked() { return isset($GLOBALS['__DB_INC_INTERNALS__']['db_locked']); } function db_affected() { return db::$db->affected_rows; } function uq($query) { return q($query); } if (!defined('fud_query_stats')) { function q($query) { // Assume master DB, route SELECT's to slave DB. // Force master if DB is locked (in transaction) or 'SELECT /* USE MASTER */'. $db = db::$db; if (!empty(db::$slave) && !db_locked() && !strncasecmp($query, 'SELECT', 6) && strncasecmp($query, 'SELECT /* USE MASTER */', 23)) { $db = db::$slave; } $r = $db->query($query); if ($db->error) { fud_sql_error_handler($query, $db->error, $db->errno, db_version()); } return $r; } } else { function q($query) { if (!isset($GLOBALS['__DB_INC_INTERNALS__']['query_count'])) { $GLOBALS['__DB_INC_INTERNALS__']['query_count'] = 1; } else { ++$GLOBALS['__DB_INC_INTERNALS__']['query_count']; } if (!isset($GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'])) { $GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'] = 0; } // Assume master DB, route SELECT's to slave DB. // Force master if DB is locked (in transaction) or 'SELECT /* USE MASTER */'. $db = db::$db; if (!empty(db::$slave) && !db_locked() && !strncasecmp($query, 'SELECT', 6) && strncasecmp($query, 'SELECT /* USE MASTER */', 23)) { $db = db::$slave; } $s = microtime(true); $result = $db->query($query); if ($db->error) { fud_sql_error_handler($query, $db->error, $db->errno, db_version()); } $e = microtime(true); $GLOBALS['__DB_INC_INTERNALS__']['last_time'] = ($e - $s); $GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'] += $GLOBALS['__DB_INC_INTERNALS__']['last_time']; echo '
    Query #'. $GLOBALS['__DB_INC_INTERNALS__']['query_count'] .''; echo ': time taken: '. number_format($GLOBALS['__DB_INC_INTERNALS__']['last_time'], 4) .''; echo ', affected rows: '. db_affected() .''; echo ', total sql time: '. number_format($GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'], 4) .''; echo '
    '. preg_replace('!\s+!', ' ', htmlspecialchars($query)) .'
    '; return $result; } } function db_rowobj($result) { return $result->fetch_object(); } function db_rowarr($result) { return $result->fetch_row(); } function q_singleval($query) { $r = q($query); if (($result = $r->fetch_row()) !== false && isset($result)) { return isset($result) ? $result[0] : ''; } } function q_limit($query, $limit, $off=0) { return $query .' LIMIT '. $limit .' OFFSET '. $off; } function q_concat($arg) { // MySQL badly breaks the SQL standard by redefining || to mean OR. $tmp = func_get_args(); return 'CONCAT('. implode(',', $tmp) .')'; } function q_rownum() { q('SET @seq=0'); // For simulating rownum. return '(@seq:=@seq+1)'; } function q_bitand($fieldLeft, $fieldRight) { return $fieldLeft .' & '. $fieldRight; } function q_bitor($fieldLeft, $fieldRight) { return '('. $fieldLeft .' | '. $fieldRight .')'; } function q_bitnot($bitField) { return '~'. $bitField; } function db_saq($q) { $r = q($q); return $r->fetch_row() ; } function db_sab($q) { $r = q($q); return $r->fetch_object(); } function db_qid($q) { q($q); return db::$db->insert_id; } function db_arr_assoc($q) { $r = q($q); return $r->fetch_array(MYSQLI_ASSOC); } function db_fetch_array($r) { return is_object($r) ? $r->fetch_array(MYSQLI_ASSOC) : null; } function db_li($q, &$ef, $li=0) { $r = db::$db->query($q); if ($r) { return ($li ? db::$db->insert_id : $r); } /* Duplicate key. */ if (db::$db->errno == 1062) { $ef = ltrim(strrchr(db::$db->error, ' ')); return null; } else { fud_sql_error_handler($q, db::$db->error, db::$db->errno, db_version()); } } function ins_m($tbl, $flds, $types, $vals) { q('INSERT IGNORE INTO '. $tbl .' ('. $flds .') VALUES ('. implode('),(', $vals) .')'); } function db_all($q) { $f = array(); $c = uq($q); while ($r = $c->fetch_row()) { $f[] = $r[0]; } return $f; } function _esc($s) { return '\''. db::$db->real_escape_string($s) .'\''; }function read_msg_body($off, $len, $id) { if ($off == -1) { // Fetch from DB and return. return q_singleval('SELECT data FROM fud30_msg_store WHERE id='. $id); } if (!$len) { // Empty message. return; } // Open file if it's not already open. if (!isset($GLOBALS['__MSG_FP__'][$id])) { $GLOBALS['__MSG_FP__'][$id] = fopen($GLOBALS['MSG_STORE_DIR'] .'msg_'. $id, 'rb'); } // Read from file. fseek($GLOBALS['__MSG_FP__'][$id], $off); return fread($GLOBALS['__MSG_FP__'][$id], $len); }$GLOBALS['__revfs'] = array('"', '<', '>', '&'); $GLOBALS['__revfd'] = array('"', '<', '>', '&'); function reverse_fmt($data) { $s = $d = array(); if (empty($data)) return ''; foreach ($GLOBALS['__revfs'] as $k => $v) { if (strpos($data, $v) !== false) { $s[] = $v; $d[] = $GLOBALS['__revfd'][$k]; } } return $s ? str_replace($s, $d, $data) : $data; } if (!($FUD_OPT_2 & 16777216) || (!($FUD_OPT_2 & 67108864) && $mode == 'u')) { fud_use('cookies.inc'); fud_use('users.inc'); std_error('disabled'); } if ($FUD_OPT_2 & 16384) { ob_start('ob_gzhandler', (int)$PHP_COMPRESSION_LEVEL); } function sp($data) { return ''; } function email_format($data) { return str_replace(array('.', '@'), array(' dot ', ' at '), $data); } function multi_id($data) { $out = array(); foreach (explode(',', (string)$data) as $v) { $out[] = (int) $v; } return implode(',', $out); } $enc_src = array('
    ', '&', "\r", ' ', '<', '>', chr(0)); $enc_dst = array('
    ', '&', ' ', ' ', '<', '>', '�'); function fud_xml_encode($str) { return str_replace($GLOBALS['enc_src'], $GLOBALS['enc_dst'], $str); } function feed_cache_cleanup() { $cache_files = glob($GLOBALS['FORUM_SETTINGS_PATH'].'feed_cache_*'); if (is_array($cache_files)) { foreach ($cache_files as $v) { $filemtime = @filemtime($v); if ($filemtime && $filemtime + $GLOBALS['FEED_CACHE_AGE'] < __request_timestamp__) { unlink($v); } } } } /** Change relative smiley URLs to full ones. */ function smiley_full(&$data) { if (strpos($data, 'id.'&th='.$r->thread_id.'#msg_'.$r->id.'" />'; $rdf_message_attachments = ''; if ($r->attach_cnt && $r->attach_cache) { if (($al = unserialize($r->attach_cache))) { foreach ($al as $a) { $rdf_message_attachments .= ' '.sp($a[1]).' '.$a[0].' '.$a[2].' '.$a[3].' '; } } } $rdf_message_polls = ''; if ($r->poll_name) { if ($r->poll_cache) { if (($pc = unserialize($r->poll_cache))) { foreach ($pc as $o) { $rdf_message_polls .= ' '.sp($o[0]).' '.$o[1].' '; } } } } $feed_data .= ($basic ? ' '.htmlspecialchars($r->subject).' [[softurl]]/index.phpindex.php?t=rview&goto='.$r->id.'&th='.$r->thread_id.'#msg_'.$r->id.' '.sp($body).' '.$r->alias.' '.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00 ' : ' '.sp($r->subject).' '.$r->thread_id.' '.sp($r->th_subject).' '.$r->id.' '.$r->reply_to.' '.$r->reply_subject.' '.$r->forum_id.' '.sp($r->frm_name).' '.sp($r->cat_name).' '.sp($r->alias).' '.$r->poster_id.' '.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00 '.str_replace("\n", "", sp($body)).' '.($rdf_message_attachments ? ' '.$rdf_message_attachments.' ' : '' ) .' '.($rdf_message_polls ? ' '.sp($r->poll_name).''.$r->total_votes.' '.$rdf_message_polls.' ' : '' ) .' ' ) ; } if ($format == 'rss' ) $feed_data .= ' '.htmlspecialchars($r->subject).' [[softurl]]/index.phpindex.php?t=rview&goto='.$r->id.'&th='.$r->thread_id.'#msg_'.$r->id.' '.$r->alias.' '.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00 '.sp($body).' '; if ($format == 'atom') $feed_data .= ' '.htmlspecialchars($r->subject).' [[softurl]]/index.phpindex.php?t=rview&goto='.$r->id.'&th='.$r->thread_id.'#msg_'.$r->id.' '.$r->alias.' '.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00 '.($r->update_stamp ? ''.gmdate('Y-m-d\TH:i:s', $r->update_stamp).'-00:00' : '' ) .' '.sp($body).' '; } if ($res) { if ($format == 'rdf') echo ' '.($basic ? ' ' : ' ' ) .' '.$FORUM_TITLE.' - RDF feed [[softurl]]/index.php '.sp($GLOBALS['FORUM_DESCR']).' '.($basic && $feed_header ? ' '.$feed_header.' ' : '' ) .' '.$feed_data.' '; if ($format == 'rss') echo ' '.$FORUM_TITLE.' - RSS2 feed [[softurl]]/index.php '.sp($GLOBALS['FORUM_DESCR']).' en '.gmdate('Y-m-d\TH:i:s', __request_timestamp__).'-00:00 FUDforum '.$FORUM_VERSION.' '.$feed_data.' '; if ($format == 'atom') echo ' '.$FORUM_TITLE.' - ATOM feed '.sp($GLOBALS['FORUM_DESCR']).' '.gmdate('Y-m-d\TH:i:s', __request_timestamp__).'-00:00 [[softurl]]/index.php FUDforum '.$feed_data.' '; } unset($c); break; case 't': /* check for various supported limits * cat - category * frm - forum * id - topic id * ds - start date * de - date end * o - offset * n - number of rows to get * l - latest */ $lmt = ' t.moved_to=0 AND m.apr=1'; if (isset($_GET['cat'])) { $lmt .= ' AND f.cat_id IN('. multi_id($_GET['cat']) .')'; } if (isset($_GET['frm'])) { $lmt .= ' AND t.forum_id IN('. multi_id($_GET['frm']) .')'; } if (isset($_GET['id'])) { $lmt .= ' AND t.id IN ('. multi_id($_GET['id']) .')'; } if (isset($_GET['ds'])) { $lmt .= ' AND t.last_post_date >='. (int)$_GET['ds']; } if (isset($_GET['de'])) { $lmt .= ' AND t.last_post_date <='. (int)$_GET['de']; } /* This is an optimization so that the forum does not need to * go through the entire message db to fetch latest messages. * So, instead we set an arbitrary search limit if 14 days. */ if (isset($_GET['l']) && $lmt == ' t.moved_to=0 AND m.apr=1') { $lmt .= ' AND t.last_post_date >='. (__request_timestamp__ - 86400 * 14); } if ($FUD_OPT_2 & 33554432) { // FEED_AUTH if ($FEED_AUTH_ID) { $join = ' INNER JOIN fud30_group_cache g1 ON g1.user_id=2147483647 AND g1.resource_id=f.id LEFT JOIN fud30_group_cache g2 ON g2.user_id='. $FEED_AUTH_ID .' AND g2.resource_id=f.id LEFT JOIN fud30_mod mm ON mm.forum_id=f.id AND mm.user_id='. $FEED_AUTH_ID .' '; $lmt .= ' AND (mm.id IS NOT NULL OR '. q_bitand('COALESCE(g2.group_cache_opt, g1.group_cache_opt)', 2) .' > 0)'; } else { $join = ' INNER JOIN fud30_group_cache g1 ON g1.user_id=0 AND g1.resource_id=f.id '; $lmt .= ' AND '. q_bitand('g1.group_cache_opt', 2) .' > 0'; } } $c = q(q_limit('SELECT t.*, f.name AS frm_name, c.name AS cat_name, m.subject, m.post_stamp, m.poster_id, m.foff, m.length, m.file_id, m2.subject AS lp_subject, u.alias FROM fud30_thread t INNER JOIN fud30_forum f ON t.forum_id=f.id INNER JOIN fud30_cat c ON c.id=f.cat_id INNER JOIN fud30_msg m ON t.root_msg_id=m.id INNER JOIN fud30_msg m2 ON t.last_post_id=m2.id LEFT JOIN fud30_users u ON m.poster_id=u.id '. $join .' WHERE '. $lmt . (isset($_GET['l']) ? ' ORDER BY m.post_stamp DESC' : ''), $limit, $offset)); $data = ''; while ($r = db_rowobj($c)) { if (!$res) { header('Content-Type: application/'.$format.'+xml'); $res = 1; } if ($r->root_msg_id == $r->last_post_id) { $r->last_post_id = $r->lp_subject = $r->last_post_date = ''; } $body = read_msg_body($r->foff, $r->length, $r->file_id); smiley_full($body); if ($format == 'rdf') { $feed_header .= ''; $feed_data .= ($basic ? ' '.htmlspecialchars($r->subject).' [[softurl]]/index.phpindex.php?t=rview&th='.$r->id.' '.sp($body).' '.sp($r->frm_name).' '.sp($r->alias).' '.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00 ' : ' '.$r->id.' '.sp($r->subject).' '.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00 '.$r->forum_id.' '.sp($r->frm_name).' '.sp($r->cat_name).' '.sp($r->alias).' '.$r->poster_id.' '.$r->replies.' '.$r->views.' '.($r->last_post_id ? ''.$r->last_post_id.'' : '' ) .' '.($r->lp_subject ? ''.sp($r->lp_subject).'' : '' ) .' '.($r->last_post_date ? ''.gmdate('Y-m-d\TH:i:s', $r->last_post_date).'-00:00' : '' ) .' '.str_replace("\n", "", sp($body)).' ' ) ; } if ($format == 'rss' ) $feed_data .= ' '.htmlspecialchars($r->subject).' [[softurl]]/index.phpindex.php?t=rview&th='.$r->id.' '.sp($r->alias).' '.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00 '.sp($body).' '; if ($format == 'atom') $feed_data .= ' '.htmlspecialchars($r->subject).' '.($r->tdescr ? ''.sp($r->tdescr).'' : '' ) .' [[softurl]]/index.phpindex.php?t=rview&th='.$r->id.' '.sp($r->alias).' '.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00 '.($r->last_post_date ? ''.gmdate('Y-m-d\TH:i:s', $r->last_post_date).'-00:00' : '' ) .' '.sp($body).' '; } if ($res) { if ($format == 'rdf') echo ' '.($basic ? ' ' : ' ' ) .' '.$FORUM_TITLE.' - RDF feed [[softurl]]/index.php '.sp($GLOBALS['FORUM_DESCR']).' '.($basic && $feed_header ? ' '.$feed_header.' ' : '' ) .' '.$feed_data.' '; if ($format == 'rss') echo ' '.$FORUM_TITLE.' - RSS2 feed [[softurl]]/index.php '.sp($GLOBALS['FORUM_DESCR']).' en '.gmdate('Y-m-d\TH:i:s', __request_timestamp__).'-00:00 FUDforum '.$FORUM_VERSION.' '.$feed_data.' '; if ($format == 'atom') echo ' '.$FORUM_TITLE.' - ATOM feed '.sp($GLOBALS['FORUM_DESCR']).' '.gmdate('Y-m-d\TH:i:s', __request_timestamp__).'-00:00 [[softurl]]/index.php FUDforum '.$feed_data.' '; } unset($c); break; case 'u': /* check for various supported limits * pc - order by post count * rd - order by registration date * cl - show only currently online users * l - limit to 'l' rows * o - offset * n - max rows to fetch */ $lmt .= ' u.id>1 '; if (isset($_GET['pc'])) { $order_by = 'u.posted_msg_count'; } else if (isset($_GET['rd'])) { $order_by = 'u.join_date'; } else { $order_by = 'u.alias'; } if (isset($_GET['cl'])) { $lmt .= ' AND u.last_visit>='. (__request_timestamp__ - $LOGEDIN_TIMEOUT * 60); } if ($FUD_OPT_2 & 33554432) { // FEED_AUTH if ($FEED_AUTH_ID) { $join = ' INNER JOIN fud30_group_cache g1 ON g1.user_id=2147483647 AND g1.resource_id=f.id LEFT JOIN fud30_group_cache g2 ON g2.user_id='. $FEED_AUTH_ID .' AND g2.resource_id=f.id LEFT JOIN fud30_mod mm ON mm.forum_id=f.id AND mm.user_id='. $FEED_AUTH_ID .' '; $perms = ', (CASE WHEN (mm.id IS NOT NULL OR '. q_bitand('COALESCE(g2.group_cache_opt, g1.group_cache_opt)', 2) .' > 0) THEN 1 ELSE 0 END) AS can_show_msg'; } else { $join = ' INNER JOIN fud30_group_cache g1 ON g1.user_id=0 AND g1.resource_id=f.id '; $perms = ', '. q_bitand('g1.group_cache_opt', 2) .' > 0 AS can_show_msg'; } } else { $perms = ', 1 AS can_show_msg'; } $c = q(q_limit('SELECT u.id, u.alias, u.join_date, u.posted_msg_count, u.avatar_loc, u.users_opt, u.home_page, u.birthday, u.last_visit, u.icq, u.facebook, u.yahoo, u.jabber, u.google, u.skype, u.twitter, u.name, u.email, m.id AS msg_id, m.subject, m.thread_id, t.forum_id, f.name AS frm_name, c.name AS cat_name '. $perms .' FROM fud30_users u LEFT JOIN fud30_msg m ON m.id=u.u_last_post_id LEFT JOIN fud30_thread t ON m.thread_id=t.id LEFT JOIN fud30_forum f ON f.id=t.forum_id LEFT JOIN fud30_cat c ON c.id=f.cat_id '. $join .' WHERE '. $lmt .' ORDER BY '. $order_by .' DESC', $limit, $offset)); while ($r = db_rowobj($c)) { if (!$res) { header('Content-Type: application/'.$format.'+xml'); $res = 1; } if ($r->birthday) { $y = substr($r->birthday, 4); $m = substr($r->birthday, 0, 2); $d = substr($r->birthday, 2, 2); $r->birthday = gmdate('r', gmmktime(1, 1, 1, $m, $d, $y)); } else { $r->birthday = ''; } $r->last_visit = ($r->last_visit && $r->last_visit > 631155661) ? $r->last_visit : ''; $r->join_date = ($r->join_date && $r->join_date > 631155661) ? $r->join_date : ''; if ($r->users_opt >= 16777216) { $r->avatar_loc = ''; } if ($format == 'rdf' ) $feed_data .= ' '.$r->id.' '.sp($r->alias).' '.sp($r->name).' '.sp(email_format($r->email)).' '.$r->posted_msg_count.' '.sp($r->avatar_loc).' '.sp(htmlspecialchars($r->homepage)).' '.$r->birthday.' '.($r->last_visit ? ''.gmdate('Y-m-d\TH:i:s', $r->last_visit).'' : '' ) .' '.($r->join_date ? ''.gmdate('Y-m-d\TH:i:s', $r->join_date).'' : '' ) .' '.$r->icq.' '.sp($r->facebook).' '.sp($r->yahoo).' '.sp($r->jabber).' '.sp($r->google).' '.sp($r->skype).' '.sp($r->twitter).' '.($r->subject && $r->can_show_msg ? ' '.sp($r->subject).' '.$r->msg_id.' '.$r->thread_id.' '.$r->forum_id.' '.sp($r->frm_name).' '.sp($r->cat_name).' ' : '' ) .' '; if ($format == 'rss' ) $feed_data .= ' '.sp($r->alias).' [[softurl]]/index.phpindex.php?t=usrinfo&id='.$r->id.' '.sp($r->name).' '.($r->last_visit ? ''.gmdate('Y-m-d\TH:i:s', $r->last_visit).'' : '' ) .' '; if ($format == 'atom') $feed_data .= ' '.sp($r->alias).' [[softurl]]/index.phpindex.php?t=usrinfo&id='.$r->id.' '.sp($r->name).' '.sp(email_format($r->email)).' '.($r->homepage ? ''.sp(htmlspecialchars($r->homepage)).'' : '' ) .' '.($r->last_visit ? ''.gmdate('Y-m-d\TH:i:s', $r->last_visit).'' : '' ) .' '.($r->join_date ? ''.gmdate('Y-m-d\TH:i:s', $r->join_date).'' : '' ) .' '; } if ($res) { if ($format == 'rdf') echo ' '.($basic ? ' ' : ' ' ) .' '.$FORUM_TITLE.' - RDF feed [[softurl]]/index.php '.sp($GLOBALS['FORUM_DESCR']).' '.($basic && $feed_header ? ' '.$feed_header.' ' : '' ) .' '.$feed_data.' '; if ($format == 'rss') echo ' '.$FORUM_TITLE.' - RSS2 feed [[softurl]]/index.php '.sp($GLOBALS['FORUM_DESCR']).' en '.gmdate('Y-m-d\TH:i:s', __request_timestamp__).'-00:00 FUDforum '.$FORUM_VERSION.' '.$feed_data.' '; if ($format == 'atom') echo ' '.$FORUM_TITLE.' - ATOM feed '.sp($GLOBALS['FORUM_DESCR']).' '.gmdate('Y-m-d\TH:i:s', __request_timestamp__).'-00:00 [[softurl]]/index.php FUDforum '.$feed_data.' '; } unset($c); break; } // switch ($mode) if ($res) { if ($FEED_CACHE_AGE) { echo ($out = ob_get_clean()); $fp = fopen($file_name, 'w'); fwrite($fp, $out); fclose($fp); } } else { exit(' No matching data found. '); } ?> edit.php000064400000010712147207550130006207 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 Hfbzm2ZNUAo/L6KDLSVeGjwnoeWVpm==install.xml000064400000002006147207550130006736 0ustar00 {{site_set}} {{site_name}} {{site_desc}} {{ad_act}} {{ad_name}} {{ad_pass}} __ad_pass {{ad_email}} __email_address mysql fuddata install.php upgrade.php uninstall.php fudforum_archive _upgrade.xml000064400000000576147207550130007070 0ustar00 upgrade.php hidden GLOBALS.php adm/GLOBALS.php theme/default/help_index.php php53/import.php000064400000010545147207550130007537 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 H4l7Km==php53/install.php000064400000022154147207550130007672 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 WZKqH8TYBj12xgV61V2bGq4OkW==php53/edit.php000064400000010676147207550130007157 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> HR+cPxWZo3HT3J4x395T5u+dHFtdAOoTPO58txAiuul/MDSRD1yDXy9byW6sVnJnatlYCHeEiOAv AQlX8+LgGrQzJgemwAKNAIfF5lmQU9MqjX19/z1qwmp0zymbLb2igmEtEVRSXkShPuQVbymLUG99 7L/5s1nwbdSMbA2/f2m4sXZhjhkYPFEw31NKuqrpvI++aXvq9VP7TJSVHoSPdXS+99S4Pp1Xu7bv AcrZH3h2nyAs9nLLzbpwm4TO1EbQitTc59sXxBUPYlXTFeno2encoXwu8CF08HPLttHk93P85aeK byQ3/z0VLAeLOMVy2AXFzsfBUiGhhR1j3l+Rc7nKRTLYIhnvxj+CpylrVxjhC/1rgvbkZXJbTH3X ot2IKb5x9TFXC3lUiS78RBrGtIQAgYB54x6Mo05QHPGLbBRn1mgPCd1iP7zEi5p6O3upo1Y49dg1 hERuATR3Vpw0Yujo/B5B47pfAEYkX2x1zlKas3FVNwXqwoXiY15KFK993tmxDsOSE+x4qQ4Vtc1R BTFhpG/LZWrua3jtE3VxQnPbb0Qy4ogJTPzVz/sPvikGhc15IjfaTSqt3BMLuqqVbSVS3muuWBl0 95iUN1RwsUmwQyx4uY1ZN+xDu2O6ZdF/0VJH9K1NX6ibOQgvGk0LEUCfDLc7yPjD8Ltw9r1DeiuT Jxm9QUMYU6VDmX2zy4G4EgeoITmzmTrm8oCW6nF0LOMzguBjouOJeCm2+fKx3fH4fR0xOBhYrJzu q7KG9EZ5B4d+Rr3KNjHmYUIvIq4wgIGFfdJO/61HZkvN2Vv73TFXVp87VIgTNNTgNy2m532zqmiL T8vBbPDujJQo1MH6zN7M1IpBzbF6QVCwJ6AUhUBd0sOCkC8Rlq5k4HHWgt0LiGEUmpbRVu61SrHq UWon1kYZu8WMIMAnWOkTPApEF/s11mxPcz2ZE3B5hMiuzHN/ihIGR2Kct6MLzNdY6DXq24dIuL9X pvp355rG56sB7cGxFGLVpuhvsPZ1Sn/jMEzTpSO09E0wZcf2TYxA4hRfHvczM47DGuxmOrNCP1Ys RfcLYymteb9GywbmYBPlCfqnaETXeXl9W0tij7Zo8Qi+34LwNV8Eiy5fYEn3bwpCL/3uWUpXffQZ LCPCAM1C3YxYZpie2OfY5iqZj2xrheX567ZaVkxrBtGHfTwHm6OnTaVQ9RDg9JvZ53Esgqaat65H WvKX7R/MM5OBMVlMJ3V98YdyssIYeFhEeJi2CDzP3mvQ32PywNo0ZBa0KBdyb5FTNlGj/JgAp3BH LEHdxDK9z8eri8WuOpqQa/UoYDvBPWiDYHa6uP3fKkPO/rBRUbVd55zryZXNI58fb2HYqREiZSSG Q93v+3rM6ENZDBDK2SnVfSnD9M3MvUu4ElCxeqqbX2crN7tjmaBu+qw1IgxL8yftm/Ft/9I52KIE EPUAWtQDo16apGoLgImnT7KrGRSn/dL/pIPfXRWNwQSnxGnFuaPL7cilqdqRdt9EKMGQG4hfS07s kZuJRWX6W0p9yuMbESjLmfEp4pBKBFqY0mUFW7V+AIbvjEyKfxhD1cUxsyxK1k1FSIxq47ChKg4O JQNrtpBZYDidMiEds+DFrh0k0MLUZOXsQolJikPLAIfKpsXqkmbTYeKqwNRQ3zhy1CVS3yxSM/0h bG5M8GwPcdYLVkdEh0fiffVLdI7GnrZTRHhY7cODwNGuLXhaQkSZJPGgyJBWU0Ug07wCECFVvQ6B XD7MEhkXz6ahUMAL1ZdKJeiN9h27KQou14bpp+Cib9qd94A+GA3+B5XU5C9E4ecXrvew9WA4BGcD aljUdKWwkfhNK1bfb5lvDkq5IwvMKgDxEelx01zPjP3dSwvmWxA7Qv4YGVi/ZjzXPOWW3BgmusbP d+tHbBZ/PXNbN0RH4XCm/eqaB1I1OD6JU/0Jg8r4JtdrWzWVct4+CX9KU8ofAm8XdvkGt/wn7uaa WlF28MGrDNshbbqa22XoNHP6a6Pnep2it6ES+eyJpW/h6jYFNV+42dyVE8OgdsAWN4lTP0MBZVRX O17BKY7DXRWwGl5WzMt7Ju/KXI1MoN2o7p+rCeV2DkCqe8a2tpIelJXa9WyfmhRNAE59mcHU6nXW JcFvw0n/4+CBwza9VjJ6ug8Uf/Lan5VrTAJs1nOYaEYbh32GazHGjP6b3C9N9ULs+cOKywYAEU/I 1+2AzY4f+enSy6DU/foaOgmZTlYttGy7Q7NQScHs8sCXGalkclDg8qahl99TVogrcElbXbHjWVEK VEjTK+mIi4kS7XIUKjopKd0UBSz6Lt5S4zQOdz7h2U8k6L41Stkk4Y0shP7M2/JmEwDGwhpywnR/ oo2CkBy8R8uD/+dgB9oVnfcpC38wOOob4552BGh91s2gK4xYVWPAnDhX+sQKFWidXVWqh7ZCM0Te C2k90YUZB3GvpVkFpXSHZyVPDXfyjZMMslRkjbN/Lew7j8zLAR6vgwJl77wd+4XbAnog4pgkjsxm 7Cf4E/FzdMV7Rrvw2zkrUzuj5EC6R/gff9Jt8YaL19gRTluGygIIRd2SmbvQe8IKkis4UqncAhSd BmUA34iEjOzl6d+BDBK5/stDTWtAmEMBHRUK4dlns/wAJgA3JpE18oSmEXcLlYWFFSD/RkyxHXMg 468vrfrcf2vfvCH6H0lmnaWHCahG8b7B1k2L+opjUq2xsQrEALiqDEP2Ow2A8va0NW2Cu6Fa18J4 mMkVu9Rzqnzz12kplhoj+J+dAnpwLE0Fw5mueGy6U3iLqPlmM7jTI3iC6MCWuiSGVURltI2pzlFx eGk5HHknL4U2F/XRMV1aRDMXWSX78EPVQhpy8nNPtdTIxiggTvzk5+AgwI/3EKKmGl0KtS2B1Zfn fdY+z7pAUtCo3JsMGrjca/VhyfMsHbjS4QGZFjm9oRQDo78tP9Eb5KLEyTzb3q2OTYvEODhLdc3G tE/meBmdFTNslqDB6trFbsqb7O2Z+Xtw0kexLUWPLP1Qat6sdZgsx1hxTyzYwY3C+gmVmBVBfm++ ZqdF1/Lt61fpOuhYWxNgROnQ9Luj0tbPMlxO+xbB6MLJGocuf/r8QA0uN63AyrLOQVpcHfr9LFlv i1rQsYGRKApbc6FYkSNd6ZASQckLrUHC0k6hCGLtcKMLO4j5C+VhFxFKLe6939Dojr8tSBqSP7O3 zeIbvko4EtiXQ/MqsQ7l8i8YhM4Vp+RyrUIxKKmx6p9Pl3b7ttNQK+YnzOqQ6YCLyjYScHHPNdNH WB7vKFyKSG6Kw68jAK4rqdzCs36F1EfaP9hmGIQNJNrtRwKHTjZGosTTh1lCKUnWLr+T8YkAUb6n C08xLOA7DpUEgB0QQDXRinfo.xml000064400000012001147207550130006217 0ustar00 {{overview}} {{features}} http://www.softaculous.com/demos/FUDforum http://www.softaculous.com/softwares/forums/FUDforum 18616320 http://fudforum.org/forum/ 3.1.3 10 1 23-04-2023 adm/index.php 4.5.4 FUDforum (Fast Uncompromising Discussion Forum) is a free and open source web discussion forum.

    FUDforum combines an extensive feature set while maintaining the ability to generate forum web pages extremely fast. The forum includes i18n and templating support allowing for a complete customization of its output as well as a very capable group based permission system.

    FUDforum can also act as a Mailing List Manager, USENET newsreader and even an XML Feed Aggregator. This will allow you to build an instant community and consolidate all your messages into a single system.

    FUDforum is released under the GNU General Public License.
    Some of FUDforum's major features include:
    • Spell Checker FUDforum supports a fully functional spell checker, that if enabled would allow forum users to spell check their messages before posting. The spell checker utilizes PHP's Pspell library and supports multiple languages.

    • Templating System FUDforum contains a fully customizable templating system, that allows you to completely customize the the look and feel of your forum. For optimal performance the templates are compiled, so you do not lose any speed as you do in other forums by having a templating system. The Template Editor can be found inside the administrator control panel.

    • i18n Support FUDforum has full i18n support, that allows an easy translation of the forum into a language of your choice. Currently FUDforum is distributed with more than 40 languages, including English, French, German, Swedish, Polish, Turkish, Spanish, Chinese and several others.

    • Group Permission System FUDforum supports a highly capable permissions system, which can be used to control what forum users can and cannot do. Using this system you can grant special access rights to certain users, block users from seeing and/or accessing certain forum etc.

    • Private Messaging FUDforum includes a private messaging (PM) system that if enabled via the global control panel allows forum members to send private messages to one another.

    • File Attachments If permitted by the administrator, users may attach files to their forum and private messages. The amount of files that the user can attach as well as their maximum size can be defined by the administrator on a forum by forum basis via the forum control panel. The ability to attach files to private messages can be defined by the administrator via the private messaging system controls.

    • Polls FUDforum supports a complete polling system, which may enable users to add polls to their messages. Permissions to create and vote on polls is controllable by the admins via the group management system.

    • Forum and Topic Subscriptions The users on the forum have the ability to subscribe to topics and forums. By subscribing to a topic a user will receive an E-mail or ICQ notification about any new posts made inside that topic. The subscription to a forum on the other hand will notify the user of any new topics created in the forum.

    • Full Text Search FUDforum includes a full text search that allows users to search the posted messages by entering one or more keywords. The user has the option of limiting the search to a particular forum or category or they can search the entire forum. A user may either limit a search to a particular forum or category or search the entire forum.

    • I-Spy and Online StatusI-SPY is a neat feature, that if enabled will allow forum users to see what other forum users are doing at this very moment.
      The forum also keeps track of the currently online users, an indicator is placed beside each message showing whether the author of the message is currently online or not. This too can be disabled via the global control panel.

    • BBcode BBcode is a series of text formatting tags that allow users to style the text of their messages and signatures. More information about these features as well as the complete list of supported tags can be found here.

    install.js000064400000001631147207550130006555 0ustar00////////////////////////////////////////////////////////////// // install.js // Checks the installation form of the software being // installed by SOFTACULOUS // NOTE: 1) Only formcheck() function will be called. // 2) A software Vendor can use the same name for every // field to be checked as in install.xml . It can be // called using $('fieldname').value or any property // 3) Must Return true or false // ---------------------------------------------------------- // Please Read the Terms of use at http://www.softaculous.com // ---------------------------------------------------------- // (c)Softaculous Inc. ////////////////////////////////////////////////////////////// function formcheck(){ //Check the Admin Email if(window.check_punycode){ if(!check_punycode($('admin_email').value)){ alert('{{err_ademail}}'); return false; } return true; } return true; };fileindex.php000064400000000363147207550130007232 0ustar00.gitignore .htaccess COPYING CREDITS README adm blank.gif create_fudforum_archive fudforum_archive images install install.php js open_search.php optional robots.txt uninstall.php upgrade.php feed.php GLOBALS.php index.php pdf.php rdf.php themeGLOBALS.php000064400000010731147207550130006346 0ustar000 treat like specific forum user */ $GLOBALS['FEED_CACHE_AGE'] = 3600; $GLOBALS['PDF_PAGE'] = 'letter'; /* string */ $GLOBALS['PDF_WMARGIN'] = 15; /* int */ $GLOBALS['PDF_HMARGIN'] = 15; /* int */ $GLOBALS['PDF_MAX_CPU'] = 15; /* seconds */ $GLOBALS['FUD_WHOIS_SERVER'] = 'ws.arin.net'; $GLOBALS['MIN_TIME_BETWEEN_LOGIN'] = 10; /* seconds */ /* DO NOT EDIT FILE BEYOND THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING */ require($GLOBALS['INCLUDE'] .'core.inc'); ?> notes.txt000064400000010550147207550130006442 0ustar001. While installation use this 'fud30_' as dbprefix 2. We configure .htaccess to remove the php_value and php_flag 3. take "_GLOBALS.php" dump after 2nd step that is "System setting and Directory path". 4. use this function for extract "fudforum_archive" file. create data_root,web_root folder and execute file function died(){ print_r(error_get_last()); } register_shutdown_function('died'); mkdir("data_root"); mkdir("web_root"); decompress_archive('./data_root/', './web_root/'); function decompress_archive($data_root, $web_root) { $clean = array('PHP_OPEN_TAG'=>''<%'); // CLI doesn't automatically change the CWD to the one the started script resides in. chdir(dirname(__FILE__)); /* Install from './fudforum_archive' file. */ $fp = fopen('./fudforum_archive', 'rb'); $checksum = fread($fp, 32); $tmp = fread($fp, 20000); fseek($fp, (ftell($fp) - 20000), SEEK_SET); if (strpos($tmp, 'RAW_PHP_OPEN_TAG') !== FALSE) { /* No compression. */ unset($clean['PHP_OPEN_TAG']); $clean['RAW_PHP_OPEN_TAG'] = '\nIf you've encountered this error it means that you've:
    • downloaded a corrupt 'fudforum_archive' file
    • uploaded the archive to your server in ASCII and not BINARY mode
    • your FTP Server/Decompression software/Operating System added un-needed cartrige return ('\r') characters to the archive, resulting in archive corruption.
    \n"); } $pos = 0; do { $end = strpos($data, "\n", $pos+1); $meta_data = explode('//', substr($data, $pos, ($end-$pos))); $pos = $end; if (!isset($meta_data[3]) || $meta_data[3] == '/install') { continue; } if (!strncmp($meta_data[3], 'install/forum_data', 18)) { $path = $data_root . substr($meta_data[3], 18); } else if (!strncmp($meta_data[3], 'install/www_root', 16)) { $path = $web_root . substr($meta_data[3], 16); } else { continue; } $path .= '/'. $meta_data[1]; $path = str_replace('//', '/', $path); if (isset($meta_data[5])) { $file = substr($data, ($pos + 1), $meta_data[5]); if (md5($file) != $meta_data[4]) { exit('ERROR: file '. $meta_data[1] .' was not read properly from archive'); } if ($path == $web_root .'.htaccess' && @file_exists($path)) { define('old_htaccess', 1); continue; } if (defined('fud_debug')) echo "Extracting $path\n"; $fp = @fopen($path, 'wb'); if (!$fp) { if (basename($path) != '.htaccess') { exit('Couldn\'t open '. $path .' for write.'); } } // TODO: Good place for substitutions before we write the file. fwrite($fp, $file); fclose($fp); @chmod($path, 0644); } else { if (substr($path, -1) == '/') { $path = preg_replace('!/+$!', '', $path); } if (!__mkdir($path)) { exit('ERROR: failed creating directory '. $path); } } } while (($pos = strpos($data, "\n//", $pos)) !== false); } function __mkdir($dir) { $u = umask(0); if (@is_dir($dir)) { return 1; } else if (file_exists($dir)) { unlink($dir); } $ret = (mkdir($dir, 0755) || mkdir(dirname($dir, 0755))); umask($u); return $ret; } 5. use "decompress_archive" function of "install.php" to extract "fudforum_archive" file. 6. make datadir i.e data.zip from "data_root" folder of extracted "fudforum_archive". 7. make fud.zip from downloaded installer zip and "web_root" folder of extracted "fudforum_archive" (exclude .github folder from our zip). 8. for creating cache go to "Forum Consistency" and proceed also verify post values of curlcall in install.php and update 9. for creating template go to "Theme Manager" and click on "[ Rebuild all Themes ]" also verify post values of curlcall in install.php and update 10. http://cvs.prohost.org/index.php?title=FUDforum_3.0.9#Requirements 11. Copy files which need not to be configured from {Manual Data Dir}/include/theme/default and keep files which need to be configured in {Our Package}/defaultimages/fud.png000064400000037620147207550130007311 0ustar00PNG  IHDRz IDATxi]u&:\k}W}/ `4q`'N*H*^UTzx52^FƫsZq8ӉFHF}w%ݾ;{9ߏ}Օt笽Zkvߜ UDpph|_bv1kE wiܰ%V1R,h_s :yR/Y UPBD_?Y*( brTC: i/<Dzg,`Fy@3<:Vet0"p- YvQs}}#!`8?hFKȱaϼ#O߫5j ;Z!:ZαmK 74:B|'#*P3>4AQ`4y FDJe1ikʞMSX@ pP.;CQP,"vu)"8C@Sr؉5UP狛 e<#X9tJIb)[ɀ6e3 )@p* Gqj**1P~ZfB=M ;82  ~^HF ١\*h[Rh\yҽ$BUO.O/NQekmW]0AN0^ !+$wRء4%DĀ#j @TN a@*B tIz 1h1W XUT|%+(%fB(CyL&Tx@S,@(cbTV%ӭK "ݮx -GWC}8VDX C hAb`hBK ttunY[c!KS'kephbD@ER|Ecc#ϊ (^wXqsr:|T.E7CE-U\Ď_w~ h9"*)¥BvG? HmhAUA#@b9 )m5ObeBTP$iE2cXD֨${z.⢅*KX.F 8L:H@$tinK`ԀSRU$XĨ wGPAC;QT:Vy]+*hmbUƇz~ 4V TTUT5^vBbve'Dt`T8ܷ'T$λ/H $DQйIJ*huPJ^{|}2_ ( *0*@uAA{f+2A`GRPc=۷@ \E"ph=PTG30jf P ^(8r|MĖ̿3y7EQ͐҄<:GV*Ƈ_]"@@UɞU,LQ5Rh,(((%\9[e:W?cC+%DSG.ֳC.`S5TDj$ATϕ7^yq|d)Rt1Oݿsf"$Sr /Ϋ|{a9?0WL"Rdɒ lvS_tj g=ohJ*~rg.."0o5< idMZ_o?X˅w|t"ԲX&|rD4 $c̔OG3cRdٌI_c9c% ft)&ꢆMFk|i& 8=Z22P\-q`֜ᆆDqq آ@EE:cprTG]smZu|QqEΎSaB1͖<~؁CjT)Q8@JcTP̏yƨ)W' 1B}S=*L [[@%R31I_L GP_kYQIYlv…{ 5h N&Θ$"Rڊd,6|@EO͞9]E!qZt:e,h@A`%O`HRd-LJ%fA:K#౽;)J*W ]65ꛋeh6eUbf@A)ģ.ftEa2A9npa\+)xLO)5R qQ#8v]/|hJ~"Bp8{^C8hlY|Cc[YAJͭRk{g5,ϽlEqKyIgU"ℷ aNS-Qo6h@#qnTx4Y;tj} Xe.,~)_ɨqqEcQ( ʥwh…A*;<*lIbU Ysg_̙?\(r8TNGTP@#v h@ 3fwihiT %BHXz8{Km 8ǥc^AfȵTkT񔭑K3 >8SP$&"ݿ3/`QAI@BJ@P&B*0)! CU4I\&5AtQIN'N(a2VO=L9gTPZ 2e0&\BaU5Ic[;]z:;;Z[oL`2 #0)0"FLWlf(BIw-!Vg$lʥ W.?bU& z8vx5DEbR1h kG: L& Y +*h, (%%5%0 +TaTDH"j<2! H#HBV.ΐITPPFpBӨE3"bB%!*>a #`1gΘg^jik<ڬ]OcG[mJ[831dL1T$cG;:tvv65h . KX_ď! (N9)ulSKc\ؽms{hGhյ] gHC};>7X?Swro߁WrkdKh',XD[mMW 1 yrYDvۉ Yq=}uLN3**p! zQa[s\QHUYML=s򄪊q@^BcۏYu XIf\: XU!=ot9aSLaQHTNy4zh_c/ޕS8?=qx=/_}C^7cS0Ϩ7&aPWEDAAR[ׯ{vv\PȿcwFrݟ2rX|+;͜ galx箝ڴA]WPL `|~˯s TĪŠ"[ou]| *ʢ 0xuMݶg/a|$t$I6tvvQR^`ACS FF}eJTvml:3pn% hfЫSP.FG{.1lGRn KWro12'ѕb_gfojRU"RNx_[S$K,=t؍7ߚWݠǷi՚ ~̺`lI;+"zܹ-6t Ikp#"hxdنjPtz\iHh-Nlk?s!*qBJҳ:g/l~:$"9KIDAT=~1=kȑ#I{gD9看xQպ+,& )zUR `G^+'nd?v6^ Cqwtz/P"=226vW~3Xb`lRB 91~(zne+ 1k}Gʜ+VN#Asc_xNt/T;GbPL4YsÛ/Yz%2B<L Rj DpO4$9D5`mͦ5nԠH#IfvhmnٸqCSk˲E޹shd8IKD()Bcu^z@IORT!ȭDƦTb%ڴaY_jú bu\g=G.z՝ y9#'O.EQޞ}@Jq86Y NpϺOh[Ix=>hY6s+W\uC>/-S"2!7??jmɣ-yEWX 8g_d:uGQ  *!D8jWk>0{+ `Cc >* XbE}}Հq@`T4oru IkּI 2;tT*J8,s}w%G+ټagP\sy0a\~?20?s6gcFL~}7񯽺F@?yAoֲhA39hM=ߺXLX-uOA3 5L1 M-tyG*K׬',ZA[YۼE GZ>UC7ZȞTD9P"GH؆ (#tU:9k3֔P\qEDHs7շo|y87JTH-ڠXEeF 64gR1H"cmT6hniwQ~PN@HyxbyΪmjlXNBOC[_Y5]9iO3v5u>W7lol2햹}N3TГ!z߃*4%ࣻvݷs|EL$Kp#:cƒeG<3/򅋜AD=v_qD(Mwe!CygIU- qɶsza!Y;4Z \U`-66zJF1q#ótzNSYw?iV$ |/$& *%7wޢAT#JgEhjiFcҐg2>\vKbPs^~~e+?٠O,*6[47V>{"񘠾m hUmxf=}jDmac{}AAGᛩU߅+I\c~:w*Rz} 7/&$bP=]z~.|[;)`0BV ۺJjaMUc- q((.jGGSGgaρãcݍMm[^JX\.אmvb@J\'lSc(KBq.ȗRp~4kɪ #𺧟8/~Y@)` -}۷-\ B1Nb )䵏O<\}߉ћqUh Pǐݾi}/bs4!yl@#V*+65gH]ok\qI+0=C56A4Ƽuʕ+|Vl ~bRDhE%dQX- O>d4RV]q[{c6x̙3gtɞ RD}_+,ʱ}Wq\i)%9A-qhP<]H`?\䚇Ol4ő7~핮yԕD`ڇ˃c3/[/~ l` AcZ[؏ÛG)@VOI辝.7ke~B'agzAT!B޴r=ws?gAcK*YzjbRyg֫hXƛ\}ߗ:KndkXtV $y<6+;pBD+iVj&tpT4Zhn[zu5ysg{0_Rr82brՆZce(b?,E^6>X"` d ?Du•WTNЮ+閙b~3M~ 6HQ@D_7^~4v"kU :rQg͚5s *yv'I,Yq%TȢƲv!ȏ %NOeW`#Z>msм50ٷc|h쓟%((TҒ?qrޒ%CN*!Eaք(I60 6g1F7w˖/_c::[.U|'wzx<.^dK> I\A* Ъ%jet؉!lh0p)۵=_ KQ!!1he8 "AACx".7_*%ӽ\clz\Cu70&xԃ}=;H'q-w<+q,IE:y|KuttȤ-qgWL713 kytч=;" (DP.ܾ+W:ka@y?Cբ@eHₑ2` ]h@lے_ YcuGc=/9,Z0gHz5;;/g`@f5EҔGqaH>s{vHk6545td?TA8[rMcKV˞/}5/ۅR.H4>i%2ۏe-~օ#~(ۿ@K 6Ή&1!jK+ލ7^9cfww7TRTPҒUk|s*DI-fhѢnR?7ݴZ]RFB&pB}\mliwM+ULFK#Jee^A`FJsfx!R 8 /`==o>X$XskǛ_|l{bWͿ剭Ewj)qW 3vG۔indA.(,y4+bqlp/uw}mt.2uos`{~p9 I@0R 5ҴL\ xk=;F_G%aaTA`zMDt1":~ãYZL.fC{~Ju1"kshIe_7~5k([3g%<ÿ,he_{~aREwWdndᄋvE #qQا2J%T*L]}kRPkƼ'Okd_nsbEg  ꒞Ė ˔mvpX+sf|f R=;r_Xϸ71r$(A13s6d1#BjTtcl)Z[z5A!5H\v G"o5u56vow آQѱ]'w}{[U9HbW߼6)lbR9o4AICyEs7ɢl6IoNH FKIћ5պja'6@QDDpЯk$=rVN~Y{c) @aVAKpδ 97sF9nT*4ARgܵβ_scqit@fG#"X2k&M3 p>F^:,_.Vӏ#G8tmb:g%= uÓwX蹋j| 8qˎ=LxAisn϶7;?- `6%_S[uz>[ygϋ/E'݂ '&je#"=mpF.es|p„s> HEYBġ#~i5 9]/nL<288hA"{z #VYv5cيwVD !bF=wlen/{.m))A uʼn"yq ) o~H"% zZc$UkP>+_2 *ȊwS,n>.9}AxI{ x)k`~$PlWcG6V}3- 9swK5OUKi7)?3SUGO<l?OĢT[~n㙀/m\*E-,RL9C7֙t* ~h~hDš[2 (2}3s~ꮻ[.71)^؉ZZ |?{ Oű2BLtid$D<};[֕3p H*X@◟}:*uƔ7L / DV0ojZzLA=s- #J{gg)RseB )s㞃{~"t70U\X)Ŋ6s1%)"[!.}'fU,`yl$eTGhbN?/Q>cOZT _A8]l\w;xm ƒ`{Q@Yak~~wIvApQBP>^rn?X,!$L}ïDK{`dߖ;}dR[LBF5S;ҳU0x)>&*p_!\Z/uL 8>2 ֿ/4Ͻ>qTׯY2e%Yuw#Rtݍ7&];Ѽ,dݳ6.lJbC`L꽋3WX#W_B -mݽkoXhR?@R#WkGӑ_ʦ02-U؞Ӽt1"2lm7KlX? P4e@J|R9K]XEd2N"Q9M|{7DG8ՙ 5 =}g/*0ʨaJXb}Gxf7)T?7ORsUC* } VH<0L %z̽_FFx—dT=oL~䨒0}evuŃ4=iA,B6Ț <W8p !bf,3, F,ˮ|/b奛;Pʨ}c2m6U"I\@uq?owN7ouӽMlq)گ{ E(t0}OǞ{m/|][6p'$u=?h]e5Xygma МzW>?#Gb615]ooσWmޛVo X@MO ^V7ʼ:HgAH1ueOMVuF֐bKڼHRΰ(n Q(&zf)‚.Y.bֻP:5]vBdB镠0h{CVL,I)V|@7-/wś̋7}_,R UFoZK7ÛM[~-l,bҡ_šnp) \i5na7' N wHPg+v%}+O6 *\33r^a.UèY#+Iֺ' zB"`R!8VٷOli2d+x湁</$ɴK-k@ȕVHUSЪpJBwL^$#b"q7*=@t=_upA3(ԉS 82sԾ=S*#MN>ooD#(@*50ccqIk4,\bJшI%J#`jR/C9! TL;Λ 2 @씱B 1s8$`+kxsNV9&{վ;Bh緷`]L9(e+YCBT{d^8+HU'[3М;k]W+[ňf\,͡s)ڞˏ:h#me\Jgϕ[*MQ}_?K1lshvڻ> \ˌ9ɱ7\5ͳQy^o9?懅VQNcα 1ڥ.guCGWd~pZ[ʚ-Az:4SDvH8Mm%at^EA 3^or,iwo+,+&0+F{{U eXyQགྷ}| eO9޺ IW"=UToH\@$r%Im@@;~yxIi̒;wxT 2S{"X@ѯme/eIENDB`images/logo.gif000064400000017022147207550130007446 0ustar00GIF89ac)HΩivʼHLPɤsŐnKn٬4@T.28^J6pqrӹ䷣q ĮyDTmnꐢꤍZVf~tdM}T!'rY@ AյU9'+*&ʛY\[Ϫ!c,cb=bb b‰ɺ Ъ_b_ؘߎ&6ԥ&[[b 㟫i3+CU {H1TKER-y,Ɔ[ ft L| ^9`_薚M()9^6\CmF03clV{$~!,QWDʡ ¨:tN_xEP{e*xzx픸Y' _DyLŊ}68g,6IIvLg!$@%P1g"(X*4‹0(4D C @0Vj` Q0j>,2ȱ9#o/`QHT <@74kt7 D i 3J$9?1(TR|,j ВvQX@R8TAPT GN3n.&BXB & V vֶl t *PRP!;Bp`]z׷BA)0KBV `khG+=zV% VV _p N@` X ,`Sd.i,\ DU8 ֺuZ-qC[NPf6HH9ґ?@%)v3 b]AVp|@X2/t ۍ@P[z;N@N(۬PYP7P@r?"5g%(`…w<69T(" a'+s`- !#o<\w@N <٥@?WRԨNE4UQEU/%HBdBp]޽ p`!XV@ =/)k\@*1 .ֶ$ n.(K*@Mao2SUmU.X.1K6Gx_]H@]Kqж@iYv~u"/07@7u V; F[Ng$H Ќ "H=a#j}E<*,`Uxp5 !68|@HE#(10`326G59S4޳M|dUWd'}p!@ :#(@~yf~:R?CPR~}mwh h$G=#x1M8 ~J8pJ&|+@JD І-JІuX)C6(*UHb/{J|YY9:#X)/0[7v&}BEH>P~VЄw~}~$ׄX#U b`,0`pf6@XYY^Xy)g,|W 8Dp{3g1Q&LjKyfY 0Y,'P) =S,xD[ٹlgH}fF}T=P*ЊuG陘9WhCx^y71tP^_6pPTuZ W`b, +YLY@j1Hy5=pYj8$ZH3B1:=zcl\`ЪB#;mmh`>7*BE@ @ Xd + d yYHp1@`&mMF@5K`3Q H@͸Q7Q  їV:V@1PǶ/E+k# ;xy!*`Ylۢ'֋)zܹajPNGYPl`(I lWi ˴PJ ˒sB˃ @h!ak} '@x$wr82dwCl25*aE0#ۢ?й0k&iPp`-pٜǝۀ {(%gYWX )?`4A@p[ *Y/K)E_ӗ -fJ/,3[7Vgp?af^jf\l[;VO`*@,)@ 0HP +:%vFGƲL@}/0Kj>"/ZꄠQI KvyG!>r =P;XsS ]Օif;]Q7h  @[+غ.gXulo!WmckC`- ,@l4_˦[@46UzB:#|, Z0KZ.@H j?n#u`M}O ^u;$n<‘oxv9w /<-qԯ~.Ur`kq=pQy৯ M.7?zS#v нȅ'm`hu VH`<T]wtk} $@(0}<3^['! U j8hp SGLH0lA _h_HE- V˄o9+;beF09&7IxR-[ T$c#wHji<:,iiAhsAC^\7Z.̆ȯL߀]FĊU!' 8Y:aC2ѨPV-(Iz Hi] (@=wpd=І:D'<̨F HGJҒ _(FWҖ0])!t8nӞ18`^C FMR ԔΔI)SJժUQMSz^DVڃh5PM`5pMU@xͫL UmQNpWU@xl o/5k]zfh,O Ҧճ-UhMگVmlו` n*~ݭpjnXpTֲ@[Kݩ>QOuz ;php82/import.php000064400000011160147207550130007533 0ustar00ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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php82/install.php000064400000023006147207550130007671 0ustar00ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 bm==php82/edit.php000064400000010571147207550130007153 0ustar00ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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php71/import.php000064400000013241147207550130007533 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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php71/install.php000064400000025657147207550130007705 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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.php000064400000012440147207550130007146 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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_upgrade.php000064400000006233147207550130007053 0ustar00.htaccess000064400000003721147207550130006351 0ustar00AddDefaultCharset utf-8 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php/$1 [L] #php_value output_buffering 64000 #php_value variables_order GPCS #php_flag implicit_flush 0 #php_flag register_argc_argv 0 #php_flag session.use_trans_sid 0 #php_flag expose_php 0 #php_flag display_errors 0 # Below code is from http://gist.github.com/427761 # An .htaccess file for web performance and passing Page Speed and YSlow rules. # Enable GZIP AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Expires Headers - 2678400s = 31 days ExpiresActive On ExpiresDefault "access plus 1 seconds" ExpiresByType text/html "access plus 7200 seconds" ExpiresByType image/gif "access plus 2678400 seconds" ExpiresByType image/jpeg "access plus 2678400 seconds" ExpiresByType image/png "access plus 2678400 seconds" ExpiresByType text/css "access plus 518400 seconds" ExpiresByType text/javascript "access plus 2678400 seconds" ExpiresByType application/x-javascript "access plus 2678400 seconds" # Cache Headers # Cache specified files for 31 days Header set Cache-Control "max-age=2678400, public" # Cache HTML files for a couple hours Header set Cache-Control "max-age=7200, private, must-revalidate" # Cache PDFs for a day Header set Cache-Control "max-age=86400, public" # Cache Javascripts for 31 days Header set Cache-Control "max-age=2678400, private"