2563 lines
No EOL
85 KiB
PHP
2563 lines
No EOL
85 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @Author : Arslan Hassan, Fawaz Tahir
|
|
* @Software : ClipBucket, Community Bucket
|
|
* @License : Attribution Assurance License -- http://www.opensource.org/licenses/attribution.php
|
|
* @Since : 15 December 2009
|
|
*/
|
|
class CBGroups extends CBCategory {
|
|
|
|
var $gp_thumb_width = '140';
|
|
var $gp_thumb_height = '140';
|
|
var $gp_small_thumb_width = '60';
|
|
var $gp_small_thumb_height = '60';
|
|
var $gp_tbl = '';
|
|
var $custom_group_fields = array();
|
|
var $actions = '';
|
|
var $group_manager_funcs = array();
|
|
|
|
/**
|
|
* Constructor function to set values of tables
|
|
*/
|
|
function CBGroups() {
|
|
global $Cbucket;
|
|
$this->cat_tbl = 'group_categories';
|
|
$this->gp_tbl = 'groups';
|
|
$this->gp_mem_tbl = 'group_members';
|
|
//We will using CB Commenting system as posts
|
|
//$this->gp_post_tbl = 'group_posts';
|
|
$this->gp_topic_tbl = 'group_topics';
|
|
$this->gp_invite_tbl = 'group_invitations';
|
|
$this->gp_vdo_tbl = 'group_videos';
|
|
|
|
//Adding Actions such Report, share,fav etc
|
|
$this->action = new cbactions();
|
|
$this->action->type = 'g';
|
|
$this->action->name = 'group';
|
|
$this->action->obj_class = 'cbgroup';
|
|
$this->action->check_func = 'group_exists';
|
|
$this->action->type_tbl = $this->gp_tbl;
|
|
$this->action->type_id_field = 'group_id';
|
|
|
|
|
|
if (isSectionEnabled('groups'))
|
|
$Cbucket->search_types['groups'] = "cbgroup";
|
|
|
|
|
|
register_object('g','cbgroup');
|
|
register_object('group','cbgroup');
|
|
|
|
}
|
|
|
|
/**
|
|
* Function used to check if the provided URL is taken or not
|
|
* @param = $url { URL of group provided by user }
|
|
*/
|
|
function group_url_exists($url) {
|
|
global $db;
|
|
$result = $db->count(tbl($this->gp_tbl), "*", " group_url='$url'");
|
|
if ($result[0] > 0)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to get group details
|
|
* @param $ID { groupid }
|
|
*/
|
|
function get_group($id,$cond=NULL) {
|
|
global $db;
|
|
$gp_details = $db->select(tbl($this->gp_tbl), "*", "group_id='$id'");
|
|
if ($db->num_rows > 0) {
|
|
return $gp_details[0];
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function get($id,$cond=NULL)
|
|
{
|
|
return $this->get_group($id,$cond);
|
|
}
|
|
|
|
function get_group_details($id) {
|
|
return $this->get_group($id);
|
|
}
|
|
|
|
function get_details($id) {
|
|
return $this->get_group($id);
|
|
}
|
|
|
|
/**
|
|
* Funtion used to get gorup details
|
|
* @param, $URL { group url }
|
|
*/
|
|
function get_group_with_url($url) {
|
|
global $db;
|
|
$gp_details = $db->select(tbl($this->gp_tbl), "*", "group_url='$url'");
|
|
if ($db->num_rows > 0) {
|
|
return $gp_details[0];
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function get_group_details_with_url($id) {
|
|
return $this->get_group_with_url($id);
|
|
}
|
|
|
|
function get_details_with_url($id) {
|
|
return $this->get_group_with_url($id);
|
|
}
|
|
|
|
function group_details_url($id) {
|
|
return $this->get_group_with_url($id);
|
|
}
|
|
|
|
/**
|
|
* Function used to make user a member of group
|
|
* @param = $userid { ID of user who is going to Join Group }
|
|
* @param = $gpid { ID of group which is being joined }
|
|
*/
|
|
function join_group($gpid, $userid, $createFeed = true) {
|
|
|
|
global $db;
|
|
|
|
//Getting group details
|
|
$group = $this->get_group_details($gpid);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (!$this->is_joinable($group, $userid, TRUE))
|
|
return false;
|
|
elseif (!$userid)
|
|
e(lang('group_join_login_err'));
|
|
else {
|
|
if ($group['group_privacy'] == 1 && $group['userid'] != $userid)
|
|
$active = 'no';
|
|
else
|
|
$active = 'yes';
|
|
|
|
|
|
$db->insert(tbl($this->gp_mem_tbl), array("group_id", "userid", "date_added", "active"), array($gpid, $userid, now(), $active));
|
|
|
|
//Count total members
|
|
$total_members = $this->total_members($gpid);
|
|
|
|
//Adding Feed
|
|
if ($createFeed)
|
|
addFeed(array('action' => 'join_group', 'object_id' => $gpid, 'object' => 'group', 'userid' => $userid));
|
|
|
|
//Update Stats
|
|
$db->update(tbl($this->gp_tbl), array("total_members"), array($total_members), "group_id='$gpid'");
|
|
|
|
e(lang('grp_join_msg_succ'), 'm');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Creating Group Required Fields
|
|
*/
|
|
function load_required_fields($default = NULL, $is_update = FALSE) {
|
|
if ($default == NULL)
|
|
$default = $_POST;
|
|
|
|
$gptitle = $default['group_name'];
|
|
$gpdescription = $default['group_description'];
|
|
|
|
if (is_array($default['category']))
|
|
$cat_array = array($default['category']);
|
|
else {
|
|
preg_match_all('/#([0-9]+)#/', $default['category'], $m);
|
|
$cat_array = array($m[1]);
|
|
}
|
|
|
|
$tags = $default['group_tags'];
|
|
$gpurl = $default['group_url'];
|
|
|
|
|
|
if (!$is_update)
|
|
$url_form = array(
|
|
'title' => lang('grp_url_title'),
|
|
'type' => 'textfield',
|
|
'name' => 'group_url',
|
|
'id' => 'group_url',
|
|
'value' => cleanForm($gpurl),
|
|
'hint_1' => '',
|
|
'hint_2' => lang('grp_url_msg'),
|
|
'db_field' => 'group_url',
|
|
'required' => 'yes',
|
|
'invalid_err' => lang('grp_url_error'),
|
|
'syntax_type' => 'field_text',
|
|
'function_error_msg' => lang('user_contains_disallow_err'),
|
|
'db_value_check_func' => 'group_url_exists',
|
|
'db_value_exists' => false,
|
|
'db_value_err' => lang('grp_url_error2'),
|
|
'min_length' => 3,
|
|
'max_length' => 18,
|
|
);
|
|
else
|
|
$url_form = array(
|
|
'title' => lang('grp_url_title'),
|
|
'type' => 'textfield',
|
|
'name' => 'group_url',
|
|
'id' => 'group_url',
|
|
'value' => cleanForm($gpurl),
|
|
'hint_1' => '',
|
|
'hint_2' => lang('grp_url_msg'),
|
|
'db_field' => 'group_url',
|
|
'required' => 'yes',
|
|
'invalid_err' => lang('grp_url_error'),
|
|
'syntax_type' => 'field_text',
|
|
'function_error_msg' => lang('user_contains_disallow_err'),
|
|
'min_length' => 3,
|
|
'max_length' => 18,
|
|
);
|
|
|
|
$fields = array
|
|
(
|
|
'name' => array(
|
|
'title' => lang('grp_name_title'),
|
|
'type' => "textfield",
|
|
'name' => "group_name",
|
|
'id' => "group_name",
|
|
'value' => $gptitle,
|
|
'db_field' => 'group_name',
|
|
'required' => 'yes',
|
|
'invalid_err' => lang('grp_name_error'),
|
|
'max_length' => config('grp_max_title')
|
|
),
|
|
'tags' => array(
|
|
'title' => lang('tag_title'),
|
|
'type' => 'textfield',
|
|
'name' => 'group_tags',
|
|
'id' => 'group_tags',
|
|
'value' => (genTags($tags)),
|
|
'hint_1' => '',
|
|
'hint_2' => lang('grp_tags_msg1'),
|
|
'db_field' => 'group_tags',
|
|
'required' => 'yes',
|
|
'invalid_err' => lang('grp_tags_error'),
|
|
'validate_function' => 'genTags'
|
|
),
|
|
'desc' => array(
|
|
'title' => lang('vdo_desc'),
|
|
'type' => 'textarea',
|
|
'name' => 'group_description',
|
|
'id' => 'group_description',
|
|
'value' => cleanForm($gpdescription),
|
|
'size' => '35',
|
|
'extra_params' => ' rows="4" ',
|
|
'db_field' => 'group_description',
|
|
'invalid_err' => lang('grp_des_error'),
|
|
'required' => 'yes',
|
|
'max_length' => config('grp_max_desc')
|
|
),
|
|
$url_form,
|
|
'cat' => array(
|
|
'title' => lang('grp_cat_tile'),
|
|
'type' => 'checkbox',
|
|
'name' => 'category[]',
|
|
'id' => 'category',
|
|
'value' => array('category', $cat_array),
|
|
'hint_1' => sprintf(lang('vdo_cat_msg'), ALLOWED_GROUP_CATEGORIES),
|
|
'db_field' => 'category',
|
|
'required' => 'yes',
|
|
'validate_function' => 'validate_group_category',
|
|
'invalid_err' => lang('grp_cat_error'),
|
|
'display_function' => 'convert_to_categories',
|
|
'category_type' => 'group',
|
|
),
|
|
);
|
|
|
|
return $fields;
|
|
}
|
|
|
|
/**
|
|
* Function used to load other group option fields
|
|
*/
|
|
function load_other_fields($default = NULL) {
|
|
global $LANG, $uploadFormOptionFieldsArray;
|
|
|
|
|
|
if (!$default)
|
|
$default = $_POST;
|
|
|
|
$gpprivacy = $default['group_privacy'];
|
|
$gpposting = $default['post_type'];
|
|
|
|
$group_option_fields = array
|
|
(
|
|
'privacy' => array('title' => lang('privacy'),
|
|
'type' => 'radiobutton',
|
|
'name' => 'group_privacy',
|
|
'id' => 'group_privacy',
|
|
'value' => array('0' => lang('grp_join_opt1'), '1' => lang('grp_join_opt2'), 2 => lang('grp_join_opt3')),
|
|
'checked' => $gpprivacy,
|
|
'db_field' => 'group_privacy',
|
|
'required' => 'no',
|
|
'display_function' => 'display_sharing_opt',
|
|
),
|
|
'posting' => array('title' => lang('grp_forum_posting'),
|
|
'type' => 'radiobutton',
|
|
'name' => 'post_type',
|
|
'id' => 'post_type',
|
|
'value' => array('0' => lang('vdo_br_opt1'), '1' => lang('vdo_br_opt2'), 2 => lang('grp_join_opt3')),
|
|
'checked' => $gpposting,
|
|
'db_field' => 'post_type',
|
|
'required' => 'no',
|
|
'display_function' => 'display_sharing_opt',
|
|
),
|
|
);
|
|
|
|
return $group_option_fields;
|
|
}
|
|
|
|
/**
|
|
* Function used to validate Signup Form
|
|
*/
|
|
function validate_form_fields($array = NULL, $update = false) {
|
|
$fields = $this->load_required_fields($array, $update);
|
|
|
|
if ($array == NULL)
|
|
$array = $_POST;
|
|
|
|
if (is_array($_FILES))
|
|
$array = array_merge($array, $_FILES);
|
|
|
|
//Mergin Array
|
|
$group_fields = array_merge($fields, $this->load_other_fields());
|
|
|
|
validate_cb_form($group_fields, $array);
|
|
}
|
|
|
|
/**
|
|
* Function used to create new groups
|
|
* @Author : Fawaz Tahir, Arslan Hassan
|
|
* @Params : array { Group Input Details }
|
|
* @since : 15 December 2009
|
|
*/
|
|
function create_group($array, $user = false, $redirect_to_group = false) {
|
|
global $db;
|
|
if ($array == NULL)
|
|
$array = $_POST;
|
|
|
|
if (is_array($_FILES))
|
|
$array = array_merge($array, $_FILES);
|
|
|
|
$this->validate_form_fields($array);
|
|
|
|
if (!error()) {
|
|
$group_fields = $this->load_required_fields($array);
|
|
$group_fields = array_merge($group_fields, $this->load_other_fields());
|
|
|
|
//Adding Custom Signup Fields
|
|
if (count($this->custom_group_fields) > 0)
|
|
$group_fields = array_merge($group_fields, $this->custom_group_fields);
|
|
foreach ($group_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']))
|
|
$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 = ($val);
|
|
else
|
|
$val = apply_func($field['clean_func'], sql_free('|no_mc|' . $val));
|
|
|
|
if (!empty($field['db_field']))
|
|
$query_val[] = $val;
|
|
}
|
|
}
|
|
|
|
if (!error()) {
|
|
//UID
|
|
$query_field[] = "userid";
|
|
$query_val[] = $user;
|
|
|
|
//DATE ADDED
|
|
$query_field[] = "date_added";
|
|
$query_val[] = now();
|
|
|
|
$query_field[] = "total_members";
|
|
$query_val[] = 1;
|
|
|
|
//Inserting IN Database now
|
|
$db->insert(tbl($this->gp_tbl), $query_field, $query_val);
|
|
$insert_id = $db->insert_id();
|
|
|
|
//Owner Joiing Group
|
|
ignore_errors();
|
|
|
|
$db->insert(tbl($this->gp_mem_tbl), array("group_id", "userid", "date_added", "active"), array($insert_id, $user, now(), 'yes'));
|
|
|
|
|
|
//$this->join_group($insert_id,$user,false);
|
|
//Updating User Total Groups
|
|
$this->update_user_total_groups($user);
|
|
|
|
//Adding Feed
|
|
addFeed(array('action' => 'create_group', 'object_id' => $insert_id, 'object' => 'group'));
|
|
|
|
if ($redirect_to_group) {
|
|
$grp_details = $this->get_details($insert_id);
|
|
redirect_to(group_link(array('details' => $grp_details)));
|
|
}
|
|
|
|
|
|
|
|
//loggin Upload
|
|
$log_array = array
|
|
(
|
|
'success' => 'yes',
|
|
'action_obj_id' => $insert_id,
|
|
'details' => "created new group");
|
|
insert_log('add_group', $log_array);
|
|
|
|
return $insert_id;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to update group
|
|
* @Author : Fawaz Tahir, Arslan Hassan
|
|
* @Params : array { Group Input Details }
|
|
* @since : 15 December 2009
|
|
*/
|
|
function update_group($array = NULL) {
|
|
global $db;
|
|
if ($array == NULL)
|
|
$array = $_POST;
|
|
|
|
if (is_array($_FILES))
|
|
$array = array_merge($array, $_FILES);
|
|
|
|
$this->validate_form_fields($array, true);
|
|
|
|
$gid = $array['group_id'];
|
|
|
|
if (!error()) {
|
|
$group_fields = $this->load_required_fields($array);
|
|
$group_fields = array_merge($group_fields, $this->load_other_fields());
|
|
|
|
//Adding Custom Signup Fields
|
|
if (count($this->custom_group_fields) > 0)
|
|
$group_fields = array_merge($group_fields, $this->custom_group_fields);
|
|
foreach ($group_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']))
|
|
$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 = ($val);
|
|
else
|
|
$val = apply_func($field['clean_func'], sql_free('|no_mc|' . $val));
|
|
|
|
if (!empty($field['db_field']))
|
|
$query_val[] = $val;
|
|
}
|
|
}
|
|
|
|
|
|
if (has_access('admin_access', TRUE)) {
|
|
if (!empty($array['total_views'])) {
|
|
$query_field[] = 'total_views';
|
|
$query_val[] = $array['total_views'];
|
|
}
|
|
if (!empty($array['total_videos'])) {
|
|
$query_field[] = 'total_videos';
|
|
$query_val[] = $array['total_videos'];
|
|
}
|
|
if (!empty($array['total_members'])) {
|
|
$query_field[] = 'total_members';
|
|
$query_val[] = $array['total_members'];
|
|
}
|
|
if (!empty($array['total_topics'])) {
|
|
$query_field[] = 'total_topics';
|
|
$query_val[] = $array['total_topics'];
|
|
}
|
|
}
|
|
|
|
//Getting Group URL value
|
|
$gp_url = $this->get_gp_field_only($gid, "group_url");
|
|
//Checking Group URL
|
|
if ($array['group_url'] != $gp_url)
|
|
if (group_url_exists($array['group_url']))
|
|
e(lang('grp_url_error2'));
|
|
if (!error()) {
|
|
|
|
if (!userid()) {
|
|
e(lang("you_not_logged_in"));
|
|
} elseif (!$this->group_exists($gid)) {
|
|
e(lang("grp_exist_error"));
|
|
} elseif (!$this->is_owner($gid, userid()) && !has_access('admin_access', TRUE)) {
|
|
e(lang("you_cant_edit_group"));
|
|
} else {
|
|
|
|
$db->update(tbl($this->gp_tbl), $query_field, $query_val, " group_id='$gid'");
|
|
e(lang("grp_details_updated"), 'm');
|
|
|
|
//Updating Group Thumb
|
|
if (!empty($array['thumb_file']['tmp_name']))
|
|
$this->create_group_image($gid, $array['thumb_file']);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to get default image for group.
|
|
*/
|
|
function get_default_thumb($size = NULL) {
|
|
if ($size == "small" && file_exists(TEMPLATEDIR . '/images/thumbs/group_thumb-small.png')) {
|
|
return TEMPLATEURL . '/images/thumbs/group_thumb-small.png';
|
|
} elseif (file_exists(TEMPLATEDIR . '/images/thumbs/group_thumb.png') && !$size) {
|
|
return TEMPLATEURL . '/images/thumbs/group_thumb.png';
|
|
} else {
|
|
if ($size == 'small')
|
|
$this->get_default_thumb = GP_THUMB_URL . '/no_thumb-small.png';
|
|
else
|
|
$this->get_default_thumb = GP_THUMB_URL . '/no_thumb.png';
|
|
return $this->get_default_thumb;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to create group thumbnail
|
|
* @param = $gpid {ID of group for which thumbnail is being created }
|
|
* @param = $file { Source of image file $_FILES }
|
|
*/
|
|
function create_group_image($gpid, $file) {
|
|
global $imgObj;
|
|
$file_ext = strtolower(getext($file['name']));
|
|
$exts = array('jpg', 'png', 'gif', 'jpeg');
|
|
|
|
foreach ($exts as $ext) {
|
|
if ($ext == $file_ext) {
|
|
$thumb_name = $gpid . '.' . $ext;
|
|
$small_thumb_name = $gpid . '-small.' . $ext;
|
|
$path = GP_THUMB_DIR . '/' . $thumb_name;
|
|
$small_path = GP_THUMB_DIR . '/' . $small_thumb_name;
|
|
foreach ($exts as $unlink_ext)
|
|
if (file_exists(GP_THUMB_DIR . '/' . $gpid . '.' . $unlink_ext))
|
|
unlink(GP_THUMB_DIR . '/' . $gpid . '.' . $unlink_ext);
|
|
|
|
move_uploaded_file($file['tmp_name'], $path);
|
|
|
|
if (!$imgObj->ValidateImage($path, $ext))
|
|
e(lang('pic_upload_vali_err'));
|
|
else {
|
|
$imgObj->CreateThumb($path, $path, $this->gp_thumb_width, $ext, $this->gp_thumb_height, true);
|
|
$imgObj->CreateThumb($path, $small_path, $this->gp_small_thumb_width, $ext, $this->gp_small_thumb_height, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to get group thumb.
|
|
* @param Group Details array
|
|
*/
|
|
function get_gp_thumb($grp_details, $size = NULL) {
|
|
$exts = array('jpg', 'png', 'gif', 'jpeg');
|
|
$gpid = $grp_details['group_id'];
|
|
foreach ($exts as $ext) {
|
|
if ($size == 'small')
|
|
$file_size = "-small";
|
|
|
|
if (file_exists(GP_THUMB_DIR . '/' . $gpid . "$file_size." . $ext))
|
|
return GP_THUMB_URL . '/' . $gpid . "$file_size." . $ext;
|
|
}
|
|
|
|
return $this->get_default_thumb($size);
|
|
}
|
|
|
|
function get_group_thumb($grp_details, $size = NULL) {
|
|
return $this->get_gp_thumb($grp_details, $size);
|
|
}
|
|
|
|
/**
|
|
* function used to get group icon
|
|
*/
|
|
function get_topic_icon($topic) {
|
|
$file = TOPIC_ICON_DIR . '/' . $topic['topic_icon'];
|
|
if (file_exists($file) && !empty($topic['topic_icon'])) {
|
|
return TOPIC_ICON_URL . '/' . $topic['topic_icon'];
|
|
}else
|
|
return TOPIC_ICON_URL . '/dot.gif';
|
|
}
|
|
|
|
/**
|
|
* Function used add new topic in group
|
|
* @param ARRAY details
|
|
*/
|
|
function add_topic($array, $redirect_to_topic = false) {
|
|
global $db;
|
|
if ($array == NULL)
|
|
$array = $_POST;
|
|
|
|
if (is_array($_FILES))
|
|
$array = array_merge($array, $_FILES);
|
|
|
|
$fields = $this->load_add_topic_form_fields($array);
|
|
validate_cb_form($fields, $array);
|
|
|
|
$user = userid();
|
|
|
|
$gp_details = $this->get_group_details($array['group_id']);
|
|
|
|
|
|
//Checking for weather user is allowed to post topics or not
|
|
if (!$this->validate_posting_previlige($gp_details))
|
|
return false;
|
|
|
|
if (!error()) {
|
|
foreach ($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']))
|
|
$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'] || (!apply_func($field['clean_func'], $val) && !is_array($field['clean_func'])))
|
|
$val = $val;
|
|
else
|
|
$val = apply_func($field['clean_func'], sql_free($val));
|
|
|
|
if (empty($val) && !empty($field['default_value']))
|
|
$val = $field['default_value'];
|
|
|
|
if (!empty($field['db_field']))
|
|
$query_val[] = $val;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (!error()) {
|
|
//Adding Topic icon
|
|
$query_field[] = "topic_icon";
|
|
$query_val[] = $array['topic_icon'];
|
|
//UID
|
|
$query_field[] = "userid";
|
|
$query_val[] = $user;
|
|
//DATE ADDED
|
|
$query_field[] = "date_added";
|
|
$query_val[] = now();
|
|
|
|
$query_field[] = "last_post_time";
|
|
$query_val[] = now();
|
|
|
|
//GID
|
|
$query_field[] = "group_id";
|
|
$query_val[] = $array['group_id'];
|
|
|
|
//Checking If posting requires approval or not
|
|
$query_field[] = "approved";
|
|
if ($gp_details['post_type'] == 1)
|
|
$query_val[] = "no";
|
|
else
|
|
$query_val[] = "yes";
|
|
|
|
//Inserting IN Database now
|
|
$db->insert(tbl($this->gp_topic_tbl), $query_field, $query_val);
|
|
$insert_id = $db->insert_id();
|
|
|
|
//Increasing Group Topic Counts
|
|
$count_topics = $this->count_group_topics($array['group_id']);
|
|
$db->update(tbl($this->gp_tbl), array("total_topics"), array($count_topics), " group_id='" . $array['group_id'] . "'");
|
|
|
|
//leaving msg
|
|
e(lang("grp_tpc_msg"), "m");
|
|
|
|
//Redirecting to topic
|
|
if ($redirect_to_topic) {
|
|
$grp_details = $this->get_details($insert_id);
|
|
redirect_to(group_link($grp_details));
|
|
}
|
|
|
|
return $insert_id;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to delete group topic
|
|
*/
|
|
function delete_topic($tid) {
|
|
global $db;
|
|
$topic = $this->get_topic_details($tid);
|
|
$group = $this->get_group_details($topic['group_id']);
|
|
if (!$topic)
|
|
e(lang("grp_tpc_err4"));
|
|
elseif (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (userid() != $topic['userid'] && userid() != $group['userid'])
|
|
e(lang("you_cant_del_topic"));
|
|
else {
|
|
$db->delete(tbl($this->gp_topic_tbl), array("topic_id", "group_id"), array($tid, $topic['group_id']));
|
|
//Deleting Topic Posts
|
|
$this->delete_comments($tid);
|
|
|
|
//Counting Total Topics
|
|
$count_topics = $this->count_topics($topic['group_id']);
|
|
|
|
//Updating Total Number
|
|
$db->update(tbl($this->gp_tbl), array('total_topics'), array($count_topics), " group_id = '" . $topic['group_id'] . "'");
|
|
|
|
e(lang("grp_tpc_msg1"), "m");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to delete all user topics
|
|
*/
|
|
function delete_user_topics($uid, $gid) {
|
|
global $db;
|
|
$group = $this->get_group_details($gid);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (userid() != $group['userid'] && userid() != $uid && !has_access('admin_access', true))
|
|
e(lang("you_cant_del_user_topics"));
|
|
else {
|
|
$usr_topics = $this->get_topics(array('group' => $gid, 'user' => $uid));
|
|
if (is_array($usr_topics))
|
|
foreach ($usr_topics as $topic)
|
|
$this->delete_topic($topic['topic_id']);
|
|
e(lang("topics_deleted"), "m");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to delete all group topics
|
|
*/
|
|
function delete_group_topics($gid) {
|
|
global $db;
|
|
$group = $this->get_group_details($gid);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (userid() != $group['userid'] && !has_access('admin_access', true))
|
|
e(lang("you_cant_delete_grp_topics"));
|
|
else {
|
|
$topics = $this->get_topics(array('group' => $gid));
|
|
if (is_array($topics))
|
|
foreach ($topics as $topic)
|
|
$this->delete_topic($topic['topic_id']);
|
|
e(lang("deleted"), "m");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to check weather posting is allowed or not
|
|
*/
|
|
function validate_posting_previlige($gdetails) {
|
|
if (is_numeric($gdetails))
|
|
$gdetails = $this->get_group_details($gdetails);
|
|
|
|
if (!$gdetails || empty($gdetails['group_id']))
|
|
e(lang("grp_exist_error"));
|
|
if (!userid())
|
|
e(lang("grp_please_login"));
|
|
elseif (!$this->is_member(userid(), $gdetails['group_id'], TRUE))
|
|
e(lang("you_not_grp_mem_or_approved"));
|
|
elseif ($gdetails['post_type'] == 2 && userid() != $gdetails['userid'] && !has_access('admin_access', true))
|
|
e(lang("you_not_allowed_post_topics"));
|
|
else {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to get group topics
|
|
* INPUT Group ID
|
|
*/
|
|
function get_group_topics($params) {
|
|
global $db;
|
|
|
|
$gid = $params['group'] ? $params['group'] : $params;
|
|
$limit = $params['limit'];
|
|
$order = $params['order'] ? $params['order'] : " last_post_time DESC ";
|
|
|
|
if ($params['approved'])
|
|
$approved_query = " AND " . tbl('group_topics') . ".approved='yes' ";
|
|
if ($params['user'])
|
|
$user_query = " AND " . tbl('group_topics') . ".userid='" . $params['user'] . "'";
|
|
|
|
|
|
//user fields
|
|
$fields = array(
|
|
'email', 'username'
|
|
);
|
|
|
|
$fields = apply_filters($fields, 'group_topic_user_fields');
|
|
|
|
foreach ($fields as $field)
|
|
$uquery .= ',' . tbl('users.' . $field);
|
|
|
|
if ($limit)
|
|
$limit_query = " LIMIT " . $limit;
|
|
else
|
|
$limit_query = '';
|
|
|
|
$order = ' ORDER BY ' . $order;
|
|
$results = db_select("SELECT " . tbl('group_topics') . ".*$uquery FROM "
|
|
. tbl('group_topics') . " LEFT JOIN " . tbl('users') . " ON " . tbl('users.userid')
|
|
. "=" . tbl('group_topics.userid') . " WHERE " . tbl('group_topics')
|
|
. ".group_id='$gid' $user_query $order $limit_query ");
|
|
|
|
|
|
if ($db->num_rows > 0)
|
|
return $results;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
function GetTopics($params) {
|
|
return $this->get_group_topics($params);
|
|
}
|
|
|
|
function get_topics($params) {
|
|
return $this->get_group_topics($params);
|
|
}
|
|
|
|
/**
|
|
* Function used to check weather topic exists or not
|
|
* @param TOPIC ID {id of topic}
|
|
*/
|
|
function topic_exists($tid) {
|
|
global $db;
|
|
$count = $db->count(tbl($this->gp_topic_tbl), 'topic_id', " topic_id='$tid' ");
|
|
if ($count[0] > 0)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to get topic details
|
|
* @param TOPIC ID {id of topic}
|
|
*/
|
|
function get_topic_details($topic) {
|
|
global $db;
|
|
|
|
//user fields
|
|
$fields = array(
|
|
'email', 'username'
|
|
);
|
|
|
|
$fields = apply_filters($fields, 'group_topic_user_fields');
|
|
|
|
foreach ($fields as $field)
|
|
$uquery .= ',' . tbl('users.' . $field);
|
|
|
|
|
|
$result = db_select("SELECT " . tbl($this->gp_topic_tbl)
|
|
. ".* $uquery FROM " . tbl($this->gp_topic_tbl)
|
|
. " LEFT JOIN " . tbl("users") . " ON " . tbl('users.userid')
|
|
. '=' . tbl($this->gp_topic_tbl . '.userid')
|
|
. " WHERE topic_id='$topic'");
|
|
|
|
|
|
//$result = $db->select(tbl($this->gp_topic_tbl),"*"," topic_id='$topic' ");
|
|
|
|
if ($db->num_rows > 0)
|
|
return $result[0];
|
|
else
|
|
return false;
|
|
}
|
|
|
|
function gettopic($topic) {
|
|
return $this->get_topic_details($topic);
|
|
}
|
|
|
|
function get_topic($topic) {
|
|
return $this->get_topic_details($topic);
|
|
}
|
|
|
|
/**
|
|
* Function used to check weather user is invited or not
|
|
*/
|
|
function is_invited($uid, $gid, $owner, $gen_err = FALSE) {
|
|
global $db;
|
|
$count = $db->count(tbl($this->gp_invite_tbl), 'invitation_id', " invited='$uid' AND group_id='$gid' AND userid='$owner' ");
|
|
if ($count[0] > 0)
|
|
return true;
|
|
else {
|
|
if ($gen_err)
|
|
e(lang('grp_prvt_err1'));
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function is_userinvite($uid, $gid, $owner) {
|
|
return $this->is_invited($uid, $gid, $owner);
|
|
}
|
|
|
|
/**
|
|
* Function used to check whether user is already a member or not
|
|
* @param = $user { User to check }
|
|
* @param = $gpid { ID of group in which we will check }
|
|
*/
|
|
function is_member($user, $gpid, $active = false) {
|
|
global $db;
|
|
|
|
$active_query = "";
|
|
if ($active)
|
|
$active_query = " AND active='yes' ";
|
|
|
|
$data = $db->count(tbl($this->gp_mem_tbl), "*", "group_id='$gpid' AND userid='$user' $active_query");
|
|
//echo $db->db_query;
|
|
if ($data[0] > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function joined_group($user, $gpid) {
|
|
return $this->is_member($user, $gpid);
|
|
}
|
|
|
|
/**
|
|
* Function use to check weather user is owner or not of the group
|
|
* @param GID {group id}
|
|
* @param UID {logged in user or just user}
|
|
*/
|
|
function is_owner($gid, $uid = NULL) {
|
|
if (!$uid)
|
|
$uid = userid();
|
|
|
|
if (!is_array($gid))
|
|
$group = $this->get_group_details($gid);
|
|
else
|
|
$group = $gid;
|
|
if ($group['userid'] == $uid)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to count total number of members in a group.
|
|
* @param = $gpid { ID of group whose members are going to be counted }
|
|
*/
|
|
function total_members($gpid, $active = true) {
|
|
global $db;
|
|
if ($active)
|
|
$activeQuery = "AND active = 'yes'";
|
|
$totalmem = $db->count(tbl("group_members"), "*", "group_id='$gpid' $activeQuery");
|
|
return $totalmem[0];
|
|
}
|
|
|
|
/**
|
|
* Function used to get group members
|
|
*/
|
|
function get_members($gid, $limit = NULL, $approved = NULL) {
|
|
global $db;
|
|
|
|
$app_query = "";
|
|
if ($approved)
|
|
$app_query = " AND " . tbl($this->gp_mem_tbl) . ".active='$approved'";
|
|
|
|
//List of fields we need from a user table
|
|
$user_fields = array(
|
|
'email', 'username', 'status', 'ban_status'
|
|
);
|
|
|
|
$user_fields = apply_filters($user_fields, 'get_group_members');
|
|
|
|
$fields_query = '';
|
|
|
|
foreach ($user_fields as $field)
|
|
$fields_query .= ',' . tbl('users') . '.' . $field;
|
|
|
|
$result = $db->select(tbl($this->gp_mem_tbl)
|
|
. " LEFT JOIN " . tbl('users')
|
|
. " ON " . tbl($this->gp_mem_tbl)
|
|
. ".userid=" . tbl('users') . ".userid"
|
|
, tbl($this->gp_mem_tbl) . ".*" . $fields_query
|
|
, " group_id='$gid' $app_query", $limit);
|
|
|
|
|
|
|
|
if ($db->num_rows > 0)
|
|
return $result;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to check weather member is active or not
|
|
*/
|
|
function is_active_member($uid, $gid) {
|
|
global $db;
|
|
$count = $db->count(tbl($this->gp_mem_tbl), "userid", " userid='$uid' AND group_id='$gid' AND active='yes'");
|
|
if ($count[0] > 0)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* function used to count number of topics in a group
|
|
*/
|
|
function count_group_topics($group) {
|
|
global $db;
|
|
$totaltopics = $db->count(tbl($this->gp_topic_tbl), "*", "group_id='$group'");
|
|
return $totaltopics;
|
|
}
|
|
|
|
function CountTopics($group) {
|
|
return $this->count_group_topics($group);
|
|
}
|
|
|
|
function count_topics($group) {
|
|
return $this->count_group_topics($group);
|
|
}
|
|
|
|
/**
|
|
* Function used to add video to group
|
|
*/
|
|
function add_group_video($vid, $gid, $update_group = false) {
|
|
global $db, $cbvid;
|
|
$group = $this->get_details($gid);
|
|
$video = $cbvid->get_video_details($vid);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (!$video)
|
|
e(lang("class_vdo_del_err"));
|
|
elseif ($video['userid'] != userid())
|
|
e(lang("you_cant_add_this_vdo"));
|
|
elseif ($this->is_group_video($vid, $gid))
|
|
return false;
|
|
else {
|
|
if (!$this->is_active_member(userid(), $group['group_id'])) {
|
|
$approved = "no";
|
|
e(lang("your_video_send_in_modetation"), "w");
|
|
}
|
|
else
|
|
$approved = "yes";
|
|
|
|
$db->insert(tbl($this->gp_vdo_tbl), array("videoid", "group_id", "userid", "approved"), array($vid, $gid, userid(), $approved));
|
|
e(lang("video_added"), "m");
|
|
if ($update_group)
|
|
$this->update_group_videos_count($gid);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Removing video gro group
|
|
*/
|
|
function remove_group_video($vid, $gid, $update_group = false) {
|
|
global $db, $cbvid;
|
|
$group = $this->get_details($gid);
|
|
$video = $cbvid->get_video_details($vid);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (!$video)
|
|
e(lang("class_vdo_del_err"));
|
|
elseif ($video['userid'] != userid())
|
|
e(lang("you_cant_del_this_vdo"));
|
|
elseif (!$this->is_group_video($vid, $gid))
|
|
return false;
|
|
else {
|
|
$db->delete(tbl($this->gp_vdo_tbl), array("videoid", "group_id"), array($vid, $gid));
|
|
e(lang("video_removed"), "m");
|
|
if ($update_group)
|
|
$this->update_group_videos_count($gid);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to check weather video is already in group or not
|
|
*/
|
|
function is_group_video($vid, $gid) {
|
|
global $db;
|
|
$count = $db->count(tbl($this->gp_vdo_tbl), "group_video_id", " videoid='$vid' AND group_id='$gid'");
|
|
if ($count[0] > 0)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to count videos of group
|
|
* @param GID {group ID}
|
|
*/
|
|
function count_videos($gpid, $approved = true) {
|
|
global $db;
|
|
if ($approved)
|
|
$appQuery = "AND approved = 'yes'";
|
|
$totalmem = $db->count(tbl("group_videos"), "*", "group_id='$gpid' $appQuery");
|
|
return $totalmem;
|
|
}
|
|
|
|
function total_videos($gid) {
|
|
return $this->count_videos($gid);
|
|
}
|
|
|
|
/**
|
|
* Function used to update number of videos of group
|
|
*/
|
|
function update_group_videos_count($gid) {
|
|
global $db;
|
|
$total = $this->count_videos($gid);
|
|
$db->update(tbl($this->gp_tbl), array('total_videos'), array($total), " group_id='$gid'");
|
|
}
|
|
|
|
/**
|
|
* Function used to get group videos
|
|
*/
|
|
function get_group_videos($gid, $approved = NULL, $limit = NULL) {
|
|
global $db, $cbvid;
|
|
if ($approved)
|
|
$approved_query = "AND approved='$approved'";
|
|
|
|
|
|
if ($limit != 'count') {
|
|
$result = $db->select(tbl($this->gp_vdo_tbl) . " LEFT JOIN " . tbl('video') . "
|
|
ON " . tbl($this->gp_vdo_tbl) . ".videoid=" . tbl('video') . ".videoid", "*", " group_id='$gid' $approved_query AND " . tbl('video') . ".active='yes' AND status='Successful'", $limit);
|
|
} else {
|
|
return $db->count(tbl($this->gp_vdo_tbl) . " LEFT JOIN " . tbl('video') . "
|
|
ON " . tbl($this->gp_vdo_tbl) . ".videoid=" . tbl('video') . ".videoid", "videoid", " group_id='$gid' $approved_query AND " . tbl('video') . ".active='yes' AND status='Successful'", $limit);
|
|
}
|
|
|
|
if ($db->num_rows > 0)
|
|
return $result;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to activate or detactivate or delete group member
|
|
*/
|
|
function member_actions($gid, $memuid, $case, $deleting_group = FALSE) {
|
|
global $db;
|
|
|
|
//getting group details
|
|
$group = $this->get_group_details($gid);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (!$this->is_member($memuid, $gid))
|
|
e(lang("user_not_grp_mem"));
|
|
elseif (userid() != $group['userid'] && !has_access("admin_access", true))
|
|
e(lang("grp_owner_err1"));
|
|
elseif ($group['userid'] == $memuid && !$deleting_group)
|
|
e(lang("you_cant_perform_actions_on_grp_own"));
|
|
else
|
|
switch ($case) {
|
|
case "activate":
|
|
case "active": {
|
|
$db->update(tbl($this->gp_mem_tbl), array("active"), array("yes"), "userid='$memuid' AND group_id='$gid'");
|
|
e(lang("usr_ac_msg"), "m");
|
|
}
|
|
break;
|
|
|
|
case "deactivate":
|
|
case "deactive":
|
|
case "unactivate":
|
|
case "unactive": {
|
|
$db->update(tbl($this->gp_mem_tbl), array("active"), array("no"), "userid='$memuid' AND group_id='$gid'");
|
|
e(lang("usr_dac_msg"), "m");
|
|
}
|
|
break;
|
|
|
|
case "delete": {
|
|
|
|
//Delete All Videos oF member
|
|
$db->delete(tbl($this->gp_vdo_tbl), array("userid", "group_id"), array($memuid, gid));
|
|
//Deleting ALl Topics Of
|
|
$this->delete_user_topics($memuid, $gid);
|
|
//Delete Member
|
|
$db->delete(tbl($this->gp_mem_tbl), array("userid", "group_id"), array($memuid, $gid));
|
|
|
|
$total_members = $this->total_members($gid);
|
|
$total_videos = $this->total_videos($gid);
|
|
$count_topics = $this->count_group_topics($gid);
|
|
|
|
//Update Stat
|
|
$db->update(tbl($this->gp_tbl), array("total_topics", "total_members", "total_videos"), array($count_topics, $total_members, $total_videos), " group_id='" . $gid . "'");
|
|
|
|
e(lang("usr_del_msg"), "m");
|
|
}
|
|
break;
|
|
case "ban": {
|
|
$db->update(tbl($this->gp_mem_tbl), array("ban"), array("yes"), "userid='$memuid' AND group_id='$gid'");
|
|
e(lang("User has been banned from this group"), "m");
|
|
}
|
|
break;
|
|
case "unban": {
|
|
$db->update(tbl($this->gp_mem_tbl), array("ban"), array("no"), "userid='$memuid' AND group_id='$gid'");
|
|
e(lang("User ban has been removed"), "m");
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function will update number of members in the group in groups table
|
|
*
|
|
* @Author Arslan
|
|
* @param GID
|
|
* @return BOOLEAN
|
|
*/
|
|
function update_group_members($gid) {
|
|
global $db;
|
|
$total_members = $this->total_members($gid);
|
|
$db->update(tbl($this->gp_tbl), array("total_members"), array($total_members), " group_id='" . $gid . "'");
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Function used to perform actions on videos
|
|
*/
|
|
function video_actions($gid, $vid, $case) {
|
|
global $db;
|
|
|
|
//getting group details
|
|
$group = $this->get_group_details($gid);
|
|
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (!$this->is_group_video($vid, $gid))
|
|
e(lang("class_vdo_del_err"));
|
|
elseif (userid() != $group['userid'] && !has_access("admin_access"))
|
|
e(lang("grp_owner_err1"));
|
|
else
|
|
switch ($case) {
|
|
case "activate":
|
|
case "active": {
|
|
$db->update(tbl($this->gp_vdo_tbl), array("approved"), array("yes"), "videoid ='$vid' AND group_id='$gid'");
|
|
$this->update_group_videos_count($gid);
|
|
e(lang("class_vdo_act_msg"), "m");
|
|
}
|
|
break;
|
|
|
|
case "deactivate":
|
|
case "deactive":
|
|
case "unactivate":
|
|
case "unactive": {
|
|
$db->update(tbl($this->gp_vdo_tbl), array("approved"), array("no"), "videoid ='$vid' AND group_id='$gid'");
|
|
$this->update_group_videos_count($gid);
|
|
e(lang("class_vdo_act_msg1"), "m");
|
|
}
|
|
break;
|
|
|
|
case "delete": {
|
|
//Delete video
|
|
$db->delete(tbl($this->gp_vdo_tbl), array("videoid", "group_id"), array($vid, $gid));
|
|
|
|
$total_videos = $this->total_videos($gid);
|
|
//Update Stat
|
|
$db->update(tbl($this->gp_tbl), array("total_videos"), array($total_videos), " group_id='" . $gid . "'");
|
|
e(lang("class_vdo_del_msg"), "m");
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to invite members to group
|
|
*/
|
|
function invite_member($user, $gid, $owner = NULL) {
|
|
global $cbemail, $db, $userquery;
|
|
$group = $this->get_group_details($gid);
|
|
|
|
if (!$owner)
|
|
$owner = userid();
|
|
|
|
$sender = $userquery->get_user_details($owner);
|
|
$reciever = $userquery->get_user_details($user);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (!$sender)
|
|
e(lang("unknown_sender"));
|
|
elseif (!$reciever)
|
|
e(lang("unknown_reciever"));
|
|
elseif ($this->is_member($user, $gid))
|
|
e(lang("user_already_group_mem"));
|
|
elseif ($owner != $group['userid'])
|
|
e(lang("grp_owner_err1"));
|
|
else {
|
|
//Inserting Invitation Code in database
|
|
$db->insert(tbl($this->gp_invite_tbl), array('group_id', 'userid', 'invited', 'date_added'), array($gid, $owner, $reciever['userid'], now()));
|
|
e(lang("grp_inv_msg"), "m");
|
|
|
|
//Now Sending Email To User
|
|
$tpl = $cbemail->get_template('group_invitation');
|
|
|
|
$more_var = array
|
|
(
|
|
'{reciever}' => $reciever['username'],
|
|
'{sender}' => $sender['username'],
|
|
'{group_url}' => group_link(array('details' => $group)),
|
|
'{group_name}' => $group['group_name'],
|
|
'{group_description}' => $group['group_description']
|
|
);
|
|
|
|
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' => $reciever['email'], 'from' => WEBSITE_EMAIL, 'subject' => $subj, 'content' => $msg));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to invite members to group
|
|
*/
|
|
function invite_members($user_array, $group, $owner = NULL) {
|
|
global $eh;
|
|
$total = count($user_array);
|
|
for ($i = 0; $i < $total; $i++) {
|
|
$this->invite_member($user_array[$i], $group, $owner);
|
|
}
|
|
$eh->flush();
|
|
e(lang("invitations_sent"), "m");
|
|
}
|
|
|
|
/**
|
|
* Function used to leave group
|
|
*/
|
|
function leave_group($gid, $uid) {
|
|
global $db;
|
|
if (!$this->is_member($uid, $gid))
|
|
e(lang("you_not_grp_mem"));
|
|
elseif ($this->is_owner($gid, $uid))
|
|
e(lang("grp_owner_err2"));
|
|
else {
|
|
$db->delete(tbl($this->gp_mem_tbl), array("userid", "group_id"), array($uid, $gid));
|
|
e(lang("grp_leave_succ_msg"), "m");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to delete group
|
|
*/
|
|
function delete_group($gid) {
|
|
global $db;
|
|
$group = $this->get_group_details($gid);
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (userid() != $group['userid'] && !has_access('admin_access', true))
|
|
e(lang("you_cant_delete_this_grp"));
|
|
else {
|
|
//Deleting Everything Related To This Group
|
|
$this->delete_group_topics($gid);
|
|
$this->delete_group_videos($gid);
|
|
$this->delete_group_members($gid);
|
|
$db->delete(tbl($this->gp_tbl), array("group_id"), array($gid));
|
|
$this->update_user_total_groups($group['userid']);
|
|
e(lang("grp_deleted"), "m");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Functin used to delete all memebrs of group
|
|
*/
|
|
function delete_group_members($gid) {
|
|
global $db;
|
|
$group = $this->get_group_details($gid);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (userid() != $group['userid'] && !has_access('admin_access', true))
|
|
e(lang("you_cant_del_grp_mems"));
|
|
else {
|
|
$db->delete(tbl($this->gp_mem_tbl), array("group_id"), array($gid));
|
|
e(lang("mems_deleted"), "m");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Functin used to delete all videos of group
|
|
*/
|
|
function delete_group_videos($gid) {
|
|
global $db;
|
|
$group = $this->get_group_details($gid);
|
|
|
|
if (!$group)
|
|
e(lang("grp_exist_error"));
|
|
elseif (userid() != $group['userid'] && !has_access('admin_access', true))
|
|
e(lang("you_cant_del_grp_vdos"));
|
|
else {
|
|
$db->delete(tbl($this->gp_vdo_tbl), array("group_id"), array($gid));
|
|
e(lang("vdo_multi_del_erro"), "m");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to check weather group exists or not
|
|
*/
|
|
function group_exists($gid) {
|
|
global $db;
|
|
$result = $db->count(tbl($this->gp_tbl), "group_id", " group_id='$gid'");
|
|
if ($result > 0)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to perform gorups actions
|
|
*/
|
|
function grp_actions($type, $gid) {
|
|
global $db;
|
|
$gdetails = $this->get_details($gid);
|
|
|
|
if (!$gdetails)
|
|
e(lang("grp_exist_error"));
|
|
else {
|
|
switch ($type) {
|
|
case "activate":
|
|
case "active": {
|
|
$db->update(tbl($this->gp_tbl), array("active"), array("yes"), " group_id='$gid' ");
|
|
e(lang("grp_av_msg"), "m");
|
|
}
|
|
break;
|
|
case "deactivate":
|
|
case "deactive": {
|
|
|
|
$db->update(tbl($this->gp_tbl), array("active"), array("no"), " group_id='$gid' ");
|
|
e(lang("grp_da_msg"), "m");
|
|
}
|
|
break;
|
|
case "featured":
|
|
case "feature": {
|
|
$db->update(tbl($this->gp_tbl), array("featured"), array("yes"), " group_id='$gid' ");
|
|
e(lang("grp_fr_msg"), "m");
|
|
}
|
|
break;
|
|
case "unfeatured":
|
|
case "unfeature": {
|
|
$db->update(tbl($this->gp_tbl), array("featured"), array("no"), " group_id='$gid' ");
|
|
e(lang("grp_fr_msg2"), "m");
|
|
}
|
|
break;
|
|
case "delete": {
|
|
$this->delete_group($gid);
|
|
e(lang("grp_del_msg"), "m");
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to get all topic icons
|
|
*/
|
|
function get_topic_icons() {
|
|
$dir = TOPIC_ICON_DIR;
|
|
|
|
$icons = glob($dir . '/*.png');
|
|
$new_icons = '';
|
|
foreach ($icons as $icon) {
|
|
$icon_parts = explode('/', $icon);
|
|
$icon_file = $icon_parts[count($icon_parts) - 1];
|
|
$new_icons[] = array('file' => $icon_file, 'path' => $icon, 'url' => TOPIC_ICON_URL . '/' . $icon_file);
|
|
}
|
|
|
|
if (count($new_icons) > 0)
|
|
return $new_icons;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to load ADD Topic Form
|
|
*/
|
|
function load_add_topic_form_fields($array = NULL) {
|
|
if ($array == NULL)
|
|
$array = $_POST;
|
|
|
|
$topic_title = $_POST['topic_title'];
|
|
$topic_post = $_POST['topic_post'];
|
|
|
|
$fields = array
|
|
(
|
|
'title' => array(
|
|
'title' => lang('topic_title'),
|
|
'type' => 'textfield',
|
|
'name' => 'topic_title',
|
|
'id' => 'topic_title',
|
|
'value' => cleanForm($topic_title),
|
|
'size' => '45',
|
|
'db_field' => 'topic_title',
|
|
'required' => 'yes',
|
|
'min_length' => 1,
|
|
'max_length' => config('max_topic_title'),
|
|
),
|
|
'topic_post' => array(
|
|
'title' => lang("topic_post"),
|
|
'type' => 'textarea',
|
|
'name' => 'topic_post',
|
|
'id' => 'topic_post',
|
|
'value' => cleanForm($topic_post),
|
|
'size' => '45',
|
|
'db_field' => 'topic_post',
|
|
'required' => 'yes',
|
|
'min_length' => 4,
|
|
'max_length' => config('max_topic_length'),
|
|
'anchor_before' => 'before_topic_post_box',
|
|
'anchor_after' => 'after_topic_post_box',
|
|
)
|
|
);
|
|
return $fields;
|
|
}
|
|
|
|
/**
|
|
* Function used to add video comment
|
|
*/
|
|
function add_comment($comment, $obj_id, $reply_to = NULL) {
|
|
global $myquery, $db;
|
|
|
|
if (!$this->topic_exists($obj_id))
|
|
e(lang("grp_tpc_err4"));
|
|
else {
|
|
$owner = $this->get_group_owner_from_topic($obj_id);
|
|
$add_comment = $myquery->add_comment($comment, $obj_id, $reply_to, 't', $owner);
|
|
if ($add_comment) {
|
|
//Loggin Comment
|
|
$log_array = array
|
|
(
|
|
'success' => 'yes',
|
|
'details' => "comment on a topic",
|
|
'action_obj_id' => $obj_id,
|
|
'action_done_id' => $add_comment,
|
|
);
|
|
insert_log('topic_comment', $log_array);
|
|
|
|
//Updating Number of comments of topics
|
|
$this->update_comments_count($obj_id);
|
|
}
|
|
return $add_comment;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to delete comment
|
|
*/
|
|
function delete_comment($cid, $objid) {
|
|
global $myquery;
|
|
$tdetails = $this->get_topic_details($objid);
|
|
$gdetails = $this->get_group_details($tdetails['group_id']);
|
|
|
|
$forceDelete = false;
|
|
if (userid() == $gdetails['userid'])
|
|
$forceDelete = true;
|
|
$myquery->delete_comment($cid, 't', false, $forceDelete);
|
|
$this->update_comments_count($objid);
|
|
}
|
|
|
|
/**
|
|
* Function delete all comments of topic
|
|
*/
|
|
function delete_comments($tid) {
|
|
global $myquery;
|
|
$tdetails = $this->get_topic_details($tid);
|
|
$gdetails = $this->get_group_details($tdetails['group_id']);
|
|
$forceDelete = false;
|
|
if (userid() == $gdetails['userid']) {
|
|
$forceDelete = true;
|
|
$myquery->delete_comments($tid, 't', $forceDelete);
|
|
$this->update_comments_count($objid);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function used to update video comments count
|
|
*/
|
|
function update_comments_count($id) {
|
|
global $db;
|
|
$total_comments = $this->count_topic_comments($id);
|
|
if (!userid())
|
|
$userid = 0;
|
|
else
|
|
$userid = userid();
|
|
|
|
$db->update(tbl($this->gp_topic_tbl), array("total_replies", "last_poster", "last_post_time"), array($total_comments, $userid, now()), " topic_id='$id'");
|
|
}
|
|
|
|
/**
|
|
* Function used to count total video comments
|
|
*/
|
|
function count_topic_comments($id) {
|
|
global $db;
|
|
$total_comments = $db->count(tbl('comments'), "comment_id", "type='t' AND type_id='$id'");
|
|
return $total_comments;
|
|
}
|
|
|
|
/**
|
|
* Function used to crearte view topic link
|
|
*/
|
|
function topic_link($tdetails) {
|
|
if (SEO == yes)
|
|
return BASEURL . '/view_topic/' . SEO($tdetails['topic_title']) . '_tid_' . $tdetails['topic_id'];
|
|
else
|
|
return BASEURL . '/view_topic.php?tid=' . $tdetails['topic_id'];
|
|
}
|
|
|
|
/**
|
|
* function and show otpion links
|
|
*/
|
|
function group_opt_link($group, $type) {
|
|
global $userquery;
|
|
$gArray =
|
|
array
|
|
(
|
|
'group' => $group,
|
|
'groupid' => $group['group_id'],
|
|
'uid' => userid(),
|
|
'user' => $userquery->udetails,
|
|
'checkowner' => 'yes'
|
|
);
|
|
switch ($type) {
|
|
case 'join': {
|
|
if ($this->is_joinable($group)) {
|
|
if (SEO == "yes")
|
|
return '<a href="' . group_link(array('details' => $group)) . '?join=yes">' . lang('join') . '</a>';
|
|
else
|
|
return '<a href="' . group_link(array('details' => $group)) . '&join=yes">' . lang('join') . '</a>';
|
|
}else
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case 'invite': {
|
|
if ($this->is_owner($group)) {
|
|
return '<a href="' . BASEURL . '/invite_group.php?url=' . $group['group_url'] . '">' . lang('invite') . '</a>';
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'leave': {
|
|
if ($this->is_member(userid(), $group['group_id']) && !$this->is_owner($group)) {
|
|
if (SEO == "yes")
|
|
return '<a href="' . group_link(array('details' => $group)) . '?leave=yes">' . lang('leave') . '</a>';
|
|
else
|
|
return '<a href="' . group_link(array('details' => $group)) . '&leave=yes">' . lang('leave') . '</a>';
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'remove_group': {
|
|
if ($this->is_owner($group)) {
|
|
$gpID = $group['group_id'];
|
|
$message = lang('are_you_sure_del_grp');
|
|
$url = BASEURL . '/manage_groups.php?mode=manage&gid_delete=' . $gpID;
|
|
return "<a href='javascript:void(0)' id='delete_group-" . $gpID . "' onmousedown='delete_item(\"delete_group\",\"$gpID\",\"$message\",\"$url\")'>" . lang('grp_remove_group') . "</a>";
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'manage_members': {
|
|
|
|
if ($this->is_admin($gArray)) {
|
|
return '<a href="' . BASEURL . '/manage_groups.php?mode=manage_members&gid=' . $group['group_id'] . '">' . lang('grp_manage_mems') . '</a>';
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'manage_videos': {
|
|
if ($this->is_admin($gArray)) {
|
|
return '<a href="' . BASEURL . '/manage_groups.php?mode=manage_videos&gid=' . $group['group_id'] . '">' . lang('com_manage_vids') . '</a>';
|
|
}
|
|
}
|
|
break;
|
|
|
|
|
|
case 'add_videos': {
|
|
if ($this->is_member(userid(), $group['group_id'])) {
|
|
return '<a href="' . BASEURL . '/add_group_videos.php?url=' . $group['group_url'] . '">' . lang('grp_add_vdos') . '</a>';
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'edit_group': {
|
|
if ($this->is_admin($gArray)) {
|
|
return '<a href="' . BASEURL . '/edit_group.php?gid=' . $group['group_id'] . '">' . lang('grp_edit_grp_title') . '</a>';
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* returns group links that are displayed in left column of default
|
|
* template
|
|
*
|
|
* @param ARRAY $group
|
|
* @param INT $uid
|
|
*
|
|
* @return ARRAY $group_links
|
|
*/
|
|
function group_links($group, $uid = NULL) {
|
|
global $userquery;
|
|
|
|
if (!$uid)
|
|
$uid = userid();
|
|
|
|
$group_links = array();
|
|
$group_array =
|
|
array
|
|
(
|
|
'group' => $group,
|
|
'groupid' => $group['group_id'],
|
|
'uid' => $uid,
|
|
'user' => $userquery->udetails,
|
|
'checkowner' => 'yes'
|
|
);
|
|
|
|
$group_owner_links = array();
|
|
|
|
if ($this->is_owner($group)) {
|
|
$group_owner_links =
|
|
array(
|
|
'invite_members' => array(
|
|
'name' => lang('Invite members'),
|
|
'link' => BASEURL . '/invite_group.php?url=' . $group['group_url'],
|
|
'icon' => 'icon-star'
|
|
)
|
|
);
|
|
}
|
|
|
|
$group_admin_links = array();
|
|
|
|
if ($this->is_admin($group_array)) {
|
|
$group_admin_links = array(
|
|
'edit_group' => array(
|
|
'name' => lang('Edit group'),
|
|
'link' => BASEURL . '/edit_group.php?gid=' . $group['group_id'],
|
|
'icon' => 'icon-edit'
|
|
),
|
|
'manage_videos' => array(
|
|
'name' => lang('Manage videos'),
|
|
'link' => BASEURL . '/manage_groups.php?mode=manage_videos&gid=' . $group['group_id'],
|
|
'icon' => 'icon-tasks'
|
|
),
|
|
'manage_members' => array(
|
|
'name' => lang('Manage members'),
|
|
'link' => BASEURL . '/manage_groups.php?mode=manage_members&gid=' . $group['group_id'],
|
|
'icon' => 'icon-tasks'
|
|
),
|
|
);
|
|
}
|
|
|
|
$group_members_link = array();
|
|
|
|
if ($this->is_member($uid, $group['group_id'])) {
|
|
$group_members_link = array(
|
|
'add_videos' => array(
|
|
'name' => lang('Add videos'),
|
|
'link' => BASEURL . '/add_group_videos.php?url=' . $group['group_url'],
|
|
'icon' => 'icon-plus'
|
|
)
|
|
);
|
|
}
|
|
|
|
$group_links = array_merge($group_owner_links, $group_admin_links, $group_members_link);
|
|
|
|
$group_links = apply_filters($group_links, 'group_links');
|
|
|
|
return $group_links;
|
|
}
|
|
|
|
/**
|
|
* Function used to check weather
|
|
* this group is joinable or not
|
|
* it will check
|
|
* - user is logged in or not
|
|
* - if user is logged in , check is he member or not
|
|
* - if he is not a member, check is he invited
|
|
* - if is invited then show the link
|
|
*/
|
|
function is_joinable($group, $uid = NULL, $gen_err = FALSE) {
|
|
if (!$uid)
|
|
$uid = userid();
|
|
|
|
$group_id = $group['group_id'];
|
|
if ($this->is_member($uid, $group['group_id'])) {
|
|
if ($gen_err)
|
|
e(lang('grp_join_error'));
|
|
return false;
|
|
}elseif ($group['group_privacy'] != 2 || $this->is_invited($uid, $group_id, $group['userid'], $gen_err))
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to check weather to view
|
|
* group details ot user or not.
|
|
* We need to check following things and display Message Accordingly
|
|
* First - we to save group privacy into variables
|
|
* Second - $privacy == 1 and user is not member of group. Display group but with warning message.
|
|
* Third - $privacy == 1 and user is member of group. Display group but with warning message about pending approval.
|
|
* Fourth - $privacy == 2 and user is not member. Dont display group with error message
|
|
*/
|
|
function is_viewable($group, $uid = NULL) {
|
|
if (!$uid)
|
|
$uid = userid();
|
|
$privacy = $group['group_privacy'];
|
|
$isMember = $this->is_member($uid, $group['group_id']);
|
|
|
|
if ($privacy == 1 && !$isMember) {
|
|
e(lang("you_need_owners_approval_to_view_group"), "w");
|
|
return true;
|
|
} elseif ($privacy == 1 && !$this->is_active_member($uid, $group['group_id'])) {
|
|
e(lang("grp_inactive_account"), "w");
|
|
return true;
|
|
} elseif ($privacy == 2 && !$isMember && !$this->is_invited($uid, $group['group_id'], $group['userid'])) {
|
|
e(lang("grp_prvt_err1"));
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
|
|
/* $group_id = $group['group_id'];
|
|
$is_Member = $this->is_member($uid,$group['group_id'],true);
|
|
|
|
if($group['group_privacy'] == 2 && !$is_Member)
|
|
return array("privacy"=>$group['group_privacy'],"isMember"=>$is_Member);
|
|
elseif($group['group_privacy'] == 1 && !$is_Member)
|
|
return array("privacy"=>$group['group_privacy'],"isMember"=>$is_Member);
|
|
else
|
|
return true; */
|
|
}
|
|
|
|
/**
|
|
* Function used to get groups
|
|
* @parma ARRAY
|
|
* group_id => {id of group} INT
|
|
* user => {all groups of the user INT
|
|
* category => {all groups in specified category INT,INT,INT
|
|
* featured => {get featured groups only} yes,no
|
|
* limit => {number of results including offset}
|
|
* order => {soring by}
|
|
* date_margin => {date span}
|
|
*/
|
|
function get_groups($params = NULL, $force_admin = FALSE) {
|
|
global $db;
|
|
|
|
$limit = $params['limit'];
|
|
$order = $params['order'];
|
|
|
|
$cond = "";
|
|
if (!has_access('admin_access', TRUE) && !$force_admin)
|
|
$cond .= " " . tbl("groups.active") . "='yes' ";
|
|
else {
|
|
if ($params['active'])
|
|
$cond .= " " . tbl("groups.active") . "='" . $params['active'] . "'";
|
|
}
|
|
|
|
//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 .= " " . tbl("groups.category") . " LIKE '%#$cat_params#%' ";
|
|
}
|
|
|
|
$cond .= ")";
|
|
}
|
|
|
|
//date span
|
|
if ($params['date_span']) {
|
|
if ($cond != '')
|
|
$cond .= ' AND ';
|
|
$cond .= " " . cbsearch::date_margin("date_added", $params['date_span']);
|
|
}
|
|
|
|
//uid
|
|
if ($params['user']) {
|
|
if ($cond != '')
|
|
$cond .= ' AND ';
|
|
$cond .= " " . tbl("groups.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 .= " " . tbl("groups.group_tags") . " LIKE '%" . $tag . "%'";
|
|
if ($loop < $total)
|
|
$tag_n_title .= " OR ";
|
|
$loop++;
|
|
}
|
|
}else {
|
|
if ($tag_n_title != '')
|
|
$tag_n_title .= ' OR ';
|
|
$tag_n_title .= " " . tbl("groups.group_tags") . " LIKE '%" . $params['tags'] . "%'";
|
|
}
|
|
}
|
|
//TITLE
|
|
if ($params['title']) {
|
|
if ($tag_n_title != '')
|
|
$tag_n_title .= ' OR ';
|
|
$tag_n_title .= " " . tbl("groups.group_name") . " LIKE '%" . $params['title'] . "%'";
|
|
}
|
|
|
|
if ($tag_n_title) {
|
|
if ($cond != '')
|
|
$cond .= ' AND ';
|
|
$cond .= " ($tag_n_title) ";
|
|
}
|
|
|
|
//FEATURED
|
|
if ($params['featured']) {
|
|
if ($cond != '')
|
|
$cond .= ' AND ';
|
|
$cond .= " " . tbl("groups.featured") . " = '" . $params['featured'] . "' ";
|
|
}
|
|
|
|
//GROUP ID
|
|
if ($params['group_id']) {
|
|
if ($cond != '')
|
|
$cond .= ' AND ';
|
|
$cond .= " group_id = '" . $params['group_id'] . "' ";
|
|
}
|
|
|
|
//Exclude Vids
|
|
if ($params['exclude']) {
|
|
if ($cond != '')
|
|
$cond .= ' AND ';
|
|
$cond .= " " . tbl("groups.group_id") . " <> '" . $params['exclude'] . "' ";
|
|
}
|
|
|
|
|
|
|
|
if (!$params['count_only']) {
|
|
if (!empty($cond))
|
|
$cond .= " AND ";
|
|
$result = $db->select(tbl($this->gp_tbl . ",users"), '' . tbl($this->gp_tbl) . '.*, ' . tbl("users") . '.username, ' . tbl("users") . '.userid', $cond . " " . tbl("groups.userid") . " = " . tbl("users.userid") . " ", $limit, $order);
|
|
}
|
|
|
|
// echo $db->db_query;
|
|
if ($params['count_only'])
|
|
return $result = $db->count(tbl($this->gp_tbl), '*', $cond);
|
|
if ($params['assign'])
|
|
assign($params['assign'], $result);
|
|
else
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Function used to get group field
|
|
* @ param INT gid
|
|
* @ param FIELD name
|
|
*/
|
|
function get_gp_field($gid, $field) {
|
|
global $db;
|
|
$results = $db->select(tbl($this->gp_tbl), $field, "group_id='$gid'");
|
|
|
|
if ($db->num_rows > 0) {
|
|
return $results[0];
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function get_gp_fields($gid, $field) {
|
|
return $this->get_gp_field($gid, $field);
|
|
}
|
|
|
|
/**
|
|
* This function will return
|
|
* group field without array
|
|
*/
|
|
function get_gp_field_only($gid, $field) {
|
|
$fields = $this->get_gp_field($gid, $field);
|
|
return $fields[$field];
|
|
}
|
|
|
|
/**
|
|
* Function used to get groups joined by user
|
|
*/
|
|
function user_joined_groups($uid, $limit = NULL) {
|
|
global $db;
|
|
# REF QUERY : SELECT * FROM group_members,groups WHERE group_members.userid = '1' AND group_members.group_id = groups.group_id AND groups_members.userid != groups.userid
|
|
$result = $db->select(tbl($this->gp_tbl) . ',' . tbl($this->gp_mem_tbl), "*", tbl($this->gp_mem_tbl) . ".userid='$uid' AND
|
|
" . tbl($this->gp_mem_tbl) . ".group_id = " . tbl($this->gp_tbl) . ".group_id", $limit, tbl($this->gp_tbl) . ".group_name");
|
|
|
|
if ($db->num_rows > 0)
|
|
return $result;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/* * *
|
|
* Function used to update user total number of groups
|
|
*/
|
|
|
|
function update_user_total_groups($user) {
|
|
global $db;
|
|
$count = $db->count(tbl($this->gp_tbl), "group_id", " userid='$user' ");
|
|
$db->update(tbl("users"), array("total_groups"), array($count), " userid='$user' ");
|
|
}
|
|
|
|
/**
|
|
* 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 = "groups";
|
|
$this->search->columns = array(
|
|
array('field' => 'group_name', 'type' => 'LIKE', 'var' => '%{KEY}%'),
|
|
);
|
|
$this->search->cat_tbl = $this->cat_tbl;
|
|
|
|
$this->search->display_template = LAYOUT . '/blocks/group.html';
|
|
$this->search->template_var = 'group';
|
|
$this->search->multi_cat = true;
|
|
$this->search->results_per_page = config('grps_items_search_page');
|
|
$this->search->has_user_id = true;
|
|
|
|
/**
|
|
* Setting up the sorting thing
|
|
*/
|
|
$sorting = array(
|
|
'date_added' => lang("date_added"),
|
|
'total_views' => lang("views"),
|
|
'total_comments' => lang("comments"),
|
|
'total_videos' => lang("videos"),
|
|
'total_members' => lang("total members"),
|
|
);
|
|
|
|
$this->search->sorting = array(
|
|
'date_added' => " date_added DESC",
|
|
'total_views' => " total_views DESC",
|
|
'total_comments' => " total_comments DESC ",
|
|
'total_videos' => " total_videos DESC",
|
|
'total_members' => " total_members 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['groups'] = array('title' => 'Groups');
|
|
|
|
$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' => 'group',
|
|
),
|
|
'date_margin' => array(
|
|
'title' => lang('created'),
|
|
'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['groups']['fields'] = $fields;
|
|
}
|
|
|
|
/**
|
|
* Function used to validate group category
|
|
* @param input array
|
|
*/
|
|
function validate_group_category($array = NULL) {
|
|
if ($array == NULL)
|
|
$array = $_POST['category'];
|
|
if (count($array) == 0)
|
|
return false;
|
|
else {
|
|
|
|
foreach ($array as $arr) {
|
|
if ($this->category_exists($arr))
|
|
$new_array[] = $arr;
|
|
}
|
|
}
|
|
if (count($new_array) == 0) {
|
|
e(lang('vdo_cat_err3'));
|
|
return false;
|
|
} elseif (count($new_array) > ALLOWED_GROUP_CATEGORIES) {
|
|
e(sprintf(lang('vdo_cat_err2'), ALLOWED_GROUP_CATEGORIES));
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Get group owner from topic
|
|
*/
|
|
function get_group_owner_from_topic($tid) {
|
|
global $db;
|
|
$results = $db->select(tbl("group_topics") . "," . tbl("groups"), tbl("group_topics") . ".group_id," . tbl("group_topics") . ".topic_id," . tbl("groups") . "userid," . tbl("groups") . ".group_id", tbl("group_topics") . ".group_id = " . tbl("groups") . ".group_id AND " . tbl("group_topics") . ".topic_id='$tid'");
|
|
|
|
if ($db->num_rows > 0)
|
|
return $results[0]['userid'];
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to make member admin of the group
|
|
* input ARRAY
|
|
* INDEX gid => groupid
|
|
* INDEX group => groupdetails
|
|
* INDEX uid => Userid
|
|
* INDEX user => userdtails
|
|
* return error() | return true on success makeAdmin
|
|
*/
|
|
function make_admin($array) {
|
|
return $this->makeAdmin($array);
|
|
}
|
|
|
|
function makeAdmin($array) {
|
|
global $userquery, $db;
|
|
extract($array);
|
|
if (!@$groupid)
|
|
e(lang('Unknown group'));
|
|
elseif (!@$group) {
|
|
$group = $this->get_group($groupid);
|
|
}
|
|
|
|
if (!@$uid)
|
|
e(lang('Unknown group user'));
|
|
elseif (!@$user) {
|
|
$user = $userquery->get_user_details($uid);
|
|
}
|
|
|
|
if (!$group)
|
|
e(lang("Unknown group"));
|
|
if (!$user)
|
|
e(lang("Unknown user"));
|
|
|
|
//if(!$this->is_member($uid,$groupid))
|
|
// e(sprintf(lang("%s is not a member of %s"),$user['username'],$group['group_name']));
|
|
if (!$this->is_active_member($uid, $groupid))
|
|
e(sprintf(lang("%s is not active member of %s"), $user['username'], $group['group_name']));
|
|
|
|
|
|
//Checking if is owner or already an admin
|
|
$this->is_admin(array(
|
|
'group' => $group,
|
|
'groupid' => $groupid,
|
|
'uid' => $uid,
|
|
'user' => $user,
|
|
'error' => true,
|
|
'checkowner' => true));
|
|
|
|
if (!error()) {
|
|
$groupAdmins = $group['group_admins'];
|
|
$groupAdmins = json_decode($groupAdmins, true);
|
|
$groupAdmins[] = $uid;
|
|
$groupAdmins = json_encode($groupAdmins);
|
|
|
|
$db->update(tbl("groups"), array("group_admins"), array('|no_mc|' . $groupAdmins), " group_id='" . $groupid . "'");
|
|
e(sprintf(lang("%s has been made adminstrator of %s"), $user['username'], $group['group_name']), "m");
|
|
|
|
$db->update(tbl($this->gp_mem_tbl), array("is_admin"), array("yes"), "userid='" . $user['userid'] . "' AND group_id='$groupid'");
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function used to get weather user is admin of the group or not
|
|
* input ARRAY
|
|
* INDEX gid => groupid
|
|
* INDEX group => groupdetails
|
|
* INDEX uid => Userid
|
|
* INDEX user => userdtails
|
|
* return error() | return true on success makeAdmin
|
|
*/
|
|
function is_admin($array) {
|
|
global $userquery;
|
|
extract($array);
|
|
if (!@$groupid)
|
|
e(lang('Unknown group'));
|
|
elseif (!@$group) {
|
|
$group = $this->get_group($groupid);
|
|
}
|
|
|
|
if (!@$uid)
|
|
e(lang('Unknown group user'));
|
|
elseif (!@$user) {
|
|
$user = $userquery->get_user_details($uid);
|
|
}
|
|
if (!$group)
|
|
e(lang("Unknown group"));
|
|
if (!$user)
|
|
e(lang("Unknown user"));
|
|
|
|
//Moving group admins into an array
|
|
$groupAdmins = $group['group_admins'];
|
|
$groupAdmins = json_decode($groupAdmins, true);
|
|
|
|
if ($group['userid'] == $uid && $checkowner) {
|
|
if (@$error)
|
|
e(sprintf(lang('%s is owner of %s'), $user['username'], $group['group_name']));
|
|
return true;
|
|
}elseif (@in_array($uid, $groupAdmins)) {
|
|
if (@$error)
|
|
e(sprintf(lang('%s is admin of %s'), $user['username'], $group['group_name']));
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function is_group_admin($uid, $group) {
|
|
global $db;
|
|
if (is_numeric($group))
|
|
$group = $this->get_group($group);
|
|
|
|
$groupAdmins = $group['group_admins'];
|
|
$groupAdmins = json_decode($groupAdmins, true);
|
|
|
|
if ($group['userid'] == $uid || in_array($uid, $groupAdmins)) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Removing admin from group
|
|
*/
|
|
function remove_admin($array) {
|
|
return $this->removeAdmin($array);
|
|
}
|
|
|
|
function removeAdmin($array) {
|
|
global $userquery, $db;
|
|
extract($array);
|
|
if (!@$groupid)
|
|
e(lang('Unknown group'));
|
|
elseif (!@$group) {
|
|
$group = $this->get_group($groupid);
|
|
}
|
|
|
|
if (!@$uid)
|
|
e(lang('Unknown group user'));
|
|
elseif (!@$user) {
|
|
$user = $userquery->get_user_details($uid);
|
|
}
|
|
|
|
if (!$group)
|
|
e(lang("Unknown group"));
|
|
if (!$uid)
|
|
e(lang("Unknown user"));
|
|
|
|
|
|
//Checking if is owner or already an admin
|
|
if (!$this->is_admin(array(
|
|
'group' => $group,
|
|
'groupid' => $groupid,
|
|
'uid' => $uid,
|
|
'user' => $user))) {
|
|
e(sprintf(lang('%s is not admin of %s'), $user['username'], $group['group_name']));
|
|
return false;
|
|
} else {
|
|
$groupAdmins = $group['group_admins'];
|
|
$groupAdmins = json_decode($groupAdmins, true);
|
|
$newAdmins = array();
|
|
foreach ($groupAdmins as $gadmin)
|
|
if ($gadmin != $uid)
|
|
$newAdmins[] = $gadmin;
|
|
|
|
$groupAdmins = json_encode($newAdmins);
|
|
$db->update(tbl("groups"), array("group_admins"), array('|no_mc|' . $groupAdmins), " group_id='" . $groupid . "'");
|
|
e(sprintf(lang("%s has been removed from adminstrators of %s"), $user['username'], $group['group_name']), "m");
|
|
$db->update(tbl($this->gp_mem_tbl), array("is_admin"), array("no"), "userid='" . $user['userid'] . "' AND group_id='$groupid'");
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @global type $cbgroup
|
|
* @param type $array
|
|
* @return type
|
|
*/
|
|
function add_feed($array) {
|
|
|
|
global $userquery;
|
|
|
|
$group_id = $array['group_id'];
|
|
if (!$group_id)
|
|
return false;
|
|
$group = $array['group'];
|
|
|
|
if (!$group)
|
|
$group = $this->get_group_details($group_id);
|
|
|
|
if (!$group)
|
|
return false;
|
|
|
|
|
|
$userid = $array['userid'];
|
|
if (!$userid)
|
|
{
|
|
if(userid())
|
|
{
|
|
$userid = userid();
|
|
$user = $userquery->udetails;
|
|
}
|
|
}
|
|
|
|
if(!$userid)
|
|
return false;
|
|
|
|
if(!$user)
|
|
$user = $array['user'];
|
|
if(!$user)
|
|
$user = get_user_details($user);
|
|
if(!$user)
|
|
return false;
|
|
|
|
|
|
if($array['message'])
|
|
$message = apply_filters($array['message'],'feed_message');
|
|
|
|
if($array['type'])
|
|
$type = $array['type'];
|
|
else
|
|
$type = 'message';
|
|
|
|
|
|
$content_id = '';
|
|
$content = '';
|
|
$content_type = '';
|
|
|
|
|
|
if($array['content_id'])
|
|
{
|
|
$content_id = $array['content_id'];
|
|
$content = $array['content'];
|
|
$content_type = $array['content_type'];
|
|
}
|
|
|
|
$action = $array['action'];
|
|
|
|
|
|
if($array['icon'])
|
|
$icon = $array['icon'];
|
|
else
|
|
$icon = '';
|
|
|
|
if($array['action_group_id'])
|
|
$action_group_id = $array['action_group_id'];
|
|
|
|
$array = array(
|
|
'message' => $message,
|
|
'message_attributes' => array(),
|
|
'userid' => userid(),
|
|
'user' => $userquery->udetails,
|
|
'content_id' => $content_id,
|
|
'content' => $content,
|
|
'content_type' => $content_type,
|
|
'object_id' => $group_id,
|
|
'object' => $group,
|
|
'object_type' => 'group',
|
|
'action_group_id' => $action_group_id,
|
|
'action' => $action,
|
|
'icon' => $icon,
|
|
);
|
|
|
|
global $cbfeeds;
|
|
|
|
$cbfeeds->add_feed($array);
|
|
}
|
|
|
|
|
|
/**
|
|
* Add Group Status..
|
|
*
|
|
* @global type $cbgroup
|
|
* @param type $array
|
|
* @return type
|
|
*/
|
|
|
|
function add_group_status($gid,$status)
|
|
{
|
|
$array = array(
|
|
'group_id' => $gid,
|
|
'message' => $status,
|
|
'action' => 'post_message'
|
|
);
|
|
|
|
$this->add_feed($array);
|
|
}
|
|
|
|
|
|
/**
|
|
* Function used to add a video in a group...
|
|
*/
|
|
function add_group_video_feed($feed)
|
|
{
|
|
global $cbfeeds;
|
|
$gid = $feed['group_id'];
|
|
$msg = $feed['message'];
|
|
|
|
$content = $cbfeeds->get_content('v',$feed['videoid'],$feed['video']);
|
|
|
|
$array = array(
|
|
'group_id' => $gid,
|
|
'message' => $msg,
|
|
'content' => $content,
|
|
'content_type' => 'video',
|
|
'content_id' => $feed['videoid'],
|
|
'action' => 'share_video'
|
|
);
|
|
|
|
$this->add_feed($array);
|
|
}
|
|
|
|
|
|
/**
|
|
* Getting group feeds..
|
|
*
|
|
* @global type $cbgroup
|
|
* @param type $array
|
|
* @return type
|
|
*/
|
|
function get_group_feeds($gid)
|
|
{
|
|
global $cbfeeds;
|
|
|
|
$feeds = $cbfeeds->get_feeds(array('type'=>'group','id'=>$gid));
|
|
|
|
return $feeds;
|
|
}
|
|
|
|
|
|
/**
|
|
* Get group link
|
|
*/
|
|
function get_link($group,$cond=NULL)
|
|
{
|
|
return group_link(array('details'=>$group));
|
|
}
|
|
|
|
}
|
|
|
|
function isGroupAdmin($array) {
|
|
global $cbgroup;
|
|
$return = $cbgroup->is_admin($array);
|
|
if ($array['assign'])
|
|
assign($array['assign'], $return); else
|
|
return $return;
|
|
}
|
|
|
|
function removeGroupAdmin($array) {
|
|
global $cbgroup;
|
|
$return = $cbgroup->removeAdmin($array);
|
|
if ($array['assign'])
|
|
assign($array['assign'], $return); else
|
|
return $return;
|
|
}
|
|
|
|
function makeGroupAdmin($array) {
|
|
global $cbgroup;
|
|
$return = $cbgroup->make_admin($array);
|
|
if ($array['assign'])
|
|
assign($array['assign'], $return); else
|
|
return $return;
|
|
}
|
|
|
|
?>
|