<?php
define('BB_CONTENTS_PATH',ROOT_PATH.'public/bb_contents/');
define('BB_SMILES_PATH',ROOT_PATH.'public/bb_contents/smiles/');
define('BB_ATTACH_FILES_PATH',ROOT_PATH.'public/bb_contents/attach_files/');
define('BB_REACTIONS_PATH',ROOT_PATH.'public/bb_contents/reactions/');
define('BB_CACHES_PATH',ROOT_PATH.'public/bb_contents/caches/');
define('BB_USERS_PATH',ROOT_PATH.'public/bb_contents/users/');
define('BB_THREADS_PATH',ROOT_PATH.'public/bb_contents/threads/');
define('BB_FORUMS_PATH',ROOT_PATH.'public/bb_contents/forums/');
define('BB_PHPCODE_PATH',ROOT_PATH.'public/bb_contents/phpcode/');
define('BB_FIREWALL_PATH',ROOT_PATH.'public/bb_contents/firewall/');
define('BB_PLUGIN_PATH',PLUGINS_PATH.'bulletinboard/');
// define('BB_SERVER_API_URL','http://coffeecms.net/api/');
define('BB_SERVER_API_URL','http://localhost/lioncms/api/');
// Function global
// Frontend & Backend
// 1.Load all data from caches
// 2. Check permission of user:
// Priority: User permission -> forum user permission -> forum group user permission -> Group user permission
// Begin load forum
bb_prepare_visitor_data();
function bb_prepare_visitor_data()
{
// isLogined();
if(preg_match('/^admin/i',Configs::$_['uri']))
{
return false;
}
if(!preg_match('/^notify\/expired/i',Configs::$_['uri']) && !preg_match('/^api/i',Configs::$_['uri']))
{
if(!isset(Configs::$_['bb_license_end_dt']) || !isset(Configs::$_['bb_license_key']) || strlen(Configs::$_['bb_license_end_dt'])==0 || strlen(Configs::$_['bb_license_key']) < 10)
{
redirect_to(SITE_URL.'notify/expired');
}
// else
// {
// if(strtotime(Configs::$_['bb_license_end_dt']) < time())
// {
// redirect_to(SITE_URL.'notify/expired');
// }
// }
}
// Step 1: Detect visitor info
// Step 2: Firewall working or not
// Step 3: Insert visitor session info to db
// Step 4: Load visitor permissions: home page, forums, threads,posts
if(!isLogined())
{
Configs::$_['user_data']=[];
Configs::$_['user_data']['user_id']='GUEST';
Configs::$_['user_data']['username']='GUEST';
Configs::$_['user_data']['fullname']='GUEST';
Configs::$_['user_data']['group_c']=Configs::$_['default_guest_groupid'];
Configs::$_['user_data']['level_c']='0';
Configs::$_['user_data']['group_title']='GUEST';
Configs::$_['user_data']['level_title']='GUEST';
$session_id=Configs::$_['visitor_data']['session_id'];
bb_firewall_detect_session();
useClass('UserAgent');
useClass('Mobile_Detect');
$useragent = UserAgentFactory::analyze($_SERVER['HTTP_USER_AGENT']);
$referrer=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'';
$referrer=is_null($referrer)?'':$referrer;
$referrer=isset($referrer[5])?$referrer:'direct';
$referrer_site='';
if(preg_match('/^http/i',$referrer))
{
$url_data=parse_url($referrer);
$referrer_site=$url_data['host'];
}
$ip_add=$_SERVER['REMOTE_ADDR'];
$ent_dt=date('Y-m-d H:i:s');
$user_agent=isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:'';
$user_agent=is_null($user_agent)?'':$user_agent;
$session_hash=md5($ip_add.$user_agent.$ent_dt);
$is_mobile='0';
$is_tablet='0';
$is_windows='0';
$is_ios='0';
$is_android='0';
$detect = new Mobile_Detect;
if ( $detect->isMobile() ) {
$is_mobile='1';
}
if ( $detect->isTablet() ) {
$is_tablet='1';
}
if ( $detect->isiOS() ) {
$is_ios='1';
}
if ( $detect->isAndroidOS() ) {
$is_android='1';
}
if ( $detect->isWindowsMobileOS() ) {
$is_windows='1';
}
if ( $detect->isWindowsPhoneOS() ) {
$is_windows='1';
}
$os_title=$useragent->platform['name'];
$os_version=$useragent->platform['version'];
$browser_title=$useragent->browser['name'];
$browser_version=$useragent->browser['version'];
// $browser_version=$useragent->browser['name'];
if(strtoupper($os_title)=='WINDOWS')
{
$is_windows='1';
}
$referrer_type='website';
$page_url=current_url();
$insertData=array(
'session_id'=>$session_id,
'ip_address'=>Configs::$_['visitor_data']['ip'],
'user_agent'=>Configs::$_['visitor_data']['user_agent'],
'username'=>'guest',
'page_url'=>$page_url,
'referrer_url'=>$referrer,
'referrer_site'=>$referrer_site,
'referrer_type'=>$referrer_type,
'os_title'=>$os_title,
'os_version'=>$os_version,
'browser_title'=>$browser_title,
'browser_version'=>$browser_version,
'is_mobile'=>$is_mobile,
'is_tablet'=>$is_tablet,
'is_ios'=>$is_ios,
'is_android'=>$is_android,
'is_windows'=>$is_windows,
);
$queryStr=arrayToInsertStr('bb_visitor_views_data',$insertData);
$db=new Database();
$db->nonquery($queryStr);
}
else
{
bb_load_user_data();
bb_firewall_detect_session();
BB_Notifies::load(Configs::$_['user_data']['user_id']);
$session_id=Configs::$_['visitor_data']['session_id'];
useClass('UserAgent');
useClass('Mobile_Detect');
$useragent = UserAgentFactory::analyze($_SERVER['HTTP_USER_AGENT']);
$referrer=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'';
$referrer=is_null($referrer)?'':$referrer;
$referrer=isset($referrer[5])?$referrer:'direct';
$referrer_site='';
if(preg_match('/^http/i',$referrer))
{
$url_data=parse_url($referrer);
$referrer_site=$url_data['host'];
}
$ip_add=$_SERVER['REMOTE_ADDR'];
$ent_dt=date('Y-m-d H:i:s');
$user_agent=isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:'';
$user_agent=is_null($user_agent)?'':$user_agent;
$session_hash=md5($ip_add.$user_agent.$ent_dt);
$is_mobile='0';
$is_tablet='0';
$is_windows='0';
$is_ios='0';
$is_android='0';
$detect = new Mobile_Detect;
if ( $detect->isMobile() ) {
$is_mobile='1';
}
if ( $detect->isTablet() ) {
$is_tablet='1';
}
if ( $detect->isiOS() ) {
$is_ios='1';
}
if ( $detect->isAndroidOS() ) {
$is_android='1';
}
if ( $detect->isWindowsMobileOS() ) {
$is_windows='1';
}
if ( $detect->isWindowsPhoneOS() ) {
$is_windows='1';
}
$os_title=$useragent->platform['name'];
$os_version=$useragent->platform['version'];
$browser_title=$useragent->browser['name'];
$browser_version=$useragent->browser['version'];
// $browser_version=$useragent->browser['name'];
if(strtoupper($os_title)=='WINDOWS')
{
$is_windows='1';
}
$referrer_type='website';
$page_url=current_url();
$insertData=array(
'session_id'=>$session_id,
'ip_address'=>Configs::$_['visitor_data']['ip'],
'user_agent'=>Configs::$_['visitor_data']['user_agent'],
'username'=>Configs::$_['user_data']['user_id'],
'page_url'=>$page_url,
'referrer_url'=>$referrer,
'referrer_site'=>$referrer_site,
'referrer_type'=>$referrer_type,
'os_title'=>$os_title,
'os_version'=>$os_version,
'browser_title'=>$browser_title,
'browser_version'=>$browser_version,
'is_mobile'=>$is_mobile,
'is_tablet'=>$is_tablet,
'is_ios'=>$is_ios,
'is_android'=>$is_android,
'is_windows'=>$is_windows,
);
$queryStr=arrayToInsertStr('bb_visitor_views_data',$insertData);
$db=new Database();
$db->nonquery($queryStr);
$db->nonquery("update bb_user_data set last_user_online=NOW() where user_id='".Configs::$_['user_data']['user_id']."'");
}
// Define uri -> page name
// if(preg_match('/^f\-/i',Configs::$_['uri']))
// {
// Configs::$_['visitor_data']['page_view_nm']='forum';
// }
// elseif(preg_match('/^t\-/i',Configs::$_['uri']))
// {
// Configs::$_['visitor_data']['page_view_nm']='thread';
// }
// elseif(preg_match('/^post\-/i',Configs::$_['uri']))
// {
// Configs::$_['visitor_data']['page_view_nm']='thread';
// }
// elseif(preg_match('/^profile\-/i',Configs::$_['uri']))
// {
// Configs::$_['visitor_data']['page_view_nm']='thread';
// }
}
// Gen links
function profile_url($username)
{
$result=SITE_URL.'profile-'.$username.'.html';
return $result;
}
function thread_url($friendly_url)
{
$result=SITE_URL.'t-'.$friendly_url;
return $result;
}
function forum_url($friendly_url)
{
$result=SITE_URL.'f-'.$friendly_url.'.html';
return $result;
}
function post_url($thread_friendly_url,$post_id)
{
$result=SITE_URL.'t-'.$thread_friendly_url.'/post-'.$post_id;
return $result;
}
function message_url($message_id)
{
$result=SITE_URL.'message/read-'.$message_id;
return $result;
}
function thread_page_url($thread_friendly_url,$page_no)
{
$result=SITE_URL.'t-'.$thread_friendly_url.'/page-'.$page_no;
return $result;
}
function attach_file_download_url($file_id)
{
$result=SITE_URL.'attach_file/file-'.$file_id;
return $result;
}
function login_url()
{
$result=SITE_URL.'login';
return $result;
}
function logout_url()
{
$result=SITE_URL.'logout';
return $result;
}
function register_url()
{
$result=SITE_URL.'register';
return $result;
}
function newthread_url($forum_id)
{
$result=SITE_URL.'newthread?forum_id='.$forum_id;
return $result;
}
function thread_reply_url($thread_id)
{
$result=SITE_URL.'threadreply/thread-'.$thread_id;
return $result;
}
function thread_edit_url($thread_id)
{
$result=SITE_URL.'threadedit/id-'.$thread_id;
return $result;
}
function post_edit_url($post_id)
{
$result=SITE_URL.'postedit/id-'.$post_id;
return $result;
}
function post_reply_url($thread_id,$post_id)
{
$result=SITE_URL.'threadreply/thread-'.$thread_id.'/post-'.$post_id;
return $result;
}
// End Gen links
function isOnline($last_user_online='')
{
if($last_user_online==null)
{
$last_user_online='';
}
$to_time = time();
$from_time = strtotime($last_user_online);
$mins=$to_time - $from_time;
if((int)$mins <= 60)
{
return true;
}
$mins=round(abs($mins) / 60);
if($mins <= 3)
{
return true;
}
return false;
}
function prepare_visitor_online_data($limit=0)
{
$db=new Database();
$queryStr='';
$url=current_url();
$queryStr=" SELECT distinct a.username as user_id,b.username";
$queryStr.=" FROM bb_visitor_views_data as a";
$queryStr.=" join user_mst as b ON a.username=b.user_id";
if($url!=SITE_URL)
{
$queryStr.=" WHERE page_url='".$url."' AND a.ent_dt >= NOW() - INTERVAL 5 MINUTE";
}
else
{
$queryStr.=" WHERE a.ent_dt >= NOW() - INTERVAL 5 MINUTE";
}
if((int)$limit > 0)
{
$queryStr.=" LIMIT 0,".$limit;
}
$loadData=$db->query($queryStr);
$total=count($loadData);
Configs::$_['visitor_data']['users_online']=[];
Configs::$_['visitor_data']['users_online']=$loadData;
Configs::$_['visitor_data']['total_users_online']=$total;
$queryStr=" SELECT distinct session_id,user_agent";
$queryStr.=" FROM bb_visitor_views_data";
if($url!=SITE_URL)
{
$queryStr.=" WHERE page_url='".$url."' AND username='guest' AND ent_dt >= NOW() - INTERVAL 5 MINUTE";
}
else
{
$queryStr.=" WHERE username='guest' AND ent_dt >= NOW() - INTERVAL 5 MINUTE";
}
$loadData=$db->query($queryStr);
$total=(int)$total+count($loadData);
Configs::$_['visitor_data']['guest_online']=[];
Configs::$_['visitor_data']['guest_online']=$loadData;
Configs::$_['visitor_data']['total_guest_online']=count($loadData);
Configs::$_['visitor_data']['total_online']=$total;
}
// End
function bb_load_all_post_prefix()
{
$savePath=BB_CACHES_PATH.'post_prefix.php';
$db=new Database();
if(!file_exists($savePath))
{
$loadData=$db->query("select * from bb_post_prefix_data where status='1' order by title asc");
if(!is_array($loadData) || count($loadData)==0)
{
return false;
}
create_file($savePath,"<?php Configs::\$_['list_post_prefix']='".json_encode($loadData)."';");
}
require_once($savePath);
Configs::$_['list_post_prefix']=json_decode(Configs::$_['list_post_prefix'],true);
}
// Captcha
function bb_captcha_compare_answer_text()
{
// IP + User agent
}
function bb_captcha_load_question_text()
{
$savePath=BB_CACHES_PATH.'captcha_text.php';
$result='';
$db=new Database();
if(!file_exists($savePath))
{
$loadData=$db->query("select * from bb_capcha_questions_data where status='1'");
if(!is_array($loadData) || count($loadData)==0)
{
return false;
}
create_file($savePath,"<?php Configs::\$_['list_captcha_text']='".json_encode($loadData)."';");
}
require_once($savePath);
Configs::$_['list_captcha_text']=json_decode(Configs::$_['list_captcha_text'],true);
shuffle(Configs::$_['list_captcha_text']);
$result=Configs::$_['list_captcha_text'][0];
// Create session id when visit register page
// IP + User agent
$insertData=array(
'session_id'=>Configs::$_['visitor_data']['session_id'],
'captcha_id'=>$result['question_id'],
'answer'=>$result['answer']
);
$queryStr=arrayToInsertStr('bb_captcha_session_data',$insertData);
$db->nonquery($queryStr);
return $result;
}
// End captcha
// HTML Code
function bb_load_php_code_zone($zoneName='')
{
if(!isset($zoneName[2]))
{
return '';
}
$result='';
$zoneName=strtolower($zoneName);
$savePath=BB_PHPCODE_PATH.$zoneName.'.php';
if(!file_exists($savePath))
{
$db=new Database();
$loadData=$db->query("select * from bb_html_global_data where html_c='".$zoneName."'");
if(!is_array($loadData) || count($loadData)==0)
{
return '';
}
create_file($savePath,"<?php Configs::\$_['html_code']=[];Configs::\$_['html_code']['".$zoneName."']='".addslashesd($loadData[0]['content'])."';");
}
require_once($savePath);
$result=Configs::$_['html_code'][$zoneName];
return $result;
}
// End HTML Code
// Forum -----------------------------
function bb_forum_has_permission($forum_id,$permission_c='')
{
$result=false;
if(!isset(Configs::$_['bb_forum_user_permission']))
{
bb_load_user_data();
}
// print_r(Configs::$_['bb_forum_user_permission']);die();
// forum user permission
if(isset(Configs::$_['bb_forum_user_permission'][$forum_id]))
{
if(isset(Configs::$_['bb_forum_user_permission'][$forum_id][$permission_c]))
{
return true;
}
}
// forum user group permission
if(isset(Configs::$_['bb_forum_usergroup_permission'][$forum_id]))
{
if(isset(Configs::$_['bb_forum_usergroup_permission'][$forum_id][$permission_c]))
{
return true;
}
}
// user group permission
if(isset(Configs::$_['user_permissions'][$permission_c]))
{
return true;
}
return $result;
}
function bb_load_all_forum_data()
{
$savePath=BB_CACHES_PATH.'forums.php';
if(!file_exists($savePath))
{
// BB_Forum::updateAllStats();
$db=new Database();
$listForums=$db->query("select * from bb_forum_data where ifnull(parent_id,'')='' order by sort_order asc");
$listSubForums=$db->query("select * from bb_forum_data where ifnull(parent_id,'')<>'' order by parent_id,sort_order asc");
$listForumUserGroupPers=$db->query("select * from bb_forum_usergroup_permission_data");
$listForumUserPers=$db->query("select * from bb_forum_user_permission_data");
// $listForums=bb_genNestedForumData($listForums,$listSubForums);
$result=array();
$total=count($listForums);
$totalSub=count($listSubForums);
$totalUserGroupPers=count($listForumUserGroupPers);
$totalUserPers=count($listForumUserPers);
for ($i=0; $i < $total; $i++) {
if(!isset($listForums[$i]['sub_forums']))
{
$listForums[$i]['sub_forums']=[];
}
if(!isset($listForums[$i]['user_permissions']))
{
$listForums[$i]['user_permissions']=[];
}
if(!isset($listForums[$i]['usergroup_permissions']))
{
$listForums[$i]['usergroup_permissions']=[];
}
for ($j=0; $j < $totalSub; $j++) {
if($listForums[$i]['forum_id']==$listSubForums[$j]['parent_id'])
{
$listForums[$i]['sub_forums'][]=$listSubForums[$j];
// array_push($result,$listSubCategories[$j]);
}
}
for ($k=0; $k < $totalUserGroupPers; $k++) {
if($listForums[$i]['forum_id']==$listForumUserGroupPers[$j]['forum_id'])
{
if(!isset($listForums[$i]['usergroup_permissions'][$listForumUserGroupPers[$j]['group_id']]))
{
$listForums[$i]['usergroup_permissions'][$listForumUserGroupPers[$j]['group_id']]=[];
}
$listForums[$i]['usergroup_permissions'][$listForumUserGroupPers[$j]['group_id']][]=$listForumUserGroupPers[$j]['permission_c'];
}
}
for ($k=0; $k < $totalUserPers; $k++) {
if($listForums[$i]['forum_id']==$listForumUserPers[$j]['forum_id'])
{
$listForums[$i]['user_permissions'][$listForumUserPers[$j]['user_id']]=$listForumUserPers[$j]['permission_c'];
}
}
// $result[]=$listForums[$i];
}
create_file($savePath,"<?php Configs::\$_['list_forums']='".json_encode($listForums)."';");
}
require_once($savePath);
Configs::$_['list_forums']=json_decode(Configs::$_['list_forums'],true);
}
function bb_load_forum_data_by_id($id)
{
$savePath=BB_CACHES_PATH.'forum_id_'.$id.'.php';
$forum_id=$id;
$friendly_url='';
if(!file_exists($savePath))
{
$db=new Database();
$content='';
$listForums=$db->query("select * from bb_forum_data where forum_id='".$id."'");
if(!is_array($listForums) || count($listForums)==0)
{
$forum_id=false;
$friendly_url=false;
return false;
}
$forum_id=$listForums[0]['forum_id'];
$friendly_url=$listForums[0]['friendly_url'];
create_file($savePath,"<?php Configs::\$_['forum_friendly_url']='".$listForums[0]['friendly_url']."';");
}
require_once($savePath);
$friendly_url=Configs::$_['forum_friendly_url'];
$forum_id=bb_load_forum_data_by_friendly_url($friendly_url);
return $forum_id;
}
function bb_load_forum_data_by_friendly_url($friendly_url)
{
// Forum data
// Forum user permission
// Forum group user permission
// Forum annoucements
// Forum pinned threads
// Forum ads threads
// $hash=md5($friendly_url);
// $savePath=BB_CACHES_PATH.'forum_'.$hash.'.php';
$forum_id='';
$db=new Database();
$content='';
$listForums=$db->query("select * from bb_forum_data where friendly_url='".$friendly_url."'");
if(!is_array($listForums) || count($listForums)==0)
{
$forum_id=false;
return false;
}
$forum_id=$listForums[0]['forum_id'];
$listSubForums=$db->query("select * from bb_forum_data where ifnull(parent_id,'')='".$forum_id."' order by sort_order asc");
$listForumUserGroupPers=$db->query("select * from bb_forum_usergroup_permission_data where forum_id='".$forum_id."'");
$listForumUserPers=$db->query("select * from bb_forum_user_permission_data where forum_id='".$forum_id."'");
$content=$listForums[0];
$totalSub=count($listSubForums);
$content['sub_forums']=[];
for ($j=0; $j < $totalSub; $j++) {
$content['sub_forums'][]=$listSubForums[$j];
}
$content['usergroup_permissions']=[];
$total=count($listForumUserGroupPers);
for ($i=0; $i < $total; $i++) {
if(!isset($content['usergroup_permissions'][$listForumUserGroupPers[$i]['group_id']]))
{
$content['usergroup_permissions'][$listForumUserGroupPers[$i]['group_id']]=[];
}
$content['usergroup_permissions'][$listForumUserGroupPers[$i]['group_id']][$listForumUserGroupPers[$i]['permission_c']]='';
}
$content['user_permissions']=[];
$total=count($listForumUserPers);
for ($i=0; $i < $total; $i++) {
if(!isset($content['user_permissions'][$listForumUserPers[$i]['user_id']]))
{
$content['user_permissions'][$listForumUserPers[$i]['user_id']]=[];
}
$content['user_permissions'][$listForumUserPers[$i]['user_id']][$listForumUserPers[$i]['permission_c']]='';
}
Configs::$_['forum_'.$forum_id]=$content;
// $forum_id=Configs::$_['forum_id'];
return $forum_id;
}
function bb_load_thread_of_forum($forum_id,$limit,$page)
{
}
// End forum-------------------
// Message
function bb_load_message_of_user($user_id,$limit=30,$page_no=0)
{
//Ki?m tra Cookie, n?u ko ??ng nh?p thì tr? v? false
if((int)$page_no > 0)
{
$page_no=(int)$page_no-1;
}
if((int)$page_no<=0)
{
$page_no=0;
}
$offset=(int)$page_no*30;
$queryStr='';
$queryStr.=" select message_id,subject,ent_dt from bb_message_data ";
$queryStr.=" where user_id='".$user_id."' ";
$queryStr.=" order by ent_dt limit ".$offset.",".$limit;
$db=new Database();
$result=$db->query($queryStr);
echo responseData($result,'no');die();
}
function bb_load_message_data($message_id)
{
$savePath=BB_CONTENTS_PATH.'messages/'.$message_id.'.php';
}
// End Message
// User
function bb_load_user_data()
{
// User data
// User permission data
// Forum require read thread after login data
$db=new Database();
// print_r(Configs::$_['user_data']);die();
if(!isset(Configs::$_['user_data']['user_id']))
{
Configs::$_['user_data']=[];
Configs::$_['user_data']['user_id']='GUEST';
Configs::$_['user_data']['username']='GUEST';
Configs::$_['user_data']['fullname']='GUEST';
Configs::$_['user_data']['group_c']=Configs::$_['default_guest_groupid'];
Configs::$_['user_data']['level_c']='0';
Configs::$_['user_data']['group_title']='GUEST';
Configs::$_['user_data']['level_title']='GUEST';
}
$db->setCache(15);
// print_r(Configs::$_['cf_u']);die();
Configs::$_['bb_user_data']=[];
// Configs::$_['bb_user_data']['user_id']=isset(Configs::$_['cf_u'])?Configs::$_['cf_u']:'GUEST';
if(Configs::$_['user_data']['user_id']!='GUEST')
{
$loadData=$db->query("select * from bb_user_data where user_id='".Configs::$_['user_data']['user_id']."'");
Configs::$_['bb_user_data']=$loadData[0];
}
$loadData=$db->query("select * from bb_forum_usergroup_permission_data where group_id='".Configs::$_['user_data']['group_c']."'");
$total=count($loadData);
// print_r($loadData);die();
Configs::$_['bb_forum_usergroup_permission']=[];
Configs::$_['bb_forum_user_permission']=[];
if($total > 0)
{
for ($i=0; $i < $total; $i++) {
if(!isset(Configs::$_['bb_forum_usergroup_permission'][$loadData[$i]['forum_id']]))
{
Configs::$_['bb_forum_usergroup_permission'][$loadData[$i]['forum_id']]=[];
}
Configs::$_['bb_forum_usergroup_permission'][$loadData[$i]['forum_id']][$loadData[$i]['permission_c']]='';
}
}
// print_r(Configs::$_['bb_forum_usergroup_permission']);die();
$loadData=$db->query("select * from bb_forum_user_permission_data where user_id='".Configs::$_['user_data']['user_id']."'");
$total=count($loadData);
if($total > 0)
{
for ($i=0; $i < $total; $i++) {
if(!isset(Configs::$_['bb_forum_user_permission'][$loadData[$i]['forum_id']]))
{
Configs::$_['bb_forum_user_permission'][$loadData[$i]['forum_id']]=[];
}
Configs::$_['bb_forum_user_permission'][$loadData[$i]['forum_id']][$loadData[$i]['permission_c']]='';
}
}
$db->unsetCache();
// print_r(Configs::$_['user_data']);die();
}
// End user
// Thread----------------------------
function bb_load_thread_data_by_id($friendly_url)
{
// Thread data
// Reactions data of thread
$savePath=BB_CACHES_PATH.'thread_'.$id.'.php';
$hash=md5($friendly_url);
if(!file_exists($savePath))
{
$db=new Database();
$listForums=$db->query("select * from bb_threads_data where friendly_url='".$friendly_url."'");
create_file($savePath,"<?php Configs::\$_['thread_".$hash."']='".json_encode($listForums[0])."';");
}
require_once($savePath);
Configs::$_['thread_'.$hash]=json_decode(Configs::$_['thread_'.$hash],true);
}
function bb_load_post_of_thread($thread_id,$limit,$page)
{
}
// End thread-----------------------
function bb_bb_genNestedForumData($listCategories=array(),$listSubCategories=array())
{
$result=array();
$total=count($listCategories);
$totalSub=count($listSubCategories);
for ($i=0; $i < $total; $i++) {
for ($j=0; $j < $totalSub; $j++) {
if($listCategories[$i]['forum_id']==$listSubCategories[$j]['parent_id'])
{
if(!isset($listCategories[$i]['sub_forum']))
{
$listCategories[$i]['sub_forum']=[];
}
$listCategories[$i]['sub_forum'][]=$listSubCategories[$j];
// array_push($result,$listSubCategories[$j]);
}
}
$result[]=$listCategories[$i];
}
return $result;
}
// Firewall---------------------------------------
function bb_firewall_detect_session()
{
// If go to notify page -> disable firewall
if(preg_match('/^notify/i',Configs::$_['uri']))
{
return '';
}
if((int)Configs::$_['bb_banned_ip_status']==1)
{
$hash=md5(Configs::$_['visitor_data']['ip']);
if(is_dir(BB_FIREWALL_PATH.'ip/'.$hash))
{
redirect_to(SITE_URL.'notify/block_ip');
}
// redirect_to(SITE_URL.'notify/block_browser');
}
if((int)Configs::$_['bb_banned_browsers_status']==1)
{
useClass('UserAgent');
$useragent = UserAgentFactory::analyze($_SERVER['HTTP_USER_AGENT']);
$os_title=$useragent->platform['name'];
$os_version=$useragent->platform['version'];
$browser_title=$useragent->browser['name'];
$browser_version=$useragent->browser['version'];
if(is_dir(BB_FIREWALL_PATH.'browser/'.strtoupper($browser_title)))
{
redirect_to(SITE_URL.'notify/block_browser');
}
// redirect_to(SITE_URL.'notify/block_browser');
}
if((int)Configs::$_['bb_banned_os_status']==1)
{
useClass('UserAgent');
$useragent = UserAgentFactory::analyze($_SERVER['HTTP_USER_AGENT']);
$os_title=$useragent->platform['name'];
$os_version=$useragent->platform['version'];
$detect = new Mobile_Detect;
if ( $detect->isMobile() ) {
if(is_dir(BB_FIREWALL_PATH.'os/MOBILE'))
{
redirect_to(SITE_URL.'notify/block_os');
}
}
if ( $detect->isTablet() ) {
if(is_dir(BB_FIREWALL_PATH.'os/TABLET'))
{
redirect_to(SITE_URL.'notify/block_os');
}
}
if ( $detect->isiOS() ) {
if(is_dir(BB_FIREWALL_PATH.'os/IOS'))
{
redirect_to(SITE_URL.'notify/block_os');
}
}
if ( $detect->isAndroidOS() ) {
if(is_dir(BB_FIREWALL_PATH.'os/ANDROID'))
{
redirect_to(SITE_URL.'notify/block_os');
}
}
if ( $detect->isWindowsMobileOS() ) {
if(is_dir(BB_FIREWALL_PATH.'os/WINDOWSMOBILE'))
{
redirect_to(SITE_URL.'notify/block_os');
}
}
if ( $detect->isWindowsPhoneOS() ) {
if(is_dir(BB_FIREWALL_PATH.'os/WINDOWSPHONE'))
{
redirect_to(SITE_URL.'notify/block_os');
}
}
if(is_dir(BB_FIREWALL_PATH.'os/'.strtoupper($os_title)))
{
redirect_to(SITE_URL.'notify/block_os');
}
// redirect_to(SITE_URL.'notify/block_os');
}
if((int)Configs::$_['bb_banned_users_status']==1)
{
$hash=md5(strtoupper(Configs::$_['user_data']['username']));
if(is_dir(BB_FIREWALL_PATH.'username/'.$hash))
{
redirect_to(SITE_URL.'notify/block_username');
}
}
}
function bb_is_banned_email($email)
{
$result=false;
if((int)Configs::$_['bb_banned_email_status']==1)
{
$email=addslashes(strtolower($email));
$hash=md5($email);
$savePath=PUBLIC_PATH.'bb_contents/firewall/email/'.$hash;
if(is_dir($savePath))
{
$result=true;
}
}
return $result;
}
function bb_is_banned_username($username)
{
$result=false;
if((int)Configs::$_['bb_banned_users_status']==1)
{
$username=addslashes(strtoupper($username));
$savePath=PUBLIC_PATH.'bb_contents/firewall/username/'.$username;
if(is_dir($savePath))
{
$result=true;
}
}
return $result;
}
// End firewall
function bb_gen_breadcum_forum_data_global($forum_id,$listCategories=array())
{
if(!isset(Configs::$_['forum_breadcum_data']))
{
Configs::$_['forum_breadcum_data']=[];
}
$total=count($listCategories);
for ($i=0; $i < $total; $i++) {
if($forum_id==$listCategories[$i]['forum_id'])
{
array_push(Configs::$_['forum_breadcum_data'],$listCategories[$i]);
bb_gen_breadcum_forum_data_global($listCategories[$i]['parent_id'],$listCategories);
}
}
}
|