📄 cp_invite.php
字号:
<?php
/*
[UCenter Home] (C) 2007-2008 Comsenz Inc.
$Id: cp_invite.php 8374 2008-08-05 07:49:06Z zhengqingpeng $
*/
if(!defined('IN_UCHOME')) {
exit('Access Denied');
}
if($_SCONFIG['closeinvite']) {
showmessage('close_invite');
}
$siteurl = getsiteurl();
$maxcount = 500;//最多好友邀请
$pay_invite = creditrule('pay', 'invite');
$get_invite = creditrule('get', 'invite');
$invite_code = '';
if(empty($pay_invite)) {
$invite_code = space_key($space);
}
if($_GET['op'] == '' || $_GET['op'] == 'link' || $_GET['op'] == 'dump') {
$list = $flist = array();
$count = 0;
$query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('invite')." WHERE uid='$_SGLOBAL[supe_uid]' ORDER BY id DESC");
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
realname_set($value['fuid'], $value['fusername']);
if($value['fuid']) {
$flist[] = $value;
} else {
if($pay_invite) {
$inviteurl = "{$siteurl}invite.php?{$value[id]}{$value[code]}";
} else {
$inviteurl = "{$siteurl}invite.php?u=$space[uid]&c=$invite_code";
}
if($value['type']) {
$maillist[] = array(
'email' => $value['email'],
'url' => $inviteurl,
'id' => $value['id']
);
} else {
$list[] = $inviteurl;
$count++;
}
}
}
realname_get();
}
/** 重新发送邀请邮件 */
if($_GET['op'] == 'resend') {
$id = $_GET['id'] ? intval($_GET['id']) : 0;
if(submitcheck('resendsubmit')) {
if(empty($id)) {
showmessage('send_result_3');
}
$query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('invite')." WHERE id='$id' AND uid='$_SGLOBAL[supe_uid]' ORDER BY id DESC");
if($value = $_SGLOBAL['db']->fetch_array($query)) {
if($pay_invite) {
$inviteurl = "{$siteurl}invite.php?{$value[id]}{$value[code]}";
} else {
$inviteurl = "{$siteurl}invite.php?u=$space[uid]&c=$invite_code";
}
createmail($value['email'], $inviteurl);
showmessage('send_result_1', $_POST['refer']);
} else {
showmessage('send_result_3');
}
}
include template('cp_invite');
}
elseif($_GET['op'] == 'link') {
if($pay_invite) {
$list_str = empty($list)?'':implode("\n", $list);
$maxcount_my = $maxcount - $count;
$maxinvitenum = empty($pay_invite)?$maxcount_my:intval($space['credit']/$pay_invite);
if($maxinvitenum > $maxcount_my) $maxinvitenum = $maxcount_my;
if($maxinvitenum < 0) $maxinvitenum = 0;
//提交
if(submitcheck('invitesubmit')) {
if($_SCONFIG['closeinvite']) {
showmessage('close_invite');
}
$invitenum = intval($_POST['invitenum']);
if($invitenum > $maxinvitenum) $invitenum = $maxinvitenum;
//扣减积分
$credit = intval($pay_invite)*$invitenum;
if(empty($invitenum) || ($pay_invite && $credit > $space['credit'])) {
showmessage('invite_error');
}
$codes = array();
for ($i=0;$i<$invitenum;$i++) {
$code = strtolower(random(6));
$codes[] = "('$_SGLOBAL[supe_uid]', '$code')";
}
if($codes) {
$_SGLOBAL['db']->query("INSERT INTO ".tname('invite')." (uid, code) VALUES ".implode(',', $codes));
if($credit) {
$_SGLOBAL['db']->query("UPDATE ".tname('space')." SET credit=credit-$credit WHERE uid='$_SGLOBAL[supe_uid]'");
}
}
showmessage('do_success', 'cp.php?ac=invite', 0);
}
}
$actives = array('invite'=>' class="active"');
include template('cp_invite_link');
}
/** 导入邮箱通讯录等 */
elseif($_GET['op'] == "dump") {
include template('cp_invite_dump');
}
/** 导出MSN联系人 */
elseif ($_GET['op'] == "dumpmsn") {
if(!$_POST['account'] || !$_POST['passwd']){
die('error');
}
//取得联系人 UTF8
require_once (S_ROOT.'./source/contact/mailfactory.php');
$contact = new MailFactory(MMSN);
$contacts = $contact->getContactList($_POST['account'], $_POST['passwd']);
if($contacts == 0) die('error');
if(empty($contacts)) die('empty');
echo diff_contacts($contacts);
exit;
}
/** 导入邮箱通讯薄 */
elseif ($_GET['op'] == "dumpemail"){
if(!$_POST['account'] || !$_POST['passwd'] || !$_POST['postoffice']){
die('error');
}
//取得联系人 UTF8
require_once (S_ROOT.'./source/contact/mailfactory.php');
switch ($_POST['postoffice']) {
case "126.com":
$contact = new MailFactory(M126);
break;
case "sina.com":
$contact = new MailFactory(MSINA);
break;
case "tom.com":
$contact = new MailFactory(MTOM);
break;
case "gmail.com":
$contact = new MailFactory(MGOOGLE);
break;
case "163.com":
$contact = new MailFactory(M163);
break;
case "sohu.com":
$_POST['account'] = $_POST['account'] . "@" . $_POST['postoffice'];
$contact = new MailFactory(MSOHU);
break;
case "vip.sohu.com":
$_POST['account'] = $_POST['account'] . "@" . $_POST['postoffice'];
$contact = new MailFactory(MSOHU_VIP);
break;
case "yahoo.cn":
case "yahoo.com":
case "yahoo.com.cn":
$_POST['account'] = $_POST['account'] . "@" . $_POST['postoffice'];
$contact = new MailFactory(MYAHOO);
break;
default:
die("error");
}
$contacts = $contact->getContactList($_POST['account'], $_POST['passwd']);
if($contacts == 0) die('error');
if(empty($contacts)) die('empty');
if($_POST['postoffice'] == "sina.com" || $_POST['postoffice'] == "sohu.com" || $_POST['postoffice'] == "vip.sohu.com" ) {
echo diff_contacts($contacts);
} else {
echo diff_contacts(array_flip($contacts));
}
exit;
}
/** 导入FOXMAIL通讯薄 */
elseif ($_GET['op'] == "dumpcard"){
if(empty($_FILES['cardfile']) || $_FILES['cardfile']['size'] <= 0) {
$ret = 'error';
} else {
$content = file_get_contents($_FILES['cardfile']['tmp_name']);
preg_match_all("/[a-z0-9_\.\-]+@[a-z0-9\-]+\.[a-z]{2,6}/i", $content, $matches);
if(($emails = array_unique($matches[0])) !=false) {
$ret = diff_contacts(array_flip($emails));
} else {
$ret = "empty";
}
unset($matches);
}
echo "<script language=javascript>parent.accountAjaxShow('".addslashes($ret)."');</script>";
exit;
}
/* 处理邮件邀请 */
elseif(submitcheck('emailinvite') || $_GET['op'] == 'inviteemail') {
set_time_limit(0);//设置超时时间
$mails = explode(',', str_replace(array(lang('tab_space'), "\r\n", "\n", "\r", " "), ',', trim($_POST['emails'])));
$mails = array_unique($mails);
if(empty($mails) || (count($mails)==1 && empty($mails[0]))) {
showmessage('mail_can_not_be_empty');
}
$invitenum = 0;
$failingmail = array();
$queuecount = 0;
$lasturl = '';
$lastemail = '';
foreach($mails as $key => $value) {
if(empty($value) || !isemail($value)){
continue;
}
if($pay_invite) {
//计算积分扣减积分
$credit = intval($pay_invite)*($invitenum+1);
if(!isemail($value) || ($pay_invite && $credit > $space['credit'])) {
$failingmail[] = $value;
continue;
}
$code = strtolower(random(6));
$setarr = array(
'uid' => $_SGLOBAL['supe_uid'],
'code' => $code,
'email' => saddslashes($value),
'type' => 1
);
$id = inserttable('invite', $setarr, 1);
if($id) {
$url = "{$siteurl}invite.php?{$id}{$code}";
createmail($value, $url);
$invitenum++;
} else {
$failingmail[] = $value;
}
} else {
$url = "{$siteurl}invite.php?u=$space[uid]&c=$invite_code";
createmail($value, $url);
}
}
if($pay_invite && $invitenum) {
$credit = intval($pay_invite)*$invitenum;
$_SGLOBAL['db']->query("UPDATE ".tname('space')." SET credit=credit-$credit WHERE uid='$_SGLOBAL[supe_uid]'");
}
if(count($failingmail)) {
showmessage('send_result_2', '', 2, array(implode(',', $failingmail)));
} else {
showmessage('send_result_1');
}
}
/** 默认首页 */
else {
include template('cp_invite');
}
function createmail($mail, $url) {
global $_SGLOBAL, $_SCONFIG, $space, $_SN;
if(empty($_SGLOBAL['spaceinfo'])) {
$albumnum = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('album')." WHERE uid='$_SGLOBAL[supe_uid]'"), 0);
$doingnum = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('doing')." WHERE uid='$_SGLOBAL[supe_uid]'"), 0);
$blognum = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('blog')." WHERE uid='$_SGLOBAL[supe_uid]'"), 0);
$threadnum = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('thread')." WHERE uid='$_SGLOBAL[supe_uid]'"), 0);
$tagspacenum = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('tagspace')." WHERE uid='$_SGLOBAL[supe_uid]'"), 0);
$subject = cplang('invite_subject', array($_SN[$space['uid']], $_SCONFIG['sitename']));
$spaceurl = $siteurl.'space.php?uid='.$_SGLOBAL['supe_uid'];
$_SGLOBAL['spaceinfo'] = array(
'albumnum' => $albumnum,
'doingnum' => $doingnum,
'blognum' => $blognum,
'threadnum' => $threadnum,
'tagspacenum' => $tagspacenum,
'subject' => $subject,
'spaceurl' => $spaceurl
);
}
$msg1 = cplang('invite_massage_1', array($_SGLOBAL['spaceinfo']['spaceurl'], avatar($_SGLOBAL['supe_uid'], 'middle'), $_SN[$space['uid']]));
$msg2 = cplang('invite_massage_2', array($_SCONFIG['sitename'], $_SN[$space['uid']], $_POST['saymsg']));
$msg3 = cplang('invite_massage_3', array($_SN[$space['uid']], $_SCONFIG['sitename'], $space['friendnum'], $_SGLOBAL['spaceinfo']['albumnum'], $_SGLOBAL['spaceinfo']['doingnum'], $_SGLOBAL['spaceinfo']['blognum'], $_SGLOBAL['spaceinfo']['threadnum'], $_SGLOBAL['spaceinfo']['tagspacenum']));
$mailmsg = cplang('invite_massage', array($msg1, $msg2, $url, $msg3));
addmailcron(0, $mail, $_SGLOBAL['spaceinfo']['subject'], $mailmsg);
}
/**
* 分组联系人 看哪些已经注册
*
* @param array $contacts=array('email'=>'nick')
* @return json
*/
function diff_contacts($contacts = array('email'=>'nick')){
global $_SGLOBAL;
if(empty($contacts) || !is_array($contacts)) return 'empty';
//取得已注册的联系人 GBK
$userReged = array();
$sqlQuery = "SELECT m.uid, m.username, sf.email, sf.sex, sf.birthprovince, sf.birthcity
FROM ".tname('member')." m
LEFT JOIN ".tname('spacefield')." sf ON m.uid=sf.uid
WHERE sf.email IN ('".implode("','", array_keys($contacts))."')";
$query = $_SGLOBAL['db']->query($sqlQuery);
while (($value = $_SGLOBAL['db']->fetch_array($query)) != FALSE) {
$userReged[] = $value;
unset($contacts[$value['email']]);
}
$ret = array(
'list' => array(),
'reg' => array()
);
foreach ($contacts as $email => $nick){
$ret['list'][] = array(
'email' => $email,
'nick' => is_numeric($nick) ? $email : $nick,
);
unset($contacts[$email]);
}
foreach ($userReged as $key => $user){
$ret['reg'][] = array(
'uid' => $user['uid'],
'user_name' => siconv($user['username'], 'UTF-8'),
'icon' => avatar($user['uid'], 'small'),
'online' => '',
'gender' => $user['sex'],
'city' => siconv($user['birthprovince'] . " " . $user['birthcity'], 'UTF-8'),
);
unset($userReged[$key]);
}
unset($contacts, $userReged);
//return json_encode($ret);
if ( !function_exists('json_encode') ) {
require_once (S_ROOT.'./source/contact/json.php');
$json = new Services_JSON;
return $json->encode($ret);
} else {
return json_encode($ret);
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -