execute($sql); $total = $rs->fields['total']; if ($total > 0) { echo ' (' . $total . ')'; } } /* delete label */ public function deleteLabel() { global $db, $smarty, $class_filter; if ($_POST) { $id = $class_filter->clr_str($_POST['input_label']); $id_arr = explode('-', $id); $_id = intval(substr(strstr($id, 'del'), 3)); $_sid = intval($_SESSION['USER_ID']); $_for = $id_arr[0] . '-' . $id_arr[1] . '-' . $id_arr[2]; $_delete = ($_sid > 0 and $_id > 0) ? $db->execute(sprintf("DELETE FROM `db_userlabels` WHERE `lb_id`='%s' AND `usr_id`='%s' AND `lb_for`='%s' LIMIT 1;", $_id, $_sid, $_for)) : null; if ($db->Affected_Rows() > 0) { echo 1; } } echo 0; } /* new label */ public function addNewLabel() { global $class_database, $class_filter, $smarty, $db; $do_insert = 0; if ($_POST) { $smarty->assign('get_from', $class_filter->clr_str($_GET['s'])); $insert_array = array( "usr_id" => intval($_SESSION['USER_ID']), "lb_name" => $class_filter->clr_str($_POST['add_new_label']), "lb_for" => $class_filter->clr_str($_GET['s'])); $do_insert = ($_POST['add_new_label'] != '' and $class_database->doInsert('db_userlabels', $insert_array)) ? $db->Insert_ID() : 0; } echo $do_insert; } /* go to compose and process any message */ public function composeMessage() { global $smarty; if ($_POST and $_GET['r'] != 1) { $process = $_GET['f'] == '' ? self::processMessage() : ($_GET['f'] == 'comm' ? self::processComment() : null); $notify = ($process != '') ? VGenerate::noticeWrap(array($process[0], $process[1], VGenerate::noticeTpl('', $process[0], $process[1]))) : null; } $smarty->display('tpl_frontend/tpl_msg/tpl_compose.tpl'); echo ''; } /* mark message as read */ public function readMessage() { global $db, $class_filter; $mark_id = ($_GET['s'] == 'file-menu-entry7') ? $class_filter->clr_str($_POST['section_subject_value']) : intval($_POST['section_subject_value']); if ($_GET['s'] == 'message-menu-entry3') { $mark_db = $mark_id > 0 ? $db->execute(sprintf("UPDATE `db_channelcomments` SET `c_seen`='1' WHERE `c_id`='%s' AND `usr_id`='%s' LIMIT 1;", $mark_id, intval($_SESSION['USER_ID']))) : null; } elseif ($_GET['s'] == 'file-menu-entry7') { $type = substr($class_filter->clr_str($_GET['for']), 5); $mark_db = $db->execute(sprintf("UPDATE `db_%scomments` SET `c_seen`='1' WHERE `c_key`='%s' LIMIT 1;", $type, $mark_id)); } else { $mark_db = $mark_id > 0 ? $db->execute(sprintf("UPDATE `db_messaging` SET `msg_seen`='1' WHERE `msg_id`='%s' AND `msg_to`='%s' AND `msg_seen`='0' LIMIT 1;", $mark_id, intval($_SESSION['USER_ID']))) : null; } } /* css class to reflect new messages */ public function newMessageClass($msg_id) { global $class_database, $class_filter; $_s = substr($class_filter->clr_str($_GET['s']), 0, 19); switch ($_s) { case "message-menu-entry2": return $class = $class_database->singleFieldValue('db_messaging', 'msg_seen', 'msg_id', $msg_id) == 0 ? ' new-message' : null; break; case "message-menu-entry3": return $class = $class_database->singleFieldValue('db_channelcomments', 'c_seen', 'c_id', $msg_id) == 0 ? ' new-message' : null; break; } } /* get id of current label */ public function getLabelID() { global $class_filter; $get_array = explode('-', $class_filter->clr_str($_GET['s'])); return $sub_id = substr($get_array[3], 3); } /* name for current label */ public function getLabelName() { global $db; $r = $db->execute(sprintf("SELECT `lb_name` FROM `db_userlabels` WHERE `usr_id`='%s' AND `lb_for`='%s' AND `lb_id`='%s' LIMIT 1;", intval($_SESSION['USER_ID']), self::currentMenuEntry($_GET['s']), self::getLabelID())); return $r->fields['lb_name']; } /* renaming label */ public function labelRename() { global $db, $class_filter; $_s = $class_filter->clr_str($_GET['s']); $new_label = $class_filter->clr_str($_POST['current_label_name']); $rename = $new_label != '' ? $db->execute(sprintf("UPDATE `db_userlabels` SET `lb_name`='%s' WHERE `usr_id`='%s' AND `lb_for`='%s' AND `lb_id`='%s' LIMIT 1;", $new_label, intval($_SESSION['USER_ID']), self::currentMenuEntry($_s), self::getLabelID())) : null; echo $return = $db->Affected_Rows() > 0 ? VGenerate::declareJS('$("#' . $_s . '").addClass("menu-panel-entry-active");') : null; } /* selected menu entry */ public function currentMenuEntry($for) { global $smarty, $class_filter; $for = $class_filter->clr_str($for); $get_array = explode('-', $for); $new_label = $smarty->assign("show_new_label", (count($get_array) > 3 ? 'no' : 'yes')); return $menu_entry = $get_array[0] . '-' . $get_array[1] . '-' . $get_array[2]; } /* build query for non label entries */ public function noLabelQuery($lb_s = '') { global $db, $cfg, $class_filter; if ($cfg['custom_labels'] == 0) {return false;} $lb_fld = array(); $lb_for = $lb_s != '' ? explode("-", $class_filter->clr_str($lb_s)) : ($_GET['s'] != '' ? explode("-", $class_filter->clr_str($_GET['s'])) : null); if (count($lb_for) == 3) { $lb_msg = $db->execute(sprintf("SELECT `lb_ids` FROM `db_userlabels` WHERE `lb_for`='%s' AND `usr_id`='%s' AND `lb_active`='1' AND `lb_ids`!='';", ($lb_s != '' ? $lb_s : self::currentMenuEntry($_GET['s'])), intval($_SESSION['USER_ID']))); $lb_fld = $lb_msg->getrows(); } if (count($lb_fld) > 0 and count($lb_for) == 3) { foreach ($lb_fld as $lb_msg_arr) { $lb_msg_array = unserialize($lb_msg_arr[0]); foreach ($lb_msg_array as $lb_msg_id) { $query .= "`msg_id` != '" . $lb_msg_id . "' AND "; } } return " AND (" . substr($query, 0, -5) . ") "; } } /* queries for inbox/outbox/spam */ public function dbListQuery() { switch (self::currentMenuEntry($_GET['s'])) { case "message-menu-entry2":$db_add_query = "WHERE `msg_to`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='1' AND `msg_inbox_deleted`='0' AND `msg_invite`='0'" . self::noLabelQuery(); $div_count = 'message-menu-entry6'; break; case "message-menu-entry3":$db_add_query = "WHERE `usr_id`='" . intval($_SESSION['USER_ID']) . "'"; break; case "message-menu-entry4":$db_add_query = "WHERE `msg_to`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='1' AND `msg_invite`='1'"; $div_count = 'message-menu-entry4'; break; case "message-menu-entry5":$db_add_query = "WHERE `msg_from`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='1' AND `msg_outbox_deleted`='0' AND `msg_invite`='0'" . self::noLabelQuery(); $div_count = 'message-menu-entry5'; break; case "message-menu-entry6":$db_add_query = "WHERE `msg_to`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='0' AND `msg_active_deleted`='0' AND `msg_invite`='0'" . self::noLabelQuery(); $div_count = 'message-menu-entry2'; break; } return $db_add_query; } /* labels, inc. friends and blocked */ public function sectionLabel($id) { global $cfg, $class_filter, $db, $smarty, $language; $lb = $db->execute(sprintf("SELECT `lb_id`, `lb_name` FROM `db_userlabels` WHERE `usr_id`='%s' AND `lb_for`='%s' AND `lb_active`='1' ORDER BY `lb_id` ASC;", intval($_SESSION['USER_ID']), $id)); $lb_array = $lb->getrows(); $lb_count = count($lb_array); if ($lb_count > 0 or $id == 'message-menu-entry7') { $lb_js = '$(document).ready(function() { ' . $lb_j . ' $(".menu-panel-entry").mouseover(function() { var this_id = $("#"+$(this).attr("id")+" a.no-display").attr("id"); $("#"+this_id).removeClass("no-display").addClass("display"); }).mouseout(function(){ var this_id = $("#"+$(this).attr("id")+" a.display").attr("id"); $("#"+this_id).removeClass("display").addClass("no-display"); }); });'; $html = '
  • '; $html .= ''; $html .= '
  • '; $html .= VGenerate::declareJS($lb_js); } return $html; } /* add to label, remove from label menus */ public function addToLabel($for, $type = false) { global $language, $db, $cfg, $class_database, $class_filter; $cfg[] = $class_database->getConfigurations("file_counts"); switch ($for) { case "tpl_pl": $type = !$type ? $class_filter->clr_str($_GET['t']) : $type; $menu_db = null; $type = ($type == '' and $menu_db != '' and $cfg[($menu_db != 'doc' ? $menu_db : 'document') . "_module"] == 1) ? $menu_db : $type; $db_tbl = $type == '' ? ($cfg['video_module'] == 1 ? 'video' : ($cfg['short_module'] == 1 ? 'short' : ($cfg['live_module'] == 1 ? 'live' : ($cfg['image_module'] == 1 ? 'image' : ($cfg['audio_module'] == 1 ? 'audio' : ($cfg['document_module'] == 1 ? 'doc' : null)))))) : $type; $lb = $db->execute(sprintf("SELECT `pl_id`, `pl_name` FROM `db_%splaylists` WHERE `usr_id`='%s';", $db_tbl, intval($_SESSION['USER_ID']))); $lb_add = $language['files.action.pl.add'] . ' []'; $lb_clear = $language['files.action.pl.clear'] . ' []'; $li_class = 'count file-action'; $id = 'playlist-' . $type; $icon = 'icon-list'; break; default: $lb = $db->execute(sprintf("SELECT `lb_id`, `lb_name` FROM `db_userlabels` WHERE `usr_id`='%s' AND `lb_for`='%s' AND `lb_active`='1' ORDER BY `lb_id` ASC;", intval($_SESSION['USER_ID']), $for)); $lb_add = $language['msg.label.add'] . ' []'; $lb_clear = $language['msg.label.clear'] . ' []'; $li_class = 'count-label'; $id = 'cb-label'; $icon = 'icon-tag'; $type[0] = 'v'; break; } $lb_array = $lb->getrows(); $lb_count = count($lb_array); if ($lb_count > 0) { for ($i = 0; $i < $lb_count; $i++) { $p_total = 0; $li_add .= '
  • ' . VUserinfo::truncateString($lb_array[$i][1], 17); $li_add .= '
    '; $li_add .= ''; $li_add .= '
    '; $li_add .= '
  • '; $li_cl .= '
  • ' . VUserinfo::truncateString($lb_array[$i][1], 17); $li_cl .= '
    '; $li_cl .= ''; $li_cl .= '
    '; $li_cl .= '
  • '; } $html = '
  • ' . $lb_add . '
  • ' . $lb_clear . '
  • '; } return $html; } /* js update main label count */ public function labelTotal() { global $cfg, $class_filter; $_s = $class_filter->clr_str($_GET['s']); echo VGenerate::declareJS('$(document).ready(function(){ $("#message-menu-entry2-count").html("' . self::messageCount('message-menu-entry2') . '"); $("#message-menu-entry3-count").html("' . self::messageCount('message-menu-entry3') . '"); $("#message-menu-entry5-count").html("' . self::messageCount('message-menu-entry5') . '"); $("#message-menu-entry6-count").html("' . self::messageCount('message-menu-entry6') . '"); $("#' . $_s . '-count").html("' . self::messageCount($_s) . '"); });'); } /* js update sub label count */ public function subLabelTotal($msg_id) { global $db, $cfg, $class_filter; if ($cfg['custom_labels'] == 0) {return false;} $_s = $class_filter->clr_str($_GET['s']); $q = $db->execute("SELECT `lb_ids`, `lb_id` FROM `db_userlabels` WHERE `usr_id`='" . intval($_SESSION['USER_ID']) . "' AND `lb_for`='" . self::currentMenuEntry($_s) . "' AND `lb_ids` LIKE '%;i:" . $msg_id . ";%';"); $qa = $q->getrows(); if (count($qa) > 0) { foreach ($qa as $unval) { $q_ar = unserialize($unval[0]); $r_ar = array(); $r_ar[] = $msg_id; $f_ar = array_values(array_diff($q_ar, $r_ar)); $f_val = (count($f_ar) > 0 ? serialize($f_ar) : ''); $f_q = $db->execute(sprintf("UPDATE `db_userlabels` SET `lb_ids`='%s' WHERE `lb_id`='%s' AND `usr_id`='%s' AND `lb_for`='%s' LIMIT 1;", $f_val, $unval[1], intval($_SESSION['USER_ID']), self::currentMenuEntry($$_s))); echo $update_total = VGenerate::declareJS('$(document).ready(function(){$("#' . self::currentMenuEntry($_s) . '-sub' . $unval[1] . '-count").html("(' . count($f_ar) . ')"); });'); } } } /* add/remove from label */ public function addToLabelActions($action_type, $count, $extra_ar_id = '', $extra_lb_id = '') { global $db, $class_filter; $_ar = array(); $_tolabel = $action_type == 'cb-label-add' ? intval($_POST['label_add_val']) : (($action_type == 'contact-add' or $action_type == 'contact-del') ? $extra_lb_id : intval($_POST['label_cl_val'])); $for_label = self::currentMenuEntry($class_filter->clr_str($_GET['s'])); $_p = $db->execute(sprintf("SELECT `lb_ids` FROM `db_userlabels` WHERE `usr_id`='%s' AND `lb_for`='%s' AND `lb_id`='%s' AND `lb_active`='1' LIMIT 1;", intval($_SESSION['USER_ID']), $for_label, $_tolabel)); $_msg = $_p->fields['lb_ids']; $_arr = array(); if ($_msg != '') { $_arr = unserialize($_msg); $_ct = count($_arr); } if ($extra_lb_id == '') { for ($i = 0; $i < $count; $i++) { $_ar[$i] = intval($_POST['current_entry_id'][$i]); } } else { $_ar[] = $extra_ar_id; } $_array = ($_ct > 0 and ($action_type == 'cb-label-add' or $action_type == 'contact-add')) ? array_merge($_arr, $_ar) : (($_ct > 0 and ($action_type == 'cb-label-clear' or $action_type == 'contact-del')) ? array_diff($_arr, $_ar) : (($action_type == 'cb-label-add' or $action_type == 'contact-add') ? $_ar : $_arr)); $_final_array = $_ct > 0 ? array_values(array_unique($_array)) : $_array; $_do = $db->execute(sprintf("UPDATE `db_userlabels` SET `lb_ids`='%s' WHERE (`lb_id`='%s' AND `usr_id`='%s' AND `lb_for`='%s');", (count($_final_array) > 0 ? serialize($_final_array) : ''), $_tolabel, intval($_SESSION['USER_ID']), $for_label)); echo $_cdo = VGenerate::declareJS("$('#" . $for_label . "-sub" . $_tolabel . "-count').html('(" . (is_array($_final_array) ? count($_final_array) : 0) . ")');"); } /* count messages */ public function messageCount($for) { global $db, $cfg; switch ($for) { case "message-menu-entry3": case "comment-new":break; case "message-new": $db_add_query = "WHERE `msg_to`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='1' AND `msg_inbox_deleted`='0' AND `msg_invite`='0' AND `msg_seen`='0' "; break; case "invites-new": $db_add_query = "WHERE `msg_to`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='1' AND `msg_inbox_deleted`='0' AND `msg_invite`='1' AND `msg_seen`='0' "; break; case "message-menu-entry2": $db_add_query = "WHERE `msg_to`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='1' AND `msg_inbox_deleted`='0' AND `msg_invite`='0'" . self::noLabelQuery($for); break; case "message-menu-entry4": $db_add_query = "WHERE `msg_to`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='1' AND `msg_invite`='1'"; break; case "message-menu-entry5": $db_add_query = "WHERE `msg_from`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='1' AND `msg_outbox_deleted`='0' AND `msg_invite`='0'" . self::noLabelQuery($for); break; case "message-menu-entry6": $db_add_query = "WHERE `msg_to`='" . intval($_SESSION['USER_ID']) . "' AND `msg_active`='0' AND `msg_active_deleted`='0' AND `msg_invite`='0'" . self::noLabelQuery($for); break; case "message-menu-entry7": return VContacts::getAllContactCount(); break; default: if ($cfg['custom_labels'] == 0) {return false;} $lb_id = substr(strstr($for, "sub"), 3); if ($lb_id > 0) { $for = self::currentMenuEntry($for); $_p = $db->execute(sprintf("SELECT `lb_ids` FROM `db_userlabels` WHERE `usr_id`='%s' AND `lb_for`='%s' AND `lb_id`='%s' AND `lb_active`='1' LIMIT 1;", intval($_SESSION['USER_ID']), $for, $lb_id)); $_msg = $_p->fields['lb_ids']; if ($_msg != '') { $_arr = unserialize($_msg); $_ct = count($_arr); return '(' . $_ct . ')'; } else { return '(0)'; } } break; } $q_totalres = ($for == 'message-menu-entry3' or $for == 'comment-new') ? $db->execute(sprintf("SELECT COUNT(*) AS `total` FROM `db_channelcomments` WHERE `usr_id`='%s'%s;", intval($_SESSION['USER_ID']), ($for == 'comment-new' ? " AND `c_seen`='0'" : null))) : $db->execute(sprintf("SELECT COUNT(*) AS `total` FROM `%s` " . $db_add_query, 'db_messaging')); return '(' . $q_totalres->fields['total'] . ')'; } /* message details/body */ public function messageDetails($_dsp = 'none', $entry_id = '', $db_id = '', $msg_body = '', $from_user = '', $from_id = '') { global $cfg, $language, $class_filter, $class_database; $section = VMessages::currentMenuEntry($_GET['s']); $msg_id = $class_database->singleFieldValue('db_messaging', 'msg_from', 'msg_id', $db_id); $_att = self::messageDetailsAttachment($db_id); $_reply = $msg_id > 0 ? VGenerate::simpleDivWrap('place-left', '', VGenerate::basicInput('button', ($section == 'message-menu-entry4' ? 'approve_invite' : 'message_reply'), 'save-entry-button button-grey search-button form-button ' . ($section == 'message-menu-entry4' ? 'approve-invite' : 'reply-msg') . ' ', '', $entry_id, ($section == 'message-menu-entry4' ? '' . $language['frontend.global.approve'] . '' : '' . $language['frontend.global.reply'] . ''))) : null; $_delete = VGenerate::simpleDivWrap('place-left wd250 left-align left-padding5', '', VGenerate::basicInput('button', $db_id, 'save-entry-button button-grey search-button form-button ' . ($section == 'message-menu-entry4' ? 'ignore-invite' : 'delete-msg') . ' ', '', $entry_id, ($section == 'message-menu-entry4' ? '' . $language['frontend.global.ignore'] . '' : '' . $language['frontend.global.delete'] . ''))); $_actions = ($_GET['s'] != 'message-menu-entry5' and $_SESSION['USER_ID'] != self::getMessageInfo('msg_from', $db_id)) ? VGenerate::simpleDivWrap('place-left', '', '' . (($cfg['user_blocking'] == 1 and $_SESSION['USER_NAME'] != $from_user and $msg_id > 0) ? VGenerate::basicInput('button', $db_id, 'save-entry-button button-grey search-button form-button block-user', '', $entry_id, '' . $language['msg.details.block'] . '') : null)) : null; $_attach = $_att != '' ? VGenerate::simpleDivWrap('place-left', '', '') : null; $from = VUserinfo::getUserInfo($from_id); $html = '
    '; $html .= VGenerate::simpleDivWrap('row', '', VGenerate::simpleDivWrap('left-float lh20 wd140', '', VGenerate::entryHiddenInput($db_id))); $html .= VGenerate::simpleDivWrap('left-float wdmax', '', VGenerate::simpleDivWrap('wd90 place-left left-padding5 no-top-padding', '', ' $from['uname']]) : 'javascript:;') . '">') . VGenerate::simpleDivWrap('msg-body', '', '
    ' . $msg_body . '
    ') . '
    '); $html .= VGenerate::simpleDivWrap('msg-buttons d-flex', '', $_attach . $_reply . $_delete . $_actions); $html .= '
    '; $html .= VGenerate::simpleDivWrap('', '', $_att); $html .= '
    '; $html .= ''; $html .= ''; $html .= ''; $html .= '
    '; return $html; } /* attachments in message details */ public function messageDetailsAttachment($db_id, $style = '') { global $db, $cfg, $class_database; $cfg[] = $class_database->getConfigurations('thumbs_width,thumbs_height'); $rs = $db->execute(sprintf("SELECT `msg_live_attch`, `msg_video_attch`, `msg_short_attch`, `msg_image_attch`, `msg_audio_attch`, `msg_doc_attch`, `msg_blog_attch` FROM `db_messaging` WHERE `msg_id`='%s' LIMIT 1;", intval($db_id))); $mod_array = array("live" => "live", "video" => "video", "short" => "short", "image" => "image", "audio" => "audio", "document" => "doc", "blog" => "blog"); $html = ''; foreach ($mod_array as $db_key => $mod) { if ($cfg[$db_key . "_module"] == 1) { $f_key = $rs->fields["msg_" . $mod . "_attch"]; $f_info = VFiles::getFileInfo($f_key); if ($f_key != '0') { $html .= '