Exemplo n.º 1
0
/**
 * 发送社区短消息或系统通知
 *
 * @param array $msg 信息格式如下:
 * 	$msg = array(
 *		'toUser'	=> 'admin', //接收者用户名,可为数组群发:array('admin','abc')
 *		'toUid'		=> 1,		//接收者uid,可为数组群发:array(1,2),当与 toUser 同时存在时,自然失效
 *		'fromUid'	=> 2,		//发送者UID,与fromUser同时存在才有效 (可选,默认为'0')
 *		'fromUser'	=> 'pwtest',//发送者用户名,与fromUid同时存在才有效(可选,默认为'SYSTEM')
 *		'subject'	=> 'Test',	//消息标题
 *		'content'	=> '~KO~',	//消息内容
 *		'other'		=> array()	//其他信息变量
 *	);
 * @return boolean 返回消息发送是否完成
 */
function pwSendMsg($msg)
{
    global $db, $timestamp;
    if (!$msg['toUser'] && !$msg['toUid'] || !$msg['subject'] || !$msg['content']) {
        return false;
    }
    $toType = 'username';
    if (empty($msg['toUser'])) {
        $msg['toUser'] = $msg['toUid'];
        $toType = 'uid';
    }
    $msg['subject'] = getLangInfo('writemsg', $msg['subject'], $msg);
    $msg['content'] = getLangInfo('writemsg', $msg['content'], $msg);
    if (!$msg['fromUid'] || !$msg['fromUser']) {
        $msg['fromUid'] = 0;
        $msg['fromUser'] = '******';
    }
    if (is_array($msg['toUser'])) {
        //group send message
        $msgdb = array();
        $query = $db->query("SELECT uid FROM pw_members WHERE {$toType} IN (" . pwImplode($msg['toUser'], false) . ')');
        while ($rt = $db->fetch_array($query)) {
            $msgdb[] = array($rt['uid'], $msg['fromUid'], $msg['fromUser'], 'rebox', 1, $timestamp, $msg['subject'], $msg['content']);
        }
        $msgdb && send_msgc($msgdb, false);
    } else {
        $rt = $db->get_one("SELECT uid FROM pw_members WHERE {$toType}=" . pwEscape($msg['toUser'], false));
        if (empty($rt)) {
            return false;
        }
        $db->update('INSERT INTO pw_msg SET ' . pwSqlSingle(array('touid' => $rt['uid'], 'fromuid' => $msg['fromUid'], 'username' => $msg['fromUser'], 'type' => 'rebox', 'ifnew' => 1, 'mdate' => $timestamp), false));
        $mid = $db->insert_id();
        $db->update('REPLACE INTO pw_msgc SET ' . pwSqlSingle(array('mid' => $mid, 'title' => $msg['subject'], 'content' => $msg['content']), false));
        $db->update("UPDATE pw_members SET newpm=newpm+1 WHERE uid=" . pwEscape($rt['uid'], false));
    }
    return true;
}
Exemplo n.º 2
0
<?php

!function_exists('readover') && exit('Forbidden');
include_once D_P . 'data/bbscache/forum_cache.php';
$query = $db->query("SELECT t.tid,t.fid,t.authorid,t.subject,t.postdate FROM pw_threads t LEFT JOIN pw_reward r USING(tid) WHERE t.special='3' AND t.state='0' AND r.timelimit<'{$timestamp}' ORDER BY t.postdate ASC LIMIT 100");
$tids = $uiddb = $msg_a = array();
while ($rt = $db->fetch_array($query)) {
    $rt['postdate'] = get_date($rt['postdate']);
    $tids[$rt['tid']] = $rt;
}
$title = Char_cv(getLangInfo('writemsg', 'rewardmsg_notice_title'));
foreach ($tids as $tid => $msg) {
    $L = array('tid' => $tid, 'subject' => $msg['subject'], 'postdate' => $msg['postdate'], 'fid' => $msg['fid'], 'name' => $forum[$msg['fid']]['name']);
    $content = Char_cv(getLangInfo('writemsg', 'rewardmsg_notice_content', $L));
    $msg_a[] = array($msg['authorid'], '0', 'SYSTEM', 'rebox', '1', $timestamp, $title, $content);
}
if ($msg_a) {
    require_once R_P . 'require/msg.php';
    send_msgc($msg_a);
}
Exemplo n.º 3
0
    PostCheck();
    !$isU && Showmsg('space_over_right');
    InitGP(array('selid', 'refusemsg'));
    !$selid && Showmsg('id_error');
    !is_array($selid) && ($selid = array($selid));
    $title = Char_cv(getLangInfo('writemsg', 'friend_refuse_title', array('username' => $windid)));
    $writemsg = Char_cv(getLangInfo('writemsg', 'friend_refuse_content', array('uid' => $winduid, 'username' => $windid, 'msg' => stripslashes($refusemsg))));
    $msgdb = array();
    $query = $db->query("SELECT uid FROM pw_friends WHERE friendid=" . pwEscape($userdb['uid']) . ' AND uid IN(' . pwImplode($selid) . ") AND status='1'");
    while ($rt = $db->fetch_array($query)) {
        $msgdb[] = array($rt['uid'], 0, 'SYSTEM', 'rebox', '1', $timestamp, $title, $writemsg);
    }
    $db->update('DELETE FROM pw_friends WHERE friendid=' . pwEscape($userdb['uid']) . ' AND uid IN(' . pwImplode($selid) . ") AND status='1'");
    if ($msgdb) {
        require_once R_P . 'require/msg.php';
        send_msgc($msgdb);
    }
    refreshto('u.php?action=friend', 'operate_success');
} elseif ($job == 'edit') {
    !$isU && Showmsg('space_over_right');
    if (empty($_POST['step'])) {
        InitGP(array('touid'));
        $friend = $db->get_one("SELECT f.*,m.username FROM pw_friends f LEFT JOIN pw_members m ON f.friendid=m.uid WHERE f.uid=" . pwEscape($userdb['uid']) . " AND status='0' AND f.friendid=" . pwEscape($touid));
        empty($friend) && Showmsg('data_error');
        require_once PrintEot('u');
        footer();
    } else {
        InitGP(array('touid', 'descrip'));
        $db->update("UPDATE pw_friends SET descrip=" . pwEscape($descrip) . " WHERE uid=" . pwEscape($userdb['uid']) . " AND status='0' AND friendid=" . pwEscape($touid));
        refreshto('u.php?action=friend', 'operate_success');
    }
Exemplo n.º 4
0
        $medalname = '';
        foreach ($medaldb[$rt['username']] as $key => $value) {
            $ids[] = $value[0];
            $medal = $value[1];
            $pwSQL[] = array($rt['username'], 'SYSTEM', $timestamp, $medal, 2, $reason);
            $medals = str_replace(",{$medal},", ',', $medals);
            $medaluser[] = '(uid=' . pwEscape($rt['uid']) . ' AND mid=' . pwEscape($medal) . ')';
            $medalname .= $medalname ? ',' . $_MEDALDB[$medal]['name'] : $_MEDALDB[$medal]['name'];
        }
        $metal_cancel = Char_cv(getLangInfo('other', 'metal_cancel'));
        $metal_cancel_text = Char_cv(getLangInfo('other', 'metal_cancel_text', array('medalname' => $medalname)));
        $message[] = array($rt['uid'], '0', 'SYSTEM', 'rebox', '1', $timestamp, $metal_cancel, $metal_cancel_text);
        $medals = substr($medals, 1, -1);
        $db->update("UPDATE pw_members SET medals=" . pwEscape($medals, false) . "WHERE uid=" . pwEscape($rt['uid'], false));
    }
    $pwSQL && $db->update("INSERT INTO pw_medalslogs (awardee,awarder,awardtime,level,action,why) VALUES" . pwSqlMulti($pwSQL, false));
    $ids && $db->update("UPDATE pw_medalslogs SET state='1' WHERE id IN(" . pwImplode($ids, false) . ")");
    $medaluser && $db->update("DELETE FROM pw_medaluser WHERE " . implode(' OR ', $medaluser));
    $message && send_msgc($message);
    updatemedal_list();
}
function updatemedal_list()
{
    global $db;
    $query = $db->query("SELECT uid FROM pw_medaluser GROUP BY uid");
    $medaldb = '<?php die;?>0';
    while ($rt = $db->fetch_array($query)) {
        $medaldb .= ',' . $rt['uid'];
    }
    writeover(D_P . 'data/bbscache/medals_list.php', $medaldb);
}