You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
352 lines
20 KiB
352 lines
20 KiB
<?php
|
|
/*
|
|
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
|
|
* @license http://www.dzzoffice.com/licenses/license.txt
|
|
* @package DzzOffice
|
|
* @link http://www.dzzoffice.com
|
|
* @author zyx(zyx@dzz.cc)
|
|
*/
|
|
if (!defined('IN_DZZ') || !defined('IN_ADMIN')) {
|
|
exit('Access Denied');
|
|
}
|
|
//error_reporting(E_ALL);
|
|
include_once libfile('function/profile', '', 'user');
|
|
include_once libfile('function/admin');
|
|
loadcache('profilesetting');
|
|
$vid = intval($_GET['vid']);
|
|
$anchor = in_array($_GET['anchor'], array('authstr', 'refusal', 'pass', 'add')) ? $_GET['anchor'] : 'authstr';
|
|
$current = array($anchor => 1);
|
|
$op = isset($_GET['op']) ? $_GET['op'] : '';
|
|
//判断管理权限
|
|
if ($vid) {
|
|
if ($vid == 1) {
|
|
if ($_G['member']['grid'] != 4 && $_G['adminid'] != 1)
|
|
showmessage('contact_administrator1');
|
|
} else {
|
|
if ($_G['adminid'] != 1)
|
|
showmessage('contact_administrator2');
|
|
}
|
|
} else {
|
|
if ($_G['member']['grid'] != 5 && $_G['adminid'] != 1)
|
|
showmessage('contact_administrator3');
|
|
}
|
|
if ($anchor != 'pass') {
|
|
$_GET['verifytype'] = $vid;
|
|
} else {
|
|
$_GET['verify' . $vid] = 1;
|
|
$_GET['orderby'] = 'uid';
|
|
}
|
|
if (!submitcheck('verifysubmit', true)) {
|
|
$navtitle = $vid ? $_G['setting']['verify'][$vid]['title'] : lang('members_verify_profile') . ' - ' . lang('appname');
|
|
|
|
$thurl = ADMINSCRIPT . '?mod=member&op=verify&anchor=' . $anchor . '&vid=' . $vid;
|
|
if ($anchor == 'refusal') {
|
|
$_GET['flag'] = -1;
|
|
} elseif ($anchor == 'authstr') {
|
|
$_GET['flag'] = 0;
|
|
}
|
|
$intkeys = array('uid', 'verifytype', 'flag', 'verify1', 'verify2', 'verify3', 'verify4', 'verify5', 'verify6', 'verify7');
|
|
$strkeys = array();
|
|
$randkeys = array();
|
|
$likekeys = array('username');
|
|
$results = getwheres($intkeys, $strkeys, $randkeys, $likekeys, 'v.');
|
|
foreach ($likekeys as $k) {
|
|
$_GET[$k] = dhtmlspecialchars($_GET[$k]);
|
|
}
|
|
$thurl .= '&' . implode('&', $results['urls']);
|
|
$wherearr = $results['wherearr'];
|
|
if ($_GET['dateline1']) {
|
|
$wherearr[] = "v.dateline >= '" . strtotime($_GET['dateline1']) . "'";
|
|
$thurl .= '&dateline1=' . $_GET['dateline1'];
|
|
}
|
|
if ($_GET['dateline2']) {
|
|
$wherearr[] = "v.dateline <= '" . strtotime($_GET['dateline2']) . "'";
|
|
$thurl .= '&dateline2=' . $_GET['dateline2'];
|
|
}
|
|
|
|
$wheresql = empty($wherearr) ? '1' : implode(' AND ', $wherearr);
|
|
|
|
$orders = getorders(array('dateline', 'uid'), 'dateline', 'v.');
|
|
$ordersql = $orders['sql'];
|
|
if ($orders['urls'])
|
|
$thurl .= '&' . implode('&', $orders['urls']);
|
|
$orderby = array($_GET['orderby'] => ' selected');
|
|
$ordersc = array($_GET['ordersc'] => ' selected');
|
|
|
|
$orders = in_array($_G['orderby'], array('dateline', 'uid')) ? $_G['orderby'] : 'dateline';
|
|
$ordersc = in_array(strtolower($_GET['ordersc']), array('asc', 'desc')) ? $_GET['ordersc'] : 'desc';
|
|
|
|
$perpage = empty($_GET['perpage']) ? 0 : intval($_GET['perpage']);
|
|
if (!in_array($perpage, array(10, 20, 50, 100)))
|
|
$perpage = 10;
|
|
$perpages = array($perpage => ' selected');
|
|
$thurl .= '&perpage=' . $perpage;
|
|
|
|
$page = empty($_GET['page']) ? 1 : intval($_GET['page']);
|
|
if ($page < 1)
|
|
$page = 1;
|
|
$start = ($page - 1) * $perpage;
|
|
|
|
$multi = '';
|
|
if ($anchor != 'pass') {
|
|
$count = C::t('user_verify_info')->count_by_search($_GET['uid'], $vid, $_GET['flag'], $_GET['username'], strtotime($_GET['dateline1']), strtotime($_GET['dateline2']));
|
|
} else {
|
|
$wheresql = (!empty($_GET['username']) ? str_replace('v.username', 'm.username', $wheresql) : $wheresql) . ' AND v.uid=m.uid ';
|
|
$count = C::t('user_verify')->count_by_search($_GET['uid'], $vid, $_GET['username']);
|
|
}
|
|
if ($count) {
|
|
|
|
if ($anchor != 'pass') {
|
|
$verifyusers = C::t('user_verify_info')->fetch_all_search($_GET['uid'], $vid, $_GET['flag'], $_GET['username'], strtotime($_GET['dateline1']), strtotime($_GET['dateline2']), $orders, $start, $perpage, $ordersc);
|
|
} else {
|
|
$verifyusers = C::t('user_verify')->fetch_all_search($_GET['uid'], $vid, $_GET['username'], 'v.uid', $start, $perpage, $ordersc);
|
|
$verifyuids = array_keys($verifyusers);
|
|
$profiles = C::t('user_profile')->fetch_all($verifyuids, false, 0);
|
|
}
|
|
$list = array();
|
|
foreach ($verifyusers as $uid => $value) {
|
|
if ($anchor == 'pass') {
|
|
$value = array_merge($value, $profiles[$uid]);
|
|
}
|
|
$value['username'] = '<a href="user.php?&uid=' . $value['uid'] . '" target="_blank">' . avatar_block($value['uid']) . '<br/><br/>' . $value['username'] . '</a>';
|
|
|
|
if ($anchor != 'pass') {
|
|
$fields = $anchor != 'pass' ? dunserialize($value['field']) : $_G['setting']['verify'][$vid]['field'];
|
|
$value['verifytype'] = $value['verifytype'] ? $_G['setting']['verify'][$value['verifytype']]['title'] : lang('members_verify_profile');
|
|
$fieldstr = '<table class="table-sub" width="96%">';
|
|
$i = 0;
|
|
$fieldstr .= '<tr>' . ($anchor == 'authstr' ? '<td width="35">' . lang('refuse') . '</td>' : '') . '<td width="100">' . lang('members_verify_fieldid') . '</td><td>' . lang('members_verify_newvalue') . '</td></tr><tbody id="verifyitem_' . $value['vid'] . '">';
|
|
$i++;
|
|
|
|
foreach ($fields as $key => $field) {
|
|
if (in_array($key, array('constellation', 'zodiac', 'birthyear', 'birthmonth'))) {
|
|
continue;
|
|
}
|
|
if ($_G['cache']['profilesetting'][$key]['formtype'] == 'file') {
|
|
if ($field) {
|
|
$field = '<a href="' . (getglobal('setting/attachurl') . $field) . '" target="_blank"><img src="' . (getglobal('setting/attachurl') . $field) . '" class="verifyimg" /></a>';
|
|
} else {
|
|
$field = lang('members_verify_pic_removed');
|
|
}
|
|
} elseif (in_array($key, array('gender', 'birthday', 'department'))) {
|
|
|
|
$field = profile_show($key, $fields);
|
|
}
|
|
$fieldstr .= '<tr>' . ($anchor == 'authstr' ? '<td><input type="checkbox" class="form-check-input" name="refusal[' . $value['vid'] . '][' . $key . ']" value="' . $key . '" onclick="document.getElementById(\'refusal' . $value['vid'] . '\').click();" /></td>' : '') . '<td>' . $_G['cache']['profilesetting'][$key]['title'] . ':</td><td>' . $field . '</td></tr>';
|
|
$i++;
|
|
}
|
|
$opstr = "";
|
|
|
|
if ($anchor == 'authstr') {
|
|
$opstr .= "<div class=\"form-check form-check-inline\"><input type=\"radio\" class=\"form-check-input\" id=\"verify[$value[vid]]\" name=\"verify[$value[vid]]\" value=\"validate\" onclick=\"mod_setbg($value[vid], 'validate');showreason($value[vid], 0);\"><label class=\"form-check-label\" for=\"verify[$value[vid]]\">" . lang('validate') . "</label></div><div class=\"form-check form-check-inline\"><input type=\"radio\" class=\"form-check-input\" name=\"verify[$value[vid]]\" value=\"refusal\" id=\"refusal$value[vid]\" onclick=\"mod_setbg($value[vid], 'refusal');showreason($value[vid], 1);\"><label class=\"form-check-label\" for=\"refusal$value[vid]\">" . lang('refuse') . "</label></div>";
|
|
} elseif ($anchor == 'refusal') {
|
|
$opstr .= "<div class=\"form-check form-check-inline\"><input type=\"radio\" class=\"form-check-input\" id=\"verify[$value[vid]]\" name=\"verify[$value[vid]]\" value=\"validate\" onclick=\"mod_setbg($value[vid], 'validate');\"><label class=\"form-check-label\" for=\"verify[$value[vid]]\">" . lang('validate') . "</label></div>";
|
|
}
|
|
|
|
$fieldstr .= "</tbody><tr><td colspan=\"5\">$opstr <span id=\"reason_$value[vid]\" style=\"display: none;\" title=\"" . lang('moderate_reasonpm') . "\" ><input type=\"text\" class=\"form-control\" placeholder=\"" . lang('moderate_reasonpm') . "\" name=\"reason[$value[vid]]\" style=\"margin: 0px;\"></span><dl><input type=\"button\" value=\"" . lang('moderate') . "\" name=\"singleverifysubmit\" class=\"btn btn-primary\" onclick=\"singleverify($value[vid]);\"></dl></td></tr></table>";
|
|
$value['fieldstr'] = $fieldstr;
|
|
$value['dateline'] = dgmdate($value['dateline'], 'u');
|
|
$list[$uid] = $value;
|
|
// = array($value['username'], $verifytype, dgmdate($value['dateline'], 'dt'), $fieldstr);
|
|
//showtablerow("id=\"mod_$value[vid]_row\" verifyid=\"$value[vid]\"", $cssarr, $valuearr);
|
|
} else {
|
|
$fields = $_G['setting']['verify'][$vid]['field'];
|
|
$value['verifytype'] = $vid ? $_G['setting']['verify'][$vid]['title'] : lang('members_verify_profile');
|
|
|
|
$fieldstr = '<table class="table-sub" width="96%">';
|
|
$fieldstr .= '<tr><td width="100">' . lang('members_verify_fieldid') . '</td><td>' . lang('members_verify_newvalue') . '</td></tr>';
|
|
|
|
foreach ($fields as $key => $field) {
|
|
if (!in_array($key, array('constellation', 'zodiac', 'birthyear', 'birthmonth'))) {
|
|
if (in_array($key, array('gender', 'birthday', 'department'))) {
|
|
$value[$field] = profile_show($key, $value);
|
|
}
|
|
if ($_G['cache']['profilesetting'][$key]['formtype'] == 'file') {
|
|
if ($value[$field]) {
|
|
$value[$field] = '<a href="' . (getglobal('setting/attachurl') . $value[$field]) . '" target="_blank"><img src="' . (getglobal('setting/attachurl') . $value[$field]) . '" class="verifyimg" /></a>';
|
|
} else {
|
|
$value[$field] = lang('members_verify_pic_removed');
|
|
}
|
|
}
|
|
$fieldstr .= '<tr><td width="100">' . $_G['cache']['profilesetting'][$key]['title'] . ':</td><td>' . $value[$field] . '</td></tr>';
|
|
}
|
|
}
|
|
$fieldstr .= "</table>";
|
|
$value['fieldstr'] = $fieldstr;
|
|
$opstr = "<ul class=\"list-unstyled\"><li><div class=\"form-check form-check-inline\"><input type=\"radio\" class=\"form-check-input\" name=\"verify[$value[uid]]\" value=\"export\" onclick=\"mod_setbg($value[uid], 'export');\"><label class=\"form-check-label\">" . lang('export') . "</label></div></li><li><div class=\"form-check form-check-inline\"><input type=\"radio\" class=\"form-check-input\" name=\"verify[$value[uid]]\" value=\"refusal\" onclick=\"mod_setbg($value[uid], 'refusal');\"><label class=\"form-check-label\">" . lang('refuse') . "</label></div></li></ul>";
|
|
$value['opstr'] = $opstr;
|
|
$value['dateline'] = dgmdate($value['dateline'], 'u');
|
|
$list[$uid] = $value;
|
|
//showtablerow("id=\"mod_$value[uid]_row\"", $cssarr, $valuearr);
|
|
}
|
|
}
|
|
$multi = multi($count, $perpage, $page, $thurl, 'pull-right');
|
|
}
|
|
|
|
} else {
|
|
if ($anchor == 'pass') {
|
|
$verifyuids = array();
|
|
|
|
foreach ($_GET['verify'] as $uid => $type) {
|
|
if ($type == 'export') {
|
|
$verifyuids['export'][] = $uid;
|
|
} elseif ($type == 'refusal') {
|
|
$verifyuids['refusal'][] = $uid;
|
|
//发送通知
|
|
$notevars = array('from_id' => 0, 'from_idtype' => '', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'url' => 'user.php?mod=profile&vid=' . $vid, 'profile' => $fieldtitle, 'dataline' => dgmdate(TIMESTAMP), 'title' => $vid ? $_G['setting']['verify'][$vid]['title'] : lang('members_verify_profile'), 'reason' => $_GET['reason'][$value['vid']],);
|
|
|
|
$action = 'user_profile_pass_refusal';
|
|
$type = 'user_profile_pass_refusal_' . $vid;
|
|
|
|
dzz_notification::notification_add($uid, $type, $action, $notevars, 1, '');
|
|
}
|
|
}
|
|
if (is_array($verifyuids['refusal']) && !empty($verifyuids['refusal'])) {
|
|
C::t('user_verify')->update($verifyuids['refusal'], array("verify$vid" => '0'));
|
|
if ($vid == 1)
|
|
C::t('user')->update($uid, array('grid' => '0'));
|
|
}
|
|
if (is_array($verifyuids['export']) && !empty($verifyuids['export']) || empty($verifyuids['refusal'])) {
|
|
$uids = array();
|
|
if (is_array($verifyuids['export']) && !empty($verifyuids['export'])) {
|
|
$uids = $verifyuids['export'];
|
|
}
|
|
$fields = $_G['setting']['verify'][$vid]['field'];
|
|
$fields = array_reverse($fields);
|
|
$fields['username'] = 'username';
|
|
$fields = array_reverse($fields);
|
|
$title = $verifylist = '';
|
|
$showtitle = true;
|
|
$verifyusers = C::t('user_verify')->fetch_all_by_vid($vid, 1, $uids);
|
|
$verifyuids = array_keys($verifyusers);
|
|
$members = C::t('user')->fetch_all($verifyuids, false, 0);
|
|
$profiles = C::t('user_profile')->fetch_all($verifyuids, false, 0);
|
|
foreach ($verifyusers as $uid => $value) {
|
|
$value = array_merge($value, $members[$uid], $profiles[$uid]);
|
|
$str = $common = '';
|
|
foreach ($fields as $key => $field) {
|
|
if (in_array($key, array('constellation', 'zodiac', 'birthyear', 'birthmonth', 'birthprovince', 'birthdist', 'birthcommunity', 'resideprovince', 'residedist', 'residecommunity'))) {
|
|
continue;
|
|
}
|
|
if ($showtitle) {
|
|
$title .= $common . ($key == 'username' ? lang('username') : $_G['cache']['profilesetting'][$key]['title']);
|
|
}
|
|
if (in_array($key, array('gender', 'birthday', 'department'))) {
|
|
$value[$field] = profile_show($key, $value);
|
|
}
|
|
$str .= $common . $value[$field];
|
|
$common = "\t";
|
|
}
|
|
$verifylist .= $str . "\n";
|
|
$showtitle = false;
|
|
}
|
|
$verifylist = $title . "\n" . $verifylist;
|
|
$filename = date('Ymd', TIMESTAMP) . '.xls';
|
|
|
|
define('FOOTERDISABLED', true);
|
|
ob_end_clean();
|
|
header("Content-type:application/vnd.ms-excel");
|
|
header('Content-Encoding: none');
|
|
header('Content-Disposition: attachment; filename=' . $filename);
|
|
header('Pragma: no-cache');
|
|
header('Expires: 0');
|
|
if ($_G['charset'] != 'gbk') {
|
|
$verifylist = diconv($verifylist, $_G['charset'], 'GBK');
|
|
}
|
|
echo $verifylist;
|
|
exit();
|
|
} else {
|
|
showmessage('members_verify_succeed', ADMINSCRIPT . '?mod=member&op=verify&vid=' . $vid . '&anchor=pass', array(), array('alert' => 'right'));
|
|
}
|
|
} else {
|
|
$vids = array();
|
|
$single = intval($_GET['singleverify']);
|
|
$verifyflag = empty($_GET['verify']) ? false : true;
|
|
if ($verifyflag) {
|
|
if ($single) {
|
|
$_GET['verify'] = array($single => $_GET['verify'][$single]);
|
|
}
|
|
foreach ($_GET['verify'] as $id => $type) {
|
|
$vids[] = $id;
|
|
}
|
|
|
|
$verifysetting = $_G['setting']['verify'];
|
|
$verify = $refusal = array();
|
|
foreach (C::t('user_verify_info')->fetch_all($vids) as $value) {
|
|
if (in_array($_GET['verify'][$value['vid']], array('refusal', 'validate'))) {
|
|
$fields = dunserialize($value['field']);
|
|
$verifysetting = $_G['setting']['verify'][$value['verifytype']];
|
|
|
|
if ($_GET['verify'][$value['vid']] == 'refusal') {
|
|
$refusalfields = !empty($_GET['refusal'][$value['vid']]) ? $_GET['refusal'][$value['vid']] : $verifysetting['field'];
|
|
$fieldtitle = $common = '';
|
|
$deleteverifyimg = false;
|
|
foreach ($refusalfields as $key => $field) {
|
|
$fieldtitle .= $common . $_G['cache']['profilesetting'][$field]['title'];
|
|
$common = ',';
|
|
if ($_G['cache']['profilesetting'][$field]['formtype'] == 'file') {
|
|
$deleteverifyimg = true;
|
|
@unlink(getglobal('setting/attachdir') . $fields[$key]);
|
|
$fields[$field] = '';
|
|
}
|
|
}
|
|
if ($deleteverifyimg) {
|
|
C::t('user_verify_info')->update($value['vid'], array('field' => serialize($fields)));
|
|
}
|
|
if ($value['verifytype']) {
|
|
$verify["verify"]['-1'][] = $value['uid'];
|
|
}
|
|
$verify['flag'][] = $value['vid'];
|
|
//发送通知
|
|
$notevars = array('from_id' => 0, 'from_idtype' => '', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'url' => 'user.php?mod=profile&vid=' . $vid, 'profile' => $fieldtitle, 'dataline' => dgmdate(TIMESTAMP), 'title' => $vid ? $_G['setting']['verify'][$vid]['title'] : lang('members_verify_profile'), 'reason' => $_GET['reason'][$value['vid']],);
|
|
|
|
$action = 'user_profile_moderate_refusal';
|
|
$type = 'user_profile_moderate_refusal_' . $vid;
|
|
|
|
} else {
|
|
C::t('user_profile')->update(intval($value['uid']), $fields);
|
|
if ($fields['department']) {//含有department时审核通过后,把此用户加入相应的部门
|
|
|
|
C::t('organization_user')->insert_by_orgid($fields['department'], array($value['uid']));
|
|
}
|
|
$verify['delete'][] = $value['vid'];
|
|
if ($value['verifytype']) {
|
|
$verify["verify"]['1'][] = $value['uid'];
|
|
}
|
|
//发送通知
|
|
$notevars = array('from_id' => 0, 'from_idtype' => '', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'url' => 'user.php?mod=profile&vid=' . $vid, 'dataline' => dgmdate(TIMESTAMP), 'title' => $vid ? $_G['setting']['verify'][$vid]['title'] : lang('members_verify_profile'),);
|
|
|
|
$action = 'user_profile_moderate_pass';
|
|
$type = 'user_profile_moderate_pass_' . $vid;
|
|
|
|
}
|
|
dzz_notification::notification_add($value['uid'], $type, $action, $notevars, 1, '');
|
|
}
|
|
}
|
|
if ($vid && !empty($verify["verify"])) {
|
|
foreach ($verify["verify"] as $flag => $uids) {
|
|
$flag = intval($flag);
|
|
C::t('user_verify')->update($uids, array("verify$vid" => $flag));
|
|
if ($vid == 1)
|
|
C::t('user')->update($uids, array('grid' => 6));
|
|
}
|
|
}
|
|
|
|
if (!empty($verify['delete'])) {
|
|
C::t('user_verify_info')->delete($verify['delete']);
|
|
}
|
|
|
|
if (!empty($verify['flag'])) {
|
|
C::t('user_verify_info')->update($verify['flag'], array('flag' => '-1'));
|
|
}
|
|
}
|
|
if ($single) {
|
|
echo "<script type=\"text/javascript\">var trObj = parent.document.getElementById('mod_{$single}_row');trObj.parentNode.removeChild(trObj);</script>";
|
|
} else {
|
|
showmessage('members_verify_succeed', ADMINSCRIPT . '?mod=member&op=verify&vid=' . $vid . '&anchor=' . $_GET['anchor'], array(), array('alert' => 'right'));
|
|
}
|
|
}
|
|
}
|
|
|
|
include template('verify');
|
|
?>
|