inactive and Ok => active in users table */ define('NO_AVATAR', 'no_avatar.png'); //if there is no avatar or profile pic, this file will be used class userquery extends CBCategory { var $userid = ''; var $username = ''; var $level = ''; var $permissions = ''; var $access_type_list = array(); //Access list var $usr_levels = array(); var $signup_plugins = array(); //Signup Plugins var $custom_signup_fields = array(); var $custom_profile_fields = array(); var $custom_profile_fields_groups = array(); var $delete_user_functions = array(); var $user_manager_functions = array(); var $logout_functions = array(); var $init_login_functons = array(); var $user_exist = ''; var $user_account = array(); var $user_sessions = array(); var $profileItem = ''; var $sessions = ''; var $user_sess = ''; //variable which holds current user session var $is_login = false; var $dbtbl = array( 'user_permission_type' => 'user_permission_types', 'user_permissions' => 'user_permissions', 'user_level_permission' => 'user_levels_permissions', 'user_profile' => 'user_profile', 'users' => 'users', 'action_log' => 'action_log', 'subtbl' => 'subscriptions', 'contacts' => 'contacts', ); var $udetails = array(); function userquery() { $this->cat_tbl = 'user_categories'; } function init() { global $sess, $Cbucket; // $this->user_sess = $sess->get('user_sess'); $this->sess_salt = $sess->get('sess_salt'); $this->sessions = $this->get_sessions(); if ($this->sessions['smart_sess']) { $this->userid = $this->sessions['smart_sess']['session_user']; } //$this->level = $sess->get('level'); //Setting Access //Get list Of permission //$perms = $this->get_permissions(); //foreach($perms as $perm) //{ // $this->add_access_type($perm['permission_code'],$perm['permission_name']); //} /* $this->add_access_type('admin_access','Admin Access'); $this->add_access_type('upload_access','Upload Access'); $this->add_access_type('channel_access','Channel Access'); $this->add_access_type('mod_access','Moderator Access'); */ //Fetching List Of User Levels $levels = $this->get_levels(); foreach ($levels as $level) { $this->usr_levels[$level['user_level_id']] = $level["user_level_name"]; } $udetails = ""; if ($this->userid) $udetails = $this->get_user_details($this->userid, true); if ($udetails) { $this->udetails = $udetails; $this->username = $udetails['username']; $this->level = $this->udetails['level']; $this->permission = $this->get_user_level(userid()); //exit(); //Calling Logout Functions $funcs = $this->init_login_functions; if (is_array($funcs) && count($funcs) > 0) { foreach ($funcs as $func) { if (function_exists($func)) { $func(); } } } if ($sess->get("dummy_username") == "") { $this->UpdateLastActive(userid()); } } else { $this->permission = $this->get_user_level(4, TRUE); } //Adding Actions such Report, share,fav etc $this->action = new cbactions(); $this->action->type = 'u'; $this->action->name = 'user'; $this->action->obj_class = 'userquery'; $this->action->check_func = 'user_exists'; $this->action->type_tbl = $this->dbtbl['users']; $this->action->type_id_field = 'userid'; define('AVATAR_SIZE', config('max_profile_pic_width')); define('AVATAR_SMALL_SIZE', 40); define('BG_SIZE', config('max_bg_width')); define('BACKGROUND_URL', config('background_url')); define("USE_GAVATAR", config('gravatars') ? config('gravatars') : false); //Use Gavatar define('BACKGROUND_COLOR', config('background_color')); if (isSectionEnabled('channels')) $Cbucket->search_types['users'] = "userquery"; register_object('u', 'userquery'); register_object('user', 'userquery'); /** * get user latest notifications counts */ $new_notifications = $this->get_new_notifications(); $this->new_messages = $new_notifications['new_messages']; $this->new_notifications = $new_notifications['new_notifications']; $this->new_friend_requests = $new_notifications['new_friend_requests']; } /** * get latest notifications COUNTS from cb_user_notifications table * if row does not exist, create it... */ function get_new_notifications($uid = NUll) { if (!$uid) $uid = userid(); $query = "SELECT * FROM " . tbl("user_notifications"); $query .= " WHERE userid='$uid' "; $query .= " LIMIT 1"; $results = db_select($query); global $db; if ($db->num_rows > 0) { $results = $results[0]; return $results; } else { $fields = array( 'userid' => $uid, ); db_insert(tbl('user_notifications'), $fields); return array( 'new_notifications' => 0, 'new_msgs' => 0, 'new_friends_requests' => 0 ); } } /** * increment in a new notification ;) * * @param INT userid * @param STRING field * */ function new_notify($uid, $field) { $uid = mysql_clean($uid); $field = mysql_clean($field); $array = array( $field => '{{' . $field . '+1' . '}}' ); db_update(tbl('user_notifications'), $array, "userid='$uid' "); global $db; return true; } /** * Function used to create user session key */ function create_session_key($session, $pass) { $newkey = $session . $pass; $newkey = md5($newkey); return $newkey; } /** * Function used to create user session code * just for session authentication incase user wants to login again */ function create_session_code() { $code = rand(10000, 99999); return $code; } /** * Neat and clean function to login user * this function was made for v2.x with User Level System * param VARCHAR $username * param TEXT $password */ function login_user($username, $password, $remember = false) { global $LANG, $sess, $cblog, $db; //Now checking if user exists or not $pass = pass_code($password); $udetails = $this->get_user_with_pass($username, $pass); //Inerting Access Log $log_array = array('username' => $username); //First we will check weather user is already logged in or not if ($this->login_check(NULL, true)) $msg[] = e(lang('you_already_logged')); elseif (!$this->user_exists($username)) $msg[] = e(lang('user_doesnt_exist')); elseif (!$udetails) $msg[] = e(lang('usr_login_err')); elseif (strtolower($udetails['status']) != 'verified') $msg[] = e(lang('Your account is not verified, please verify it by going to activation page')); elseif (strtolower($udetails['active']) != 'yes') $msg[] = e(lang('Your account is not active and requires admin approval')); elseif ($udetails['ban_status'] == 'yes') $msg[] = e(lang('usr_ban_err')); else { $log_array['userid'] = $userid = $udetails['userid']; $log_array['useremail'] = $udetails['email']; $log_array['success'] = 1; $log_array['level'] = $level = $udetails['level']; //Adding Sessing In Database //$sess->add_session($userid,'logged_in'); //$sess->set('username',$username); //$sess->set('userid',$userid); //Setting Timeout if ($remember) $sess->timeout = 86400 * REMBER_DAYS; //Starting special sessions for security $session_salt = RandomString(5); $sess->set('sess_salt', $session_salt); $sess->set('PHPSESSID', $sess->id); $smart_sess = md5($udetails['user_session_key'] . $session_salt); $db->delete(tbl("sessions"), array("session", "session_string"), array($sess->id, "guest")); $sess->add_session($userid, 'smart_sess', $smart_sess); //$sess->set('user_sess',$smart_sess); //$sess->set('user_session_key',$udetails['user_session_key']); //$sess->set('user_session_code',$udetails['user_session_code']); //Setting Vars $this->userid = $udetails['userid']; $this->username = $udetails['username']; $this->level = $udetails['level']; //Updating User last login , num of visist and ip $db->update(tbl('users'), array( 'num_visits', 'last_logged', 'ip' ), array( '|f|num_visits+1', NOW(), $_SERVER['REMOTE_ADDR'] ), "userid='" . $userid . "'" ); $this->init(); //Logging Actiong $cblog->insert('login', $log_array); return true; } //Error Loging if (!empty($msg)) { //Loggin Action $log_array['success'] = no; $log_array['details'] = $msg[0]; $cblog->insert('login', $log_array); } } /** * Function used to check weather user is login or not * it will also check weather user has access or not * @param VARCHAR acess type it can be admin_access, upload_acess etc * you can either set it as level id */ function login_check($access = NULL, $check_only = FALSE, $verify_logged_user = TRUE) { global $LANG, $Cbucket, $sess; if ($verify_logged_user) { //First check weather userid is here or not if (!userid()) { if (!$check_only) e(lang('you_not_logged_in')); return false; } elseif (!$this->session_auth(userid())) { if (!$check_only) e(lang('usr_invalid_session_err')); return false; } //Now Check if logged in user exists or not elseif (!$this->user_exists(userid(), TRUE)) { if (!$check_only) e(lang('invalid_user')); return false; } //Now Check logged in user is banned or not elseif ($this->is_banned(userid()) == 'yes') { if (!$check_only) e(lang('usr_ban_err')); return false; } //Now Check logged in user is active or not elseif ($this->udetails['active'] != 'yes') { if (!$check_only) e(lang('Your account is deactivated')); return false; } } //Now user have passed all the stages, now checking if user has level access or not if ($access) { //$access_details = $this->get_user_level(userid()); $access_details = $this->permission; if (is_numeric($access)) { if ($access_details['level_id'] == $access) { return true; } else { if (!$check_only) e(lang('insufficient_privileges')); $Cbucket->show_page(false); return false; } }else { if ($access_details[$access] == 'yes') { return true; } else { if (!$check_only) { e(lang('insufficient_privileges')); $Cbucket->show_page(false); } return false; } } } else { return true; } } /** * This function was used to check * user is logged in or not -- for v1.7.x and old * it has been replaced by login_check in v2 * this function is sitll in use so * we are just replace the lil code of it */ function logincheck($access = NULL, $redirect = TRUE) { if (!$this->login_check($access)) { if ($redirect == TRUE) redirect_to(BASEURL . signup_link); return false; } else { return true; } } /** * Function used to authenticate user session */ function session_auth($uid) { global $sess; return true; /* if($sess->get('user_session_key') == $ufields['user_session_key'] && $sess->get('user_session_code') == $ufields['user_session_code']) */ if ($this->user_sessions['key'] == '') { $ufields = $this->get_user_fields($uid, 'user_session_key,user_session_code'); //echo test; $this->user_sessions['key'] = $ufields['user_session_key']; $this->user_sessions['code'] = $ufields['user_session_code']; } if ($this->user_sessions['key'] == $sess->get('user_session_key') && $this->user_sessions['code'] == $sess->get('user_session_code') || ( has_access("admin_access") && $sess->get("dummy_username") != "")) return true; else return false; } /** * Function used to get user details using username and password */ function get_user_with_pass($username, $pass) { global $db; $results = $db->select(tbl("users"), "userid,email,level,status,user_session_key,user_session_code,active", "(username='$username' OR userid='$username') AND password='$pass'"); if ($db->num_rows > 0) { return $results[0]; } else { return false; } } /** * Function used to check weather user is banned or not */ function is_banned($uid) { global $db; //echo $this->udetails['ban_status']; if (empty($this->udetails['ban_status']) && userid()) $this->udetails['ban_status'] = $this->get_user_field($uid, 'ban_status'); return $this->udetails['ban_status']; } function admin_check() { return $this->login_check('admin_access'); } /** * Function used to check user is admin or not * @param BOOLEAN if true, after checcking user will be redirected to login page if needed */ function admin_login_check($check_only = false) { if (!has_access('admin_access', true)) { if ($check_only == FALSE) redirect_to('login.php'); return false; }else { return true; } } //This Function Is Used to Logout function logout($page = 'login.php') { global $sess; //Calling Logout Functions $funcs = $this->logout_functions; if (is_array($funcs) && count($funcs) > 0) { foreach ($funcs as $func) { if (function_exists($func)) { $func(); } } } $sess->un_set('sess_salt'); $sess->destroy(); //$sess->remove_session(userid()); } /** * Function used to delete user */ function delete_user($uid) { global $db; if ($this->user_exists($uid)) { $udetails = $this->get_user_details($uid); if (userid() != $uid && has_access('admin_access', true) && $uid != 1) { //list of functions to perform while deleting a video $del_user_funcs = $this->delete_user_functions; if (is_array($del_user_funcs)) { foreach ($del_user_funcs as $func) { if (function_exists($func)) { $func($udetails); } } } //Removing Subsriptions and subscribers $this->remove_user_subscriptions($uid); $this->remove_user_subscribers($uid); //Changing User Videos To Anonymous $db->execute("UPDATE " . tbl("video") . " SET userid='" . $this->get_anonymous_user() . "' WHERE userid='" . $uid . "'"); //Changing User Group To Anonymous $db->execute("UPDATE " . tbl("groups") . " SET userid='" . $this->get_anonymous_user() . "' WHERE userid='" . $uid . "'"); //Deleting User Contacts $this->remove_contacts($uid); //Deleting User PMS $this->remove_user_pms($uid); //Changing From Messages to Anonymous $db->execute("UPDATE " . tbl("messages") . " SET message_from='" . $this->get_anonymous_user() . "' WHERE message_from='" . $uid . "'"); //Finally Removing Database entry of user $db->execute("DELETE FROM " . tbl("users") . " WHERE userid='$uid'"); $db->execute("DELETE FROM " . tbl("user_profile") . " WHERE userid='$uid'"); e(lang("usr_del_msg"), "m"); } else { e(lang("you_cant_delete_this_user")); } } else { e(lang("user_doesnt_exist")); } } /** * Remove all user subscriptions */ function remove_user_subscriptions($uid) { global $db; if (!$this->user_exists($uid)) e(lang("user_doesnt_exist")); elseif (!has_access('admin_access')) e(lang("you_dont_hv_perms")); else { $db->execute("DELETE FROM " . tbl($this->dbtbl['subtbl']) . " WHERE userid='$uid'"); e(lang("user_subs_hv_been_removed"), "m"); } } /** * Remove all user subscribers */ function remove_user_subscribers($uid) { global $db; if (!$this->user_exists($uid)) e(lang("user_doesnt_exist")); elseif (!has_access('admin_access')) e(lang("you_dont_hv_perms")); else { $db->execute("DELETE FROM " . tbl($this->dbtbl['subtbl']) . " WHERE subscribed_to='$uid'"); e(lang("user_subsers_hv_removed"), "m"); } } //Delete User function DeleteUser($id) { return $this->delete_user($id); } //Check User Exists or Not function Check_User_Exists($id, $global = false) { global $db; if ($global) { if (empty($this->user_exist)) { if (is_numeric($id)) $result = $db->count(tbl($this->dbtbl['users']), "userid", " userid='" . $id . "' "); else $result = $db->count(tbl($this->dbtbl['users']), "userid", " username='" . $id . "' "); if ($result > 0) { $this->user_exist = 'yes'; } else { $this->user_exist = 'no'; } } if ($this->user_exist == 'yes') return true; else return false; }else { if (is_numeric($id)) { $query = " SELECT userid FROM " . tbl('users') . " WHERE userid='$id' LIMIT 1"; } else { $query = " SELECT userid FROM " . tbl('users') . " WHERE username='$id' LIMIT 1"; } $results = db_select($query); if ($results) { return $results[0]['userid']; } else { return false; } } } function user_exists($username, $global = false) { return $this->Check_User_Exists($username, $global); } /** * Function used to get user details using userid */ function get_user_details($id = NULL, $checksess = false, $profile = false, $cond = NULL) { global $db, $sess; if ($profile === true) { $join = " LEFT JOIN " . tbl('user_profile') . " ON " . tbl('users.userid') . ' = ' . tbl('user_profile.userid'); } /* if(!$id) $id = userid(); */ if (is_numeric($id)) $results = $db->select(tbl('users') . $join, '*', " " . tbl('users.userid') . " ='$id'"); else $results = $db->select(tbl('users') . $join, '*', " " . tbl('users.username') . "='" . $id . "' OR " . tbl('users.email') . "='" . $id . "'"); $udetails = $results[0]; if (!$checksess) return $udetails; else { $session = $this->sessions['smart_sess']; $udetails['user_session_key']; $smart_sess = md5($udetails['user_session_key'] . $sess->get('sess_salt')); if ($smart_sess == $session['session_value']) { $this->is_login = true; return $udetails; }else return false; } } function get($uid, $cond = NULL) { return $this->get_user_details($uid, false, false, $cond); } /** * * @param type $id * @return type */ function GetUserData($id = NULL) { return $this->get_user_details($id); } //Function Used To Activate User function activate_user_with_avcode($user, $avcode) { global $eh; $data = $this->get_user_details($user); if (!$data || !$user) e(lang("usr_exist_err")); elseif ($data['status'] == 'verified') e(lang('usr_activation_err')); elseif ($data['ban_status'] == 'yes') e(lang('ban_status')); elseif ($data['avcode'] != $avcode) e(lang('avcode_incorrect')); else { $this->action('activate', $data['userid']); $eh->flush(); e(lang("usr_activation_msg"), "m"); if ($data['welcome_email_sent'] == 'no') $this->send_welcome_email($data, TRUE); } } /** * Function used to send activation code * to user * @param : $usenrma,$email or $userid */ function send_activation_code($email) { global $db, $cbemail; $udetails = $this->get_user_details($email); if (!$udetails || !$email) e(lang("usr_exist_err")); elseif ($udetails['status'] == 'verified') e(lang('usr_activation_err')); elseif ($udetails['ban_status'] == 'yes') e(lang('ban_status')); else { $tpl = $cbemail->get_template('avcode_request_template'); $more_var = array ('{username}' => $udetails['username'], '{email}' => $udetails['email'], '{avcode}' => $udetails['avcode'] ); if (!is_array($var)) $var = array(); $var = array_merge($more_var, $var); $subj = $cbemail->replace($tpl['email_template_subject'], $var); $msg = nl2br($cbemail->replace($tpl['email_template'], $var)); //Now Finally Sending Email cbmail(array('to' => $udetails['email'], 'from' => SUPPORT_EMAIL, 'subject' => $subj, 'content' => $msg)); e(lang('usr_activation_em_msg'), "m"); } } function SendActivation($email) { return $this->send_activation_code($email); } /** * Function used to send welcome email */ function send_welcome_email($user, $update_email_status = FALSE) { global $db, $cbemail; if (!is_array($user)) $udetails = $this->get_user_details($user); else $udetails = $user; if (!$udetails) e(lang("usr_exist_err")); else { $tpl = $cbemail->get_template('welcome_message_template'); $more_var = array ('{username}' => $udetails['username'], '{email}' => $udetails['email'], ); if (!is_array($var)) $var = array(); $var = array_merge($more_var, $var); $subj = $cbemail->replace($tpl['email_template_subject'], $var); $msg = nl2br($cbemail->replace($tpl['email_template'], $var)); //Now Finally Sending Email cbmail(array('to' => $udetails['email'], 'from' => WELCOME_EMAIL, 'subject' => $subj, 'content' => $msg)); if ($update_email_status) $db->update(tbl($this->dbtbl['users']), array('welcome_email_sent'), array("yes"), " userid='" . $udetails['userid'] . "' "); } } /** * Function used to change user password */ function ChangeUserPassword($array) { global $db; $old_pass = $array['old_pass']; $new_pass = $array['new_pass']; $c_new_pass = $array['c_new_pass']; $uid = $array['userid']; if (!$this->get_user_with_pass($uid, pass_code($old_pass))) e(lang('usr_pass_err')); elseif (empty($new_pass)) e(lang('usr_pass_err2')); elseif ($new_pass != $c_new_pass) e(lang('usr_cpass_err1')); else { $db->update(tbl($this->dbtbl['users']), array('password'), array(pass_code($array['new_pass'])), " userid='" . $uid . "'"); e(lang("usr_pass_email_msg"), "m"); } return $msg; } function change_user_pass($array) { return $this->ChangeUserPassword($array); } function change_password($array) { return $this->ChangeUserPassword($array); } /** * Function used to add contact * * @deprecated since 3 */ function add_contact($uid, $fid) { return $this->add_friend_request($uid, $fid); // Deprecated global $cbemail, $db; $friend = $this->get_user_details($fid); $sender = $this->get_user_details($uid); if (!$friend) e(lang('usr_exist_err')); elseif ($this->is_requested_friend($uid, $fid)) e(lang("you_already_sent_frend_request")); elseif ($this->is_requested_friend($uid, $fid, "in")) { $this->confirm_friend($fid, $uid); e(lang("friend_added")); } elseif ($uid == $fid) { e(lang("friend_add_himself_error")); } else { $db->insert(tbl($this->dbtbl['contacts']), array('userid', 'contact_userid', 'date_added', 'request_type'), array($uid, $fid, now(), 'out')); $insert_id = $db->insert_id(); e(lang("friend_request_sent"), "m"); //Sending friendship request email $tpl = $cbemail->get_template('friend_request_email'); $more_var = array ( '{reciever}' => $friend['username'], '{sender}' => $sender['username'], '{sender_link}' => $this->profile_link($sender), '{request_link}' => BASEURL . '/manage_contacts.php?mode=request&confirm=' . $uid ); if (!is_array($var)) $var = array(); $var = array_merge($more_var, $var); $subj = $cbemail->replace($tpl['email_template_subject'], $var); $msg = nl2br($cbemail->replace($tpl['email_template'], $var)); //Now Finally Sending Email cbmail(array('to' => $friend['email'], 'from' => WEBSITE_EMAIL, 'subject' => $subj, 'content' => $msg)); } } /** * Function used to check weather users are confirmed friends or not */ function is_confirmed_friend($uid, $fid) { global $db; $count = $db->count(tbl($this->dbtbl['contacts']), "contact_id", " (userid='$uid' AND contact_userid='$fid') OR (userid='$fid' AND contact_userid='$uid') AND confirmed='yes'"); if ($count[0] > 0) return true; else return false; } /** * function used to check friend * * @global type $db * @param type $uid * @param type $fid * @return boolean */ function is_friend($uid, $fid) { $uid = mysql_clean($uid); $fid = mysql_clean($fid); $query = "SELECT contact_id FROM " . tbl('contacts'); $query .= " WHERE userid='$uid' AND contact_userid='$fid' "; $query .= " LIMIT 1"; $results = db_select($query); if ($results) return true; else return false; } /** * Function used to check weather user has already requested friendship or not * * @deprecated since v3 */ function is_requested_friend($uid, $fid, $type = 'out', $confirm = NULL) { global $db; $query = ""; if ($confirm) $query = " AND confirmed='$confirm' "; if ($type == 'out') $count = $db->count(tbl($this->dbtbl['contacts']), "contact_id", " userid='$uid' AND contact_userid='$fid' $query"); else $count = $db->count(tbl($this->dbtbl['contacts']), "contact_id", " userid='$fid' AND contact_userid='$uid' $query"); if ($count[0] > 0) return true; else return false; } /** * Function used to confirm friend * * @param INT $uid Userid of one who is confirming * @param INT $rid Request ID * * @return INT $cid Contact ID */ function confirm_friend($uid, $rid, $msg = TRUE) { global $cbemail, $db; $uid = mysql_clean($uid); $request = $this->get_request($rid); if (!$request) { if ($msg) e(lang("There was no friend request")); return false; } if ($request['friend_id'] != $uid) { if ($msg) e(lang('Friend request was not for you')); return false; } //Get friend information $fid = $request['userid']; $friend = get_basic_user_details($fid); if ($uid == userid()) $me = $this->udetails; else $me = get_basic_user_details($uid); if (!$friend) { if ($msg) e(lang('Friend seems missing')); return false; } //Our system will add two rows.. $me_fields = array( 'userid' => $uid, 'contact_userid' => $friend['userid'], 'confirmed' => 'yes', 'request_type' => 'in', 'date_added' => now() ); $cid = db_insert(tbl('contacts'), $me_fields); $friend_fields = array( 'userid' => $friend['userid'], 'contact_userid' => $uid, 'confirmed' => 'yes', 'request_type' => 'out', 'date_added' => now() ); db_insert(tbl('contacts'), $friend_fields); //Now we are going add a feed global $cbfeeds; $me_feed = array( 'action' => 'added_friend', 'user' => $me, 'userid' => $uid, 'object' => $friend, 'object_id' => $fid, 'object_type' => 'user', 'is_activity' => 'yes' ); $me_feed_id = $cbfeeds->add_feed($me_feed); //Now add feed for other user.. $friend_feed = array( 'action' => 'added_friend', 'user' => $friend, 'userid' => $fid, 'object' => $me, 'object_id' => $uid, 'object_type' => 'user', 'is_activity' => 'yes' ); $friend_feed_id = $cbfeeds->add_feed($friend_feed); //Now send notification to the friend that me has accepted your friend request $notify_array = array( 'userid' => $fid, 'actor' => $me, 'actor_id' => $uid, 'action' => 'confirmed_friend' ); $cbfeeds->add_notification($notify_array); //Now finally remove any friend requests... $query = " DELETE FROM " . tbl('friend_requests'); $query .= " WHERE (userid='$fid' AND friend_id='$uid') OR "; $query .= " (friend_id='$fid' AND userid='$uid' ) "; $db->execute($query); if ($msg) e(sprintf(lang('%s has been confirmed as friend'), name($friend)), 'm'); if ($cid) { return $cid; } } /** * Ingnoring a friend request...hmm hide it basically * * @param INT $uid User ID of one who is ignoring * @param INT $rid Request ID * @return BOOLEAN */ function ignore_friend($uid, $rid) { $uid = mysql_clean($uid); $request = $this->get_request($rid); if (!$request) { if ($msg) e(lang("There was no friend request")); return false; } if ($request['friend_id'] != $uid) { if ($msg) e(lang('Friend request was not for you')); return false; } $fields = array( 'ignored' => 'yes' ); $fid = $request['userid']; db_update(tbl('friend_requests'), $fields, " userid='$fid' AND friend_id='$uid' "); e(lang('Request will be hidden now'), "m"); return true; } /** * Function used to confirm request * * @deprecated since v3 * use this::confirm_friend(); instead */ function confirm_request($rid, $uid = NULL) { global $db; if (!$uid) $uid = userid(); $result = $db->select(tbl($this->dbtbl['contacts']), "*", " userid='$rid' AND contact_userid='$uid' "); $result = $result[0]; if ($db->num_rows == 0) e(lang("friend_request_not_found")); elseif ($uid != $result['contact_userid']) e(lang("you_cant_confirm_this_request")); elseif ($result['confirmed'] == 'yes') e(lang("friend_request_already_confirmed")); else { $this->confirm_friend($uid, $result['userid']); } } /** * Function used to get user contacts */ function get_contacts($uid, $group = 0, $confirmed = NULL, $count_only = false, $type = NULL) { global $db; $uid = mysql_clean($uid); $group = mysql_clean($group); if (!$confirmed) $confirmed = 'yes'; $query = ""; if ($confirmed) $query_cond .= " AND c.confirmed='$confirmed' "; if ($type) $query_cond .= " AND c.request_type='$type' "; if (!$count_only) { $fields_arr = array( 'c' => array('contact_userid', 'confirmed', 'date_added', 'contact_group_id'), 'u' => get_user_fields(), ); $fields = tbl_fields($fields_arr); $query = " SELECT " . $fields . " FROM " . tbl('contacts') . " AS c"; $query .= " LEFT JOIN " . tbl('users') . " AS u "; $query .= " ON c.contact_userid=u.userid "; $query .= " WHERE c.userid='$uid' $query_cond "; $query .= " AND c.contact_group_id='$group' "; $results = db_select($query); //echo $db->db_query; if ($db->num_rows > 0) return $results; else return false; }else { $count = $db->count(tbl("contacts"), tbl("contacts.contact_userid"), tbl("contacts.userid") . "='$uid' $query AND " . tbl("contacts") . ".contact_group_id='$group' "); return $count; } } /** * Function used to get pending contacts * * @deprecated since v3 */ function get_pending_contacts($uid, $group = 0, $count_only = false) { global $db; $fields_arr = array( 'c' => array( 'contact_id', 'userid', 'contact_userid', 'date_added' ), 'u' => array( 'userid', 'username', 'email', 'first_name', 'last_name', 'avatar', 'avatar_url' ), ); $fields = ''; foreach ($fields_arr as $tbl => $tbl_fields) { foreach ($tbl_fields as $tbl_field) { if ($fields) $fields .=', '; $fields .= $tbl . '.' . $tbl_field; } } if (!$count_only) { $query = "SELECT " . $fields . " FROM " . tbl('contacts') . " AS c "; $query .= " LEFT JOIN " . tbl('users') . " AS u"; $query .= " ON c.userid = u.userid "; $query .= " WHERE c.contact_userid='$uid' "; $query .= " AND c.confirmed='no' AND c.contact_group_id='$group' "; $result = db_select($query); if ($db->num_rows > 0) return $result; else return false; }else { $count = $db->count(tbl("contacts"), tbl("contacts.contact_userid"), tbl("contacts.contact_userid") . "='$uid' AND " . tbl("contacts.confirmed") . "='no' AND " . tbl("contacts") . ".contact_group_id='$group' "); //echo $db->db_query; return $count; } } /** * Function used to get pending contacts */ function get_requested_contacts($uid, $group = 0) { global $db; $result = $db->select(tbl($this->dbtbl['contacts']), "*", " contact_userid='$uid' AND confirmed='no' AND contact_group_id='$group' "); if ($db->num_rows > 0) return $result; else return false; } /** * Function used to remove user from contact list * * @param INT fid {id of friend that user wants to remove} * @param INT uid {id of user who is removing other from friendlist} * */ function remove_contact($fid, $uid = NULL) { global $db; $fid = mysql_clean($fid); if ($uid) $uid = mysql_clean($uid); $friend = get_basic_user_details($fid); if (!$friend) { e(lang('Invalid user')); return false; } if (!$uid) $uid = userid(); if (!$this->is_friend($fid, $uid)) { e(sprintf(lang('You and %s are not friends'), name($friend))); return false; } else { $query = " DELETE FROM " . tbl('contacts'); $query .= " WHERE (userid='$uid' AND contact_userid='$fid')"; $query .= " OR (userid='$fid' AND contact_userid='$uid') "; $db->execute($query); //Concating Notification Query $query = " DELETE FROM " . tbl('notifications'); $query .= " WHERE action='confirmed_friend' "; $query .= " AND ((actor_id='$uid' AND userid='$fid')) "; $query .= " OR ((actor_id='$fid' AND userid='$uid')) "; //$query .= " LIMIT 1;"; $db->execute($query); //Concating Feeds query $query = " DELETE FROM " . tbl('feeds'); $query .= " WHERE action='added_friend' "; $query .= " AND ((userid='$uid' AND object_id='$fid' AND object_type='user')) "; $query .= " OR ((userid='$fid' AND object_id='$uid' AND object_type='user')) "; //$query .= " LIMIT 2;"; $db->execute($query); return true; } } function unfriend($fid, $uid) { return $this->remove_contact($fid, $uid); } /** * Funcion used to increas user total_watched field */ function increment_watched_vides($userid) { global $db; $db->update(tbl($this->dbtbl['users']), array('total_watched'), array('|f|total_watched+1'), " userid='$userid'"); } /** * Old Function : GetNewMsgs * This function is used to get user messages * @param : user * @param : sent/inbox * @param : count (TRUE : FALSE) */ function get_pm_msgs($user, $box = 'inbox', $count = FALSE) { global $db, $eh, $LANG; if (!$user) $user = user_id(); if (!user_id()) { $eh->e(lang('you_not_logged_in')); } else { switch ($box) { case 'inbox': default: $boxtype = 'inbox'; break; case 'sent': case 'outbox': $boxtype = 'outbox'; break; } if ($count) $status_query = " AND status = '0' "; $results = $db->select(tbl("messages"), " message_id ", "(" . $boxtype . "_user = '$user' OR " . $boxtype . "_user_id = '$user') $status_query"); if ($db->num_rows > 0) { if ($count) return $db->num_rows; else return $results; } else { return false; } } } function GetNewMsgs($user) { $msgs = $this->get_pm_msgs($user, 'inbox', TRUE); if ($msgs) return $msgs; else return 0; } /** * Function used to subscribe user */ function subscribe_user($to, $user = NULL) { if (!$user) $user = userid(); global $db; $to_user = $this->get_user_details($to); if (!$this->user_exists($to)) e(lang('usr_exist_err')); elseif (!$user) e(sprintf(lang('please_login_subscribe'), $to_user['username'])); elseif ($this->is_subscribed($to, $user)) e(sprintf(lang("usr_sub_err"), $to_user['username'])); elseif ($to_user['userid'] == $user) e(lang("you_cant_sub_yourself")); else { $db->insert(tbl($this->dbtbl['subtbl']), array('userid', 'subscribed_to', 'date_added'), array($user, $to, NOW())); $db->update(tbl($this->dbtbl['users']), array('subscribers'), array($this->get_user_subscribers($to, true)), " userid='$to' "); $db->update(tbl($this->dbtbl['users']), array('total_subscriptions'), array($this->get_user_subscriptions($user, 'count')), " userid='$user' "); //Loggin Comment $log_array = array ( 'success' => 'yes', 'details' => "subsribed to " . $to_user['username'], 'action_obj_id' => $to_user['userid'], 'action_done_id' => $db->insert_id(), ); insert_log('subscribe', $log_array); e(sprintf(lang('usr_sub_msg'), $to_user['username']), 'm'); } } function SubscribeUser($sub_user, $sub_to) { return $this->subscribe_user($sub_to, $sub_user); } /** * Function used to check weather user is already subscribed or not */ function is_subscribed($to, $user = NULL) { if (!$user) $user = userid(); global $db; if (!$user) return false; $result = $db->select(tbl($this->dbtbl['subtbl']), "*", " subscribed_to='$to' AND userid='$user'"); if ($db->num_rows > 0) return $result; else return false; } /** * Function used to remove user subscription */ function remove_subscription($subid, $uid = NULL) { global $db; if (!$uid) $uid = userid(); if ($this->is_subscribed($subid, $uid)) { $db->execute("DELETE FROM " . tbl($this->dbtbl['subtbl']) . " WHERE userid='$uid' AND subscribed_to='$subid'"); e(lang("class_unsub_msg"), "m"); $db->update(tbl($this->dbtbl['users']), array('subscribers'), array($this->get_user_subscribers($subid, true)), " userid='$subid' "); $db->update(tbl($this->dbtbl['users']), array('total_subscriptions'), array($this->get_user_subscriptions($uid, 'count')), " userid='$uid' "); return true; }else e(lang("you_not_subscribed")); return false; } function unsubscribe_user($subid, $uid = NULL) { return $this->remove_subscription($subid, $uid); } /** * Function used to get user subscibers * @param userid */ function get_user_subscribers($id, $count = false, $limit = NULL, $order = " date_added DESC") { global $db; if (!$count) { $result = $db->select(tbl('subscriptions'), "*", " subscribed_to='$id' "); if ($db->num_rows > 0) return $result; else return false; }else { return $db->count(tbl($this->dbtbl['subtbl']), "subscription_id", " subscribed_to='$id' ", $limit, $order); } } /** * function used to get user subscribers with details */ function get_user_subscribers_detail($id, $count = false, $limit = NULL, $order = " date_added DESC") { global $db; $result = $db->select(tbl("users," . $this->dbtbl['subtbl']), "*", " " . tbl("subscriptions.subscribed_to") . " = '$id' AND " . tbl("subscriptions.userid") . "=" . tbl("users.userid"), $limit); if ($db->num_rows > 0) return $result; else return false; } /** * Function used to get user subscriptions */ function get_user_subscriptions($id, $limit = NULL) { global $db; if ($limit != 'count') { $result = $db->select(tbl("users," . $this->dbtbl['subtbl']), "*", " " . tbl("subscriptions.userid") . " = '$id' AND " . tbl("subscriptions.subscribed_to") . "=" . tbl("users.userid"), $limit); if ($db->num_rows > 0) return $result; else return false; }else { $result = $db->count(tbl($this->dbtbl['subtbl']), "subscription_id", " userid = '$id'"); return $result; } } /** * Function used to reset user password * it has two steps * 1 to send confirmation * 2 to reset the password */ function reset_password($step, $input, $code = NULL) { global $cbemail, $db; switch ($step) { case 1: { $udetails = $this->get_user_details($input); if (!$udetails) e(lang('usr_exist_err')); //verifying captcha... elseif (!verify_captcha()) e(lang('usr_ccode_err')); else { //Sending confirmation email $tpl = $cbemail->get_template('password_reset_request'); if (!$udetails['avcode']) { $avcode = RandomString(10); $db->update(tbl($this->dbtbl['users']), array('avcode'), array($avcode), " userid='" . $udetails['userid'] . "'"); } $more_var = array ('{username}' => $udetails['username'], '{email}' => $udetails['email'], '{avcode}' => $udetails['avcode'], '{userid}' => $udetails['userid'], ); if (!is_array($var)) $var = array(); $var = array_merge($more_var, $var); $subj = $cbemail->replace($tpl['email_template_subject'], $var); $msg = nl2br($cbemail->replace($tpl['email_template'], $var)); //Now Finally Sending Email cbmail(array('to' => $udetails['email'], 'from' => WEBSITE_EMAIL, 'subject' => $subj, 'content' => $msg)); e(lang('usr_rpass_email_msg'), "m"); return true; } } break; case 2: { $udetails = $this->get_user_details($input); if (!$udetails) e(lang('usr_exist_err')); //verifying captcha... elseif ($udetails['avcode'] != $code) e(lang('usr_ccode_err')); else { $newpass = RandomString(6); $pass = pass_code($newpass); $avcode = RandomString(10); $db->update(tbl($this->dbtbl['users']), array('password', 'avcode'), array($pass, $avcode), " userid='" . $udetails['userid'] . "'"); //sending new password email... //Sending confirmation email $tpl = $cbemail->get_template('password_reset_details'); $more_var = array ('{username}' => $udetails['username'], '{email}' => $udetails['email'], '{avcode}' => $udetails['avcode'], '{userid}' => $udetails['userid'], '{password}' => $newpass, ); if (!is_array($var)) $var = array(); $var = array_merge($more_var, $var); $subj = $cbemail->replace($tpl['email_template_subject'], $var); $msg = nl2br($cbemail->replace($tpl['email_template'], $var)); //Now Finally Sending Email cbmail(array('to' => $udetails['email'], 'from' => WEBSITE_EMAIL, 'subject' => $subj, 'content' => $msg)); e(lang('usr_pass_email_msg'), 'm'); return true; } } break; } } /** * Function used to recover username */ function recover_username($email) { global $cbemail; $udetails = $this->get_user_details($email); if (!$udetails) e(lang('no_user_associated_with_email')); elseif (!verify_captcha()) e(lang('usr_ccode_err')); else { $tpl = $cbemail->get_template('forgot_username_request'); $more_var = array ( '{username}' => $udetails['username'], ); if (!is_array($var)) $var = array(); $var = array_merge($more_var, $var); $subj = $cbemail->replace($tpl['email_template_subject'], $var); $msg = nl2br($cbemail->replace($tpl['email_template'], $var)); //Now Finally Sending Email cbmail(array('to' => $udetails['email'], 'from' => SUPPORT_EMAIL, 'subject' => $subj, 'content' => $msg)); e(lang("usr_uname_email_msg"), 'm'); } return $msg; } //FUNCTION USED TO UPDATE LAST ACTIVE FOR OF USER // @ Param : username function UpdateLastActive($username) { global $db; $sql = "UPDATE " . tbl("users") . " SET last_active = '" . NOW() . "' WHERE username='" . $username . "' OR userid='" . $username . "' "; $db->Execute($sql); } /** * FUNCTION USED TO GE USER THUMBNAIL * @param : thumb file * @param : size (NULL,small) */ function getUserThumb($udetails, $size = '', $uid = NULL, $just_file = false) { $remote = false; if (empty($udetails['userid']) && $uid) $udetails = $this->get_user_details($uid); //$thumbnail = $udetails['avatar'] ? $udetails['avatar'] : NO_AVATAR; $thumbnail = $udetails['avatar']; $thumb_file = USER_THUMBS_DIR . '/' . $thumbnail; if (file_exists($thumb_file) && $thumbnail) $thumb = USER_THUMBS_URL . '/' . $thumbnail; elseif (!empty($udetails['avatar_url'])) { $thumb = $udetails['avatar_url']; $remote = true; } else { if (!USE_GAVATAR) $thumb_file = $this->get_default_thumb(); else { switch ($size) { case "small": { $thesize = AVATAR_SMALL_SIZE; $default = $this->get_default_thumb('small'); } break; default: { $thesize = AVATAR_SIZE; $default = $this->get_default_thumb(); } } $email = $udetails['email']; $email = $email ? $email : $udetails['anonym_email']; $gravatar = new Gravatar($email, $default); $gravatar->size = $thesize; $gravatar->rating = "G"; $gravatar->border = "FF0000"; $thumb = $gravatar->getSrc(); //echo $gravatar->toHTML(); } } $ext = GetExt($thumb_file); $file = getName($thumb_file); if (!$remote) { if (!empty($size) && !$thumb) $thumb = $this->get_default_thumb('small'); elseif (!$thumb) $thumb = $this->get_default_thumb(); } if ($just_file) return $file . '.' . $ext; return $thumb; } function avatar($udetails, $size = '', $uid = NULL) { return $this->getUserThumb($udetails, $size, $uid); } /** * Function used to get default user thumb */ function get_default_thumb($size = NULL) { if ($size == "small" && file_exists(TEMPLATEDIR . '/images/thumbs/no_avatar-small.png')) { return TEMPLATEURL . '/images/thumbs/no_avatar-small.png'; } elseif (file_exists(TEMPLATEDIR . '/images/thumbs/no_avatar.png') && !$size) { return TEMPLATEURL . '/images/thumbs/no_avatar.png'; } else { if ($size == 'small') return USER_THUMBS_URL . '/' . getName(NO_AVATAR) . '-small.' . getExt(NO_AVATAR); else return USER_THUMBS_URL . '/' . NO_AVATAR; } } /** * Function used to get user Background * @param : bg file */ function getUserBg($udetails, $check = false) { $remote = false; if (empty($udetails['userid'])) $udetails = $this->get_user_details($uid); //$thumbnail = $udetails['avatar'] ? $udetails['avatar'] : 'no_avatar.jpg'; $file = $udetails['background']; $bgfile = USER_BG_DIR . '/' . $file; if (file_exists($bgfile) && $file) $thumb_file = USER_BG_URL . '/' . $file; elseif (!empty($udetails['background_url']) && BACKGROUND_URL == 'yes') { $thumb_file = $udetails['background_url']; $remote = true; } elseif (!empty($udetails['background_color']) && BACKGROUND_COLOR == 'yes' && $check) { return true; }else return false; return $thumb_file; } /** * Function used to get user subscriber's list * @param VARCHAR//INT username or userid , both works fine */ function get_user_subscriber($username) { global $db; $results = $db->Execute("SELECT * FROM " . tbl("subscriptions") . " WHERE subsctibe_to='$username'"); if ($results->recordcount() > 0) return $results->getrows(); else return false; } /** * Function used to get user field * @ param INT userid * @ param FIELD name */ function get_user_field($uid, $field) { global $db; if (is_numeric($uid)) $results = $db->select(tbl('users'), $field, "userid='$uid'"); else $results = $db->select(tbl('users'), $field, "username='$uid'"); if ($db->num_rows > 0) { return $results[0]; } else { return false; } } function get_user_fields($uid, $field) { return $this->get_user_field($uid, $field); } /** * This function will return * user field without array */ function get_user_field_only($uid, $field) { $fields = $this->get_user_field($uid, $field); return $fields[$field]; } /** * Function used to get user level and its details * @param INT userid */ function get_user_level($uid, $is_level = false) { global $db; if ($is_level) { $level = $uid; } else { $level = $this->udetails['level']; } $result = $db->select(tbl('user_levels,user_levels_permissions'), '*', tbl("user_levels_permissions.user_level_id") . "='" . $level . "' AND " . tbl("user_levels_permissions.user_level_id") . " = " . tbl("user_levels.user_level_id")); /* pr($result); $results = $db->select(tbl('user_levels'),'*'," user_level_id='".$level['level']."'"); if($db->num_rows == 0) //incase user level is not valid, it will consider it as registered user $u_level['user_level_id'] = 3; else $u_level = $results[0]; //Now Getting Access Details $access_results = $db->select("user_levels_permissions","*", "user_level_id = '".$u_level['user_level_id']."'"); $a_results = $access_results[0]; */ //Now Merging the two arrays $user_level = $result[0]; //pr($user_level); return $user_level; } /** * Function used to get all levels * @param : filter */ function get_levels($filter = NULL) { global $db; $results = $db->select(tbl("user_levels"), "*", NULL, NULL, " user_level_id ASC"); if ($db->num_rows > 0) { return $results; } else { return false; } } /** * Function used to get level details * @param : level_id INT */ function get_level_details($lid) { global $db; $results = $db->select(tbl("user_levels"), "*", " user_level_id='$lid' "); if ($db->num_rows > 0) { return $results[0]; } else { e(lang("cant_find_level")); return false; } } /** * Function used to get users of particular level * @param : level_id * @param : count BOOLEAN (if TRUE it will return NUMBERS) */ function get_level_users($id, $count = FALSE, $fields = "level") { global $db; if ($fields == "all") $fields = "*"; $results = $db->select(tbl("users"), $fields, " level='$id'"); if ($db->num_rows > 0) { if ($count) return $db->num_rows; else return $results; }else { return 0; } } /** * Function used to add user level */ function add_user_level($array) { global $db; if (!is_array($array)) $array = $_POST; $level_name = mysql_clean($array['level_name']); if (empty($level_name)) e(lang("please_enter_level_name")); else { $db->insert(tbl("user_levels"), array('user_level_name'), array($level_name)); $iid = $db->insert_id(); $fields_array[] = 'user_level_id'; $value_array[] = $iid; foreach ($this->get_access_type_list() as $access => $name) { $fields_array[] = $access; $value_array[] = $array[$access] ? $array[$access] : 'no'; } if (isset($_POST['plugin_perm'])) { $fields_array[] = 'plugins_perms'; $value_array[] = '|no_mc|' . json_encode($_POST['plugin_perm']); } $db->insert(tbl("user_levels_permissions"), $fields_array, $value_array); return true; } } /** * Function usewd to get level permissions */ function get_level_permissions($id) { global $db; $results = $db->select(tbl("user_levels_permissions"), "*", " user_level_id = '$id'"); if ($db->num_rows > 0) return $results[0]; else return false; } /** * Function used to get custom permissions */ function get_access_type_list() { if (!$this->access_type_list) { $perms = $this->get_permissions(); foreach ($perms as $perm) { $this->add_access_type($perm['permission_code'], $perm['permission_name']); } } return $this->access_type_list; } /** * Function used to add new custom permission */ function add_access_type($access, $name) { if (!empty($access) && !empty($name)) $this->access_type_list[$access] = $name; } /** * Function get access */ function get_access($access) { return $this->access_type_list[$access]; } /** * Function used to update user level * @param INT level_id * @param ARRAY perm_level */ function update_user_level($id, $array) { global $db; if (!is_array($array)) $array = $_POST; //First Checking Level $level = $this->get_level_details($id); if ($level) { foreach ($this->get_access_type_list() as $access => $name) { $fields_array[] = $access; $value_array[] = $array[$access]; } //Checking level Name if (!empty($array['level_name'])) { $level_name = mysql_clean($array['level_name']); //Upadting Now $db->update(tbl("user_levels"), array("user_level_name"), array($level_name), " user_level_id = '$id'"); } if (isset($_POST['plugin_perm'])) { $fields_array[] = 'plugins_perms'; $value_array[] = '|no_mc|' . json_encode($_POST['plugin_perm']); } //Updating Permissions $db->update(tbl("user_levels_permissions"), $fields_array, $value_array, " user_level_id = '$id'"); e(lang("level_updated"), 'm'); return true; } else { return false; } } /** * Function used to delete user levels * @param INT level_id */ function delete_user_level($id) { global $db; $level_details = $this->get_level_details($id); $de_level = $this->get_level_details(3); if ($level_details) { //CHeck if leve is deleteable or not if ($level_details['user_level_is_default'] == 'no') { $db->delete(tbl("user_levels"), array("user_level_id"), array($id)); $db->delete(tbl("user_levels_permissions"), array("user_level_id"), array($id)); e(sprintf(lang("level_del_sucess"), $de_level['user_level_name'])); $db->update(tbl("users"), array("level"), array(3), " level='$id'"); return true; } else { e(lang("level_not_deleteable")); return false; } } } /** * Function used to count total video comments */ function count_profile_comments($id) { global $db; $total_comments = $db->count(tbl('comments'), "comment_id", "type='c' AND type_id='$id'"); return $total_comments; } function count_channel_comments($id) { return $this->count_profile_comments($id); } /** * Function used to count total comments made by users */ function count_comments_by_user($uid) { global $db; $total_comments = $db->count(tbl('comments'), "comment_id", "userid='$uid'"); return $total_comments; } /** * Function used to update user comments */ function update_comments_by_user($uid) { global $db; $total_comments = $this->count_comments_by_user($id); $db->update(tbl("users"), array("total_comments", "last_commented"), array($total_comments, now()), " userid='$id'"); } /** * Function used to update user comments count */ function update_comments_count($id) { global $db; $total_comments = $this->count_profile_comments($id); $db->update(tbl("users"), array("comments_count", "last_commented"), array($total_comments, now()), " userid='$id'"); } /** * Function used to add comment on users profile */ function add_comment($comment, $obj_id, $reply_to = NULL, $type = 'c') { global $myquery; if (!$this->user_exists($obj_id)) e(lang("usr_exist_err")); else { $add_comment = $myquery->add_comment($comment, $obj_id, $reply_to, $type, $obj_id); } if ($add_comment) { //Loggin Comment $log_array = array ( 'success' => 'yes', 'details' => "comment on a profile", 'action_obj_id' => $obj_id, 'action_done_id' => $add_comment, ); insert_log('profile_comment', $log_array); //Updating Number of comments of video $this->update_comments_count($obj_id); } return $add_comment; } /** * Function used to remove video comment */ function delete_comment($cid, $is_reply = FALSE) { global $myquery, $db; $remove_comment = $myquery->delete_comment($cid, 'c', $is_reply); if ($remove_comment) { //Updating Number of comments of video $this->update_comments_count($obj_id); } return $remove_comment; } /** * Function used to get number of videos uploaded by user * @param INT userid * @param Conditions */ function get_user_vids($uid, $cond = NULL, $count_only = false) { global $db; if ($cond != NULL) $cond = " AND $cond "; $results = $db->select(tbl("video"), "*", " userid = '$uid' $cond"); if ($db->num_rows > 0) { if ($count_only) return $db->num_rows; else return $results[0]; }else { return false; } } /** * Function used to get logged in username */ function get_logged_username() { return $this->get_user_field_only(user_id(), 'username'); } /** * FUnction used to get username from userid */ function get_username($uid) { return $this->get_user_field_only($uid, 'username'); } /** * Function used to create profile link */ function profile_link($udetails) { if (!is_array($udetails) && is_numeric($udetails)) $udetails = $this->get_user_details($udetails); if (SEO != "yes") return BASEURL . '/view_channel.php?user=' . $udetails['username']; else { if (config('channel_seo') == 'b') return BASEURL . '/' . $udetails['username']; else return BASEURL . '/user/' . $udetails['username']; } } function get_link($udetails, $cond = NULL) { return $this->profile_link($udetails); } function get_user_link($u) { return $this->profile_link($u); } /** * Function used to get permission types */ function get_level_types() { global $db; return $db->select(tbl($this->dbtbl['user_permission_type']), "*"); } /** * Function used to check weather level type exists or not */ function level_type_exists($id) { global $db; $result = $db->select(tbl($this->dbtbl['user_permission_type']), "*", " user_permission_type_id='" . $id . "' OR user_permission_type_name='$id'"); if ($db->num_rows > 0) return $result[0]; else return false; } /** * Function used to add new permission */ function add_new_permission($array) { global $db; if (empty($array['code'])) e(lang("perm_code_empty")); elseif (empty($array['name'])) e(lang("perm_name_empty")); elseif ($this->permission_exists($array['code'])) e(lang("perm_already_exist")); elseif (!$this->level_type_exists($array['type'])) e(lang("perm_type_not_valid")); else { $type = $this->level_type_exists($array['type']); $typeid = $type['user_permission_type_id']; $code = mysql_clean($array['code']); $name = mysql_clean($array['name']); $desc = mysql_clean($array['desc']); $default = mysql_clean($array['default']); $default = $default ? $default : "yes"; $db->insert(tbl($this->dbtbl['user_permissions']), array('permission_type', 'permission_code', 'permission_name', 'permission_desc', 'permission_default'), array($typeid, $code, $name, $desc, $default)); $db->execute("ALTER TABLE " . tbl($this->dbtbl['user_level_permission']) . " ADD `" . $code . "` ENUM( 'yes', 'no' ) NOT NULL DEFAULT '" . $default . "'"); e(lang("perm_added"), "m"); } } /** * Function used to check permission exists or not * @Param permission code */ function permission_exists($code) { global $db; $result = $db->select(tbl($this->dbtbl['user_permissions']), "*", " permission_code='" . $code . "' OR permission_id='" . $code . "'"); if ($db->num_rows > 0) return $result[0]; else return false; } /** * Function used to get permissions */ function get_permissions($type = NULL) { global $db; if ($type) $cond = " permission_type ='$type'"; $result = $db->select(tbl($this->dbtbl['user_permissions']), "*", $cond); if ($db->num_rows > 0) { return $result; } else { return false; } } /** * Function used to remove Permission */ function remove_permission($id) { global $db; $permission = $this->permission_exists($id); if ($permission) { $field = $permission['permission_code']; $db->delete(tbl($this->dbtbl['user_permissions']), array("permission_id"), array($id)); $db->execute("ALTER TABLE `" . tbl($this->dbtbl['user_level_permission']) . "` DROP `" . $field . "` "); e(lang("perm_deleted"), "m"); }else e(lang("perm_doesnt_exist")); } /** * Function used to check weather current user has permission * to view page or not * it will also check weather current page requires login * if login is required, user will be redirected to signup page */ function perm_check($access = '', $check_login = FALSE, $control_page = true) { global $Cbucket; /* if($check_login) { return $this->login_check($access); }else { */ $access_details = $this->permission; //pr($access_details); if (is_numeric($access)) { if ($access_details['level_id'] == $access) { return true; } else { if (!$check_only) e(lang('insufficient_privileges')); if ($control_page) $Cbucket->show_page(false); return false; } }else { if ($access_details[$access] == 'yes') { return true; } else { if (!$check_login) e(lang('insufficient_privileges')); else { if (userid()) e(lang('insufficient_privileges')); else e(sprintf(lang('insufficient_privileges_loggin'), cblink(array('name' => 'signup')), cblink(array('name' => 'signup')))); } if ($control_page) $Cbucket->show_page(false); return false; } } //} } /** * Function used to get user profile details */ function get_user_profile($uid) { global $db; $result = $db->select(tbl($this->dbtbl['user_profile']), "*", " userid='$uid'"); if ($db->num_rows > 0) { return $result[0]; }else return false; } /** * User Profile Fields */ function load_profile_fields($default) { if (!$default) $default = $_POST; $profile_fields = $this->load_personal_details($default); $other_details = $this->load_location_fields($default); $more_details = $this->load_education_interests($default); $channel = $this->load_channel_settings($default); $privacy_field = $this->load_privacy_field($default); return array_merge($profile_fields, $other_details, $more_details, $channel, $privacy_field); } /** * Function used to update use details */ function update_user($array) { global $LANG, $db, $signup, $Upload; if ($array == NULL) $array = $_POST; if (is_array($_FILES)) $array = array_merge($array, $_FILES); $userfields = $this->load_profile_fields($array); //$signup_fields = $this->load_signup_fields($array); $custom_signup_fields = $this->load_custom_signup_fields($array); //Adding Custom Form Fields if (count($this->custom_profile_fields) > 0) $userfields = array_merge($userfields, $this->custom_profile_fields); //Adding custom fields from group if (count($this->custom_profile_fields_groups) > 0) { $custom_fields_from_group_fields = array(); $custom_fields_from_group = $this->custom_profile_fields_groups; foreach ($custom_fields_from_group as $cffg) { $custom_fields_from_group_fields = array_merge($custom_fields_from_group_fields, $cffg['fields']); } $userfields = array_merge($userfields, $custom_fields_from_group_fields); } validate_cb_form($custom_signup_fields, $array); validate_cb_form($userfields, $array); foreach ($userfields as $field) { $name = formObj::rmBrackets($field['name']); $val = $array[$name]; if ($field['use_func_val']) $val = $field['validate_function']($val); //Overrides use_func_val if ($field['value_function'] && function_exists($field['value_function'])) { $val = $field['value_function']($val); } if (!empty($field['db_field'])) $query_field[] = $field['db_field']; if (is_array($val)) { $new_val = ''; foreach ($val as $v) { $new_val .= "#" . $v . "# "; } $val = $new_val; } if (!$field['clean_func'] || (!function_exists($field['clean_func']) && !is_array($field['clean_func']))) $val = mysql_clean($val); else $val = apply_func($field['clean_func'], sql_free('|no_mc|' . $val)); if (!empty($field['db_field'])) $query_val[] = $val; } //Category if ($cat_field) { $field = $cat_field; $name = formObj::rmBrackets($field['name']); $val = $array[$name]; if ($field['use_func_val']) $val = $field['validate_function']($val); if (!empty($field['db_field'])) $uquery_field[] = $field['db_field']; if (is_array($val)) { $new_val = ''; foreach ($val as $v) { $new_val .= "#" . $v . "# "; } $val = $new_val; } if (!$field['clean_func'] || (!function_exists($field['clean_func']) && !is_array($field['clean_func']))) $val = mysql_clean($val); else $val = apply_func($field['clean_func'], sql_free('|no_mc|' . $val)); if (!empty($field['db_field'])) $uquery_val[] = $val; } //updating user detail if (has_access('admin_access', TRUE) && isset($array['admin_manager'])) { //Checking Username if (empty($array['username'])) e(lang('usr_uname_err')); elseif ($array['dusername'] != $array['username'] && $this->username_exists($array['username'])) e(lang('usr_uname_err2')); elseif (!username_check($array['username'])) e(lang('usr_uname_err3')); else $username = $array['username']; //Checking Email if (empty($array['email'])) e(lang('usr_email_err1')); elseif (!is_valid_syntax('email', $array['email'])) e(lang('usr_email_err2')); elseif (email_exists($array['email']) && $array['email'] != $array['demail']) e(lang('usr_email_err3')); else $email = $array['email']; $uquery_field[] = 'username'; $uquery_val[] = $username; $uquery_field[] = 'email'; $uquery_val[] = $email; //Changning Password if (!empty($array['pass'])) { if ($array['pass'] != $array['cpass']) e(lang("pass_mismatched")); else $pass = pass_code($array['pass']); $uquery_field[] = 'password'; $uquery_val[] = $pass; } //Changing User Level $uquery_field[] = 'level'; $uquery_val[] = $array['level']; //Checking for user stats $uquery_field[] = 'profile_hits'; $uquery_val[] = $array['profile_hits']; $uquery_field[] = 'total_watched'; $uquery_val[] = $array['total_watched']; $uquery_field[] = 'total_videos'; $uquery_val[] = $array['total_videos']; $uquery_field[] = 'total_comments'; $uquery_val[] = $array['total_comments']; $uquery_field[] = 'subscribers'; $uquery_val[] = $array['subscribers']; $uquery_field[] = 'comments_count'; $uquery_val[] = $array['comments_count']; $query_field[] = 'rating'; $rating = $array['rating']; if ($rating < 1 || $rating > 10) $rating = 1; $query_val[] = $rating; $query_field[] = 'rated_by'; $query_val[] = $array['rated_by']; //Changing JOined Date if (isset($array['doj'])) { $uquery_field[] = 'doj'; $uquery_val[] = $array['doj']; } } //Changing Gender if ($array['sex']) { $uquery_field[] = 'sex'; $uquery_val[] = mysql_clean($array['sex']); } //Changing Country if ($array['country']) { $uquery_field[] = 'country'; $uquery_val[] = mysql_clean($array['country']); } //Changing Date of birth if (isset($array['dob'])) { $uquery_field[] = 'dob'; $uquery_val[] = $array['dob']; } //Changing category if (isset($array['category'])) { $uquery_field[] = 'category'; $uquery_val[] = $array['category']; } //Updating User Avatar if ($array['avatar_url']) { $uquery_field[] = 'avatar_url'; $uquery_val[] = $array['avatar_url']; } if ($array['remove_avatar_url'] == 'yes') { $uquery_field[] = 'avatar_url'; $uquery_val[] = ''; } //Deleting User Avatar if ($array['delete_avatar'] == 'yes') { $file = USER_THUMBS_DIR . '/' . $array['avatar_file_name']; if (file_exists($file) && $array['avatar_file_name'] != '') unlink($file); } //Deleting User Bg if ($array['delete_bg'] == 'yes') { $file = USER_BG_DIR . '/' . $array['bg_file_name']; if (file_exists($file) && $array['bg_file_name']) unlink($file); } if (isset($_FILES['avatar_file']['name'])) { $file = $Upload->upload_user_file('a', $_FILES['avatar_file'], $array['userid']); if ($file) { $uquery_field[] = 'avatar'; $uquery_val[] = $file; } } //Updating User Background if ($array['background_url']) { $uquery_field[] = 'background_url'; $uquery_val[] = $array['background_url']; } if ($array['background_color']) { $uquery_field[] = 'background_color'; $uquery_val[] = $array['background_color']; } if ($array['background_repeat']) { $uquery_field[] = 'background_repeat'; $uquery_val[] = $array['background_repeat']; } if (isset($_FILES['background_file']['name'])) { $file = $Upload->upload_user_file('b', $_FILES['background_file'], $array['userid']); if ($file) { $uquery_field[] = 'background'; $uquery_val[] = $file; } } //Adding Custom Field if (is_array($custom_signup_fields)) { foreach ($custom_signup_fields as $field) { $name = formObj::rmBrackets($field['name']); $val = $array[$name]; if ($field['use_func_val']) $val = $field['validate_function']($val); if (!empty($field['db_field'])) $uquery_field[] = $field['db_field']; if (is_array($val)) { $new_val = ''; foreach ($val as $v) { $new_val .= "#" . $v . "# "; } $val = $new_val; } if (!$field['clean_func'] || (!function_exists($field['clean_func']) && !is_array($field['clean_func']))) $val = mysql_clean($val); else $val = apply_func($field['clean_func'], sql_free('|no_mc|' . $val)); if (!empty($field['db_field'])) $uquery_val[] = $val; } } if (!error() && is_array($uquery_field)) { $db->update(tbl($this->dbtbl['users']), $uquery_field, $uquery_val, " userid='" . mysql_clean($array['userid']) . "'"); e(lang("usr_upd_succ_msg"), 'm'); } //updating user profile if (!error()) { $log_array = array ( 'success' => 'yes', 'details' => "updated profile" ); //Login Upload insert_log('profile_update', $log_array); $db->update(tbl($this->dbtbl['user_profile']), $query_field, $query_val, " userid='" . mysql_clean($array['userid']) . "'"); e(lang("usr_pof_upd_msg"), 'm'); } } /** * Function used to update user avatar and background only */ function update_user_avatar_bg($array) { global $db, $signup, $Upload; //Updating User Avatar $uquery_field[] = 'avatar_url'; $uquery_val[] = mysql_clean($array['avatar_url']); //Deleting User Avatar if ($array['delete_avatar'] == 'yes') { $file = USER_THUMBS_DIR . '/' . $array['avatar_file_name']; if (file_exists($file) && $array['avatar_file_name'] != '') unlink($file); } //Deleting User Bg if ($array['delete_bg'] == 'yes') { $file = USER_BG_DIR . '/' . $array['bg_file_name']; if (file_exists($file) && $array['bg_file_name'] != '') unlink($file); } if (isset($_FILES['avatar_file']['name'])) { //$file = $Upload->upload_user_file('a',$_FILES['avatar_file'],$array['userid']); $file = upload_new_avatar($_FILES['avatar_file'], ( $array['userid'] ? $array['userid'] : userid())); if ($file) { $uquery_field[] = 'avatar'; $uquery_val[] = $file; } } //Updating User Background $uquery_field[] = 'background_url'; $uquery_val[] = mysql_clean($array['background_url']); $uquery_field[] = 'background_color'; $uquery_val[] = mysql_clean($array['background_color']); if ($array['background_repeat']) { $uquery_field[] = 'background_repeat'; $uquery_val[] = mysql_clean($array['background_repeat']); } //Background ATtachement $uquery_field[] = 'background_attachement'; $uquery_val[] = mysql_clean($array['background_attachement']); if (isset($_FILES['background_file']['name'])) { $file = $Upload->upload_user_file('b', $_FILES['background_file'], $array['userid']); if ($file) { $uquery_field[] = 'background'; $uquery_val[] = mysql_clean($file); } } $log_array = array ( 'success' => 'yes', 'details' => "updated profile" ); //Login Upload insert_log('profile_update', $log_array); $db->update(tbl($this->dbtbl['users']), $uquery_field, $uquery_val, " userid='" . mysql_clean($array['userid']) . "'"); e(lang("usr_avatar_bg_update"), 'm'); } /** * Function used to check weather username exists or not */ function username_exists($i) { global $db; //echo test; return $db->count(tbl($this->dbtbl['users']), "username", " username='$i'"); } /** * function used to check weather email exists or not */ function email_exists($i) { global $db; $db->select(tbl($this->dbtbl['users']), "email", " email='$i'"); if ($db->num_rows > 0) return true; else return false; } /** * Function used to get user access log */ function get_user_action_log($uid, $limit = NULL) { global $db; $result = $db->select(tbl($this->dbtbl['action_log']), "*", " action_userid='$uid'", $limit, " date_added DESC"); if ($db->num_rows > 0) return $result; else return false; } /** * Load Custom Profile Field */ function load_custom_profile_fields($data, $group_based = false) { if (!$group_based) { $array = $this->custom_profile_fields; foreach ($array as $key => $fields) { $value = ""; if ($data[$fields['db_field']]) $value = $data[$fields['db_field']]; elseif ($data[$fields['name']]) $value = $data[$fields['name']]; if ($fields['type'] == 'radiobutton' || $fields['type'] == 'checkbox' || $fields['type'] == 'dropdown') $fields['checked'] = $value; else $fields['value'] = $value; $new_array[$key] = $fields; } return $new_array; }else { $groups = $this->custom_profile_fields_groups; $new_grp = array(); if ($groups) foreach ($groups as $grp) { $fields = array(); foreach ($grp['fields'] as $key => $fields) { $value = ""; if ($data[$fields['db_field']]) $value = $data[$fields['db_field']]; elseif ($data[$fields['name']]) $value = $data[$fields['name']]; if ($fields['type'] == 'radiobutton' || $fields['type'] == 'checkbox' || $fields['type'] == 'dropdown') $fields['checked'] = $value; else $fields['value'] = $value; $grp['fields'][$key] = $fields; } $new_grp[] = $grp; } } return $new_grp; } /** * Load Custom Signup Field */ function load_custom_signup_fields($data, $ck_display_admin = FALSE, $ck_display_user = FALSE) { $array = $this->custom_signup_fields; foreach ($array as $key => $fields) { $ok = 'yes'; if ($ck_display_admin) { if ($fields['display_admin'] == 'no_display') $ok = 'no'; } if ($ck_display_user) { if ($fields['display_user'] == 'no_display') $ok = 'no'; } if ($ok == 'yes') { if (!$fields['value']) $fields['value'] = $data[$fields['db_field']]; $new_array[$key] = $fields; } } return $new_array; } /** * Function used to get channel links * ie Playlist, favorites etc etc */ function get_inner_channel_top_links($u) { $channel_links = array(); if (isSectionEnabled('videos')) { $channel_links[lang('upload')] = array('link' => $this->get_user_videos_link($u)); $channel_links[lang('favorites')] = array('link' => cblink(array('name' => 'user_favorites')) . $u['username']); } if (isSectionEnabled('channels')) $channel_links[lang('contacts')] = array('link' => cblink(array('name' => 'user_contacts')) . $u['username']); return $channel_links; } /** * Function used to get user channel action links * ie Add to friends, send message etc etc */ function get_channel_action_links($u) { return array(lang('send_message') => array('link' => cblink(array('name' => 'compose_new', 'extra_params' => 'to=' . $u['username']))), lang('add_as_friend') => array('link' => 'javascript:void(0)', 'onclick' => "add_friend('" . $u['userid'] . "','result_cont')"), lang('block_user') => array('link' => 'javascript:void(0)', 'onclick' => "block_user('" . $u['username'] . "','result_cont')") ); } /** * Function used to get user videos link */ function get_user_videos_link($u) { return cblink(array('name' => 'user_videos')) . $u['username']; } /** * Function used to get user channel video */ function get_user_profile_video($u) { global $db, $cbvid; if (empty($u['profile_video']) && !$cbvid->video_exists($u)) { $u = $this->get_user_profile($u); } if ($cbvid->video_exists($u['profile_video'])) return $cbvid->get_video_details($u['profile_video']); else return false; } /** * My Account links */ function my_account_links() { $array[lang('account')] = array ( lang('my_account') => 'myaccount.php', lang('block_users') => 'edit_account.php?mode=block_users', lang('user_change_pass') => 'edit_account.php?mode=change_password', lang('user_change_email') => 'edit_account.php?mode=change_email', lang('com_manage_subs') => 'edit_account.php?mode=subscriptions' ); $array[lang('user_channel_profiles')] = array ( lang('account_settings') => 'edit_account.php?mode=account', lang('user_profile_settings') => 'edit_account.php?mode=profile', lang('change_avatar') => 'edit_account.php?mode=avatar_bg', lang('change_bg') => 'edit_account.php?mode=avatar_bg', ); if (isSectionEnabled('videos')) $array[lang('videos')] = array ( lang('uploaded_videos') => 'manage_videos.php', lang('user_fav_videos') => 'manage_videos.php?mode=favorites', ); if (isSectionEnabled('groups')) $array[lang('groups')] = array ( lang('grp_groups_title') => 'manage_groups.php', lang('user_create_group') => cblink(array('name' => 'create_group')), lang('grp_joined_groups') => 'manage_groups.php?mode=joined', ); if (isSectionEnabled('playlists')) { $array[lang('playlists')] = array ( lang('manage_playlists') => 'manage_playlists.php', lang('video_playlists') => 'manage_playlists.php?mode=manage_video_playlist', ); global $cbvid; $builtin_playlists = $cbvid->builtin_playlists; if ($builtin_playlists) { foreach ($builtin_playlists as $playlist) { $pid = $playlist['playlist_id']; $category = $playlist['category']; $name = lang($category); $array[lang('playlists')][$category] = 'manage_playlists.php?' . 'mode=edit_playlist' . '&pid=' . $pid . '&category=' . $category; } } } $array[lang('messages')] = array ( lang('inbox') => 'private_message.php?mode=inbox', lang('notifications') => 'private_message.php?mode=notification', lang('sent') => 'private_message.php?mode=sent', lang('title_crt_new_msg') => cblink(array('name' => 'compose_new')), ); if (isSectionEnabled('channels')) $array[lang('contacts')] = array ( lang('com_manage_contacts') => 'manage_contacts.php?mode=manage', lang('add_contact_list') => 'manage_contacts.php?mode=new_group', ); if (count($this->user_account) > 0) { foreach ($this->user_account as $key => $acc) { if (array_key_exists($key, $array)) { foreach ($acc as $title => $link) $array[$key][$title] = $link; }else $array[$key] = $acc; } //$array = array_merge($array,$this->user_account); } return $array; } /** * Function used to change email */ function change_email($array) { global $db; //function used to change user email if (!isValidEmail($array['new_email']) || $array['new_email'] == '') e(lang("usr_email_err2")); elseif ($array['new_email'] != $array['cnew_email']) e(lang('user_email_confirm_email_err')); elseif (!$this->user_exists($array['userid'])) e(lang('usr_exist_err')); elseif ($this->email_exists($array['new_email'])) e(lang('usr_email_err3')); else { $db->update(tbl($this->dbtbl['users']), array('email'), array($array['new_email']), " userid='" . $array['userid'] . "'"); e(lang("email_change_msg"), "m"); } } /** * Function used to ban users */ function block_users($users, $uid = NULL) { return $this->ban_users($users, $uid); } function ban_users($users, $uid = NULL) { global $db; if (!$uid) $uid = userid(); $users_array = explode(',', $users); $new_users = array(); foreach ($users_array as $user) { if ($user != username() && !is_numeric($user) && $this->user_exists($user)) { $new_users[] = $user; } } if (count($new_users) > 0) { $new_users = array_unique($new_users); $banned_users = implode(',', $new_users); $db->update(tbl($this->dbtbl['users']), array('banned_users'), array($banned_users), " userid='$uid'"); e(lang("user_ban_msg"), "m"); } elseif (!$users) { $db->update(tbl($this->dbtbl['users']), array('banned_users'), array($users), " userid='$uid'"); e(lang("no_user_ban_msg"), "m"); } } /** * Function used to ban single user */ function ban_user($user) { global $db; $uid = userid(); if (!$uid) e(lang('you_not_logged_in')); elseif ($user != username() && !is_numeric($user) && $this->user_exists($user)) { $banned_users = $this->udetails['banned_users']; if ($banned_users) $banned_users .= ",$user"; else $banned_users = "$user"; if (!$this->is_user_banned($user)) { $db->update(tbl($this->dbtbl['users']), array('banned_users'), array($banned_users), " userid='$uid'"); e(lang("user_blocked"), "m"); }else e(lang("user_already_blocked")); }else { e(lang("you_cant_del_user")); } } /** * Function used to check weather user is banned or not */ function is_user_banned($ban, $user = NULL, $banned_users = NULL) { global $db; if (!$user) $user = userid(); if (!$banned_users) { if (is_numeric($user)) $result = $db->select(tbl($this->dbtbl['users']), "banned_users", " userid='$user' "); else $result = $db->select(tbl($this->dbtbl['users']), "banned_users", " username='$user' "); $banned_users = $result[0]['banned_users']; } $ban_user = explode(',', $banned_users); if (in_array($ban, $ban_user)) { return true; } else { return false; } return false; } /** * function used to get user details with profile */ function get_user_details_with_profile($uid = NULL) { global $db; if (!$uid) $uid = userid(); $result = $db->select(tbl($this->dbtbl['users'] . "," . $this->dbtbl['user_profile']), "*", tbl($this->dbtbl['users']) . ".userid ='$uid' AND " . tbl($this->dbtbl['users']) . ".userid = " . tbl($this->dbtbl['user_profile']) . ".userid"); return $result[0]; } function load_signup_fields($default = NULL) { global $LANG, $Cbucket; /** * this function will create initial array for user fields * this will tell * array( * title [text that will represents the field] * type [type of field, either radio button, textfield or text area] * name [name of the fields, input NAME attribute] * id [id of the fields, input ID attribute] * value [value of the fields, input VALUE attribute] * size * class * label * extra_params * hint_before [hint before field] * hint_after [hint after field] * anchor_before [anchor before field] * anchor_after [anchor after field] * ) */ if (empty($default)) $default = $_POST; $username = $default['username']; $email = $default['email']; $dcountry = $default['country'] ? $default['country'] : $Cbucket->configs['default_country_iso2']; $dob = $default['dob']; $dob = $dob ? date(config("date_format"), strtotime($dob)) : date(config("date_format"), strtotime('14-10-1989')); $user_signup_fields = array ( 'first_name' => array( 'title' => lang('First name'), 'type' => "textfield", 'name' => "first_name", 'id' => "first_name", 'value' => $first_name, 'db_field' => 'first_name', 'required' => 'yes', // 'syntax_type'=> 'username', 'validate_function' => 'name_check', 'function_error_msg' => lang('First name is not valid'), 'min_length' => 2, 'max_length' => 20, //'min_length' => config('min_firstname'), //'max_length' => config('max_firstname'), ), 'last_name' => array( 'title' => lang('Last name'), 'type' => "textfield", 'name' => "last_name", 'id' => "last_name", 'value' => $last_name, 'db_field' => 'last_name', 'required' => 'yes', // 'syntax_type'=> 'username', 'validate_function' => 'name_check', 'function_error_msg' => lang('Last name is not valid'), 'min_length' => 2, 'max_length' => 20, //'min_length' => config('min_firstname'), //'max_length' => config('max_firstname'), ), 'username' => array( 'title' => lang('username'), 'type' => "textfield", 'name' => "username", 'id' => "username", 'value' => $username, 'hint_after' => lang('user_allowed_format'), 'db_field' => 'username', 'required' => 'yes', // 'syntax_type'=> 'username', 'validate_function' => 'username_check', 'function_error_msg' => lang('user_contains_disallow_err'), 'db_value_check_func' => 'user_exists', 'db_value_exists' => false, 'db_value_err' => lang('usr_uname_err2'), 'min_length' => config('min_username'), 'max_length' => config('max_username'), ), 'email' => array( 'title' => lang('Email'), 'type' => "textfield", 'name' => "email", 'id' => "email", 'value' => $email, 'db_field' => 'email', 'required' => 'yes', 'syntax_type' => 'email', 'db_value_check_func' => 'email_exists', 'db_value_exists' => false, 'db_value_err' => lang('usr_email_err3') ), 'password' => array( 'title' => lang('Password'), 'type' => "password", 'name' => "password", 'id' => "password", 'db_field' => 'password', 'required' => 'yes', 'invalid_err' => lang('usr_pass_err2'), 'relative_to' => 'cpassword', 'relative_type' => 'exact', 'relative_err' => lang('usr_pass_err3'), 'validate_function' => 'pass_code', 'use_func_val' => true ), 'cpassword' => array( 'title' => lang('user_confirm_pass'), 'type' => "password", 'name' => "cpassword", 'id' => "cpassword", 'required' => 'no', 'invalid_err' => lang('usr_cpass_err'), ), 'country' => array( 'title' => lang('country'), 'type' => 'dropdown', 'value' => $Cbucket->get_countries(iso2), 'id' => 'country', 'name' => 'country', 'checked' => $dcountry, 'db_field' => 'country', 'required' => 'yes', ), 'gender' => array( 'title' => lang('gender'), 'type' => 'radiobutton', 'name' => 'gender', 'id' => 'gender', 'value' => array('Male' => lang('male'), 'Female' => lang('female')), 'sep' => ' ', 'checked' => 'Male', 'db_field' => 'sex', 'required' => 'yes', ), 'dob' => array( 'title' => lang('user_date_of_birth'), 'type' => 'textfield', 'name' => 'dob', 'id' => 'dob', 'class' => 'date_field', 'anchor_after' => 'date_picker', 'value' => $dob, 'db_field' => 'dob', 'required' => 'yes', ), 'cat' => array('title' => lang('Category'), 'type' => 'dropdown', 'name' => 'category', 'id' => 'category', 'value' => array('category', $default['category']), 'db_field' => 'category', 'checked' => $default['category'], 'required' => 'yes', 'invalid_err' => lang("Please select your category"), 'display_function' => 'convert_to_categories', 'category_type' => 'user', ) ); return $user_signup_fields; } /** * Function used to validate Signup Form */ function validate_form_fields($array = NULL) { global $userquery; $fields = $this->load_signup_fields($array); if ($array == NULL) $array = $_POST; if (is_array($_FILES)) $array = array_merge($array, $_FILES); //Mergin Array $signup_fields = array_merge($fields, $this->custom_signup_fields); validate_cb_form($signup_fields, $array); } /** * Function used to validate signup form */ function signup_user($array = NULL, $send_signup_email = true) { global $LANG, $db, $userquery; if ($array == NULL) $array = $_POST; if (is_array($_FILES)) $array = array_merge($array, $_FILES); $this->validate_form_fields($array); //checking terms and policy agreement if ($array['agree'] != 'yes' && !has_access('admin_access', true)) e(lang('usr_ament_err')); if (!verify_captcha()) e(lang('usr_ccode_err')); if (!error()) { $signup_fields = $this->load_signup_fields($array); //Adding Custom Signup Fields if (count($this->custom_signup_fields) > 0) $signup_fields = array_merge($signup_fields, $this->custom_signup_fields); foreach ($signup_fields as $field) { $name = formObj::rmBrackets($field['name']); $val = $array[$name]; if ($field['use_func_val']) { $val = $field['validate_function']($val); } //Overrides use_func_val if ($field['value_function'] && function_exists($field['value_function'])) { $val = $field['value_function']($val); } if (!empty($field['db_field'])) $query_field[] = $field['db_field']; if (is_array($val)) { $new_val = ''; foreach ($val as $v) { $new_val .= "#" . $v . "# "; } $val = $new_val; } if (!$field['clean_func'] || (!function_exists($field['clean_func']) && !is_array($field['clean_func']))) $val = mysql_clean($val); else $val = apply_func($field['clean_func'], sql_free('|no_mc|' . $val)); if (!empty($field['db_field'])) $query_val[] = $val; } // Setting Verification type if (EMAIL_VERIFICATION == '1') { $status = 'unverified'; $welcome_email = 'no'; } else { $status = 'verified'; $welcome_email = 'yes'; } if (config('user_moderation') == 'yes') { $active = 'no'; } else { $active = 'yes'; } if (has_access('admin_access', true)) { if ($array['status'] == 'verified') { $status = 'verified'; $welcome_email = 'yes'; } else { $status = 'unverified'; $welcome_email = 'no'; } if ($array['active'] == 'yes') { $active = 'yes'; } else { $active = 'yes'; } $query_field[] = "level"; $query_val[] = $array['level']; } $query_field[] = "status"; $query_val[] = $status; $query_field[] = "active"; $query_val[] = $active; $query_field[] = " welcome_email_sent"; $query_val[] = $welcome_email; //Creating AV Code $avcode = RandomString(10); $query_field[] = "avcode"; $query_val[] = $avcode; //Signup IP $signup_ip = $_SERVER['REMOTE_ADDR']; $query_field[] = "signup_ip"; $query_val[] = $signup_ip; //Date Joined $now = NOW(); $query_field[] = "doj"; $query_val[] = $now; /** * A VERY IMPORTANT PART OF * OUR SIGNUP SYSTEM IS * SESSION KEY AND CODE * WHEN A USER IS LOGGED IN * IT IS ONLY VALIDATED BY * ITS SIGNUP KEY AND CODE * */ $sess_key = $this->create_session_key($_COOKIE['PHPSESSID'], $array['password']); $sess_code = $this->create_session_code(); $query_field[] = "user_session_key"; $query_val[] = $sess_key; $query_field[] = "user_session_code"; $query_val[] = $sess_code; $query = "INSERT INTO " . tbl("users") . " ("; $total_fields = count($query_field); //Adding Fields to query $i = 0; foreach ($query_field as $qfield) { $i++; $query .= $qfield; if ($i < $total_fields) $query .= ','; } $query .= ") VALUES ("; $i = 0; //Adding Fields Values to query foreach ($query_val as $qval) { $i++; $query .= "'$qval'"; if ($i < $total_fields) $query .= ','; } //Finalzing Query $query .= ")"; $db->Execute($query); $insert_id = $db->insert_id(); $db->insert(tbl($userquery->dbtbl['user_profile']), array("userid"), array($insert_id)); if (!has_access('admin_access', true) && EMAIL_VERIFICATION && $send_signup_email) { global $cbemail; $tpl = $cbemail->get_template('email_verify_template'); $more_var = array ('{username}' => post('username'), '{password}' => post('password'), '{email}' => post('email'), '{avcode}' => $avcode, ); if (!is_array($var)) $var = array(); $var = array_merge($more_var, $var); $subj = $cbemail->replace($tpl['email_template_subject'], $var); $msg = nl2br($cbemail->replace($tpl['email_template'], $var)); //Now Finally Sending Email //cbmail(array('to'=>post('email'),'from'=>WEBSITE_EMAIL,'subject'=>$subj,'content'=>$msg)); } elseif (!has_access('admin_access', true) && $send_signup_email) { //$this->send_welcome_email($insert_id); } $log_array = array ('username' => $array['username'], 'userid' => $insert_id, 'userlevel' => $array['level'], 'useremail' => $array['email'], 'success' => 'yes', 'details' => sprintf("%s signed up", $array['username'])); //Login Signup insert_log('signup', $log_array); //Adding User has Signup Feed addFeed(array('action' => 'signup', 'object_id' => $insert_id, 'object' => 'signup', 'uid' => $insert_id)); return $insert_id; } return false; } //Duplicate User Check function duplicate_user($name) { global $myquery; if ($myquery->check_user($name)) { return true; } else { return false; } } function duplicate_email($name) { $myquery = new myquery(); if ($myquery->check_email($name)) { return true; } else { return false; } } //Validate Email function isValidEmail($email) { return isValidEmail($email); } //Validate Username function isValidUsername($uname) { return $this->is_username($uname); } /** * Function used to make username valid * this function will also check if username is banned or not * it will also filter the username and also filter its patterns * as given in administratio panel */ function is_username($username) { global $Cbucket; //Our basic pattern for username is //$pattern = "^^[_a-z0-9-]+$"; $pattern = "^^[_a-z0-9-]+$"; //Now we will check if admin wants to change the pattern if (eregi($pattern, $username)) { return true; } else { return false; } } /** * Function used to get users */ function get_users($params = NULL, $force_admin = FALSE) { global $db; $limit = $params['limit']; $order = $params['order']; $cond = ""; if (!has_access('admin_access', TRUE) && !$force_admin) $cond .= " status='verified' AND ban_status ='no' "; else { if ($params['ban']) $cond .= " ban_status ='" . $params['ban'] . "'"; if ($params['status']) { if ($cond != '') $cond .=" AND "; $cond .= " status='" . $params['status'] . "'"; } } //Setting Category Condition if (!is_array($params['category'])) $is_all = strtolower($params['category']); if ($params['category'] && $is_all != 'all') { if ($cond != '') $cond .= ' AND '; $cond .= " ("; if (!is_array($params['category'])) { $cats = explode(',', $params['category']); }else $cats = $params['category']; $count = 0; foreach ($cats as $cat_params) { $count++; if ($count > 1) $cond .=" OR "; $cond .= " category LIKE '%$cat_params%' "; } $cond .= ")"; } //date span if ($params['date_span']) { if ($cond != '') $cond .= ' AND '; $cond .= " " . cbsearch::date_margin("doj", $params['date_span']); } /* //uid if($params['user']) { if($cond!='') $cond .= ' AND '; $cond .= " userid='".$params['user']."'"; } $tag_n_title=''; //Tags if($params['tags']) { //checking for commas ;) $tags = explode(",",$params['tags']); if(count($tags)>0) { if($tag_n_title!='') $tag_n_title .= ' OR '; $total = count($tags); $loop = 1; foreach($tags as $tag) { $tag_n_title .= " tags LIKE '%".$tag."%'"; if($loop<$total) $tag_n_title .= " OR "; $loop++; } }else { if($tag_n_title!='') $tag_n_title .= ' OR '; $tag_n_title .= " tags LIKE '%".$params['tags']."%'"; } } //TITLE if($params['title']) { if($tag_n_title!='') $tag_n_title .= ' OR '; $tag_n_title .= " title LIKE '%".$params['tags']."%'"; } if($tag_n_title) { if($cond!='') $cond .= ' AND '; $cond .= " ($tag_n_title) "; } */ //FEATURED if ($params['featured']) { if ($cond != '') $cond .= ' AND '; $cond .= " featured = '" . $params['featured'] . "' "; } //Email if ($params['username']) { if ($cond != '') $cond .= ' AND '; $cond .= " username = '" . $params['username'] . "' "; } //Email if ($params['email']) { if ($cond != '') $cond .= ' AND '; $cond .= " email = '" . $params['email'] . "' "; } //Exclude Users if ($params['exclude']) { if ($cond != '') $cond .= ' AND '; $cond .= " userid <> '" . $params['exclude'] . "' "; } //Getting specific User if ($params['userid']) { if ($cond != '') $cond .= ' AND '; $cond .= " userid = '" . $params['userid'] . "' "; } //Sex if ($params['gender']) { if ($cond != '') $cond .= ' AND '; $cond .= " sex = '" . $params['gender'] . "' "; } //Level if ($params['level']) { if ($cond != '') $cond .= ' AND '; $cond .= " level = '" . $params['level'] . "' "; } if ($params['cond']) { if ($cond != '') $cond .= ' AND '; $cond .= " " . $params['cond'] . " "; } if ($params['join_profile'] != "no") { @$join_profile = " LEFT JOIN " . tbl("user_profile") . " ON " . tbl("users.userid") . " = " . tbl("user_profile.userid"); } if (!$params['count_only']) { $result = $db->select(tbl('users') . $join_profile, '*', $cond, $limit, $order); } if ($params['count_only']) return $result = $db->count(tbl('users'), 'userid', $cond); if ($params['assign']) assign($params['assign'], $result); else return $result; } /** * Function used to perform several actions with a video * @todo : Add Active/Deactive Field and make it work */ function action($case, $uid) { global $db; if (!$this->user_exists($uid)) return false; //Lets just check weathter user exists or not $tbl = tbl($this->dbtbl['users']); switch ($case) { //Activating a user case 'activate': case 'av': case 'a': { $avcode = RandomString(10); $db->update($tbl, array('active', 'avcode'), array('yes', $avcode), " userid='$uid' "); e(lang("User has been activated"), 'm'); } break; //Deactivating a user case "deactivate": case "dav": case "d": { $avcode = RandomString(10); $db->update($tbl, array('active', 'avcode'), array('no', $avcode), " userid='$uid' "); e(lang("User has been deactivated"), 'm'); } break; //Verifying a user case 'verify': case 'v': { $avcode = RandomString(10); $db->update($tbl, array('status', 'avcode'), array('verified', $avcode), " userid='$uid' "); e(lang("User has been set as verified"), 'm'); } break; //Unverifying a user case "unverify": case "uv": { $avcode = RandomString(10); $db->update($tbl, array('status', 'avcode'), array('unverified', $avcode), " userid='$uid' "); e(lang("User has been set as unverified"), 'm'); } break; //Featuring user case "feature": case "featured": case "f": { $db->update($tbl, array('featured', 'featured_date'), array('yes', now()), " userid='$uid' "); e(lang("User has been set as featured"), 'm'); } break; //Unfeatured user case "unfeature": case "unfeatured": case "uf": { $db->update($tbl, array('featured'), array('no'), " userid='$uid' "); e(lang("User has been removed from featured users"), 'm'); } break; //Ban User case "ban": case "banned": { $db->update($tbl, array('ban_status'), array('yes'), " userid='$uid' "); e(lang("User has been banned"), 'm'); } break; //Ban User case "unban": case "unbanned": { $db->update($tbl, array('ban_status'), array('no'), " userid='$uid' "); e(lang("User has been unbanned"), 'm'); } break; } } /** * Is registration allowed */ function is_registration_allowed() { if (ALLOW_REG == 1) { return true; } return false; } /** * Function used to use to initialize search object for video section * op=>operator (AND OR) */ function init_search() { $this->search = new cbsearch; $this->search->db_tbl = "users"; $this->search->columns = array( array('field' => 'username', 'type' => 'LIKE', 'var' => '%{KEY}%'), ); $this->search->cat_tbl = $this->cat_tbl; $this->search->display_template = LAYOUT . '/blocks/user.html'; $this->search->template_var = 'user'; $this->search->multi_cat = false; $this->search->date_added_colum = 'doj'; $this->search->results_per_page = config('users_items_search_page'); /** * Setting up the sorting thing */ $sorting = array( 'doj' => lang("date_added"), 'profile_hits' => lang("views"), 'total_comments' => lang("comments"), 'total_videos' => lang("videos"), ); $this->search->sorting = array( 'doj' => " doj DESC", 'profile_hits' => " profile_hits DESC", 'total_comments' => " total_comments DESC ", 'total_videos' => " total_videos DESC", ); /** * Setting Up The Search Fields */ $default = $_GET; if (is_array($default['category'])) $cat_array = array($default['category']); $uploaded = $default['datemargin']; $sort = $default['sort']; $this->search->search_type['users'] = array('title' => lang('users')); $fields = array( 'query' => array( 'title' => lang('keywords'), 'type' => 'textfield', 'name' => 'query', 'id' => 'query', 'value' => cleanForm($default['query']) ), 'category' => array( 'title' => lang('category'), 'type' => 'checkbox', 'name' => 'category[]', 'id' => 'category', 'value' => array('category', $cat_array), 'category_type' => 'user', ), 'date_margin' => array( 'title' => lang('joined'), 'type' => 'dropdown', 'name' => 'datemargin', 'id' => 'datemargin', 'value' => $this->search->date_margins(), 'checked' => $uploaded, ), 'sort' => array( 'title' => lang('sort_by'), 'type' => 'dropdown', 'name' => 'sort', 'value' => $sorting, 'checked' => $sort ) ); $this->search->search_type['users']['fields'] = $fields; } /** * Function used to get number of users online */ function get_online_users($group = true, $count = false, $limit = false) { global $db; if ($group) { $results = $db->select(tbl("sessions") . " LEFT JOIN (" . tbl("users") . ") ON (" . tbl("sessions.session_user=") . tbl("users") . ".userid)", tbl("sessions.*,users.username,users.userid,users.email") . ",count(" . tbl("sessions.session_user") . ") AS logins" , " TIMESTAMPDIFF(MINUTE," . tbl("sessions.last_active") . ",'" . NOW() . "') < 6 GROUP BY " . tbl("users.userid"), $limit); } else { if ($count) { $results = $db->count(tbl("sessions") . " LEFT JOIN (" . tbl("users") . ") ON (" . tbl("sessions.session_user=") . tbl("users") . ".userid)", tbl("sessions.session_id") , " TIMESTAMPDIFF(MINUTE," . tbl("sessions.last_active") . ",'" . NOW() . "') < 6 "); } else { $results = $db->select(tbl("sessions") . " LEFT JOIN (" . tbl("users") . ") ON (" . tbl("sessions.session_user=") . tbl("users") . ".userid)", tbl("sessions.*,users.username,users.userid,users.email") , " TIMESTAMPDIFF(MINUTE," . tbl("sessions.last_active") . ",'" . NOW() . "') < 6 ", $limit); } } return $results; } /** * Function will let admin to login as user */ function login_as_user($id, $realtime = false) { global $sess, $db, $cblog; $udetails = $this->get_user_details($id); if ($udetails) { if (!$realtime) { /* $sess->set('dummy_username',$sess->get("username")); $sess->set('dummy_level',$sess->get("level")); $sess->set('dummy_userid',$sess->get("userid")); $sess->set('dummy_user_session_key',$sess->get("user_session_key")); $sess->set('dummy_user_session_code',$sess->get("user_session_code")); $sess->set('username',$udetails['username']); $sess->set('level',$udetails['level']); $sess->set('userid',$udetails['userid']); $sess->set('user_session_key',$udetails['session_key']); $sess->set('user_session_code',$udetails['session_code']); */ $sess->set('dummy_sess_salt', $sess->get("sess_salt")); $sess->set('dummy_PHPSESSID', $sess->get("PHPSESSID")); $sess->set('dummy_userid', userid()); $sess->set('dummy_user_session_key', $this->udetails['user_session_key']); $userid = $udetails['userid']; $session_salt = RandomString(5); $sess->set('sess_salt', $session_salt); $sess->set('PHPSESSID', $sess->id); $smart_sess = md5($udetails['user_session_key'] . $session_salt); $db->delete(tbl("sessions"), array("session"), array($sess->id)); $sess->add_session($userid, 'smart_sess', $smart_sess); } else { if ($this->login_check(NULL, true)) $msg[] = e(lang('you_already_logged')); elseif (!$this->user_exists($udetails['username'])) $msg[] = e(lang('user_doesnt_exist')); elseif (!$udetails) $msg[] = e(lang('usr_login_err')); elseif (strtolower($udetails['status']) != 'verified') $msg[] = e(lang('user_inactive_msg')); elseif ($udetails['ban_status'] == 'yes') $msg[] = e(lang('usr_ban_err')); else { $userid = $udetails['userid']; $log_array['userid'] = $userid = $udetails['userid']; $log_array['useremail'] = $udetails['email']; $log_array['success'] = 1; $log_array['level'] = $level = $udetails['level']; //Adding Sessing In Database //$sess->add_session($userid,'logged_in'); //$sess->set('username',$username); //$sess->set('userid',$userid); //Setting Timeout if ($remember) $sess->timeout = 86400 * REMBER_DAYS; //Starting special sessions for security $session_salt = RandomString(5); $sess->set('sess_salt', $session_salt); $sess->set('PHPSESSID', $sess->id); $smart_sess = md5($udetails['user_session_key'] . $session_salt); $db->delete(tbl("sessions"), array("session", "session_string"), array($sess->id, "guest")); $sess->add_session($userid, 'smart_sess', $smart_sess); //$sess->set('user_sess',$smart_sess); //$sess->set('user_session_key',$udetails['user_session_key']); //$sess->set('user_session_code',$udetails['user_session_code']); //Setting Vars $this->userid = $udetails['userid']; $this->username = $udetails['username']; $this->level = $udetails['level']; //Updating User last login , num of visist and ip $db->update(tbl('users'), array( 'num_visits', 'last_logged', 'ip' ), array( '|f|num_visits+1', NOW(), $_SERVER['REMOTE_ADDR'] ), "userid='" . $userid . "'" ); $this->init(); //Logging Actiong $cblog->insert('login', $log_array); return true; } //Error Loging if (!empty($msg)) { //Loggin Action $log_array['success'] = no; $log_array['details'] = $msg[0]; $cblog->insert('login', $log_array); } } return true; }else e(lang("usr_exist_err")); } /** * Function used to revert back to admin */ function revert_from_user() { global $sess, $db; if ($this->is_admin_logged_as_user()) { $userid = $sess->get('dummy_userid'); $session_salt = $sess->get('dummy_sess_salt'); $user_session_key = $sess->get('dummy_user_session_key'); $smart_sess = md5($user_session_key . $session_salt); $sess->set('sess_salt', $session_salt); $sess->set('PHPSESSID', $sess->get('dummy_PHPSESSID')); $db->delete(tbl("sessions"), array("session"), array($sess->get('dummy_PHPSESSID'))); $sess->add_session($userid, 'smart_sess', $smart_sess); $sess->set('dummy_sess_salt', ''); $sess->set('dummy_PHPSESSID', ''); $sess->set('dummy_userid', ''); $sess->set('dummy_user_session_key', ''); } } /** * Function used to check weather user is logged in as admin or not */ function is_admin_logged_as_user() { global $sess; if ($sess->get("dummy_sess_salt") != "") { return true; } return false; } /** * Function used to get anonymous user */ function get_anonymous_user() { global $db; $uid = config('anonymous_id'); if ($this->user_exists($uid)) return $uid; else { $result = $db->select(tbl("users"), "userid", " level='6' AND status='unverified' ", "1"); if ($result[0]['userid']) return $result[0]['userid']; else { $pass = RandomString(10); if ($_SERVER['HTTP_HOST'] != 'localhost') $email = 'anonymous' . RandomString(5) . '@' . $_SERVER['HTTP_HOST']; else $email = 'anonymous' . RandomString(5) . '@' . $_SERVER['HTTP_HOST'] . '.tld'; //Create Anonymous user $uid = $this->signup_user( array( 'username' => 'anonymous' . RandomString(5), 'email' => $email, 'password' => $pass, 'cpassword' => $pass, 'country' => get_country(config('default_country_iso2')), 'gender' => 'Male', 'dob' => '2000-10-10', 'category' => '1', 'level' => '6', 'active' => 'yes', 'agree' => 'yes', ), false); return $uid; } } } /** * Function used to delete user videos */ function delete_user_vids($uid) { global $cbvid, $eh; $vids = get_videos(array('user' => $uid)); if (is_array($vids)) foreach ($vids as $vid) $cbvid->delete_video($vid['videoid']); $eh->flush_msg(); e(lang("user_vids_hv_deleted"), "m"); } /** * Function used to remove user contacts */ function remove_contacts($uid) { global $eh; $contacts = $this->get_contacts($uid); if (is_array($contacts)) foreach ($contacts as $contact) { $this->remove_contact($contact['userid'], $contact['contact_userid']); } $eh->flush_msg(); e(lang("user_contacts_hv_removed"), "m"); } /** * Function used to remove user private messages */ function remove_user_pms($uid, $box = 'both') { global $db, $cbpm, $eh; if ($box == "inbox" || $box == "both") { $inboxs = $cbpm->get_user_inbox_messages($uid); if (is_array($inboxs)) foreach ($inboxs as $inbox) { $cbpm->delete_msg($inbox['message_id'], $uid); } $eh->flush_msg(); e(lang("all_user_inbox_deleted"), "m"); } if ($box == "sent" || $box == "both") { $outs = $cbpm->get_user_outbox_messages($uid); if (is_array($outs)) foreach ($outs as $out) { $cbpm->delete_msg($out['message_id'], $uid, 'out'); } $eh->flush_msg(); e(lang("all_user_sent_messages_deleted"), "m"); } } /** * This will get user subscriptions * uploaded videos and photos * This is a test function */ function getSubscriptionsUploadsWeek($uid, $limit = 20, $uploadsType = "both", $uploadsTimeSpan = "this_week") { $usr_cond = ""; $users = $this->get_user_subscriptions($uid); if ($users) { foreach ($users as $user) { if ($user_cond) $user_cond .= " OR "; $user_cond .= tbl("users.userid") . "='" . $user[0] . "' "; } $user_cond = " (" . $user_cond . ") "; global $cbphoto, $cbvideo; $photoCount = 1; $videoCount = 1; switch ($uploadsType) { case "both": default: { $photos = $cbphoto->get_photos(array("limit" => $limit, "extra_cond" => $user_cond, "order" => " date_added DESC", "date_span" => $uploadsTimeSpan)); $videos = $cbvideo->get_videos(array("limit" => $limit, "cond" => " AND" . $user_cond, "order" => " date_added DESC", "date_span" => $uploadsTimeSpan)); if (!empty($photos) && !empty($videos)) $finalResult = array_merge($videos, $photos); elseif (empty($photos) && !empty($videos)) $finalResult = array_merge($videos, array()); elseif (!empty($photos) && empty($videos)) $finalResult = array_merge($photos, array()); if (!empty($finalResult)) { foreach ($finalResult as $result) { if ($result['videoid']) { $videoArr[] = $result; $return['videos'] = array( "title" => lang("videos"), "total" => $videoCount++, "items" => $videoArr ); } if ($result['photo_id']) { $photosArr[] = $result; $return['photos'] = array( "title" => lang("photos"), "total" => $photoCount++, "items" => $photosArr ); } } //pr($return,true) ; return $return; } else return false; } break; case "photos": case "photo" : case "p": { $photos = $cbphoto->get_photos(array("limit" => $limit, "extra_cond" => $user_cond, "order" => " date_added DESC", "date_span" => $uploadsTimeSpan)); if ($photos) { foreach ($photos as $photo) { $photosArr[] = $photo; $return['photos'] = array( "title" => lang("photos"), "total" => $photoCount++, "items" => $photosArr ); } } else return false; } break; case "videos": case "video": case "v": { $videos = $cbvideo->get_videos(array("limit" => $limit, "cond" => " AND" . $user_cond, "order" => " date_added DESC", "date_span" => $uploadsTimeSpan)); if ($videos) { foreach ($videos as $video) { $videoArr[] = $video; $return['videos'] = array( "title" => lang("videos"), "total" => $videoCount++, "items" => $videoArr ); } } else return false; } break; } return $return; } } /** * Get subscred videos */ function get_subscribed_videos($uid, $limit = 20) { $user_cond = ""; $users = $this->get_user_subscriptions($uid); if ($users) { foreach ($users as $user) { //pr($user); //Creating Query if ($user_cond) $user_cond .= " OR "; $user_cond .= tbl("users.userid") . "='" . $user[0] . "' "; } $user_cond = " AND (" . $user_cond . ") "; global $cbvid, $db; $vids = $cbvid->get_videos(array('limit' => $limit, 'cond' => $user_cond, "order" => " date_added DESC ", "date_span" => "this_week")); // echo $db->db_query; return $vids; } return false; } /** * Function used to set item as profile item */ function setProfileItem($id, $type = 'v', $uid = NULL) { global $cbvid, $db, $cbphoto; if (!$uid) $uid = userid(); if (!$uid) { e("user_doesnt_exist"); return false; } switch ($type) { case "v": { if ($cbvid->video_exists($id)) { $array['type'] = 'v'; $array['id'] = $id; $db->update(tbl('user_profile'), array('profile_item'), array("|no_mc|" . json_encode($array)) , " userid='$uid' "); e(sprintf(lang("this_has_set_profile_item"), lang("video")), "m"); }else e("class_vdo_del_err"); } break; case "p": { if ($cbphoto->photo_exists($id)) { $array['type'] = 'p'; $array['id'] = $id; $db->update(tbl('user_profile'), array('profile_item'), array("|no_mc|" . json_encode($array)) , " userid='$uid' "); e(sprintf(lang("this_has_set_profile_item"), lang("photo")), "m"); }else e("photo_not_exists"); } break; } } /** * Remove Profile item */ function removeProfileItem($uid = NULL) { global $db; if (!$uid) $uid = userid(); if (!$uid) { e("user_doesnt_exist"); return false; } $db->update(tbl('user_profile'), array('profile_item'), array("") , " userid='$uid' "); e(lang("profile_item_removed"), "m"); } /** * function used to get profile item */ function getProfileItem($uid = NULL, $withDetails = false) { global $db, $cbvid, $cbphoto; if (!$uid) $uid = userid(); if (!$uid) { e("user_doesnt_exist"); return false; } if ($uid == userid() && $this->profileItem && !$withDetails) return $this->profileItem; $profileItem = $db->select(tbl("user_profile"), "profile_item", " userid='$uid'"); $profileItem = $profileItem[0]['profile_item']; $profileItem = json_decode($profileItem, true); if ($withDetails) { switch ($profileItem['type']) { case "p": { $photo = $cbphoto->get_photo($profileItem['id']); $photo['type'] = 'p'; $photo['id'] = $photo['photo_id']; if ($photo) return $photo; } break; case "v": { $video = $cbvid->get_video($profileItem['id']); $video['type'] = 'v'; $video['id'] = $video['videoid']; if ($video) return $video; } break; } } return $this->profileItem = $profileItem; } /** * Function used to check weather input given item * is profile item or not */ function isProfileItem($id, $type = 'v', $uid = NULL) { $profileItem = $this->getProfileItem($uid); if ($profileItem['type'] == $type && $profileItem['id'] == $id) return true; else return false; } /** * FUnction loading personal details */ function load_personal_details($default) { $fname = config('fname_length'); $lname = config('lname_length'); $about_me = config('about_me_length'); $profile_tags = config('profile_tags_length'); $web_url = config('web_url_length'); if ($fname && $fname < 10) if (!$fname) $fname = '50'; else $fname = 10; if ($lname && $lname < 10) if (!$lname) $lname = '50'; else $lname = 10; if ($about_me && $about_me < 50) if (!$about_me) $about_me = '100'; else $about_me = 50; if ($profile_tags && $profile_tags < 10) if (!$profile_tags) $profile_tags = '30'; else $profile_tags = 10; if ($web_url && $web_url < 10) if (!$web_url) $web_url = '10'; else $web_url = 10; if (!$default) $default = $_POST; $profile_fields = array ( 'first_name' => array( 'title' => lang("user_fname"), 'type' => "textfield", 'name' => "first_name", 'id' => "first_name", 'value' => $default['first_name'], 'db_field' => 'first_name', 'required' => 'no', 'syntax_type' => 'name', 'auto_view' => 'yes', 'max_length' => $fname ), 'last_name' => array( 'title' => lang("user_lname"), 'type' => "textfield", 'name' => "last_name", 'id' => "last_name", 'value' => $default['last_name'], 'db_field' => 'last_name', 'syntax_type' => 'name', 'auto_view' => 'yes', 'max_length' => $lname ), 'relation_status' => array( 'title' => lang("user_relat_status"), 'type' => "dropdown", 'name' => "relation_status", 'id' => "last_name", 'value' => array( lang('usr_arr_no_ans'), lang('usr_arr_single'), lang('usr_arr_married'), lang('usr_arr_comitted'), lang('usr_arr_open_relate') ), 'checked' => $default['relation_status'], 'db_field' => 'relation_status', 'auto_view' => 'yes', ), 'show_dob' => array( 'title' => lang("show_dob"), 'type' => "radiobutton", 'name' => "show_dob", 'id' => "show_dob", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => $default['show_dob'], 'db_field' => 'show_dob', 'syntax_type' => 'name', 'auto_view' => 'no', 'sep' => ' ' ), 'about_me' => array( 'title' => lang("user_about_me"), 'type' => "textarea", 'name' => "about_me", 'id' => "about_me", 'value' => cleanForm($default['about_me']), 'db_field' => 'about_me', 'auto_view' => 'no', 'clean_func' => 'Replacer', 'max_length' => $about_me ), 'profile_tags' => array( 'title' => lang("profile_tags"), 'type' => "textfield", 'name' => "profile_tags", 'id' => "profile_tags", 'value' => $default['profile_tags'], 'db_field' => 'profile_tags', 'auto_view' => 'no', 'max_length' => $profile_tags ), 'web_url' => array( 'title' => lang("website"), 'type' => "textfield", 'name' => "web_url", 'id' => "web_url", 'value' => $default['web_url'], 'db_field' => 'web_url', 'auto_view' => 'yes', 'display_function' => 'outgoing_link', 'max_length' => $web_url ), ); return $profile_fields; } /** * function used to load location fields */ function load_location_fields($default) { $max_vals = array( "hometown_length", "city_length", "postal_code_length", ); foreach ($max_vals as $mval) { if (config($mval) > 10) $maxval[str_replace('_length', '', $mval)] = config($mval); elseif (is_numeric(config($mval))) $maxval[$mval] = 10; else $maxval[$mval] = 100; } extract($maxval); if (!$default) $default = $_POST; $other_details = array ( 'postal_code' => array( 'title' => lang("postal_code"), 'type' => "textfield", 'name' => "postal_code", 'id' => "postal_code", 'value' => $default['postal_code'], 'db_field' => 'postal_code', 'auto_view' => 'yes', 'max_length' => $postal_code ), 'hometown' => array( 'title' => lang("hometown"), 'type' => "textfield", 'name' => "hometown", 'id' => "hometown", 'value' => $default['hometown'], 'db_field' => 'hometown', 'auto_view' => 'yes', 'max_length' => $hometown ), 'city' => array( 'title' => lang("city"), 'type' => "textfield", 'name' => "city", 'id' => "city", 'value' => $default['city'], 'db_field' => 'city', 'auto_view' => 'yes', 'max_length' => $city ), ); return $other_details; } /** * Function used to load experice fields */ function load_education_interests($default) { $max_vals = array( "schools_length", "occupation_length", "companies_length", "hobbies_length", "fav_movies_length", "fav_music_length", "fav_books_length" ); foreach ($max_vals as $mval) { if (config($mval) > 10) $maxval[str_replace('_length', '', $mval)] = config($mval); elseif (is_numeric(config($mval))) $maxval[$mval] = 10; else $maxval[$mval] = 100; } extract($maxval); if (!$default) $default = $_POST; $more_details = array ( 'education' => array( 'title' => lang("education"), 'type' => "dropdown", 'name' => "education", 'id' => "education", 'value' => array(lang('usr_arr_no_ans'), lang('usr_arr_elementary'), lang('usr_arr_hi_school'), lang('usr_arr_some_colg'), lang('usr_arr_assoc_deg'), lang('usr_arr_bach_deg'), lang('usr_arr_mast_deg'), lang('usr_arr_phd'), lang('usr_arr_post_doc'), ), 'checked' => $default['education'], 'db_field' => 'education', 'auto_view' => 'yes', ), 'schools' => array( 'title' => lang("schools"), 'type' => "textarea", 'name' => "schools", 'id' => "schools", 'value' => cleanForm($default['schools']), 'db_field' => 'schools', 'clean_func' => 'Replacer', 'auto_view' => 'yes', 'max_length' => $schools ), 'occupation' => array( 'title' => lang("occupation"), 'type' => "textarea", 'name' => "occupation", 'id' => "occupation", 'value' => cleanForm($default['occupation']), 'db_field' => 'occupation', 'clean_func' => 'Replacer', 'auto_view' => 'yes', 'max_length' => $occupation ), 'companies' => array( 'title' => lang("companies"), 'type' => "textarea", 'name' => "companies", 'id' => "companies", 'value' => cleanForm($default['companies']), 'db_field' => 'companies', 'clean_func' => 'Replacer', 'auto_view' => 'yes', 'max_length' => $companies ), 'hobbies' => array( 'title' => lang("hobbies"), 'type' => "textarea", 'name' => "hobbies", 'id' => "hobbies", 'value' => cleanForm($default['hobbies']), 'db_field' => 'hobbies', 'clean_func' => 'Replacer', 'auto_view' => 'yes', 'max_length' => $hobbies ), 'fav_movies' => array( 'title' => lang("user_fav_movs_shows"), 'type' => "textarea", 'name' => "fav_movies", 'id' => "fav_movies", 'value' => cleanForm($default['fav_movies']), 'db_field' => 'fav_movies', 'clean_func' => 'Replacer', 'auto_view' => 'yes', 'max_length' => $fav_movies ), 'fav_music' => array( 'title' => lang("user_fav_music"), 'type' => "textarea", 'name' => "fav_music", 'id' => "fav_music", 'value' => cleanForm($default['fav_music']), 'db_field' => 'fav_music', 'clean_func' => 'Replacer', 'auto_view' => 'yes', 'max_length' => $fav_music ), 'fav_books' => array( 'title' => lang("user_fav_books"), 'type' => "textarea", 'name' => "fav_books", 'id' => "fav_books", 'value' => cleanForm($default['fav_books']), 'db_field' => 'fav_books', 'clean_func' => 'Replacer', 'auto_view' => 'yes', 'max_length' => $fav_books ), ); return $more_details; } /** * Function used to load privacy fields */ function load_privacy_field($default) { if (!$default) $default = $_POST; $privacy = array ( 'online_status' => array( 'title' => lang("online_status"), 'type' => "dropdown", 'name' => "privacy", 'id' => "privacy", 'value' => array('online' => lang('online'), 'offline' => lang('offline'), 'custom' => lang('custom')), 'checked' => $default['online_status'], 'db_field' => 'online_status', ), 'show_profile' => array( 'title' => lang("show_profile"), 'type' => "dropdown", 'name' => "show_profile", 'id' => "show_profile", 'value' => array('all' => lang('all'), 'members' => lang('members'), 'friends' => lang('friends')), 'checked' => $default['show_profile'], 'db_field' => 'show_profile', 'sep' => ' ' ), 'allow_comments' => array( 'title' => lang("vdo_allow_comm"), 'type' => "radiobutton", 'name' => "allow_comments", 'id' => "allow_comments", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['allow_comments']), 'db_field' => 'allow_comments', 'sep' => ' ' ), 'allow_ratings' => array( 'title' => lang("allow_ratings"), 'type' => "radiobutton", 'name' => "allow_ratings", 'id' => "allow_ratings", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['allow_ratings']), 'db_field' => 'allow_ratings', 'sep' => ' ' ), 'allow_subscription' => array( 'title' => lang("allow_subscription"), 'type' => "radiobutton", 'name' => "allow_subscription", 'id' => "allow_subscription", 'hint_before' => lang('allow_subscription_hint'), 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['allow_subscription']), 'db_field' => 'allow_subscription', 'sep' => ' ' ), ); return $privacy; } /** * load_channel_settings * * @param $input defaults value for channel settings * @return arra of channel info fields */ function load_channel_settings($default) { if (!$default) $default = $_POST; $profile_title = config('profile_title_length'); $profile_desc = config('profile_desc_length'); if ($profile_title < 10) $profile_title = 10; if ($profile_desc < 15) $profile_desc = 15; $channel_settings = array ( 'profile_title' => array( 'title' => lang("channel_title"), 'type' => "textfield", 'name' => "profile_title", 'id' => "profile_title", 'value' => $default['profile_title'], 'db_field' => 'profile_title', 'auto_view' => 'no', 'max_length' => $profile_title, ), 'profile_desc' => array( 'title' => lang("channel_desc"), 'type' => "textarea", 'name' => "profile_desc", 'id' => "profile_desc", 'value' => $default['profile_desc'], 'db_field' => 'profile_desc', 'auto_view' => 'yes', 'clean_func' => 'Replacer', 'max_length' => $profile_desc, ), 'show_my_friends' => array( 'title' => lang("show_my_friends"), 'type' => "radiobutton", 'name' => "show_my_friends", 'id' => "show_my_friends", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['show_my_friends']), 'db_field' => 'show_my_friends', 'sep' => ' ' ), 'show_my_videos' => array( 'title' => lang("show_my_videos"), 'type' => "radiobutton", 'name' => "show_my_videos", 'id' => "show_my_videos", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['show_my_videos']), 'db_field' => 'show_my_videos', 'sep' => ' ' ), 'show_my_photos' => array( 'title' => lang("show_my_photos"), 'type' => "radiobutton", 'name' => "show_my_photos", 'id' => "show_my_photos", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['show_my_photos']), 'db_field' => 'show_my_photos', 'sep' => ' ' ), 'show_my_subscriptions' => array( 'title' => lang("show_my_subscriptions"), 'type' => "radiobutton", 'name' => "show_my_subscriptions", 'id' => "show_my_subscriptions", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['show_my_subscriptions']), 'db_field' => 'show_my_subscriptions', 'sep' => ' ' ), 'show_my_subscribers' => array( 'title' => lang("show_my_subscribers"), 'type' => "radiobutton", 'name' => "show_my_subscribers", 'id' => "show_my_subscribers", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['show_my_subscribers']), 'db_field' => 'show_my_subscribers', 'sep' => ' ' ), 'show_my_collections' => array( 'title' => lang("show_my_collections"), 'type' => "radiobutton", 'name' => "show_my_collections", 'id' => "show_my_collections", 'value' => array('yes' => lang('yes'), 'no' => lang('no')), 'checked' => strtolower($default['show_my_collections']), 'db_field' => 'show_my_collections', 'sep' => ' ' ), ); return $channel_settings; } /** * load_user_fields * * @param $input default values for user profile fields * @return array of user fields * * Function used to load Video fields * in clipbucket v2.1 , video fields are loaded in form of groups arrays * each group has it name and fields wrapped in array * and that array will be part of video fields */ function load_user_fields($default, $type = 'all') { $getChannelSettings = false; $getProfileSettings = false; $fields = array(); switch ($type) { case "all": { $getChannelSettings = true; $getProfileSettings = true; } break; case "channel": case "channels": { $getChannelSettings = true; } break; case "profile": case "profile_settings": { $getProfileSettings = true; } break; } if ($getChannelSettings) { $channel_settings = array ( array ( 'group_name' => lang('channel_settings'), 'group_id' => 'channel_settings', 'fields' => array_merge($this->load_channel_settings($default) , $this->load_privacy_field($default)), ), ); } if ($getProfileSettings) { $profile_settings = array ( array ( 'group_name' => lang('profile_basic_info'), 'group_id' => 'profile_basic_info', 'fields' => $this->load_personal_details($default), ), array ( 'group_name' => lang('location'), 'group_id' => 'profile_location', 'fields' => $this->load_location_fields($default) ), array ( 'group_name' => lang('profile_education_interests'), 'group_id' => 'profile_education_interests', 'fields' => $this->load_education_interests($default) ) ); //Adding Custom Fields $custom_fields = $this->load_custom_profile_fields($default, false); if ($custom_fields) { $more_fields_group = array ( 'group_name' => lang('more_fields'), 'group_id' => 'custom_fields', 'fields' => $custom_fields, ); } //Loading Custom Profile Forms $custom_fields_with_group = $this->load_custom_profile_fields($default, true); //Finaling putting them together in their main array called $fields if ($custom_fields_with_group) { $custFieldGroups = $custom_fields_with_group; foreach ($custFieldGroups as $gKey => $fieldGroup) { $group_id = $fieldGroup['group_id']; foreach ($profile_settings as $key => $field) { if ($field['group_id'] == $group_id) { $inputFields = $field['fields']; //Setting field values $newFields = $fieldGroup['fields']; $mergeField = array_merge($inputFields, $newFields); //Finally Updating array $newGroupArray = array ( 'group_name' => $field['group_name'], 'group_id' => $field['group_id'], 'fields' => $mergeField, ); $fields[$key] = $newGroupArray; $matched = true; break; }else $matched = false; } if (!$matched) $profile_settings[] = $fieldGroup; } } } if ($channel_settings) $fields = array_merge($fields, $channel_settings); if ($profile_settings) $fields = array_merge($fields, $profile_settings); if ($more_fields_group) $fields[] = $more_fields_group; return $fields; } /** * Used to rate photo */ function rate_user($id, $rating) { global $db, $json; if (!is_numeric($rating) || $rating <= 9) $rating = 0; if ($rating >= 10) $rating = 10; $c_rating = $this->current_rating($id); $voters = $c_rating['voters']; $new_rate = $c_rating['rating']; $rated_by = $c_rating['rated_by']; if (phpversion < '5.2.0') $voters = $json->json_decode($voters, TRUE); else $voters = json_decode($voters, TRUE); if (!empty($voters)) $already_voted = array_key_exists(userid(), $voters); if (!userid()) e(lang("please_login_to_rate")); elseif (userid() == $c_rating['userid'] && !config('own_channel_rating')) e(lang("you_cant_rate_own_channel")); elseif (!empty($already_voted)) e(lang("you_have_already_voted_channel")); elseif ($c_rating['allow_ratings'] == 'no' || !config('channel_rating')) e(lang("channel_rating_disabled")); else { $voters[userid()] = array('rate' => $rating, 'time' => NOW()); if (phpversion < '5.2.0') $voters = $json->json_encode($voters); else $voters = json_encode($voters); $t = $c_rating['rated_by'] * $c_rating['rating']; $rated_by = $c_rating['rated_by'] + 1; $new_rate = ($t + $rating) / $rated_by; $db->update(tbl('user_profile'), array('rating', 'rated_by', 'voters'), array("$new_rate", "$rated_by", "|no_mc|$voters"), " userid = " . $id . ""); $userDetails = array( "object_id" => $id, "type" => "user", "time" => now(), "rating" => $rating, "userid" => userid(), "username" => username() ); /* Updating user details */ update_user_voted($userDetails); e(lang("thnx_for_voting"), "m"); } $return = array("rating" => $new_rate, 'ratings' => $rated_by, "rated_by" => $rated_by, 'total' => 10, "id" => $id, "type" => "user", "disable" => "disabled"); return $return; } /** * Used to get current rating */ function current_rating($id) { global $db; $result = $db->select(tbl('user_profile'), 'userid,allow_ratings,rating,rated_by,voters', " userid = " . $id . ""); if ($result) return $result[0]; else return false; } /** * function used to check weather user is online or not */ function isOnline($last_active, $status = NULL) { $time = strtotime($last_active); $timeDiff = time() - $time; if ($timeDiff > 60 || $status == 'offline') return false; else return true; } /** * Function used to get list of subscribed users and then * send subscription email */ function sendSubscriptionEmail($vidDetails, $updateStatus = true) { global $cbemail, $db; $v = $vidDetails; if (!$v['videoid']) { e(lang("invalid_videoid")); return false; } if (!$v['userid']) { e(lang("invalid_userid")); return false; } //Lets get the list of subscribers $subscribers = $this->get_user_subscribers_detail($v['userid'], false); //Now lets get details of our uploader bhai saab $uploader = $this->get_user_details($v['userid']); //Loading subscription email template $tpl = $cbemail->get_template('video_subscription_email'); $total_subscribers = count($subscribers); if ($subscribers) foreach ($subscribers as $subscriber) { $var = $this->custom_subscription_email_vars; $more_var = array ('{username}' => $subscriber['username'], '{uploader}' => $uploader['username'], '{video_title}' => $v['title'], '{video_description}' => $v['description'], '{video_link}' => video_link($v), '{video_thumb}' => get_thumb($v), ); if (!is_array($var)) $var = array(); $var = array_merge($more_var, $var); $subj = $cbemail->replace($tpl['email_template_subject'], $var); $msg = nl2br($cbemail->replace($tpl['email_template'], $var)); //Now Finally Sending Email cbmail(array('to' => $subscriber['email'], 'from' => WELCOME_EMAIL, 'subject' => $subj, 'content' => $msg)); } if ($total_subscribers) { //Updating video subscription email status to sent if ($updateStatus) $db->update(tbl('video'), array('subscription_email'), array('sent'), " videoid='" . $v['videoid'] . "'"); $s = ""; if ($total_subscribers > 1) $s = "s"; e(sprintf(lang('subs_email_sent_to_users'), $total_subscribers, $s), "m"); return true; } e(lang("no_user_subscribed_to_uploader")); return true; } /** * function used to get user seesions */ function get_sessions() { global $sess; $sessions = $sess->get_sessions(); $new_sessions = array(); if ($sessions) { foreach ($sessions as $session) { $new_sessions[$session['session_string']] = $session; } } else { //$sess->add_session(0,'guest','guest'); } return $new_sessions; } function update_user_voted($array, $userid = NULL) { global $db; //$voted = array(); if (!$userid) $userid = userid(); if (phpversion < '5.2.0') { global $json; $js = $json; } if (is_array($array)) { $votedDetails = $db->select(tbl("users"), "voted", " userid = '$userid'"); if (!empty($votedDetails)) if (!empty($js)) $voted = $js->json_decode($votedDetails[0]['voted'], TRUE); else $voted = json_decode($votedDetails[0]['voted'], TRUE); //$votedArray = $voted; $voted[] = $array; if (!empty($js)) $votedEncode = $js->json_encode($voted); else $votedEncode = json_encode($voted); if (!empty($votedEncode)) $db->update(tbl("users"), array("voted"), array("|no_mc|$votedEncode"), " userid='$userid'"); } } /** * Function used to get friends Feed */ function get_json_friends($uid = NULL) { if (!$uid) $uid = userid(); $userid = $this->user_dir($uid); $friend_feed_file_path = USERDATA_DIR . '/' . $userid; $friends_feed_file = $friend_feed_file_path . '/friends.cbd'; if (file_exists($friends_feed_file)) { $friends = file_get_contents($friends_feed_file); $friends = json_decode($friends, true); } else { $friends = $this->get_contacts($uid, 0, 'yes'); $friend_fields = array('username', 'email', 'userid', 'dob', 'doj', 'fullname'); $friends_array = array(); if ($friends) { foreach ($friends as $friend) { foreach ($friend_fields as $field) { $new_friend[$field] = $friend[$field]; } $friends_array[] = $new_friend; } $friends = $friends_array; $jsoned_friends = json_encode($friends_array); //Writing to directory file_put_contents($friends_feed_file, $jsoned_friends); } } return $friends; } /** * function userid to directory */ function user_dir($uid) { if (strlen($uid) <= 5) { $first_dir = substr($uid, 0, 1); $second_dir = substr($uid, 1, 1); if (!$second_dir) $second_dir = 0; $final_dir = $first_dir . '/' . $second_dir . '/' . $uid; }else { $first_dir = substr($uid, 0, 1); $second_dir = substr($uid, 1, 1); if (!$second_dir) $second_dir = 0; $third_dir = substr($uid, 2, 1); if (!$third_dir) $third_dir = 0; $final_dir = $first_dir . '/' . $second_dir . '/' . $third_dir . '/' . $uid; } $userdata = USERDATA_DIR; if (!file_exists($userdata . '/' . $final_dir)) mkdir($userdata . '/' . $final_dir, 0777, true); return $final_dir; } /** * */ function get_content($content, $cond = NULL) { if (is_array($content)) { if ($content['userid'] && $content['username'] && $content['email']) { $user = $content; } elseif ($content['userid']) { $user = $this->get_user_details($content['userid']); }else return false; }else { $user = $this->get_user_details($content); } if (!$user) return false; //Required fields $content_fields = array( 'userid', 'username', 'email', 'first_name', 'last_name', 'fullname', 'dob', 'doj', 'active', 'ban', 'avatar', 'avatar_url', 'total_videos', 'profile_hits', 'sex', 'status' ); $content_fields = apply_filters($content_fields, 'user_content_fields_unsorted'); $user_fields = array(); foreach ($content_fields as $u_field) $user_fields[$u_field] = $user[$u_field]; $user_fields['link'] = $this->profile_link($user); $user_fields['thumb'] = $this->avatar($user); $user_fields['thumb_small'] = $this->avatar($user, "small"); //$user_fields['sub_title'] = ($the_content['duration']); return $user_fields; } /** * Getting user feeds.. * * @param INT $uid * @return ARRAY $feeds */ function get_feeds($uid) { global $cbfeeds; $feeds = $cbfeeds->get_feeds(array('type' => 'user', 'id' => $uid)); return $feeds; } /** * get user updates from cb_user_notifications Table * * @param INT userid * @param ARRAY $notifications_array */ function get_updates($uid) { $query = "SELECT new_msgs,new_notifications,new_friend_requests"; $query .=" FROM " . tbl('user_notifications'); $query .=" WHERE userid='$uid' "; $query .= " LIMIT 1"; $results = db_select($query); if ($results) return $results[0]; else return false; } /** * Set notifications count to zero for user_notifications table * * @param INT userid * @param STRING type (name of the field) */ function read_notification($uid, $field) { $where = ""; switch ($field) { case "notification": case "notifications": case "new_notifications": { $fields = array( 'new_notifications' => 0 ); } break; case "messages": case "msgs": case "new_msgs": case "new_messages": { $fields = array( 'new_msgs' => 0 ); } break; case "friends": case "new_firends": case "friend_requests": { $fields = array( 'new_friend_requests' => 0 ); } break; } $where = " userid='$uid' "; if ($fields) { db_update(tbl('user_notifications'), $fields, $where); return true; } return false; } /** * Function used to add a friend request * * @param INT userid (one who is rquesting) * @param INT friend_id (one whos userid is requesting) * */ function add_friend_request($array) { $uid = $array['userid']; $fid = $array['friend_id']; $msg = $array['message']; if ($fid == $uid && $uid) { e(lang('You cannot send friend request to yourself')); return false; } iF (!userid()) { e(lang('You are not logged in')); return false; } $friend = get_basic_user_details($fid); $user = get_basic_user_details($uid); if (!$friend) { e(lang('Unknown user')); return false; } $fname = name($friend); if ($this->is_friend($uid, $fid)) { e(sprintf(lang('You and %s are already friends'), $fname)); return false; } if ($this->is_friend_requested($uid, $fid)) { e(sprintf(lang('You have already sent a friend request to %s'), $fname)); return false; } //@todo : add restricions on sending requst >.< $db_fields = array( 'userid' => $uid, 'message' => $msg, 'friend_id' => $fid, 'time_added' => time() ); $req_id = db_insert(tbl('friend_requests'), $db_fields); //Add Friend notification.. $this->new_notify($fid, 'new_friend_requests'); e(sprintf(lang('Your friend request has been sent to %s'), $fname), 'm'); return $req_id; } /** * Checking if user has requested friendship already or not * * @param INT userid * @param INT friendid * */ function is_friend_requested($uid, $fid) { $uid = mysql_clean($uid); $fid = mysql_clean($fid); $query = " SELECT req_id FROM " . tbl('friend_requests'); $query .= " WHERE userid='$uid' AND friend_id='$fid' "; $query .= " LIMIT 1 "; $results = db_select($query); if ($results) return $results[0]['req_id']; } /** * Get user friend requests * * @param INT userid * */ function get_friend_requests($uid, $params = NULL) { $uid = mysql_clean($uid); if (isset($params['ignored'])) $ignored = mysql_clean($params['ignored']); if (isset($params['seen'])) $seen = mysql_clean($params['seen']); if (isset($params['count_only'])) $count_only = $params['count_only']; $fields_arr = array( 'r' => array('friend_id', 'message', 'seen', 'ignored', 'time_added', 'req_id'), 'u' => get_user_fields(), ); $fields = tbl_fields($fields_arr); $query = "SELECT " . $fields . " FROM " . tbl('friend_requests') . " AS r"; $query .= " LEFT JOIN " . tbl('users') . " AS u"; $query .= " ON u.userid=r.userid "; $query .= " WHERE r.friend_id='$uid' "; if ($ignored) $query .= " AND r.ignored='$ignored' "; if ($seen) $query .= " AND r.seen='$seen' "; if (!$count_only) $results = db_select($query); else { //Return total friend requests... $query = " SELECT count(req_id) as total_requests "; $query .= " FROM " . tbl('friend_requests') . " WHERE "; $query .= " friend_id='$uid' "; if ($ignored) $query .= " AND ignored='$ignored' "; if ($seen) $query .= " AND seen='$seen' "; $results = db_select($query); if ($results) { return $results[0]['total_requests']; } else { return 0; } } if ($results) return $results; else return false; } /** * get request info from table * * @param INT $rid Request ID * @return ARRAY $req Request Details Array */ function get_request($rid) { $rid = mysql_clean($rid); $fields_arr = array( 'userid', 'friend_id', 'message', 'seen', 'ignored', 'time_added' ); $fields = tbl_fields($fields_arr); $query = "SELECT " . $fields . " FROM " . tbl('friend_requests'); $query .= " WHERE req_id='" . $rid . "' LIMIT 1"; $results = db_select($query); if ($results) { return $results[0]; } else { return false; } } /** * Mark friend requests as seen * * @param INT $uid Userid */ function mark_requests_seen($uid) { global $db; $uid = mysql_clean($uid); db_update(tbl('friend_requests'), array( 'seen' => 'yes' ), " userid='$uid' "); return true; } } ?>