PATH:
home
/
lab2454c
/
keebchat.com
/
core
/
components
<?php # @*************************************************************************@ # @ @author Mansur Altamirov (Mansur_TL) @ # @ @author_url 1: https://www.instagram.com/mansur_tl @ # @ @author_url 2: http://codecanyon.net/user/mansur_tl @ # @ @author_email: highexpresstore@gmail.com @ # @*************************************************************************@ # @ ColibriSM - The Ultimate Modern Social Media Sharing Platform @ # @ Copyright (c) 21.03.2020 ColibriSM. All rights reserved. @ # @*************************************************************************@ function cl_get_ip() { if (not_empty($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) { return $_SERVER['HTTP_CLIENT_IP']; } if (not_empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') !== false) { $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); foreach ($iplist as $ip) { if (filter_var($ip, FILTER_VALIDATE_IP)){ return $ip; } } } else { if (filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP)){ return $_SERVER['HTTP_X_FORWARDED_FOR']; } } } if (not_empty($_SERVER['HTTP_X_FORWARDED']) && filter_var($_SERVER['HTTP_X_FORWARDED'], FILTER_VALIDATE_IP)) { return $_SERVER['HTTP_X_FORWARDED']; } if (not_empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && filter_var($_SERVER['HTTP_X_CLUSTER_CLIENT_IP'], FILTER_VALIDATE_IP)) { return $_SERVER['HTTP_X_CLUSTER_CLIENT_IP']; } if (not_empty($_SERVER['HTTP_FORWARDED_FOR']) && filter_var($_SERVER['HTTP_FORWARDED_FOR'], FILTER_VALIDATE_IP)) { return $_SERVER['HTTP_FORWARDED_FOR']; } if (not_empty($_SERVER['HTTP_FORWARDED']) && filter_var($_SERVER['HTTP_FORWARDED'], FILTER_VALIDATE_IP)) { return $_SERVER['HTTP_FORWARDED']; } return $_SERVER['REMOTE_ADDR']; } function cl_create_user_session($user_id = 0, $platform = 'web') { global $db; if (empty($user_id)) { return false; } $data_exp = strtotime("+1 year"); $session_id = sha1(rand(11111, 99999)) . time() . md5(microtime() . $user_id); $insert_data = array( 'user_id' => $user_id, 'session_id' => $session_id, 'platform' => $platform, 'time' => time(), 'lifespan' => $data_exp ); $insert = $db->insert(T_SESSIONS, $insert_data); if ($platform == "web") { setcookie("user_id", $session_id, $data_exp, '/') or die('unable to create cookie'); } return $session_id; } function cl_is_logged() { if (isset($_POST['session_id'])) { $id = cl_get_userfromsession_id($_POST['session_id'], false); if (is_numeric($id) && not_empty($id)) { return array( "auth" => true, "id" => $id, "token" => fetch_or_get($_POST['session_id'], 'none'), "platform" => "mobile" ); } else { return array( "auth" => false, "token" => false, "platform" => "mobile" ); } } else if (isset($_GET['session_id'])) { $id = cl_get_userfromsession_id($_GET['session_id'], false); if (is_numeric($id) && not_empty($id)) { return array( "auth" => true, "id" => $id, "token" => fetch_or_get($_GET['session_id'], 'none'), "platform" => "mobile" ); } else { return array( "auth" => false, "token" => false, "platform" => "mobile" ); } } else if (isset($_COOKIE['user_id']) && not_empty($_COOKIE['user_id'])) { $id = cl_get_userfromsession_id($_COOKIE['user_id'], "web"); if (is_numeric($id) && not_empty($id)) { return array( "auth" => true, "id" => $id, "token" => fetch_or_get($_COOKIE['user_id'], 'none'), "platform" => "web" ); } } else { return array( "auth" => false, "token" => false, "platform" => "web" ); } } function cl_get_userfromsession_id($session_id, $platform = 'web') { global $db; if (empty($session_id)) { return false; } $platform = cl_text_secure($platform); $session_id = cl_text_secure($session_id); $return = $db->where('session_id', $session_id); $return = $db->where('lifespan', time(), '>'); $return = (not_empty($platform)) ? $db->where('platform', $platform) : $db; $session_data = $db->getOne(T_SESSIONS, array('user_id')); if (cl_queryset($session_data)) { return $session_data["user_id"]; } return false; } function cl_update_user_data($user_id = null,$data = array()) { global $db; if ((not_num($user_id)) || (empty($data) || is_array($data) != true)) { return false; } $db = $db->where('id', $user_id); $update = $db->update(T_USERS,$data); return ($update == true) ? true : false; } function cl_uname_exists($uname = "") { global $db; return ($db->where('username', cl_text_secure($uname))->getValue(T_USERS, 'count(*)') > 0) ? true : false; } function cl_email_exists($email = "") { global $db; return ($db->where('email', cl_text_secure($email))->getValue(T_USERS, 'count(*)') > 0) ? true : false; } function cl_verify_emcode($emcode = "") { global $db; return ($db->where('em_code', cl_text_secure($emcode))->getValue(T_USERS, 'count(*)') > 0) ? true : false; } function cl_user_data($user_id = 0) { global $db, $cl; if (not_num($user_id)) { return false; } $db = $db->where('id', $user_id); $user_data = $db->getOne(T_USERS); if (empty($user_data)) { return false; } $user_data['name'] = cl_strf("%s %s",$user_data['fname'],$user_data['lname']); $user_data['name'] = cl_rn_strip($user_data['name']); $user_data['name'] = stripcslashes($user_data['name']); $user_data['name'] = htmlspecialchars_decode($user_data['name'], ENT_QUOTES); $user_data['about'] = cl_rn_strip($user_data['about']); $user_data['about'] = stripcslashes($user_data['about']); $user_data['about'] = htmlspecialchars_decode($user_data['about'], ENT_QUOTES); $user_data['raw_uname'] = $user_data['username']; $user_data['username'] = cl_strf("@%s", $user_data['username']); $user_data['raw_avatar'] = $user_data['avatar']; $user_data['raw_cover'] = $user_data['cover']; $user_data['avatar'] = cl_get_media($user_data['avatar']); $user_data['cover'] = cl_get_media($user_data['cover']); $user_data['url'] = cl_link(cl_strf("@%s",$user_data['raw_uname'])); $user_data['chaturl'] = cl_link(cl_strf("conversation/@%s",$user_data['raw_uname'])); $user_data['is_online'] = ($user_data['last_active'] > (time() - 60)); $user_data['last_active'] = cl_time2str($user_data['last_active']); $user_data['joined'] = cl_date("F, Y", $user_data['joined'], false); $user_data['settings'] = json($user_data['settings']); $user_data['swift'] = cl_init_swift($user_data['swift']); $user_data['country_a2c'] = fetch_or_get($cl['country_codes'][$user_data['country_id']],'us'); $user_data['country_name'] = cl_translate($cl['countries'][$user_data['country_id']], 'Unknown'); if ($user_data["start_up"] != "done") { $user_data["start_up"] = json($user_data["start_up"]); if (is_array($user_data["start_up"]) != true) { $user_data["start_up"] = "done"; } } return $user_data; } function cl_init_swift($json = false) { try { $swift = json($json); if (is_array($swift)) { return $swift; } else { return array(); } } catch (Exception $e) { return array(); } } function cl_can_swift($swift = array()) { if (is_array($swift)) { $active_posts = 0; foreach ($swift as $row) { if (not_empty($row["exp_time"]) && $row["exp_time"] > time()) { $active_posts += 1; } } return ($active_posts >= 20) ? false : true; } else { return false; } } function cl_delete_swift($swift_id = array()) { global $me, $cl; if (not_empty($cl["is_logged"])) { $swift_data = isset($me["swift"][$swift_id]) ? $me["swift"][$swift_id] : false; if (is_array($swift_data)) { if ($swift_data["type"] == "image") { cl_delete_media($swift_data["media"]["src"]); } else if($swift_data["type"] == "video") { cl_delete_media($swift_data["media"]["source"]); } unset($me["swift"][$swift_id]); return $me["swift"]; } } else{ return false; } } function cl_is_junked_swift($swift_data = array()) { if (is_array($swift_data)) { if ($swift_data["status"] != "active" || $swift_data["exp_time"] <= time()) { return true; } } return false; } function cl_raw_user_data($user_id = 0) { global $db; if (not_num($user_id)) { return false; } $db = $db->where('id', $user_id); $user_data = $db->getOne(T_USERS); if (empty($user_data)) { return false; } return $user_data; } function cl_get_user_settings($user_id = 0) { global $db; if (not_num($user_id)) { return false; } $user_data = cl_raw_user_data($user_id); if (empty($user_data)) { return false; } return json($user_data["settings"]); } function cl_signout_user() { global $db; if (not_empty($_SESSION['user_id'])) { $db->where('session_id', cl_text_secure($_SESSION['user_id'])); $db->delete(T_SESSIONS); } if (not_empty($_COOKIE['user_id'])) { $db->where('session_id', cl_text_secure($_COOKIE['user_id'])); $db->delete(T_SESSIONS); unset($_COOKIE['user_id']); setcookie('user_id', null, -1); unset($_COOKIE['dark_mode']); setcookie('dark_mode', null, -1); } @session_destroy(); cl_redirect('/'); } function cl_signout_user_by_id($user_id = false) { global $db; if (not_num($user_id)) { return false; } $db = $db->where('user_id', $user_id); $qr = $db->delete(T_SESSIONS); return $qr; } function cl_delete_user_data($user_id = false) { global $db; if (not_num($user_id)) { return false; } else { $db = $db->where('id', $user_id); $user_data = $db->getOne(T_USERS); if (cl_queryset($user_data)) { /*===== Delete user notifications =====*/ $db = $db->where('notifier_id', $user_id); $qr = $db->delete(T_NOTIFS); $db = $db->where('recipient_id', $user_id); $qr = $db->delete(T_NOTIFS); /*====================================*/ /*===== Delete user bookmarks =====*/ $db = $db->where('user_id', $user_id); $qr = $db->delete(T_BOOKMARKS); /*====================================*/ /*===== Delete user reports =====*/ $db = $db->where('user_id', $user_id); $qr = $db->delete(T_PROF_REPORTS); $db = $db->where('profile_id', $user_id); $qr = $db->delete(T_PROF_REPORTS); /*====================================*/ /*===== Delete user blocks =====*/ $db = $db->where('user_id', $user_id); $qr = $db->delete(T_BLOCKS); $db = $db->where('profile_id', $user_id); $qr = $db->delete(T_BLOCKS); /*====================================*/ /*===== Delete user aff payouts =====*/ $db = $db->where('user_id', $user_id); $qr = $db->delete(T_AFF_PAYOUTS); /*====================================*/ /*===== Delete user wallet history =====*/ $db = $db->where('user_id', $user_id); $qr = $db->delete(T_WALLET_HISTORY); /*====================================*/ /*===== Delete user post reposts =====*/ $db = $db->where('user_id', $user_id); $qr = $db->delete(T_PUB_REPORTS); /*====================================*/ /*===== Delete user ads =====*/ $db = $db->where('user_id', $user_id); $qr = $db->get(T_ADS); if (cl_queryset($qr)) { foreach ($qr as $row) { cl_delete_media($row['cover']); } $db = $db->where('user_id', $user_id); $qr = $db->delete(T_ADS); } /*====================================*/ /*===== Delete user likes =====*/ $db = $db->where('user_id', $user_id); $qr = $db->get(T_LIKES); if (cl_queryset($qr)) { foreach ($qr as $row) { $post_data = cl_raw_post_data($row['pub_id']); if (not_empty($post_data) && ($post_data['user_id'] != $user_id)) { $num = ($post_data['likes_count'] -= 1); $num = (is_posnum($num)) ? $num : 0; cl_update_post_data($row['pub_id'], array( 'likes_count' => $num )); } } $db = $db->where('user_id', $user_id); $qr = $db->delete(T_LIKES); } /*====================================*/ /*===== Delete user reposts =====*/ $db = $db->where('user_id', $user_id); $db = $db->where('type', 'repost'); $qr = $db->get(T_POSTS); if (cl_queryset($qr)) { foreach ($qr as $row) { $post_data = cl_raw_post_data($row['publication_id']); if (not_empty($post_data) && ($post_data['user_id'] != $user_id)) { $num = ($post_data['reposts_count'] -= 1); $num = (is_posnum($num)) ? $num : 0; cl_update_post_data($row['publication_id'], array( 'reposts_count' => $num )); } } $db = $db->where('user_id', $user_id); $db = $db->where('type', 'repost'); $qr = $db->delete(T_POSTS); } /*====================================*/ /*===== Delete user publications =====*/ $db = $db->where('user_id', $user_id); $qr = $db->get(T_PUBS); if (cl_queryset($qr)) { foreach ($qr as $row) { if ($row['target'] == 'pub_reply') { cl_update_thread_replys($row['thread_id'], 'minus'); } $db = $db->where('publication_id', $row['id']); $qr = $db->delete(T_POSTS); cl_recursive_delete_post($row['id']); } } /*====================================*/ /*===== Delete user chats =====*/ $db = $db->where('user_one', $user_id); $qr = $db->delete(T_CHATS); $db = $db->where('user_two', $user_id); $qr = $db->delete(T_CHATS); $db = $db->where('sent_by', $user_id); $db = $db->where('sent_to', $user_id, '=', 'OR'); $qr = $db->get(T_MSGS); if (cl_queryset($qr)) { foreach ($qr as $row) { if (not_empty($row['media_file'])) { cl_delete_media($row['media_file']); } } $db = $db->where('sent_by', $user_id); $db = $db->where('sent_to', $user_id, '=', 'OR'); $qr = $db->delete(T_MSGS); } /*====================================*/ /*===== Delete user connections =====*/ $db = $db->where('follower_id', $user_id); $qr = $db->get(T_CONNECTIONS); if (cl_queryset($qr)) { foreach ($qr as $row) { $user_data = cl_raw_user_data($row['following_id']); if (not_empty($user_data)) { $num = ($user_data['followers'] -= 1); $num = (is_posnum($num)) ? $num : 0; cl_update_user_data($user_data['id'], array( 'followers' => $num )); } } $db = $db->where('follower_id', $user_id); $qr = $db->delete(T_CONNECTIONS); } $db = $db->where('following_id', $user_id); $qr = $db->get(T_CONNECTIONS); if (cl_queryset($qr)) { foreach ($qr as $row) { $user_data = cl_raw_user_data($row['follower_id']); if (not_empty($user_data)) { $num = ($user_data['following'] -= 1); $num = (is_posnum($num)) ? $num : 0; cl_update_user_data($user_data['id'], array( 'following' => $num )); } } $db = $db->where('following_id', $user_id); $qr = $db->delete(T_CONNECTIONS); } /*====================================*/ $swift_data = cl_init_swift($user_data["swift"]); if (not_empty($swift_data)) { foreach ($swift_data as $row) { if ($row["type"] == "image") { cl_delete_media($row["media"]["src"]); } else if($row["type"] == "video") { cl_delete_media($row["media"]["source"]); } } } $db = $db->where('user_id', $user_id); $qr = $db->delete(T_SESSIONS); $db = $db->where('id', $user_id); $qr = $db->delete(T_USERS); return true; } else { return false; } } } function cl_get_user_by_name($uname = null) { global $cl,$db; if (empty($uname)) { return false; } $db = $db->where('username',$uname); $udata = $db->getOne(T_USERS, 'id'); if (cl_queryset($udata)) { $user_id = intval($udata['id']); $udata = cl_user_data($user_id); } return $udata; } function cl_get_user_id_by_name($uname = null) { global $cl, $db; if (empty($uname)) { return false; } $db = $db->where('username', $uname); $udata = $db->getOne(T_USERS, 'id'); $user_id = 0; if (cl_queryset($udata)) { $user_id = intval($udata['id']); } return $user_id; } function cl_get_follow_suggestions($limit = 10, $offset = false) { global $db, $cl, $me; $data = array(); $user_id = ((not_empty($cl['is_logged'])) ? $me['id'] : false); $sql = cl_sqltepmlate('components/sql/user/fetch_follow_suggestions',array( 't_users' => T_USERS, 't_conns' => T_CONNECTIONS, 't_blocks' => T_BLOCKS, 'user_id' => $user_id, 'limit' => $limit, 'offset' => $offset )); $query_result = $db->rawQuery($sql); if (cl_queryset($query_result)) { foreach ($query_result as $row) { $row['about'] = cl_rn_strip($row['about']); $row['about'] = stripslashes($row['about']); $row['name'] = cl_strf("%s %s",$row['fname'],$row['lname']); $row['name'] = cl_rn_strip($row['name']); $row['name'] = stripslashes($row['name']); $row['avatar'] = cl_get_media($row['avatar']); $row['url'] = cl_link(cl_strf("@%s",$row['username'])); $row['username'] = cl_strf("@%s",$row['username']); $row['last_active'] = date("d M, y h:m A",$row['last_active']); $row['follow_requested'] = false; if (not_empty($user_id)) { $row['follow_requested'] = cl_follow_requested($user_id, $row['id']); } $data[] = $row; } } return $data; } function cl_is_following($follower_id = false, $following_id = false) { global $db; if (is_posnum($follower_id) != true || is_posnum($following_id) != true) { return false; } else if($follower_id == $following_id) { return false; } $db = $db->where('follower_id', $follower_id); $db = $db->where('following_id', $following_id); $db = $db->where('status', 'active'); $res = $db->getValue(T_CONNECTIONS,'COUNT(id)'); return is_posnum($res); } function cl_follow_requested($follower_id = false, $following_id = false) { global $db; if (is_posnum($follower_id) != true || is_posnum($following_id) != true) { return false; } else if($follower_id == $following_id) { return false; } $db = $db->where('follower_id', $follower_id); $db = $db->where('following_id', $following_id); $db = $db->where('status', 'pending'); $res = $db->getValue(T_CONNECTIONS, 'COUNT(id)'); return is_posnum($res); } function cl_is_blocked($user_id = false, $profile_id = false) { global $db; if (is_posnum($user_id) != true || is_posnum($profile_id) != true) { return false; } else if($user_id == $profile_id) { return false; } $db = $db->where('user_id', $user_id); $db = $db->where('profile_id', $profile_id); $res = $db->getValue(T_BLOCKS, 'COUNT(id)'); return is_posnum($res); } function cl_is_reported($user_id = false, $post_id = false) { global $db; if (is_posnum($user_id) != true || is_posnum($post_id) != true) { return false; } $db = $db->where('user_id', $user_id); $db = $db->where('post_id', $post_id); $res = $db->getValue(T_PUB_REPORTS, 'COUNT(id)'); return is_posnum($res); } function cl_unfollow($follower_id = false, $following_id = false){ if (is_posnum($follower_id) != true || is_posnum($following_id) != true) { return false; } $rm = cl_db_delete_item(T_CONNECTIONS, array( 'follower_id' => $follower_id, 'following_id' => $following_id )); return $rm; } function cl_follow($follower_id = false, $following_id = false){ if (is_posnum($follower_id) != true || is_posnum($following_id) != true) { return false; } $insert_id = cl_db_insert(T_CONNECTIONS,array( 'follower_id' => $follower_id, 'following_id' => $following_id, 'time' => time() )); return $insert_id; } function cl_follow_increase($follower_id = false, $following_id = false){ if (is_posnum($follower_id) != true || is_posnum($following_id) != true) { return false; } $follower_udata = cl_raw_user_data($follower_id); $following_udata = cl_raw_user_data($following_id); if (not_empty($follower_udata)) { $follow_num = ($follower_udata['following'] += 1); $follow_num = (empty($follow_num)) ? 0 : $follow_num; cl_update_user_data($follower_id, array( 'following' => $follow_num )); } if (not_empty($following_udata)) { $follow_num = ($following_udata['followers'] += 1); $follow_num = (empty($follow_num)) ? 0 : $follow_num; cl_update_user_data($following_id, array( 'followers' => $follow_num )); } return true; } function cl_follow_decrease($follower_id = false, $following_id = false){ if (is_posnum($follower_id) != true || is_posnum($following_id) != true) { return false; } $follower_udata = cl_raw_user_data($follower_id); $following_udata = cl_raw_user_data($following_id); if (not_empty($follower_udata)) { $follow_num = ($follower_udata['following'] -= 1); $follow_num = (empty($follow_num)) ? 0 : $follow_num; cl_update_user_data($follower_id, array( 'following' => $follow_num )); } if (not_empty($following_udata)) { $follow_num = ($following_udata['followers'] -= 1); $follow_num = (empty($follow_num)) ? 0 : $follow_num; cl_update_user_data($following_id, array( 'followers' => $follow_num )); } return true; } function cl_follow_request($follower_id = false, $following_id = false){ if (is_posnum($follower_id) != true || is_posnum($following_id) != true) { return false; } $insert_id = cl_db_insert(T_CONNECTIONS,array( 'follower_id' => $follower_id, 'following_id' => $following_id, 'status' => "pending", 'time' => time() )); return $insert_id; } function cl_get_followers($user_id = false, $limit = 10, $offset = false) { global $db, $cl; if (is_posnum($user_id) != true) { return false; } $data = array(); $sql = cl_sqltepmlate('components/sql/user/fetch_followers',array( 't_users' => T_USERS, 't_conns' => T_CONNECTIONS, 'user_id' => $user_id, 'limit' => $limit, 'offset' => $offset, )); $query_result = $db->rawQuery($sql); if (cl_queryset($query_result)) { foreach ($query_result as $row) { $row['about'] = cl_rn_strip($row['about']); $row['about'] = stripslashes($row['about']); $row['name'] = cl_strf("%s %s",$row['fname'],$row['lname']); $row['avatar'] = cl_get_media($row['avatar']); $row['url'] = cl_link(cl_strf("@%s",$row['username'])); $row['username'] = cl_strf("@%s",$row['username']); $row['last_active'] = date("d M, y h:m A",$row['last_active']); $row['is_following'] = false; $row['follow_requested'] = false; $row['is_user'] = false; if (not_empty($cl['is_logged'])) { $row['is_following'] = cl_is_following($cl['me']['id'], $row['id']); if ($cl['me']['id'] == $row['id']) { $row['is_user'] = true; } if (empty($row['is_following'])) { $row['follow_requested'] = cl_follow_requested($cl['me']['id'], $row['id']); } } $data[] = $row; } } return $data; } function cl_get_followings($user_id = false, $limit = 10, $offset = false) { global $db,$cl; if (is_posnum($user_id) != true) { return false; } $data = array(); $sql = cl_sqltepmlate('components/sql/user/fetch_followings',array( 't_users' => T_USERS, 't_conns' => T_CONNECTIONS, 'user_id' => $user_id, 'limit' => $limit, 'offset' => $offset )); $query_result = $db->rawQuery($sql); if (cl_queryset($query_result)) { foreach ($query_result as $row) { $row['about'] = cl_rn_strip($row['about']); $row['about'] = stripslashes($row['about']); $row['name'] = cl_strf("%s %s",$row['fname'],$row['lname']); $row['avatar'] = cl_get_media($row['avatar']); $row['url'] = cl_link(cl_strf("@%s",$row['username'])); $row['username'] = cl_strf("@%s",$row['username']); $row['last_active'] = date("d M, y h:m A",$row['last_active']); $row['is_following'] = false; $row['follow_requested'] = false; $row['is_user'] = false; if (not_empty($cl['is_logged'])) { $row['is_following'] = cl_is_following($cl['me']['id'], $row['id']); if ($cl['me']['id'] == $row['id']) { $row['is_user'] = true; } if (empty($row['is_following'])) { $row['follow_requested'] = cl_follow_requested($cl['me']['id'], $row['id']); } } $data[] = $row; } } return $data; } function cl_get_follow_requests($limit = 10, $offset = false) { global $db, $cl, $me; $data = array(); $sql = cl_sqltepmlate('components/sql/user/fetch_follow_requests', array( 't_users' => T_USERS, 't_conns' => T_CONNECTIONS, 'user_id' => $me["id"], 'limit' => $limit, 'offset' => $offset )); $query_result = $db->rawQuery($sql); if (cl_queryset($query_result)) { foreach ($query_result as $row) { $row['about'] = cl_rn_strip($row['about']); $row['about'] = stripslashes($row['about']); $row['name'] = cl_strf("%s %s",$row['fname'],$row['lname']); $row['avatar'] = cl_get_media($row['avatar']); $row['url'] = cl_link(cl_strf("@%s",$row['username'])); $row['username'] = cl_strf("@%s",$row['username']); $row['last_active'] = date("d M, y h:m A",$row['last_active']); $row['pending_req'] = true; $data[] = $row; } } return $data; } function cl_get_follow_requests_total() { global $db, $me; $db = $db->where("following_id", $me["id"]); $db = $db->where("status", "pending"); $qr = $db->getValue(T_CONNECTIONS, "COUNT(*)"); return (is_posnum($qr)) ? $qr : 0; } function cl_notify_user($data = array()) { global $db, $cl, $me; if (empty($data)) { return false; } else if(cl_allow_user_notification($data['user_id'], $data['subject']) != true) { return false; } $total = cl_db_get_total(T_NOTIFS, array( 'notifier_id' => $me['id'], 'recipient_id' => $data['user_id'], 'subject' => $data['subject'], 'entry_id' => $data['entry_id'] )); if (empty($total)) { cl_db_insert(T_NOTIFS, array( 'notifier_id' => $me['id'], 'recipient_id' => $data['user_id'], 'status' => '0', 'entry_id' => $data['entry_id'], 'subject' => $data['subject'], 'time' => time() )); } else { cl_db_update(T_NOTIFS, array( 'notifier_id' => $me['id'], 'recipient_id' => $data['user_id'], 'subject' => $data['subject'], 'entry_id' => $data['entry_id'] ), array( 'time' => time(), 'status' => '0' )); } cl_push_notify_user(array( 'notifier_id' => $me['id'], 'recipient_id' => $data['user_id'], 'entry_id' => $data['entry_id'], 'type' => $data['subject'] )); } function cl_push_notify_user($data = array()) { global $db, $cl; if ($cl["config"]["push_notifs"] == "on") { $event_messages = array( "subscribe" => cl_translate('Started following you'), "reply" => cl_translate('Replied to your post'), "subscribe_accept" => cl_translate('Accepted your follow request'), "subscribe_request" => cl_translate('Wants to follow you'), "like" => cl_translate('Liked your post'), "repost" => cl_translate('Shared your publication'), "visit" => cl_translate('Visited your profile'), "mention" => cl_translate('Mentioned you in a post'), "post_created" => cl_translate('Posted a new publication'), "chat_message" => cl_translate('Sent you a new message') ); if(in_array($data['type'], array("post_created", "chat_message")) != true && cl_allow_user_notification($data['recipient_id'], $data['type']) != true) { return false; } else { $recipient_data = cl_raw_user_data($data["recipient_id"]); $firebase_kye = $cl["config"]["firebase_api_key"]; $firebase_url = "https://fcm.googleapis.com/fcm/send"; if (not_empty($recipient_data)) { $pnotif_token = json($recipient_data["pnotif_token"]); if (is_array($pnotif_token) && not_empty($pnotif_token["token"])) { try { if ($pnotif_token["type"] == "ios") { $notif_body = array( "type" => str_replace('_', '-', $data["type"]), "title" => $cl["me"]["name"], "body" => $event_messages[$data["type"]], "badge" => 1, "sound" => "default" ); if ($data["type"] == "chat_message") { $notif_body["chat_message"] = $data["chat_message"]; } else { $notif_body["data"] = array( "type" => str_replace('_', '-', $data["type"]), "title" => $cl["me"]["name"], "body" => $event_messages[$data["type"]] ); } if (in_array($data["type"], array("subscribe", "subscribe_accept", "subscribe_request", "visit"))) { $notif_body["user_id"] = $data["entry_id"]; } else { if ($data["type"] != "chat_message") { $notif_body["post_id"] = $data["entry_id"]; } } $req_fields = array( "collapse_key" => "type_a", "to" => $pnotif_token["token"], "notification" => $notif_body ); $http_headers = array(cl_strf("Authorization: key=%s", $firebase_kye), "Content-Type: application/json; charset=utf-8"); $http_req = curl_init(); curl_setopt($http_req, CURLOPT_URL, $firebase_url); curl_setopt($http_req, CURLOPT_POST, true); curl_setopt($http_req, CURLOPT_HTTPHEADER, $http_headers); curl_setopt($http_req, CURLOPT_RETURNTRANSFER, true); curl_setopt($http_req, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($http_req, CURLOPT_POSTFIELDS, json_encode($req_fields)); curl_setopt($http_req, CURLOPT_TIMEOUT, 50); curl_setopt($http_req, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); $result = curl_exec($http_req); curl_close($http_req); } else { $notif_body = array( "type" => $data["type"], "title" => $cl["me"]["name"], "body" => $event_messages[$data["type"]], "android_channel_id" => "colibri" ); if ($data["type"] == "chat_message") { $notif_body["chat_message"] = $data["chat_message"]; } if (in_array($data["type"], array("subscribe", "subscribe_accept", "subscribe_request", "visit"))) { $notif_body["user_id"] = $data["entry_id"]; } else { if ($data["type"] != "chat_message") { $notif_body["post_id"] = $data["entry_id"]; } } $req_fields = array( "collapse_key" => "type_a", "to" => $pnotif_token["token"], "data" => $notif_body ); $http_headers = array(cl_strf("Authorization: key=%s", $firebase_kye), "Content-Type: application/json"); $http_req = curl_init(); curl_setopt($http_req, CURLOPT_URL, $firebase_url); curl_setopt($http_req, CURLOPT_POST, true); curl_setopt($http_req, CURLOPT_HTTPHEADER, $http_headers); curl_setopt($http_req, CURLOPT_RETURNTRANSFER, true); curl_setopt($http_req, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($http_req, CURLOPT_POSTFIELDS, json_encode($req_fields)); curl_setopt($http_req, CURLOPT_TIMEOUT, 50); curl_setopt($http_req, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); $result = curl_exec($http_req); curl_close($http_req); } } catch (Exception $e) { /*pass*/ } } } } } } function cl_allow_user_notification($user_id = false, $subject = false) { if (not_num($user_id)) { return false; } else if(in_array($subject, array("ad_approval"))) { return true; } else { $udata_settings = cl_get_user_settings($user_id); if (not_empty($udata_settings) && is_array($udata_settings)) { if (not_empty($udata_settings["notifs"][$subject])) { return true; } else { return false; } } return false; } } function cl_get_user_mentions($text = "") { if (empty($text) || is_string($text) != true) { return array(); } $users = array(); preg_match_all('/(?:^|\s|,)\B@([a-zA-Z0-9_]{4,32})/is', $text, $mentions); if (is_array($mentions) && not_empty($mentions[1])) { $users = $mentions[1]; } return $users; } function cl_notify_mentioned_users($users = array(), $post_id = false) { global $db, $cl, $me; if (empty($cl['is_logged']) || is_posnum($post_id) != true) { return false; } foreach ($users as $username) { $uid = cl_get_user_id_by_name($username); if ($uid && ($uid != $me['id'])) { cl_notify_user(array( 'subject' => 'mention', 'user_id' => $uid, 'entry_id' => $post_id )); } } } function cl_likify_mentions($text = "") { $text = preg_replace_callback('/(?:^|\s|,)\B@([a-zA-Z0-9_]{3,32})/is', function($m) { $uname = fetch_or_get($m[1]); if (not_empty($uname) && cl_get_user_id_by_name($uname)) { return (" " . cl_html_el('a', cl_strf("@%s",$uname), array( 'href' => cl_link(cl_strf("@%s",$uname)), 'target' => '_blank', 'class' => 'inline-link', )) . " "); } else{ return cl_strf("@%s",$uname); } }, $text); return $text; } function cl_total_new_notifs() { global $db, $cl; if (empty($cl['is_logged'])) { return 0; } $sql = cl_sqltepmlate('apps/notifications/sql/fetch_unseen_total', array( 't_notifs' => T_NOTIFS, 't_blocks' => T_BLOCKS, 'user_id' => $cl['me']['id'] )); $qr = $db->rawQueryOne($sql); if (cl_queryset($qr)) { return fetch_or_get($qr['total'], 0); } return 0; } function cl_total_new_messages() { global $db, $cl; if (empty($cl['is_logged'])) { return 0; } $sql = cl_sqltepmlate('apps/chat/sql/fetch_total', array( 't_msgs' => T_MSGS, 't_blocks' => T_BLOCKS, 'user_id' => $cl['me']['id'] )); $qr = $db->rawQueryOne($sql); if (cl_queryset($qr)) { return fetch_or_get($qr['total'], 0); } return 0; } function cl_get_blocked_user_ids($user_id = false) { global $db, $cl; if (not_num($user_id)) { return array(); } else { $db = $db->where('user_id', $user_id); $users = $db->get(T_BLOCKS, null, array('profile_id')); $data = array(); if (cl_queryset($users)) { foreach ($users as $row) { $data[] = $row['profile_id']; } } return $data; } } function cl_get_blocked_users() { global $db, $cl; $data = array(); $sql = cl_sqltepmlate('components/sql/user/fetch_blocked_users', array( 't_users' => T_USERS, 't_blocks' => T_BLOCKS, 'user_id' => $cl['me']['id'] )); $users = $db->rawQuery($sql); if (cl_queryset($users)) { foreach ($users as $row) { $row['name'] = cl_strf("%s %s", $row['fname'], $row['lname']); $row['avatar'] = cl_get_media($row['avatar']); $row['url'] = cl_link(cl_strf("@%s",$row['username'])); $row['username'] = cl_strf("@%s",$row['username']); $data[] = $row; } } return $data; } function cl_calc_affiliate_bonuses() { global $cl; if (empty($cl['is_logged'])) { return "0.00"; } else { $money = "0.00"; $bonus_rate = $cl['config']['aff_bonus_rate']; if (not_empty($cl['me']['aff_bonuses'])) { $money = ($bonus_rate * $cl['me']['aff_bonuses']); } return $money; } } function cl_aff_request_exists() { global $db, $cl; $db = $db->where('user_id', $cl['me']['id']); $db = $db->where('status', 'pending'); $qr = $db->getValue(T_AFF_PAYOUTS, 'COUNT(*)'); return ($qr > 0); } function cl_get_theme_mode() { if (not_empty($_COOKIE["dark_mode"])) { return "N"; } else { return "D"; } } function cl_mention_ac_search($username = false) { global $db, $cl; $db = $db->where("username", "%$username%", "LIKE"); $db = $db->orWhere("fname", "%$username%", "LIKE"); $db = $db->orWhere("lname", "%$username%", "LIKE"); $db = $db->where("active", "1"); $qr = $db->get(T_USERS, 50, array("username", "fname", "lname", "avatar", "verified")); if (cl_queryset($qr)) { $data = array(); foreach ($qr as $row) { $row['name'] = cl_strf("%s %s", $row['fname'], $row['lname']); $row['avatar'] = cl_get_media($row['avatar']); $row['url'] = cl_link(cl_strf("@%s", $row['username'])); $row['username'] = $row['username']; $row['name'] = cl_rn_strip($row['name']); $row['name'] = stripslashes($row['name']); array_push($data, array( "name" => $row["name"], "avatar" => $row["avatar"], "username" => $row["username"], "verified" => $row["verified"], "url" => $row["url"] )); } return $data; } return false; } function cl_hashtag_ac_search($hashtag = false) { global $db, $cl; $db = $db->where("tag", "%$hashtag%", "LIKE"); $db = $db->where("posts", "0", ">"); $qr = $db->get(T_HTAGS, 50); if (cl_queryset($qr)) { $data = array(); foreach ($qr as $row) { array_push($data, array( "tag" => $row["tag"], "posts" => cl_number($row["posts"]) )); } return $data; } return false; }
[+]
vars
[-] ad.php
[edit]
[+]
..
[-] glob_context.php
[edit]
[-] localization.php
[edit]
[-] post.php
[edit]
[+]
mw
[+]
sql
[-] shortcuts.php
[edit]
[-] tools.php
[edit]
[-] compilers.php
[edit]
[-] user.php
[edit]
[+]
html