{$lang['setting_profile_group']}: |
|
EOF;
}
}
showsetting('members_profile_edit_display_order', 'displayorder', $field['displayorder'], 'text');
showsubmit('editsubmit');
showtablefooter();
showformfooter();
} else {
$setarr = array(
'invisible' => intval($_POST['invisible']),
'showincard' => intval($_POST['showincard']),
'showinregister' => intval($_POST['showinregister']),
'allowsearch' => intval($_POST['allowsearch']),
'displayorder' => intval($_POST['displayorder'])
);
if($field['customable']) {
$_POST['title'] = dhtmlspecialchars(trim($_POST['title']));
if(empty($_POST['title'])) {
cpmsg('members_profile_edit_title_empty_error', 'action=members&operation=profile&fieldid='.$fieldid, 'error');
}
$setarr['title'] = $_POST['title'];
$setarr['description'] = dhtmlspecialchars(trim($_POST['description']));
}
if(!$field['isfixed1']) {
$setarr['required'] = intval($_POST['required']);
$setarr['available'] = intval($_POST['available']);
$setarr['unchangeable'] = intval($_POST['unchangeable']);
$setarr['needverify'] = intval($_POST['needverify']);
}
if(!$field['isfixed2']) {
$setarr['formtype'] = $fieldid == 'realname' ? 'text' : strtolower(trim($_POST['formtype']));
$setarr['size'] = intval($_POST['size']);
if($_POST['choices']) {
$_POST['choices'] = trim($_POST['choices']);
$ops = explode("\n", $_POST['choices']);
$parts = array();
foreach ($ops as $op) {
$parts[] = dhtmlspecialchars(trim($op));
}
$_POST['choices'] = implode("\n", $parts);
}
$setarr['choices'] = $_POST['choices'];
if($_POST['validate'] && $_POST['validate'] != $profilevalidate[$fieldid]) {
$setarr['validate'] = $_POST['validate'];
} elseif(empty($_POST['validate'])) {
$setarr['validate'] = '';
}
}
C::t('common_member_profile_setting')->update($fieldid, $setarr);
if($_GET['fieldid'] == 'birthday') {
C::t('common_member_profile_setting')->update('birthmonth', $setarr);
C::t('common_member_profile_setting')->update('birthyear', $setarr);
} elseif($_GET['fieldid'] == 'birthcity') {
C::t('common_member_profile_setting')->update('birthcountry', $setarr);
C::t('common_member_profile_setting')->update('birthprovince', $setarr);
$setarr['required'] = 0;
C::t('common_member_profile_setting')->update('birthdist', $setarr);
C::t('common_member_profile_setting')->update('birthcommunity', $setarr);
} elseif($_GET['fieldid'] == 'residecity') {
C::t('common_member_profile_setting')->update('residecountry', $setarr);
C::t('common_member_profile_setting')->update('resideprovince', $setarr);
$setarr['required'] = 0;
C::t('common_member_profile_setting')->update('residedist', $setarr);
C::t('common_member_profile_setting')->update('residecommunity', $setarr);
} elseif($_GET['fieldid'] == 'idcard') {
C::t('common_member_profile_setting')->update('idcardtype', $setarr);
}
foreach($profilegroup as $type => $pgroup) {
if(is_array($_GET['profilegroup']) && in_array($type, $_GET['profilegroup'])) {
$profilegroup[$type]['field'][$fieldid] = $fieldid;
} else {
unset($profilegroup[$type]['field'][$fieldid]);
}
}
C::t('common_setting')->update_setting('profilegroup', $profilegroup);
require_once libfile('function/cache');
if(!isset($_G['setting']['privacy']['profile']) || $_G['setting']['privacy']['profile'][$fieldid] != $_POST['privacy']) {
$_G['setting']['privacy']['profile'][$fieldid] = $_POST['privacy'];
C::t('common_setting')->update_setting('privacy', $_G['setting']['privacy']);
}
updatecache(array('profilesetting','fields_required', 'fields_optional', 'fields_register', 'setting'));
include_once libfile('function/block');
loadcache('profilesetting', true);
blockclass_cache();
cpmsg('members_profile_edit_succeed', 'action=members&operation=profile', 'succeed');
}
} else {
$list = array();
foreach(C::t('common_member_profile_setting')->range_setting() as $fieldid => $value) {
$list[$fieldid] = array(
'title'=>$value['title'],
'displayorder'=>$value['displayorder'],
'available'=>$value['available'],
'invisible'=>$value['invisible'],
'showincard'=>$value['showincard'],
'showinregister'=>$value['showinregister']);
}
unset($list['birthyear']);
unset($list['birthmonth']);
unset($list['birthcountry']);
unset($list['birthprovince']);
unset($list['birthdist']);
unset($list['birthcommunity']);
unset($list['residecountry']);
unset($list['resideprovince']);
unset($list['residedist']);
unset($list['residecommunity']);
if(!submitcheck('ordersubmit')) {
$_GET['anchor'] = in_array($_GET['action'], array('members', 'setting')) ? $_GET['action'] : 'members';
$current = array($_GET['anchor'] => 1);
$profilenav = array(
array('members_profile_list', 'members&operation=profile', $current['members']),
array('members_profile_group', 'setting&operation=profile', $current['setting']),
);
showsubmenu($lang['members_profile'], $profilenav);
showtips('members_profile_tips');
showformheader('members&operation=profile');
showtableheader('', '', 'id="profiletable_header"');
$tdstyle = array('class="td22"', 'class="td28" width="100"', 'class="td28" width="100"', 'class="td28" width="100"', 'class="td28" width="100"', 'class="td28"', 'class="td28"');
showsubtitle(array('members_profile_edit_name', 'members_profile_edit_display_order', 'members_profile_edit_available', 'members_profile_edit_profile_view', 'members_profile_edit_card_view', 'members_profile_edit_reg_view', ''), 'header tbm', $tdstyle);
showtablefooter();
showtableheader('members_profile', '', 'id="porfiletable"');
showsubtitle(array('members_profile_edit_name', 'members_profile_edit_display_order', 'members_profile_edit_available', 'members_profile_edit_profile_view', 'members_profile_edit_card_view', 'members_profile_edit_reg_view', ''), 'header', $tdstyle);
foreach($list as $fieldid => $value) {
$value['available'] = '';
$value['invisible'] = '';
$value['showincard'] = '';
$value['showinregister'] = '';
$value['displayorder'] = '';
$value['edit'] = ''.$lang['edit'].'';
showtablerow('', array(), $value);
}
showsubmit('ordersubmit');
showtablefooter();
showformfooter();
echo '';
} else {
foreach($_GET['displayorder'] as $fieldid => $value) {
$setarr = array(
'displayorder' => intval($value),
'invisible' => intval($_GET['invisible'][$fieldid]) ? 0 : 1,
'available' => intval($_GET['available'][$fieldid]),
'showincard' => intval($_GET['showincard'][$fieldid]),
'showinregister' => intval($_GET['showinregister'][$fieldid]),
);
C::t('common_member_profile_setting')->update($fieldid, $setarr);
if($fieldid == 'birthday') {
C::t('common_member_profile_setting')->update('birthmonth', $setarr);
C::t('common_member_profile_setting')->update('birthyear', $setarr);
} elseif($fieldid == 'birthcity') {
C::t('common_member_profile_setting')->update('birthcountry', $setarr);
C::t('common_member_profile_setting')->update('birthprovince', $setarr);
$setarr['required'] = 0;
C::t('common_member_profile_setting')->update('birthdist', $setarr);
C::t('common_member_profile_setting')->update('birthcommunity', $setarr);
} elseif($fieldid == 'residecity') {
C::t('common_member_profile_setting')->update('residecountry', $setarr);
C::t('common_member_profile_setting')->update('resideprovince', $setarr);
$setarr['required'] = 0;
C::t('common_member_profile_setting')->update('residedist', $setarr);
C::t('common_member_profile_setting')->update('residecommunity', $setarr);
} elseif($fieldid == 'idcard') {
C::t('common_member_profile_setting')->update('idcardtype', $setarr);
}
}
require_once libfile('function/cache');
updatecache(array('profilesetting', 'fields_required', 'fields_optional', 'fields_register', 'setting'));
include_once libfile('function/block');
loadcache('profilesetting', true);
blockclass_cache();
cpmsg('members_profile_edit_succeed', 'action=members&operation=profile', 'succeed');
}
}
} elseif($operation == 'stat') {
if($_GET['do'] == 'stepstat' && $_GET['t'] > 0 && $_GET['i'] > 0) {
$t = intval($_GET['t']);
$i = intval($_GET['i']);
$o = $i - 1;
$value = C::t('common_member_stat_field')->fetch_all_by_fieldid($_GET['fieldid'], $o, 1);
if($value) {
$optionid = intval($value[0]['optionid']);
$fieldvalue = $value[0]['fieldvalue'];
} else {
$optionid = 0;
$fieldvalue = '';
}
$cnt = ($_GET['fieldid'] === 'groupid') ? C::t('common_member')->count_by_groupid($fieldvalue) : C::t('common_member_profile')->count_by_field($_GET['fieldid'], $fieldvalue);
C::t('common_member_stat_field')->update($optionid, array('users'=>$cnt, 'updatetime'=>TIMESTAMP));
if($i < $t) {
cpmsg('members_stat_do_stepstat', 'action=members&operation=stat&fieldid='.$_GET['fieldid'].'&do=stepstat&t='.$t.'&i='.($i+1), '', array('t'=>$t, 'i'=>$i));
} else {
cpmsg('members_stat_update_data_succeed', 'action=members&operation=stat&fieldid='.$_GET['fieldid'], 'succeed');
}
}
$options = array('groupid'=>cplang('usergroup'));
$fieldids = array('gender', 'birthyear', 'birthmonth', 'constellation', 'zodiac', 'birthcountry', 'residecountry');
loadcache('profilesetting');
foreach($_G['cache']['profilesetting'] as $fieldid=>$value) {
if($value['formtype']=='select'||$value['formtype']=='radio'||in_array($fieldid,$fieldids)) {
$options[$fieldid] = $value['title'];
}
}
if(!empty($_GET['fieldid']) && !isset($options[$_GET['fieldid']])) {
cpmsg('members_stat_bad_fieldid', 'action=members&operation=stat', 'error');
}
if(!empty($_GET['fieldid']) && $_GET['fieldid'] == 'groupid') {
$usergroups = array();
foreach(C::t('common_usergroup')->range() as $value) {
$usergroups[$value['groupid']] = $value['grouptitle'];
}
}
if(!submitcheck('statsubmit')) {
shownav('user', 'nav_members_stat');
showsubmenu('nav_members_stat');
showtips('members_stat_tips');
showformheader('members&operation=stat&fieldid='.$_GET['fieldid']);
showtableheader('members_stat_options');
$option_html = '';
foreach($options as $key=>$value) {
$extra_style = $_GET['fieldid'] == $key ? ' font-weight: 900;' : '';
$option_html .= ""
."- "
. "$value"
. "
";
}
$option_html .= '
';
showtablerow('', array('colspan="5"'), array($option_html));
if($_GET['fieldid']) {
$list = array();
$total = 0;
foreach(($list = C::t('common_member_stat_field')->fetch_all_by_fieldid($_GET['fieldid'])) as $value) {
$total += $value['users'];
}
for($i=0, $L=count($list); $i<$L; $i++) {
if($total) {
$list[$i]['percent'] = intval(10000 * $list[$i]['users'] / $total) / 100;
} else {
$list[$i]['percent'] = 0;
}
$list[$i]['width'] = $list[$i]['percent'] ? intval($list[$i]['percent'] * 2) : 1;
}
showtablerow('', array('colspan="4"'), array(cplang('members_stat_current_field').$options[$_GET['fieldid']].'; '.cplang('members_stat_members').$total));
showtablerow('', array('width="200"', '', 'width="160"', 'width="160"'),array(
cplang('members_stat_option'),
cplang('members_stat_view'),
cplang('members_stat_option_members'),
cplang('members_stat_updatetime')
));
foreach($list as $value) {
if($_GET['fieldid']=='groupid') {
$value['fieldvalue'] = $usergroups[$value['fieldvalue']];
} elseif($_GET['fieldid']=='gender') {
$value['fieldvalue'] = lang('space', 'gender_'.$value['fieldvalue']);
} elseif(empty($value['fieldvalue'])) {
$value['fieldvalue'] = cplang('members_stat_null_fieldvalue');
}
showtablerow('', array('width="200"', '', 'width="160"', 'width="160"'),array(
$value['fieldvalue'],
'',
$value['users'].' ('.$value['percent'].'%)',
!empty($value['updatetime']) ? dgmdate($value['updatetime'], 'u') : 'N/A'
));
}
$optype_html = ' '
.'';
showsubmit('statsubmit', 'submit', $optype_html);
}
showtablefooter();
showformfooter();
} else {
if($_POST['optype'] == 'option') {
$options = $inserts = $hits = $deletes = array();
foreach(C::t('common_member_stat_field')->fetch_all_by_fieldid($_GET['fieldid']) as $value) {
$options[$value['optionid']] = $value['fieldvalue'];
$hits[$value['optionid']] = false;
}
$alldata = $_GET['fieldid'] === 'groupid' ? C::t('common_member')->fetch_all_groupid() : C::t('common_member_profile')->fetch_all_field_value($_GET['fieldid']);
foreach($alldata as $value) {
$fieldvalue = $value[$_GET['fieldid']];
$optionid = array_search($fieldvalue, $options);
if($optionid) {
$hits[$optionid] = true;
} else {
$inserts[] = array('fieldid'=>$_GET['fieldid'], 'fieldvalue'=>$fieldvalue);
}
}
foreach ($hits as $key=>$value) {
if($value == false) {
$deletes[] = $key;
}
}
if($deletes) {
C::t('common_member_stat_field')->delete($deletes);
}
if($inserts) {
C::t('common_member_stat_field')->insert_batch($inserts);
}
cpmsg('members_stat_update_option_succeed', 'action=members&operation=stat&fieldid='.$_GET['fieldid'], 'succeed');
} elseif($_POST['optype'] == 'data') {
if(($t = C::t('common_member_stat_field')->count_by_fieldid($_GET['fieldid'])) > 0) {
cpmsg('members_stat_do_stepstat_prepared', 'action=members&operation=stat&fieldid='.$_GET['fieldid'].'&do=stepstat&t='.$t.'&i=1', '', array('t'=>$t));
} else {
cpmsg('members_stat_update_data_succeed', 'action=members&operation=stat&fieldid='.$_GET['fieldid'], 'succeed');
}
} else {
cpmsg('members_stat_null_operation', 'action=members&operation=stat', 'error');
}
}
}
function showsearchform($operation = '') {
global $_G, $lang;
$groupselect = array();
$usergroupid = isset($_GET['usergroupid']) && is_array($_GET['usergroupid']) ? $_GET['usergroupid'] : array();
$medals = isset($_GET['medalid']) && is_array($_GET['medalid']) ? $_GET['medalid'] : array();
$tagid = isset($_GET['tagid']) && is_array($_GET['tagid']) ? $_GET['tagid'] : array();
$query = C::t('common_usergroup')->fetch_all_not(array(6, 7), true);
foreach($query as $group) {
$group['type'] = $group['type'] == 'special' && $group['radminid'] ? 'specialadmin' : $group['type'];
$groupselect[$group['type']] .= "\n";
}
$groupselect = ''.
($groupselect['special'] ? '' : '').
($groupselect['specialadmin'] ? '' : '').
'';
$medalselect = $usertagselect = '';
foreach(C::t('forum_medal')->fetch_all_data(1) as $medal) {
$medalselect .= "\n";
}
$query = C::t('common_tag')->fetch_all_by_status(3);
foreach($query as $row) {
$usertagselect .= "\n";
}
showtagheader('div', 'searchmembers', !$_GET['submit']);
echo '';
echo '';
$formurl = "members&operation=$operation".(($_GET['do'] == 'mobile' || $_GET['do'] == 'sms') ? '&do=' . $_GET['do'] : '');
showformheader($formurl, "onSubmit=\"if($('updatecredittype1') && $('updatecredittype1').checked && !window.confirm('{$lang['members_reward_clean_alarm']}')){return false;} else {return true;}\"");
showtableheader('', 'nobottom');
if(isset($_G['setting']['membersplit'])) {
showsetting('members_search_table', '', '', '');
}
showsetting('members_search_user', 'username', $_GET['username'], 'text');
showsetting('members_search_uid', 'uid', $_GET['uid'], 'text');
showsetting('members_search_group', '', '', '');
showtablefooter();
showtableheader();
showtagheader('tbody', 'advanceoption');
$_G['showsetting_multirow'] = 1;
if(empty($medalselect)) {
$medalselect = '';
}
if(empty($usertagselect)) {
$usertagselect = '';
}
showsetting('members_search_medal', '', '', '');
showsetting('members_search_usertag', '', '', '');
if(!empty($_G['setting']['connect']['allow'])) {
showsetting('members_search_conisbind', array('conisbind', array(
array(1, $lang['yes']),
array(0, $lang['no']),
), 1), $_GET['conisbind'], 'mradio');
showsetting('members_search_uinblacklist', array('uin_low', array(
array(1, $lang['yes']),
array(0, $lang['no']),
), 1), $_GET['uin_low'], 'mradio');
}
showsetting('members_search_online', array('sid_noempty', array(
array(1, $lang['yes']),
array(0, $lang['no']),
), 1), $_GET['online'], 'mradio');
showsetting('members_search_lockstatus', array('status', array(
array(-1, $lang['yes']),
array(0, $lang['no']),
), 1), $_GET['status'], 'mradio');
showsetting('members_search_freezestatus', array('freeze', array(
array(2, $lang['members_edit_freeze_email']),
array(-1, $lang['members_edit_freeze_admincp']),
array(1, $lang['members_edit_freeze_password']),
array(0, $lang['members_edit_freeze_false']),
), 1), $_GET['freeze'], 'mradio');
showsetting('members_search_emailstatus', array('emailstatus', array(
array(1, $lang['yes']),
array(0, $lang['no']),
), 1), $_GET['emailstatus'], 'mradio');
showsetting('members_search_avatarstatus', array('avatarstatus', array(
array(1, $lang['yes']),
array(0, $lang['no']),
), 1), $_GET['avatarstatus'], 'mradio');
showsetting('members_search_email', 'email', $_GET['email'], 'text');
showsetting("{$lang['credits']} {$lang['members_search_between']}", array("credits_low", "credits_high"), array($_GET['credits_low'], $_GET['credtis_high']), 'range');
if(!empty($_G['setting']['extcredits'])) {
foreach($_G['setting']['extcredits'] as $id => $credit) {
showsetting("{$credit['title']} {$lang['members_search_between']}", array("extcredits$id"."_low", "extcredits$id"."_high"), array($_GET['extcredits'.$id.'_low'], $_GET['extcredits'.$id.'_high']), 'range');
}
}
showsetting('members_search_friendsrange', array('friends_low', 'friends_high'), array($_GET['friends_low'], $_GET['friends_high']), 'range');
showsetting('members_search_postsrange', array('posts_low', 'posts_high'), array($_GET['posts_low'], $_GET['posts_high']), 'range');
showsetting('members_search_threadsrange', array('threads_low', 'threads_high'), array($_GET['threads_low'], $_GET['threads_high']), 'range');
showsetting('members_search_regip', 'regip', $_GET['regip'], 'text');
showsetting('members_search_lastip', 'lastip', $_GET['lastip'], 'text');
showsetting('members_search_oltimerange', array('oltime_low', 'oltime_high'), array($_GET['oltime_low'], $_GET['oltime_high']), 'range');
showsetting('members_search_regdaterange', array('regdate_after', 'regdate_before'), array($_GET['regdate_after'], $_GET['regdate_before']), 'daterange');
showsetting('members_search_lastvisitrange', array('lastvisit_after', 'lastvisit_before'), array($_GET['lastvisit_after'], $_GET['lastvisit_before']), 'daterange');
showsetting('members_search_lastpostrange', array('lastpost_after', 'lastpost_before'), array($_GET['lastpost_after'], $_GET['lastpost_before']), 'daterange');
showsetting('members_search_group_fid', 'fid', $_GET['fid'], 'text');
if($_G['setting']['verify']) {
$verifydata = array();
foreach($_G['setting']['verify'] as $key => $value) {
if($value['available']) {
$verifydata[] = array('verify'.$key, $value['title']);
}
}
if(!empty($verifydata)) {
showsetting('members_search_verify', array('verify', $verifydata), $_GET['verify'], 'mcheckbox');
}
}
$yearselect = $monthselect = $dayselect = "\n";
$yy=dgmdate(TIMESTAMP, 'Y');
for($y=$yy; $y>=$yy-100; $y--) {
$y = sprintf("%04d", $y);
$yearselect .= "\n";
}
for($m=1; $m<=12; $m++) {
$m = sprintf("%02d", $m);
$monthselect .= "\n";
}
for($d=1; $d<=31; $d++) {
$d = sprintf("%02d", $d);
$dayselect .= "\n";
}
showsetting('members_search_birthday', '', '', ' '.$lang['year'].' '.$lang['month'].' '.$lang['day']);
loadcache('profilesetting');
unset($_G['cache']['profilesetting']['uid']);
unset($_G['cache']['profilesetting']['birthyear']);
unset($_G['cache']['profilesetting']['birthmonth']);
unset($_G['cache']['profilesetting']['birthday']);
require_once libfile('function/profile');
foreach($_G['cache']['profilesetting'] as $fieldid=>$value) {
if(!$value['available'] || in_array($fieldid, array('birthcountry', 'birthprovince', 'birthdist', 'birthcommunity', 'residecountry', 'resideprovince', 'residedist', 'residecommunity'))) {
continue;
}
if($fieldid == 'gender') {
$select = "\n";
$select .= "\n";
$select .= "\n";
$select .= "\n";
showsetting($value['title'], '', '', '');
} elseif($fieldid == 'birthcity') {
$elems = array('birthcountry', 'birthprovince', 'birthcity', 'birthdist', 'birthcommunity');
showsetting($value['title'], '', '', ''.showdistrict(array(0,0,0,0,0), $elems, 'birthdistrictbox', 1, 'birth').'
');
} elseif($fieldid == 'residecity') {
$elems = array('residecountry', 'resideprovince', 'residecity', 'residedist', 'residecommunity');
showsetting($value['title'], '', '', ''.showdistrict(array(0,0,0,0,0), $elems, 'residedistrictbox', 1, 'reside').'
');
} elseif($fieldid == 'constellation') {
$select = "\n";
for($i=1; $i<=12; $i++) {
$name = lang('space', 'constellation_'.$i);
$select .= "\n";
}
showsetting($value['title'], '', '', '');
} elseif($fieldid == 'zodiac') {
$select = "\n";
for($i=1; $i<=12; $i++) {
$option = lang('space', 'zodiac_'.$i);
$select .= "\n";
}
showsetting($value['title'], '', '', '');
} elseif($value['formtype'] == 'select' || $value['formtype'] == 'list') {
$select = "\n";
$value['choices'] = explode("\n",$value['choices']);
foreach($value['choices'] as $option) {
$option = trim($option);
$select .= "\n";
}
showsetting($value['title'], '', '', '');
} else {
showsetting($value['title'], '', '', '');
}
}
showtagfooter('tbody');
$_G['showsetting_multirow'] = 0;
showsubmit('submit', $operation == 'clean' ? 'members_delete' : 'search', '', 'more_options');
showtablefooter();
showformfooter();
showtagfooter('div');
}
function searchcondition($condition) {
include_once libfile('class/membersearch');
$ms = new membersearch();
return $ms->filtercondition($condition);
}
function searchmembers($condition, $limit=2000, $start=0) {
include_once libfile('class/membersearch');
$ms = new membersearch();
return $ms->search($condition, $limit, $start);
}
function countmembers($condition, &$urladd) {
$urladd = '';
foreach($condition as $k => $v) {
if(in_array($k, array('formhash', 'submit', 'page')) || $v === '') {
continue;
}
if(is_array($v)) {
foreach($v as $vk => $vv) {
if($vv === '') {
continue;
}
$urladd .= '&'.$k.'['.$vk.']='.rawurlencode($vv);
}
} else {
$urladd .= '&'.$k.'='.rawurlencode($v);
}
}
include_once libfile('class/membersearch');
$ms = new membersearch();
return $ms->getcount($condition);
}
function shownewsletter() {
global $lang;
showtableheader('', 'nobottom');
showsetting('members_newsletter_subject', 'subject', '', 'text');
showsetting('members_newsletter_message', 'message', '', 'textarea');
if($_GET['do'] == 'mobile' || $_GET['do'] == 'sms') {
if($_GET['do'] == 'mobile') {
showsetting('members_newsletter_system', 'system', 0, 'radio');
} else {
showhiddenfields(array('system' => 0));
}
showhiddenfields(array('notifymembers' => $_GET['do']));
} else {
showsetting('members_newsletter_method', array('notifymembers', array(
array('email', $lang['email'], array('pmextra' => 'none', 'posttype' => '')),
array('notice', $lang['notice'], array('pmextra' => 'none', 'posttype' => '')),
array('pm', $lang['grouppm'], array('pmextra' => '', 'posttype' => 'none'))
)), 'pm', 'mradio');
showtagheader('tbody', 'posttype', '', 'sub');
showsetting('members_newsletter_posttype', array('posttype', array(
array(0, cplang('members_newsletter_posttype_text')),
array(1, cplang('members_newsletter_posttype_html')),
), TRUE), '0', 'mradio');
showtagfooter('tbody');
showtagheader('tbody', 'pmextra', true, 'sub');
showsetting('members_newsletter_system', 'system', 0, 'radio');
showtagfooter('tbody');
}
showsetting('members_newsletter_num', 'pertask', 100, 'text');
showtablefooter();
}
function notifymembers($operation, $variable) {
global $_G, $lang, $urladd, $conditions, $search_condition;
if(!empty($_GET['current'])) {
$subject = $message = '';
if($settings = C::t('common_setting')->fetch_setting($variable, true)) {
$subject = $settings['subject'];
$message = $settings['message'];
}
$setarr = array();
foreach($_G['setting']['extcredits'] as $id => $value) {
if(isset($_GET['extcredits'.$id])) {
if($_GET['updatecredittype'] == 0) {
$setarr['extcredits'.$id] = $_GET['extcredits'.$id];
} else {
$setarr[] = 'extcredits'.$id;
}
}
}
} else {
$current = 0;
$subject = $_GET['subject'];
$message = $_GET['message'];
$subject = dhtmlspecialchars(trim($subject));
$message = trim(str_replace("\t", ' ', $message));
$addmsg = '';
if(($_GET['notifymembers'] && $_GET['notifymember']) && !($subject && $message)) {
cpmsg('members_newsletter_sm_invalid', '', 'error');
}
if($operation == 'reward') {
$serarr = array();
if($_GET['updatecredittype'] == 0) {
if(is_array($_GET['addextcredits']) && !empty($_GET['addextcredits'])) {
foreach($_GET['addextcredits'] as $key => $value) {
$value = intval($value);
if(isset($_G['setting']['extcredits'][$key]) && !empty($value)) {
$setarr['extcredits'.$key] = $value;
$addmsg .= $_G['setting']['extcredits'][$key]['title'].": ".($value > 0 ? '+' : '')."$value ".$_G['setting']['extcredits'][$key]['unit'].' ';
}
}
}
} else {
if(is_array($_GET['resetextcredits']) && !empty($_GET['resetextcredits'])) {
foreach($_GET['resetextcredits'] as $key => $value) {
$value = intval($value);
if(isset($_G['setting']['extcredits'][$key]) && !empty($value)) {
$setarr[] = 'extcredits'.$key;
$addmsg .= $_G['setting']['extcredits'][$key]['title'].': '.cplang('members_reward_clean').' ';
}
}
}
}
if($addmsg) {
$addmsg = '
'.cplang('members_reward_affect').':
'.$addmsg;
}
if(!empty($setarr)) {
$limit = 2000;
set_time_limit(0);
$i = 0;
while(true) {
$uids = searchmembers($search_condition, $limit, $i*$limit);
$allcount = C::t('common_member_count')->fetch_all($uids);
$insertmember = array_diff($uids, array_keys($allcount));
foreach($insertmember as $uid) {
C::t('common_member_count')->insert(array('uid' => $uid));
}
if($_GET['updatecredittype'] == 0) {
C::t('common_member_count')->increase($uids, $setarr);
} else {
C::t('common_member_count')->clear_extcredits($uids, $setarr);
}
if(count($uids) < $limit) break;
$i++;
}
} else {
cpmsg('members_reward_invalid', '', 'error');
}
if(!$_GET['notifymembers']) {
cpmsg('members_reward_succeed', '', 'succeed');
}
} elseif ($operation == 'confermedal') {
$medals = $_GET['medals'];
if(!empty($medals)) {
$medalids = array();
foreach($medals as $key => $medalid) {
$medalids[] = $key;
}
$medalsnew = $comma = '';
$medalsnewarray = $medalidarray = array();
foreach(C::t('forum_medal')->fetch_all_by_id($medalids) as $medal) {
$medal['status'] = empty($medal['expiration']) ? 0 : 1;
$medal['expiration'] = empty($medal['expiration'])? 0 : TIMESTAMP + $medal['expiration'] * 86400;
$medal['medal'] = $medal['medalid'].(empty($medal['expiration']) ? '' : '|'.$medal['expiration']);
$medalsnew .= $comma.$medal['medal'];
$medalsnewarray[] = $medal;
$medalidarray[] = $medal['medalid'];
$comma = "\t";
}
$uids = searchmembers($search_condition);
if($uids) {
foreach(C::t('common_member_field_forum')->fetch_all($uids) as $uid => $medalnew) {
$usermedal = array();
$addmedalnew = '';
if(empty($medalnew['medals'])) {
$addmedalnew = $medalsnew;
} else {
foreach($medalidarray as $medalid) {
$usermedal_arr = explode("\t", $medalnew['medals']);
foreach($usermedal_arr AS $key => $medalval) {
list($usermedalid,) = explode("|", $medalval);
$usermedal[] = $usermedalid;
}
if(!in_array($medalid, $usermedal)){
$addmedalnew .= $medalid."\t";
}
}
$addmedalnew .= $medalnew['medals'];
}
C::t('common_member_field_forum')->update($medalnew['uid'], array('medals' => $addmedalnew), true);
foreach($medalsnewarray as $medalnewarray) {
$data = array(
'uid' => $medalnew['uid'],
'medalid' => $medalnewarray['medalid'],
'type' => 0,
'dateline' => $_G['timestamp'],
'expiration' => $medalnewarray['expiration'],
'status' => $medalnewarray['status'],
);
C::t('forum_medallog')->insert($data);
C::t('common_member_medal')->insert(array('uid' => $medalnew['uid'], 'medalid' => $medalnewarray['medalid']), 0, 1);
}
}
}
}
if(!$_GET['notifymember']) {
cpmsg('members_confermedal_succeed', '', 'succeed');
}
} elseif ($operation == 'confermagic') {
$magics = $_GET['magic'];
$magicnum = $_GET['magicnum'];
if($magics) {
require_once libfile('function/magic');
$limit = 200;
set_time_limit(0);
for($i=0; $i > -1; $i++) {
$uids = searchmembers($search_condition, $limit, $i*$limit);
foreach($magics as $magicid) {
$uparray = $insarray = array();
if(empty($magicnum[$magicid])) {
continue;
}
$query = C::t('common_member_magic')->fetch_all_magic($uids ? $uids : -1, $magicid);
foreach($query as $row) {
$uparray[] = $row['uid'];
}
if($uparray) {
C::t('common_member_magic')->increase($uparray, $magicid, array('num' => $magicnum[$magicid]));
}
$insarray = array_diff($uids, $uparray);
if($insarray) {
$sqls = array();
foreach($insarray as $uid) {
C::t('common_member_magic')->insert(array(
'uid' => $uid,
'magicid' => $magicid,
'num' => $magicnum[$magicid]
));
}
}
foreach($uids as $uid) {
updatemagiclog($magicid, '3', $magicnum[$magicid], '', $uid);
}
}
if(count($uids) < $limit) break;
}
}
}
C::t('common_setting')->update_setting($variable, array('subject' => $subject, 'message' => $message));
}
$pertask = intval($_GET['pertask']);
$current = $_GET['current'] ? intval($_GET['current']) : 0;
$continue = FALSE;
if(!function_exists('sendmail')) {
include libfile('function/mail');
}
if($_GET['notifymember'] && in_array($_GET['notifymembers'], array('pm', 'notice', 'email', 'sms'))) {
$uids = searchmembers($search_condition, $pertask, $current);
require_once libfile('function/discuzcode');
$message = in_array($_GET['notifymembers'], array('email','notice')) && $_GET['posttype'] ? discuzcode($message, 1, 0, 1, '', '' ,'' ,1) : discuzcode($message, 1, 0);
$pmuids = array();
if($_GET['notifymembers'] == 'pm') {
$membernum = countmembers($search_condition, $urladd);
$gpmid = $_GET['gpmid'];
if(!$gpmid) {
$pmdata = array(
'authorid' => $_G['uid'],
'author' => !$_GET['system'] ? $_G['member']['username'] : '',
'dateline' => TIMESTAMP,
'message' => ($subject ? ''.$subject.'
' : '').$message.$addmsg,
'numbers' => $membernum
);
$gpmid = C::t('common_grouppm')->insert($pmdata, true);
}
$urladd .= '&gpmid='.$gpmid;
}
$members = C::t('common_member')->fetch_all($uids);
foreach($members as $member) {
if($_GET['notifymembers'] == 'pm') {
C::t('common_member_grouppm')->insert(array(
'uid' => $member['uid'],
'gpmid' => $gpmid,
'status' => 0
), false, true);
$newpm = setstatus(2, 1, $member['newpm']);
C::t('common_member')->update($member['uid'], array('newpm'=>$newpm));
} elseif($_GET['notifymembers'] == 'notice') {
notification_add($member['uid'], 'system', 'system_notice', array('subject' => $subject, 'message' => $message.$addmsg, 'from_id' => 0, 'from_idtype' => 'sendnotice'), 1);
} elseif($_GET['notifymembers'] == 'email') {
if(!sendmail("{$member['username']} <{$member['email']}>", $subject, $message.$addmsg)) {
runlog('sendmail', "{$member['email']} sendmail failed.");
}
} elseif($_GET['notifymembers'] == 'sms') {
if(!empty($member['secmobicc']) && !empty($member['secmobile']) && preg_match('#^(\d){1,3}$#', $member['secmobicc']) && preg_match('#^(\d){1,12}$#', $member['secmobile'])) {
sms::send($member['uid'], 1, 2, $member['secmobicc'], $member['secmobile'], "[$subject]$message$addmsg", 1);
}
}
$log = array();
if($_GET['updatecredittype'] == 0) {
foreach($setarr as $key => $val) {
if(empty($val)) continue;
$val = intval($val);
$id = intval($key);
$id = !$id && substr($key, 0, -1) == 'extcredits' ? intval(substr($key, -1, 1)) : $id;
if(0 < $id && $id < 9) {
$log['extcredits'.$id] = $val;
}
}
$logtype = 'RPR';
} else {
foreach($setarr as $val) {
if(empty($val)) continue;
$id = intval($val);
$id = !$id && substr($val, 0, -1) == 'extcredits' ? intval(substr($val, -1, 1)) : $id;
if(0 < $id && $id < 9) {
$log['extcredits'.$id] = '-1';
}
}
$logtype = 'RPZ';
}
include_once libfile('function/credit');
credit_log($member['uid'], $logtype, $member['uid'], $log);
$continue = TRUE;
}
}
$newsletter_detail = array();
if($continue) {
$next = $current + $pertask;
$newsletter_detail = array(
'uid' => $_G['uid'],
'current' => $current,
'next' => $next,
'search_condition' => serialize($search_condition),
'action' => "action=members&operation=$operation&{$operation}submit=yes¤t=$next&pertask=$pertask&system={$_GET['system']}&posttype={$_GET['posttype']}¬ifymember={$_GET['notifymember']}¬ifymembers=".rawurlencode($_GET['notifymembers']).$urladd
);
save_newsletter('newsletter_detail', $newsletter_detail);
$logaddurl = '';
foreach($setarr as $k => $v) {
if($_GET['updatecredittype'] == 0) {
$logaddurl .= '&'.$k.'='.$v;
} else {
$logaddurl .= '&'.$v.'=-1';
}
}
$logaddurl .= '&updatecredittype='.$_GET['updatecredittype'];
cpmsg("{$lang['members_newsletter_send']}: ".cplang('members_newsletter_processing', array('current' => $current, 'next' => $next, 'search_condition' => serialize($search_condition))), "action=members&operation=$operation&{$operation}submit=yes¤t=$next&pertask=$pertask&system={$_GET['system']}&posttype={$_GET['posttype']}¬ifymember={$_GET['notifymember']}¬ifymembers=".rawurlencode($_GET['notifymembers']).$urladd.$logaddurl, 'loadingform');
} else {
del_newsletter('newsletter_detail');
if($operation == 'reward' && $_GET['notifymembers'] == 'pm') {
$message = '';
} else {
$message = '_notify';
}
cpmsg('members'.($operation ? '_'.$operation : '').$message.'_succeed', '', 'succeed');
}
}
function banlog($username, $origgroupid, $newgroupid, $expiration, $reason, $status = 0) {
global $_G, $_POST;
$cloud_apps = dunserialize($_G['setting']['cloud_apps']);
writelog('banlog', dhtmlspecialchars("{$_G['timestamp']}\t{$_G['member']['username']}\t{$_G['groupid']}\t{$_G['clientip']}\t$username\t$origgroupid\t$newgroupid\t$expiration\t$reason\t$status"));
}
function selectday($varname, $dayarray) {
global $lang;
$selectday = '';
return $selectday;
}
function accessimg($access) {
return $access == -1 ? '
' :
($access == 1 ? '
' : '
');
}
function connectunbind($member) {
global $_G;
if(!$member['conopenid']) {
return;
}
$_G['member'] = array_merge($_G['member'], $member);
C::t('#qqconnect#connect_memberbindlog')->insert(array('uid' => $member['uid'], 'uin' => $member['conopenid'], 'type' => '2', 'dateline' => $_G['timestamp']));
C::t('common_member')->update($member['uid'], array('conisbind'=>0));
C::t('#qqconnect#common_member_connect')->delete($member['uid']);
}
function save_newsletter($cachename, $data) {
C::t('common_cache')->insert(array('cachekey' => $cachename, 'cachevalue' => serialize($data), 'dateline' => TIMESTAMP), false, true);
}
function del_newsletter($cachename) {
C::t('common_cache')->delete($cachename);
}
function get_newsletter($cachename) {
foreach(C::t('common_cache')->fetch_all($cachename) as $result) {
$data = $result['cachevalue'];
}
return $data;
}
?>