!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/var/softaculous/fud/default/   drwxr-xr-x
Free 294.02 GB of 429.69 GB (68.43%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     imsg_edt.inc (32.45 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?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->subject0255);    // 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(nullnull);
        }

        
$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), 000$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->subject0255);    // 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 && (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 && $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->subject4) ? '' $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_id1$mtf->id$mtf->post_stamp);
            } else {
                
th_inc_post_count($mtf->thread_id1);
            }
            
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 && $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($fp0SEEK_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($str0$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($sz2) .'KB' number_format($sz/10242) .'MB';
                
$iemail_attach .= '<tr>
    <td class="vm"><a href="[[softurl]]/index.php?t=getfile&amp;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&amp;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.'&quote=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($boundry0, -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 .'&notify=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);
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0993 ]--