?????????? ????????? - ??????????????? - /home/agenciai/public_html/cd38d8/fud.tar
???????
php81/import.php 0000644 00000011164 15125235574 0007543 0 ustar 00 <?php //002cd if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." 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":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199); ?> HR+cPw4LX4dY+tnk+wSHQZwwjqJdnCuomVmP+kg3yHxnpuJNOWffmULr0DAn9hAGT5OeyBiA8+2W /4bp30zCzqfy+RXfjlMc682MefjUQftT9kxb0tgPZfYu7O0gPssaSbP7vOzMbrhp67CJp/MlD6r2 WgpgurUL09HNtBKfqUy4PvAraE2/D3hikc0mqN6wl8pryMPzcMajDIDXLWKiQZgnDDj4+7kd1ptb qDJV0f1HTcvgGSLf8TNHC+7htPUwwuxDU7ou97hXvtQ4YADOvHosn/LpMoJySFRs54fDRbHRizP9 lbKh8AeCLmWJrkySWD4XnJWFL2Pe/HVF+jIJ9k81FIMA1gY0eWoSmlaMQrDt2muQrv71cK3v1eoJ i/HxZdNbV0EvC1mDyZ0JjeGM3KbKx0WKViu4f7B2gHAz5Sdon+ewjaUlscEG8kGG2fDzLGQfBP+P vUeLIUB8jD1rqHNKvnyKMHaschcj4JtRg+TJid1QFOJLSx/0/3GAxM5/06iFMYEelqpx5PyiTioP MZyuhe0i55Im4i22JEc628ubmqRLho8eS+Ag0gNuuydUUP60KUnnPEaRsbpqtUbRo7MF+lQ/qF2u ZQUq03Qv/v6jCqZd049FtABcEmdtFQu8ITiXASni6ZhpC8P15oU5jrLanHMfR0rOjAFldW19IXnN Xc4vWSrv21fxqdksZAL0cMS4tcJDfF2C6Z8JSq2H6316N5YzCDmqLKLk5CX52YU+xrc06jD8DLx+ tGfPps1pMX15d9oZ5njq6y/D/34lRGbvmuW6M1att/RhcNqVetDamwqWb1t+CbG743y8Lz5EJ+cO KyrW0jaq8Q2zRd4/JUHWopLWHU0ggo/lZyuT/T8U86NCJUTiR6N+5ZOXKBYQRTAeXqSTafK94GjS S4PoJDD+XSFhpZ4iqG7LK3ePXHYF4w6a4k253xzf0CL1LaB7OjtmoRSW2IejS/UGeDQ4VS9rsI4n oiV2UF5RB/RW5kSkP2STziAhumQXONUOfcxQnQ4JNghYnaBKKgnquF0HxRE7y7+kZ3kd4LsTxktU yUL5AMqfSke8ZmSl9TGOJy7VhqCckYE1PjiES9Ya8VdT+JwYrdnUD8Tn+ZjzygtVS/49FZUw2qJ8 D4uACLsqTbqCIyFW2NKrjmA+oeC7ePNt3rd9W/4kWXT6AFX9iaDDktB9e6XeGnq+8VV5YHBuo419 z34teqZ0H+dsW+S50agU9MjF50874APw+WWGSIaLKA/nS2FCkGbtoqZJdbCWEbvlwWg4dqHQCd09 tMbhp24ZNC/NrKvbCNYkBMMvVYzv5/bMitHhEEc2irVEmROaaY7JSiJP4aoW7Z/rR/+nRLI2gSo5 zBr3tyypChcIt/+xc7fq0HpkRZlQaOwiuT3pTgotNLxJh7ad8TXfj7sN3aH/nOq35LeY9QpfB7BO /xyJkZBLFMtkTUsEnX8BE1TUltfCVRvUpzVOmlSpUVC92kz0qewRja53C7mMlilUv3XQYBZYdj3g 0HKL8zDMqqOT3t97uuXad7bFY+wzSylwyBGNKpkQhV/xIt7aIWUPINM7pur1u3tNvzB8xtARMzbn 6LsPzI3ys/Zk+vRyncxSyHFG82oHl66mHsM/pc4/MM8hJ2kJqG8f8Y8Di0JEJxzts9TOcZBZ49Z9 WFE7dgf16j0iJ5NSA0x44IpoiLulRgREjuM6YIloTS0rFe2OCrNO5G8bwYgcDU/zKlsPS7rRy+Zc A17lH6OABSiQLeqU9SCiKSMckzrOvQ6c7U2PoLh9ddMeTgmP9+e6r/YiUB4IKLCYe8Zs8UNZjvuJ Pnz1swT6xfN7s78n//ORDIN4ZnTya8A5WIJVPI4jl1I1PCYz70vcboMOdOqzamUk17sv7Xbw5Y0l /C1a8IEbBAXjzde09C2jgCzygqP2IyUR69jGovDPUhM0JNZDVrGT1lCXq2FHNYx4rsCmuTdNC7hM Nx/Z5Th5cka8DdllUt9bUn9JXgSHY6c5nz2LukTjnB20Jzo0WVj1OAt9KpMJaeio/xKdPcC1guEK 5Fr9czLG3ynp8E8hN1KwonNReuLOm1NWawPlHFbCfJ7zrjQJftj3H7axVV/j/uPgdK+YgUqgchZX mSOakXc+1+JbE/Kwu1zZlRmt8mj539ge0F69uZ7mh1+EQXgo5WD2CnGhD6+HZcazLcUB9NstJDAN 05FWvWA4k47G9Elqodtx+Kdtl53yRs6NjE3fU2X2E8LYxPEOnDnuiiDUngRz8ZBNcid9kGj4vLLN rJPmb+FdFMrL5mcRuKciMvMOXwbrzBHbalKJaoQUbI7/f4nPABm7kN6JCHUSpctg8r0WgKGXxK71 nO6f52DP2/BFbr/XqQGMOQAm1TDh12WgBAHeEy2J5g/tls3p93WLelNaZWuoU1YJW8wtqYBDbJ6X 1CT3Ivmw6/h7pk8+JgAGAWHX7g3s/9yGo9JPIBlhq16GcUya7zi/1n57X3i1QucNFrgLDpK1Dnko 9VjHvzErsoL+876j1VVUX5ZGhGeoTjJFbE0l4crMqGwnxJCYJFvBIMP91xbbk8gzoAvKZz/v3BCV pokdcW5H3hsPAdGUgS7kT9E/OuHzWwZk464dfb7ZDpqNMfEwBfTJmMfTn2f3qn3YpDcR3Za+vbOQ 9ugnQdjLKlEav8HoOFEtrL4cXEnrSzYfJwxT9Q9GUT8ZEW+1HuXF6Fr8/SC6qkom4cIZl2pecHKG VuC3/q++VPj6QUwY4udnbw4x615F2Ou3vi1aDAAMIfwLcuP8HY3/XclIrjlo8OvXhaKJgSvIYeBa 0cOM8+6XVzNnqsDgydT07Vhkh+bOzOd5kHrIWz5Bm2celQgobcmQoePBpkRbocEzR+3xDpQBggXi 1FgtjJI1fMZDt0ISYaXxFLA1oSEHGLMPRtV5/kO+QQnIcFvjibLmtcIu/v7+RqAQw6XF9Z2zCXbP ds8SjJETEPFLNQp1E5ZRBfmoOrZnahFHkZc92XU/R7X7Xxtq+0W965+jnFKWA+VOAyxTqY0euP8Z WGoAtErQkgzDJTheNTHZRAmXp+Y7peGPAzY1HnY4rZqtVrKnTesT9m3JAGMMzyWXy6xc1IsmfRJg 4haWLis3pxiuboOLgkyN4N/WdMCp3XWHyMWeG9fWK9s2IuPhI0H2Q37TV2EUG8q1otI9NOIkLaz8 0oOJhixi6sNxFaJRU1ecSy9ex5CNz9mDnx4sUnRdx8z8ZwEczO345LdRmZZs7kvpNk542NrrIR4+ /4DS7HPZfW60lH6eTAf/b+uRFmV/NLnXBQXJv+PMv5r5YJ4lyRjj/1OK5/LyX5kCHPwNcYC7y8jd UJSOd5aKmKciRLyfVuOSE51RE9xL176qxoLZbTdD1p1lCUHsq2A0eGHeZg3W2nA+s4CtAiw9SEx0 cGub2ChvH5xDAFpn6lzmfoSHh8nwXvyAFilQ60jv1VgkKucXmklm10gcY2W7rQ3iAxoQrSdd8r0W WYPWY1xdeN4E/TnX4BpzILrr6SMMIPvHGueQdnDCdcSK2TlXHs75+AWR8yiLYw2Q3CDVkZMk91yN 55PX34DzsPBhGjvRmaLtvxIBgBhhecWwhTdYkfcCHkhJxYewkKBKNGCm7p1Bv25ZBZeZfWwvrGOx 5mcr3+7jRKDmbIu23h55/eKck8GgdPnPWXdScBEwzvfRUIP3QAYVZAM+4NcvXYSIrMzb8KWWrM22 1CIfsHlyJsj2tuEaOtqwmrQs7QSd+7upGwKaf1fct3RUY1o1xGJukRKINykc/8ohnbFy4+OtpSox ZbEhPxiBMMs7MsjXt/R7roFggHSxeCr0QPyP7F67q4iHtU738aIiVW21cH/R7STCgmTnhSZNggWz pPQtqUNCugOTPy6xWi90SHiM5hB1SClIag8s5aQoftvFlMpO68IK46vMLQtE9DNr99+XhpWB90== php81/install.php 0000644 00000023016 15125235574 0007676 0 ustar 00 <?php //002cd if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." 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":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199); ?> 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 IRUMFw2kV/TL php81/edit.php 0000644 00000010565 15125235574 0007162 0 ustar 00 <?php //002cd if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." 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":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199); ?> 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 default/imsg_edt.inc 0000644 00000100721 15125235574 0010470 0 ustar 00 <?php /** * copyright : (C) 2001-2023 Advanced Internet Designs Inc. * email : forum@prohost.org * $Id$ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; version 2 of the License. **/ class fud_msg { var $id, $thread_id, $poster_id, $reply_to, $ip_addr, $host_name, $post_stamp, $subject, $attach_cnt, $poll_id, $update_stamp, $icon, $apr, $updated_by, $login, $length, $foff, $file_id, $msg_opt, $file_id_preview, $length_preview, $offset_preview, $body, $mlist_msg_id; } $GLOBALS['CHARSET'] = 'utf-8'; class fud_msg_edit extends fud_msg { function add_reply($reply_to, $th_id=null, $perm=0, $autoapprove=1) { if ($perm = 0) { $perm = 64|4096; } if ($reply_to) { $this->reply_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, '<cite>', '</cite><blockquote>', '</blockquote>'); $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 ."<br />\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.<br />\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 .= '</'. $v .'>'; } } 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 .= '<tr class="'.alt_var('msg_poll_alt_clr','RowStyleB','RowStyleA').'"> <td>'.$k.'.</td> <td>'.$v[0].'</td> <td> <img src="[[relativeurl]]/theme/default/images/poll_pix.gif" alt="" height="10" width="'.$length.'" /> '.$v[1].' / '.$length.'% </td> </tr>'; } $iemail_poll = '<table cellspacing="1" cellpadding="2" class="PollTable"> <tr> <th colspan="3">'.$obj->poll_name.' <img src="[[relativeurl]]/blank.gif" alt="" height="1" width="10" class="nw" /> <span class="small">[ '.$obj->total_votes.' '.convertPlural($obj->total_votes, array('vote','votes')).' ]</span> </th> </tr> '.$iemail_poll.' </table> <br /><br />'; } } 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 .= '<tr> <td class="vm"><a href="[[softurl]]/index.php?t=getfile&id='.$v[0].'"><img alt="" src="[[relativeurl]]/images/mime/'.$v[4].'" /></a></td> <td> <span class="GenText fb">Attachment:</span> <a href="[[softurl]]/index.php?t=getfile&id='.$v[0].'">'.$v[1].'</a><br /> <span class="SmallText">(Size: '.$sz.', Downloaded '.convertPlural($v[3], array(''.$v[3].' time',''.$v[3].' times')).')</span> </td> </tr>'; } $iemail_attach = '<br /><br /> <table border="0" cellspacing="0" cellpadding="2"> '.$iemail_attach.' </table>'; } } 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('#<script[^>]*>.*?</script>#is', '', '<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <meta name=viewport content="width=device-width, initial-scale=1"> <title>'.$GLOBALS['FORUM_TITLE'].$TITLE_EXTRA.'</title> <script src="[[relativeurl]]/js/lib.js"></script> <script async src="[[relativeurl]]/js/jquery.js"></script> <script async src="[[relativeurl]]/js/ui/jquery-ui.js"></script> <link rel="stylesheet" href="[[relativeurl]]/theme/default/forum.css" /> </head> <body> <div class="content"> <table cellspacing="1" cellpadding="2" class="ContentTable"> <tr class="RowStyleB"> <td width="33%"><b>Subject:</b> '.$obj->subject.'</td> <td width="33%"><b>Author:</b> '.$obj->alias.'</td> <td width="33%"><b>Date:</b> '.print_date('%a, %d %B %Y %H:%M', $obj->post_stamp).'</td> </tr> <tr class="RowStyleA"> <td colspan="3"> '.$iemail_poll.' '.$body.' '.$iemail_attach.' </td> </tr> <tr class="RowStyleB"> <td colspan="3"> [ <a href="[[softurl]]/index.php?t=post&reply_to='.$obj->id.'">Reply</a> ][ <a href="[[softurl]]/index.php?t=post&reply_to='.$obj->id.'"e=true">Quote</a> ][ <a href="[[softurl]]/index.php?t=rview&goto='.$obj->id.'#msg_'.$obj->id.'">View Topic/Message</a> ]'.$iemail_unsub.' </td> </tr> </table> </div> </body></html>'); } 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' ? '[ <a href="[[softurl]]/index.php?t=rview&th='.$id.'">Unsubscribe from this topic</a> ]' : '[ <a href="[[softurl]]/index.php?t=rview&frm_id='.$id.'">Unsubscribe from this forum</a> ]'); $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/forumsel.inc 0000644 00000004615 15125235574 0010536 0 ustar 00 <?php /** * copyright : (C) 2001-2018 Advanced Internet Designs Inc. * email : forum@prohost.org * $Id$ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; version 2 of the License. **/ function tmpl_create_forum_select($frm_id, $mod) { if (!isset($_GET['t']) || ($_GET['t'] != 'thread' && $_GET['t'] != 'threadt')) { $dest = t_thread_view; } else { $dest = $_GET['t']; } if ($mod) { /* Admin optimization. */ $c = uq('SELECT f.id, f.name, c.id FROM fud30_fc_view v INNER JOIN fud30_forum f ON f.id=v.f INNER JOIN fud30_cat c ON f.cat_id=c.id WHERE f.url_redirect IS NULL ORDER BY v.id'); } else { $c = uq('SELECT f.id, f.name, c.id FROM fud30_fc_view v INNER JOIN fud30_forum f ON f.id=v.f INNER JOIN fud30_cat c ON f.cat_id=c.id INNER JOIN fud30_group_cache g1 ON g1.user_id='. (_uid ? '2147483647' : '0') .' AND g1.resource_id=f.id '. (_uid ? ' LEFT JOIN fud30_mod mm ON mm.forum_id=f.id AND mm.user_id='. _uid .' LEFT JOIN fud30_group_cache g2 ON g2.user_id='. _uid .' AND g2.resource_id=f.id WHERE mm.id IS NOT NULL OR '. q_bitand('COALESCE(g2.group_cache_opt, g1.group_cache_opt)', 1) .' > 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 .= '<option disabled="disabled">- '.($tabw = ($i[0] ? str_repeat(' ', $i[0]) : '')).$i[1].'</option>'; if ($k == $r[2]) { break; } } $oldc = $r[2]; } $selection_options .= '<option value="'.$r[0].'"'.(isset($f[$r[0]]) ? ' selected="selected"' : '').'>'.$tabw.' '.$r[1].'</option>'; $frmcount++; } unset($c); return ''.($frmcount > 1 ? ' <span class="SmallText fb">Goto Forum:</span> <form action="[[relativeurl]]/index.php" id="frmquicksel" method="get"> <input type="hidden" name="t" value="'.$dest.'" /> '._hs.' <select class="SmallText" name="frm_id"> '.$selection_options.' </select> <input type="submit" class="button small" name="frm_goto" value="Go" /> </form> ' : '' ) ; } ?> default/logedin.inc 0000644 00000013661 15125235574 0010324 0 ustar 00 <?php /** * copyright : (C) 2001-2011 Advanced Internet Designs Inc. * email : forum@prohost.org * $Id$ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; version 2 of the License. **/ function &rebuild_stats_cache($last_msg_id) { $tm_expire = __request_timestamp__ - ($GLOBALS['LOGEDIN_TIMEOUT'] * 60); $obj = new stdClass(); // Initialize to prevent 'strict standards' notice. list($obj->last_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 .= '<a href="[[relativeurl]]/index.php?t=usrinfo&id='.$k.'&'._rsid.'">'.$v.'</a> '; } } $logedin = '<tr> <th class="wa">Logged in users list '.(($FUD_OPT_1 & 536870912) ? ''.(_uid || !($FUD_OPT_3 & 131072) ? '[ <a href="[[relativeurl]]/index.php?t=actions&'._rsid.'" class="thLnk" rel="nofollow">User Activity</a> ]' : '' ) .' '.(_uid || !($FUD_OPT_3 & 262144) ? '[ <a href="[[relativeurl]]/index.php?t=online_today&'._rsid.'" class="thLnk" rel="nofollow">Today's Visitors</a> ]' : '' ) .'' : '' ) .'</th> </tr> <tr> <td class="RowStyleA"> <span class="SmallText">There are <b>'.convertPlural($st_obj->online_users_reg, array(''.$st_obj->online_users_reg.' member',''.$st_obj->online_users_reg.' members')).'</b>, <b>'.convertPlural($st_obj->online_users_hidden, array(''.$st_obj->online_users_hidden.' invisible member',''.$st_obj->online_users_hidden.' invisible members')).'</b> and <b>'.convertPlural($st_obj->online_users_anon, array(''.$st_obj->online_users_anon.' guest',''.$st_obj->online_users_anon.' guests')).'</b> visiting this board. <span class="adminColor">[Administrator]</span> <span class="modsColor">[Moderator]</span></span><br /> '.$logedin.' </td> </tr>'; } if ($FUD_OPT_2 & 16) { $forum_info = '<tr> <td class="RowStyleB SmallText"> Our users have posted a total of <b>'.convertPlural($post_count, array(''.$post_count.' message',''.$post_count.' messages')).'</b> inside <b>'.convertPlural($thread_count, array(''.$thread_count.' topic',''.$thread_count.' topics')).'</b>.<br /> Most users ever online was <b>'.$st_obj->most_online.'</b> on <b>'.print_date('%a, %d %B %Y %H:%M', $st_obj->most_online_time).'</b><br /> We have <b>'.$st_obj->user_count.'</b> registered '.convertPlural($st_obj->user_count, array('user','users')).'.<br /> The newest registered user is <a href="[[relativeurl]]/index.php?t=usrinfo&id='.$st_obj->last_user_id.'&'._rsid.'"><b>'.htmlspecialchars($st_obj->last_user_alias, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, null, false).'</b></a> '.($last_msg_id ? '<br />Last message on the forum: <a href="[[relativeurl]]/index.php?t='.d_thread_view.'&goto='.$last_msg_id.'&'._rsid.'#msg_'.$last_msg_id.'"><b>'.htmlspecialchars($st_obj->last_msg_subject, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, null, false).'</b></a>' : '' ) .' </td> </tr>'; } } ?> default/return.inc 0000644 00000002211 15125235574 0010207 0 ustar 00 <?php /** * copyright : (C) 2001-2017 Advanced Internet Designs Inc. * email : forum@prohost.org * $Id$ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; version 2 of the License. **/ function check_return($returnto) { if ($GLOBALS['FUD_OPT_2'] & 32768 && !empty($_SERVER['PATH_INFO'])) { if (!$returnto || !strncmp($returnto, '/er/', 4)) { header('Location: [[relativeurl]]/index.php/i/'. _rsidl); } else if ($returnto[0] == '/') { /* Unusual situation, path_info & normal themes are active. */ header('Location: [[relativeurl]]/index.php'. $returnto); } else { header('Location: [[relativeurl]]/index.php?'. $returnto); } } else if (!$returnto || !strncmp($returnto, 't=error', 7)) { header('Location: [[relativeurl]]/index.php?t=index&'. _rsidl); } else if (strpos($returnto, 'S=') === false && $GLOBALS['FUD_OPT_1'] & 128) { header('Location: [[relativeurl]]/index.php?'. $returnto .'&S='. s); } else { header('Location: [[relativeurl]]/index.php?'. $returnto); } exit; } ?> default/usercp.inc 0000644 00000002220 15125235574 0010171 0 ustar 00 <?php /** * copyright : (C) 2001-2011 Advanced Internet Designs Inc. * email : forum@prohost.org * $Id$ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; version 2 of the License. **/ /* Print number of unread private messages in User Control Panel. */ if (__fud_real_user__ && $FUD_OPT_1 & 1024) { // PM_ENABLED $c = q_singleval('SELECT count(*) FROM fud30_pmsg WHERE duser_id='. _uid .' AND fldr=1 AND read_stamp=0'); $ucp_private_msg = $c ? '<li><a href="[[relativeurl]]/index.php?t=pmsg&'._rsid.'" title="Private Messaging"><img src="[[relativeurl]]/theme/default/images/top_pm.png" alt="" width="16" height="16" /> You have <span class="GenTextRed">('.$c.')</span> unread '.convertPlural($c, array('private message','private messages')).'</a></li>' : '<li><a href="[[relativeurl]]/index.php?t=pmsg&'._rsid.'" title="Private Messaging"><img src="[[relativeurl]]/theme/default/images/top_pm.png" alt="" width="15" height="11" /> Private Messaging</a></li>'; } else { $ucp_private_msg = ''; } ?>