function mark_pm_unread_func($xmlrpc_params) { global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $cache, $time, $mybbgroups; $input = Tapatalk_Input::filterXmlInput(array('message_id' => Tapatalk_Input::INT), $xmlrpc_params); $lang->load("private"); $parser = new postParser(); if ($mybb->settings['enablepms'] == 0) { return xmlrespfalse($lang->pms_disabled); } if ($mybb->user['uid'] == '/' || $mybb->user['uid'] == 0 || $mybb->usergroup['canusepms'] == 0) { return tt_no_permission(); } if (!$mybb->user['pmfolders']) { $mybb->user['pmfolders'] = "1**\$%%\$2**\$%%\$3**\$%%\$4**"; $sql_array = array("pmfolders" => $mybb->user['pmfolders']); $db->update_query("users", $sql_array, "uid = " . $mybb->user['uid']); } $rand = my_rand(0, 9); if ($rand == 5) { update_pm_count(); } $foldernames = array(); $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $folderinfo[1] = get_pm_folder_name($folderinfo[0], $folderinfo[1]); $foldernames[$folderinfo[0]] = $folderinfo[1]; } $sql_array = array("status" => 0, "readtime" => 0); $db->update_query("privatemessages", $sql_array, "pmid='{$input['message_id']}' AND uid='" . $mybb->user['uid'] . "'"); update_pm_count(); return xmlresptrue(); }
function get_quote_pm_func($xmlrpc_params) { global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $cache, $time, $mybbgroups; require_once MYBB_ROOT . $mybb->settings['tapatalk_directory'] . '/emoji/emoji.class.php'; $input = Tapatalk_Input::filterXmlInput(array('message_id' => Tapatalk_Input::INT), $xmlrpc_params); $lang->load("private"); $parser = new postParser(); if ($mybb->settings['enablepms'] == 0) { return xmlrespfalse($lang->pms_disabled); } if ($mybb->user['uid'] == '/' || $mybb->user['uid'] == 0 || $mybb->usergroup['canusepms'] == 0) { return tt_no_permission(); } if (!$mybb->user['pmfolders']) { $mybb->user['pmfolders'] = "1**\$%%\$2**\$%%\$3**\$%%\$4**"; $sql_array = array("pmfolders" => $mybb->user['pmfolders']); $db->update_query("users", $sql_array, "uid = " . $mybb->user['uid']); } $rand = my_rand(0, 9); if ($rand == 5) { update_pm_count(); } $foldernames = array(); $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $folderinfo[1] = get_pm_folder_name($folderinfo[0], $folderinfo[1]); $foldernames[$folderinfo[0]] = $folderinfo[1]; } if ($mybb->usergroup['cansendpms'] == 0) { return tt_no_permission(); } $query = $db->query("\n\t\tSELECT pm.*, u.username AS quotename\n\t\tFROM " . TABLE_PREFIX . "privatemessages pm\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=pm.fromid)\n\t\tWHERE pm.pmid='{$input['message_id']}' AND pm.uid='" . $mybb->user['uid'] . "'\n\t"); $pm = $db->fetch_array($query); $message = $pm['message']; $subject = $pm['subject']; $subject = preg_replace("#(FW|RE):( *)#is", '', $subject); $message = "[quote={$pm['quotename']}]\n{$message}\n[/quote]"; $message = preg_replace('#^/me (.*)$#im', "* " . $pm['quotename'] . " \\1", $message); $subject = "Re: {$subject}"; $result = new xmlrpcval(array('result' => new xmlrpcval(true, 'boolean'), 'result_text' => new xmlrpcval('', 'base64'), 'msg_id' => new xmlrpcval($pm['pmid'], 'string'), 'msg_subject' => new xmlrpcval($subject, 'base64'), 'text_body' => new xmlrpcval(tapatalkEmoji::covertNameToEmoji($message), 'base64')), 'struct'); return new xmlrpcresp($result); }
function delete_message_func($xmlrpc_params) { global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $cache, $time, $mybbgroups; $input = Tapatalk_Input::filterXmlInput(array('message_id' => Tapatalk_Input::INT, 'box_id' => Tapatalk_Input::INT), $xmlrpc_params); $lang->load("private"); $parser = new postParser(); if ($mybb->settings['enablepms'] == 0) { return xmlrespfalse($lang->pms_disabled); } if ($mybb->user['uid'] == '/' || $mybb->user['uid'] == 0 || $mybb->usergroup['canusepms'] == 0) { return tt_no_permission(); } if (!$mybb->user['pmfolders']) { $mybb->user['pmfolders'] = "1**\$%%\$2**\$%%\$3**\$%%\$4**"; $sql_array = array("pmfolders" => $mybb->user['pmfolders']); $db->update_query("users", $sql_array, "uid = " . $mybb->user['uid']); } $rand = my_rand(0, 9); if ($rand == 5) { update_pm_count(); } $foldernames = array(); $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $folderinfo[1] = get_pm_folder_name($folderinfo[0], $folderinfo[1]); $foldernames[$folderinfo[0]] = $folderinfo[1]; } $query = $db->simple_select("privatemessages", "*", "pmid='{$input['message_id']}' AND uid='" . $mybb->user['uid'] . "' AND folder='4'", array('order_by' => 'pmid')); if ($db->num_rows($query) == 1) { $db->delete_query("privatemessages", "pmid='{$input['message_id']}'"); } else { $sql_array = array("folder" => 4, "deletetime" => TIME_NOW); $db->update_query("privatemessages", $sql_array, "pmid='{$input['message_id']}' AND uid='" . $mybb->user['uid'] . "'"); } update_pm_count(); return xmlresptrue(); }
$plugins->run_hooks("private_export_end"); eval("\$archive = \"" . $templates->get("private_archive") . "\";"); output_page($archive); } if ($mybb->input['action'] == "do_export" && $mybb->request_method == "post") { // Verify incoming POST request verify_post_check($mybb->get_input('my_post_key')); $plugins->run_hooks("private_do_export_start"); $lang->private_messages_for = $lang->sprintf($lang->private_messages_for, $mybb->user['username']); $exdate = my_date($mybb->settings['dateformat'], TIME_NOW, 0, 0); $extime = my_date($mybb->settings['timeformat'], TIME_NOW, 0, 0); $lang->exported_date = $lang->sprintf($lang->exported_date, $exdate, $extime); $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $folderinfo[1] = get_pm_folder_name($folderinfo[0], $folderinfo[1]); $foldersexploded[$key] = implode("**", $folderinfo); } if ($mybb->get_input('pmid', MyBB::INPUT_INT)) { $wsql = "pmid='" . $mybb->get_input('pmid', MyBB::INPUT_INT) . "' AND uid='" . $mybb->user['uid'] . "'"; } else { if ($mybb->get_input('daycut', MyBB::INPUT_INT) && $mybb->get_input('dayway') != "disregard") { $datecut = TIME_NOW - $mybb->get_input('daycut', MyBB::INPUT_INT) * 86400; $wsql = "pm.dateline"; if ($mybb->get_input('dayway') == "older") { $wsql .= "<="; } else { $wsql .= ">="; } $wsql .= "'{$datecut}'"; } else {
function get_box_func($xmlrpc_params) { global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $cache, $time, $mybbgroups; $input = Tapatalk_Input::filterXmlInput(array('box_id' => Tapatalk_Input::INT, 'start_num' => Tapatalk_Input::INT, 'last_num' => Tapatalk_Input::INT), $xmlrpc_params); list($start, $limit) = process_page($input['start_num'], $input['last_num']); $lang->load("private"); $parser = new postParser(); if ($mybb->settings['enablepms'] == 0) { return xmlrespfalse($lang->pms_disabled); } if ($mybb->user['uid'] == '/' || $mybb->user['uid'] == 0 || $mybb->usergroup['canusepms'] == 0) { return tt_no_permission(); } if (!$mybb->user['pmfolders']) { $mybb->user['pmfolders'] = "1**\$%%\$2**\$%%\$3**\$%%\$4**"; $sql_array = array("pmfolders" => $mybb->user['pmfolders']); $db->update_query("users", $sql_array, "uid = " . $mybb->user['uid']); } $rand = my_rand(0, 9); if ($rand == 5) { update_pm_count(); } $foldernames = array(); $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $folderinfo[1] = get_pm_folder_name($folderinfo[0], $folderinfo[1]); $foldernames[$folderinfo[0]] = $folderinfo[1]; } if (!$input['box_id'] || !array_key_exists($input['box_id'], $foldernames)) { $input['box_id'] = 1; } $folder = $input['box_id']; $foldername = $foldernames[$folder]; $lang->pms_in_folder = $lang->sprintf($lang->pms_in_folder, $foldername); if ($folder == 2 || $folder == 3) { $sender = $lang->sentto; } else { $sender = $lang->sender; } // Do Multi Pages $query = $db->simple_select("privatemessages", "COUNT(*) AS total", "uid='" . $mybb->user['uid'] . "' AND folder='{$folder}'"); $count_total = $db->fetch_field($query, 'total'); $query = $db->simple_select("privatemessages", "COUNT(*) AS unread", "uid='" . $mybb->user['uid'] . "' AND folder='{$folder}' AND readtime = 0"); $count_unread = $db->fetch_field($query, 'unread'); // Get all recipients into an array $cached_users = $get_users = array(); $users_query = $db->simple_select("privatemessages", "recipients", "folder='{$folder}' AND uid='{$mybb->user['uid']}'", array('limit_start' => $start, 'limit' => $limit, 'order_by' => 'dateline', 'order_dir' => 'DESC')); while ($row = $db->fetch_array($users_query)) { $recipients = unserialize($row['recipients']); if (is_array($recipients['to']) && count($recipients['to'])) { $get_users = array_merge($get_users, $recipients['to']); } if (is_array($recipients['bcc']) && count($recipients['bcc'])) { $get_users = array_merge($get_users, $recipients['bcc']); } } $get_users = implode(',', array_unique($get_users)); // Grab info if ($get_users) { $users_query = $db->simple_select("users", "uid, username, usergroup, displaygroup", "uid IN ({$get_users})"); while ($user = $db->fetch_array($users_query)) { $cached_users[$user['uid']] = $user; } } $user_online = $folder == 1 ? ', fu.lastactive, fu.invisible, fu.lastvisit ' : ', tu.lastactive, tu.invisible, tu.lastvisit '; $query = $db->query("\n\t\tSELECT pm.*, fu.username AS fromusername, tu.username as tousername, fu.avatar as favatar, tu.avatar as tavatar {$user_online}\n\t\tFROM " . TABLE_PREFIX . "privatemessages pm\n\t\tLEFT JOIN " . TABLE_PREFIX . "users fu ON (fu.uid=pm.fromid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "users tu ON (tu.uid=pm.toid)\n\t\tWHERE pm.folder='{$folder}' AND pm.uid='" . $mybb->user['uid'] . "'\n\t\tORDER BY pm.dateline DESC\n\t\tLIMIT {$start}, {$limit}\n\t"); $message_list = array(); if ($db->num_rows($query) > 0) { while ($message = $db->fetch_array($query)) { $status = 1; if ($message['status'] == 0) { $msgalt = $lang->new_pm; } elseif ($message['status'] == 1) { $msgalt = $lang->old_pm; $status = 2; } elseif ($message['status'] == 3) { $msgalt = $lang->reply_pm; $status = 3; } elseif ($message['status'] == 4) { $msgalt = $lang->fwd_pm; $status = 4; } $msg_from = null; $msg_to = array(); $avatar = ""; $outboxdisplayuserid = 0; // Sent Items or Drafts Folder Check $recipients = unserialize($message['recipients']); if (count($recipients['to']) > 1 || count($recipients['to']) == 1 && count($recipients['bcc']) > 0) { foreach ($recipients['to'] as $uid) { $profilelink = get_profile_link($uid); $user = $cached_users[$uid]; if (!empty($user['username'])) { $msg_to[] = new xmlrpcval(array("username" => new xmlrpcval($user['username'], "base64"), "user_id" => new xmlrpcval($uid, "string"), "user_type" => check_return_user_type($user['username'])), "struct"); } if (($folder == 2 or $folder == 3) && !$outboxdisplayuserid) { $outboxdisplayuserid = $uid; } } /*if(is_array($recipients['bcc']) && count($recipients['bcc'])) { foreach($recipients['bcc'] as $uid) { $profilelink = get_profile_link($uid); $user = $cached_users[$uid]; $msg_to[]=new xmlrpcval($user['username'], "base64"); } }*/ } else { if ($message['toid']) { $tofromusername = $message['tousername']; $tofromuid = $message['toid']; if (!empty($tofromusername)) { $msg_to[] = new xmlrpcval(array("username" => new xmlrpcval($tofromusername, "base64"), "user_id" => new xmlrpcval($message['toid'], "string"), "user_type" => check_return_user_type($tofromusername)), "struct"); } } } $avatar = $message['tavatar']; if ($folder != 2 && $folder != 3) { $tofromusername = $message['fromusername']; $tofromuid = $message['fromid']; if ($tofromuid == 0) { $tofromusername = $lang->mybb_engine; } if (!$tofromusername) { $tofromuid = 0; $tofromusername = $lang->na; } $msg_from = $tofromusername; $avatar = $message['favatar']; } else { if ($outboxdisplayuserid) { $outboxdisplayuser = get_user($outboxdisplayuserid); $avatar = $outboxdisplayuser['avatar']; } } if (!trim($message['subject'])) { $message['subject'] = $lang->pm_no_subject; } $is_online = false; $timecut = TIME_NOW - $mybb->settings['wolcutoff']; if ($message['lastactive'] > $timecut && ($message['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1) && $message['lastvisit'] != $message['lastactive']) { $is_online = true; } $new_message = array('msg_id' => new xmlrpcval($message['pmid'], 'string'), 'msg_state' => new xmlrpcval($status, 'int'), 'sent_date' => new xmlrpcval(mobiquo_iso8601_encode($message['dateline']), 'dateTime.iso8601'), 'msg_to' => new xmlrpcval($msg_to, 'array'), 'icon_url' => new xmlrpcval(absolute_url($avatar), 'string'), 'msg_subject' => new xmlrpcval($message['subject'], 'base64'), 'short_content' => new xmlrpcval(process_short_content($message['message'], $parser), 'base64'), 'is_online' => new xmlrpcval($is_online, 'boolean')); if ($msg_from !== null) { $new_message['msg_from'] = new xmlrpcval($msg_from, 'base64'); } $message_list[] = new xmlrpcval($new_message, "struct"); } } $result = new xmlrpcval(array('result' => new xmlrpcval(true, 'boolean'), 'result_text' => new xmlrpcval('', 'base64'), 'total_message_count' => new xmlrpcval($count_total, 'int'), 'total_unread_count' => new xmlrpcval($count_unread, 'int'), 'list' => new xmlrpcval($message_list, 'array')), 'struct'); return new xmlrpcresp($result); }
/** * Constructs the usercp messenger menu. * */ function usercp_menu_messenger() { global $db, $mybb, $templates, $theme, $usercpmenu, $lang, $collapsed, $collapsedimg; $usercp_nav_messenger = $templates->get("usercp_nav_messenger"); // Hide tracking link if no permission $tracking = ''; if ($mybb->usergroup['cantrackpms']) { $tracking = $templates->get("usercp_nav_messenger_tracking"); } eval("\$ucp_nav_tracking = \"" . $tracking . "\";"); // Hide compose link if no permission $ucp_nav_compose = ''; if ($mybb->usergroup['cansendpms'] == 1) { eval("\$ucp_nav_compose = \"" . $templates->get("usercp_nav_messenger_compose") . "\";"); } $folderlinks = $folder_id = $folder_name = ''; $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $folderinfo[1] = get_pm_folder_name($folderinfo[0], $folderinfo[1]); if ($folderinfo[0] == 4) { $class = "usercp_nav_trash_pmfolder"; } else { if ($folderlinks) { $class = "usercp_nav_sub_pmfolder"; } else { $class = "usercp_nav_pmfolder"; } } $folder_id = $folderinfo[0]; $folder_name = $folderinfo[1]; eval("\$folderlinks .= \"" . $templates->get("usercp_nav_messenger_folder") . "\";"); } if (!isset($collapsedimg['usercppms'])) { $collapsedimg['usercppms'] = ''; } if (!isset($collapsed['usercppms_e'])) { $collapsed['usercppms_e'] = ''; } eval("\$usercpmenu .= \"" . $usercp_nav_messenger . "\";"); }
/** * Constructs the usercp messenger menu. * */ function usercp_menu_messenger() { global $db, $mybb, $templates, $theme, $usercpmenu, $lang, $collapsed, $collapsedimg; $usercp_nav_messenger = $templates->get("usercp_nav_messenger"); // Hide tracking link if no permission $tracking = ''; if ($mybb->usergroup['cantrackpms']) { $tracking = $templates->get("usercp_nav_messenger_tracking"); } eval("\$ucp_nav_tracking = \"" . $tracking . "\";"); $folderlinks = ''; $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $folderinfo[1] = get_pm_folder_name($folderinfo[0], $folderinfo[1]); if ($folderinfo[0] == 4) { $class = "usercp_nav_trash_pmfolder"; } else { if ($folderlinks) { $class = "usercp_nav_sub_pmfolder"; } else { $class = "usercp_nav_pmfolder"; } } $folderlinks .= "<div><a href=\"private.php?fid={$folderinfo['0']}\" class=\"usercp_nav_item {$class}\">{$folderinfo['1']}</a></div>\n"; } eval("\$usercpmenu .= \"" . $usercp_nav_messenger . "\";"); }
/** * Read the messages from database of a user * * @param integer $user_id ID of user * @param array $params Array with options for SQL Query (orderby, sort) * @param boolean $translate_folders If the folders should be turned into readable format à la "inbox" * @return array */ function getPrivateMessagesOfUser($user_id, $params = array('orderby' => 'pm.dateline', 'sort' => 'DESC'), $translate_folders = true) { /** * This is what we will be returning * Structure of the array to return: * array( * 'Inbox' => array( ... Messages ... ) * ) * * 'Inbox' is the translated folder of folder #1 */ $arr = array(); // If we want to translate the folder names, we need to include the file which contains the translation function if ($translate_folders == true) { include_once MYBB_ROOT . 'inc/functions_user.php'; } // Run the Query for Private Messages $query = $this->db->query(' SELECT pm.*, fu.username AS fromusername, tu.username as tousername FROM ' . TABLE_PREFIX . 'privatemessages pm LEFT JOIN ' . TABLE_PREFIX . 'users fu ON (fu.uid=pm.fromid) LEFT JOIN ' . TABLE_PREFIX . 'users tu ON (tu.uid=pm.toid) WHERE pm.uid = ' . intval($user_id) . ' ORDER BY ' . $params['orderby'] . ' ' . $params['sort'] . ' '); // Do we have messages? if ($this->db->num_rows($query) > 0) { // Uhh, let's iterate the messages! while ($message = $this->db->fetch_array($query)) { // If we translate the folder names, our array index will be the translated folder name if ($translate_folders == true) { $arr[get_pm_folder_name($message['folder'])][] = $message; } else { $arr[$message['folder']][] = $message; } } } return $arr; }
function get_message_func($xmlrpc_params) { global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $cache, $time, $mybbgroups; $input = Tapatalk_Input::filterXmlInput(array('message_id' => Tapatalk_Input::INT, 'box_id' => Tapatalk_Input::INT, 'return_html' => Tapatalk_Input::INT), $xmlrpc_params); $lang->load("private"); $parser = new postParser(); if ($mybb->settings['enablepms'] == 0) { return xmlrespfalse($lang->pms_disabled); } if ($mybb->user['uid'] == '/' || $mybb->user['uid'] == 0 || $mybb->usergroup['canusepms'] == 0) { return tt_no_permission(); } if (!$mybb->user['pmfolders']) { $mybb->user['pmfolders'] = "1**\$%%\$2**\$%%\$3**\$%%\$4**"; $sql_array = array("pmfolders" => $mybb->user['pmfolders']); $db->update_query("users", $sql_array, "uid = " . $mybb->user['uid']); } $rand = my_rand(0, 9); if ($rand == 5) { update_pm_count(); } $foldernames = array(); $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $folderinfo[1] = get_pm_folder_name($folderinfo[0], $folderinfo[1]); $foldernames[$folderinfo[0]] = $folderinfo[1]; } $pmid = $input['message_id']; $query = $db->query("\n\t\tSELECT pm.*, u.*, f.*, g.title AS grouptitle, g.usertitle AS groupusertitle, g.stars AS groupstars, g.starimage AS groupstarimage, g.image AS groupimage, g.namestyle\n\t\tFROM " . TABLE_PREFIX . "privatemessages pm\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=pm.fromid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "userfields f ON (f.ufid=u.uid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "usergroups g ON (g.gid=u.usergroup)\n\t\tWHERE pm.pmid='{$pmid}' AND pm.uid='" . $mybb->user['uid'] . "'\n\t"); $pm = $db->fetch_array($query); if ($pm['folder'] == 3) { return xmlrespfalse("Draft PMs are not supported by Tapatalk"); } if (!$pm['pmid']) { return xmlrespfalse($lang->error_invalidpm); } $parser = new Tapatalk_Parser(); $parser_options = array(); $parser_options['allow_html'] = false; $parser_options['allow_mycode'] = true; $parser_options['allow_smilies'] = false; $parser_options['allow_imgcode'] = true; $parser_options['allow_videocode'] = true; $parser_options['nl2br'] = (bool) $input['return_html']; $parser_options['filter_badwords'] = 1; $pm['message'] = post_bbcode_clean($pm['message']); $pm['message'] = $parser->parse_message($pm['message'], $parser_options); if ($pm['receipt'] == 1) { if ($mybb->usergroup['cantrackpms'] == 1 && $mybb->usergroup['candenypmreceipts'] == 1 && $mybb->input['denyreceipt'] == 1) { $receiptadd = 0; } else { $receiptadd = 2; } } if ($pm['status'] == 0) { $time = TIME_NOW; $updatearray = array('status' => 1, 'readtime' => $time); if (isset($receiptadd)) { $updatearray['receipt'] = $receiptadd; } $db->update_query('privatemessages', $updatearray, "pmid='{$pmid}'"); // Update the unread count - it has now changed. update_pm_count($mybb->user['uid'], 6); // Update PM notice value if this is our last unread PM if ($mybb->user['unreadpms'] - 1 <= 0 && $mybb->user['pmnotice'] == 2) { $updated_user = array("pmnotice" => 1); $db->update_query("users", $updated_user, "uid='{$mybb->user['uid']}'"); } } $pm['subject'] = $parser->parse_badwords($pm['subject']); if ($pm['fromid'] == 0) { $pm['username'] = $lang->mybb_engine; } if (!$pm['username']) { $pm['username'] = $lang->na; } // Fetch the recipients for this message $pm['recipients'] = @unserialize($pm['recipients']); if (is_array($pm['recipients']['to'])) { $uid_sql = implode(',', $pm['recipients']['to']); foreach ($pm['recipients']['to'] as $uid) { $user = get_user($uid); $msg_to_list[] = new xmlrpcval(array('user_id' => new xmlrpcval($user['uid'], 'string'), 'username' => new xmlrpcval(basic_clean($user['username']), 'base64'), 'user_type' => check_return_user_type($user['username'])), 'struct'); if (($pm['folder'] == 2 or $pm['folder'] == 3) && !$avatar) { $avatar = $user['avatar']; } } } else { $user = get_user($pm['toid']); $msg_to_list[] = new xmlrpcval(array('user_id' => new xmlrpcval($user['uid'], 'string'), 'username' => new xmlrpcval(basic_clean($user['username']), 'base64'), 'user_type' => check_return_user_type($user['username'])), 'struct'); if ($pm['folder'] == 2 or $pm['folder'] == 3) { $avatar = $user['avatar']; } } $show_bcc = 0; // If we have any BCC recipients and this user is an Administrator, add them on to the query if (count($pm['recipients']['bcc']) > 0 && $mybb->usergroup['cancp'] == 1) { foreach ($pm['recipients']['bcc'] as $uid) { $user = get_user($uid); $msg_to_list[] = new xmlrpcval(array('user_id' => new xmlrpcval($user['uid'], 'string'), 'username' => new xmlrpcval(basic_clean($user['username']), 'base64'), 'user_type' => check_return_user_type($user['username'])), 'struct'); } } if (!$avatar) { $avatar = $pm['avatar']; } //$display_user = ($box_id == 'inbox') ? $message['from'] : $msg_to[0]; $is_online = false; $timecut = TIME_NOW - $mybb->settings['wolcutoff']; if ($pm['lastactive'] > $timecut && ($pm['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1) && $pm['lastvisit'] != $pm['lastactive']) { $is_online = true; } $result = new xmlrpcval(array('result' => new xmlrpcval(true, 'boolean'), 'result_text' => new xmlrpcval('', 'base64'), 'msg_from' => new xmlrpcval($pm['username'], 'base64'), 'msg_from_id' => new xmlrpcval($pm['fromid'], 'string'), 'msg_to' => new xmlrpcval($msg_to_list, 'array'), 'icon_url' => new xmlrpcval(absolute_url($avatar), 'string'), 'sent_date' => new xmlrpcval(mobiquo_iso8601_encode($pm['dateline']), 'dateTime.iso8601'), 'msg_subject' => new xmlrpcval($pm['subject'], 'base64'), 'text_body' => new xmlrpcval(process_post($pm['message'], $input['return_html']), 'base64'), 'is_online' => new xmlrpcval($is_online, 'boolean'), 'allow_smilies' => new xmlrpcval(true, 'boolean')), 'struct'); return new xmlrpcresp($result); }
} else { echo $archived; } } if (!$mybb->input['action']) { $plugins->run_hooks("private_start"); if (!$mybb->input['fid']) { $mybb->input['fid'] = 1; } $folder = ''; $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); if ($folderinfo[0] == $mybb->input['fid']) { $folder = $folderinfo[0]; $foldername = get_pm_folder_name($folder, $folderinfo[1]); } } $lang->pms_in_folder = $lang->sprintf($lang->pms_in_folder, $foldername); if ($folder == 2 || $folder == 3) { // Sent Items Folder $sender = $lang->sentto; } else { $sender = $lang->sender; } // Do Multi Pages $query = $db->simple_select("privatemessages", "COUNT(*) AS total", "uid='" . $mybb->user['uid'] . "' AND folder='{$folder}'"); $pmscount = $db->fetch_array($query); if (!$mybb->settings['threadsperpage']) { $mybb->settings['threadsperpage'] = 20; }
function get_box_info_func($xmlrpc_params) { global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $cache, $time, $mybbgroups; $lang->load("private"); $parser = new postParser(); if ($mybb->settings['enablepms'] == 0) { return xmlrespfalse($lang->pms_disabled); } if ($mybb->user['uid'] == '/' || $mybb->user['uid'] == 0 || $mybb->usergroup['canusepms'] == 0) { return tt_no_permission(); } if (!$mybb->user['pmfolders']) { $mybb->user['pmfolders'] = "1**\$%%\$2**\$%%\$3**\$%%\$4**"; $sql_array = array("pmfolders" => $mybb->user['pmfolders']); $db->update_query("users", $sql_array, "uid = " . $mybb->user['uid']); } $rand = my_rand(0, 9); if ($rand == 5) { update_pm_count(); } $foldercache = array(); $folderids = array(); $folderlist = ''; $foldersexploded = explode("\$%%\$", $mybb->user['pmfolders']); foreach ($foldersexploded as $key => $folders) { $folderinfo = explode("**", $folders, 2); $foldername = $folderinfo[1]; $fid = $folderinfo[0]; $foldername = get_pm_folder_name($fid, $foldername); $type = ""; if ($fid == 1) { $type = "INBOX"; } else { if ($fid == 2) { $type = "SENT"; } else { continue; } } // return inbox and send box only $foldercache[$fid] = array("fid" => $fid, "name" => $foldername, "total" => 0, "unread" => 0, "type" => $type); $folderids[] = intval($fid); } $query = $db->simple_select("privatemessages", "folder, count(*) as total", "FIND_IN_SET(folder, '" . implode(",", $folderids) . "') AND uid='{$mybb->user['uid']}' group by folder"); while ($folder = $db->fetch_array($query)) { $foldercache[$folder['folder']]['total'] = $folder['total']; } $query = $db->simple_select("privatemessages", "folder, count(*) as unread", "FIND_IN_SET(folder, '" . implode(",", $folderids) . "') AND uid='{$mybb->user['uid']}' AND readtime = 0 group by folder"); while ($folder = $db->fetch_array($query)) { $foldercache[$folder['folder']]['unread'] = $folder['unread']; } $folder_list = array(); foreach ($foldercache as $fid => $folder) { $folder_list[] = new xmlrpcval(array('box_id' => new xmlrpcval($fid, 'string'), 'box_name' => new xmlrpcval($folder['name'], 'base64'), 'msg_count' => new xmlrpcval($folder['total'], 'int'), 'unread_count' => new xmlrpcval($folder['unread'], 'int'), 'box_type' => new xmlrpcval($folder['type'], 'string')), 'struct'); } $spaceused = 0; if ($mybb->usergroup['pmquota'] != '0' && $mybb->usergroup['cancp'] != 1) { $query = $db->simple_select("privatemessages", "COUNT(*) AS total", "uid='" . $mybb->user['uid'] . "'"); $pmscount = $db->fetch_array($query); if ($pmscount['total'] > 0) { $spaceused = $mybb->usergroup['pmquota'] - $pmscount['total']; } } $result = new xmlrpcval(array('result' => new xmlrpcval(true, 'boolean'), 'result_text' => new xmlrpcval('', 'base64'), 'message_room_count' => new xmlrpcval($mybb->usergroup['cancp'] == 1 ? 100 : $spaceused, 'int'), 'list' => new xmlrpcval($folder_list, 'array')), 'struct'); return $result; }