'.cplang('smsgw_admin').''; $operation = $operation ? $operation : 'setting'; cpheader(); if($operation == 'list') { if(!submitcheck('smsgwsubmit')) { shownav('extended', 'smsgw_admin'); showsubmenu($root.' » '.cplang('smsgw_admin_list')); showformheader("smsgw&operation=$operation"); showtableheader('', 'fixpadding'); showsubtitle(array('', 'order', 'available', 'name', 'type', '')); $flag = false; $classnames = array(); $avaliablesmsgw = getsmsgws(); foreach(C::t('common_smsgw')->fetch_all_gw_order_id() as $smsgw) { $smsgwfile = ''; $etype = explode(':', $smsgw['class']); if(count($etype) > 1 && preg_match('/^[\w\_:]+$/', $smsgw['class'])) { $key = 'smsgw_'.$etype[1].'.php'; if(array_key_exists($key, $avaliablesmsgw)) { $smsgwfile = DISCUZ_ROOT.'./source/plugin/'.$etype[0].'/smsgw/smsgw_'.$etype[1].'.php'; $smsgwclass = 'smsgw_'.$etype[1]; unset($avaliablesmsgw[$key]); } else { C::t('common_smsgw')->update($smsgw['id'], array('available' => 0)); $flag = true; continue; } } else { $key = 'smsgw_'.$smsgw['class'].'.php'; if(array_key_exists($key, $avaliablesmsgw)) { $smsgwfile = libfile('smsgw/'.$smsgw['class'], 'class'); $smsgwclass = 'smsgw_'.$smsgw['class']; unset($avaliablesmsgw[$key]); } else { C::t('common_smsgw')->update($smsgw['id'], array('available' => 0)); $flag = true; continue; } } if(!isset($classnames[$smsgw['class']])) { require_once $smsgwfile; if(class_exists($smsgwclass)) { $smsgwclassv = new $smsgwclass(); $classnames[$smsgw['class']] = lang('smsgw/'.$smsgw['class'], $smsgwclassv->name); } else { $classnames[$smsgw['class']] = $smsgw['class']; } } showtablerow('', array('class="td25"', 'class="td25"', 'class="td25"'), array( "", "", "", "", $smsgw['type'] == 0 ? cplang('smsgw_type_message') : cplang('smsgw_type_template'), "{$lang['edit']}" )); } if(count($avaliablesmsgw) > 0) { foreach($avaliablesmsgw as $smsgw) { $arr = array('type' => $smsgw['type'], 'class' => $smsgw['class'], 'order' => 0, 'name' => $smsgw['name'], 'sendrule' => $smsgw['sendrule']); C::t('common_smsgw')->insert($arr); $flag = true; } } if($flag) { header("Location: ".ADMINSCRIPT."?action=smsgw&operation=$operation"); } showsubmit('smsgwsubmit'); showtablefooter(); showformfooter(); } else { if($_GET['delete']) { C::t('common_smsgw')->delete($_GET['delete']); } if(is_array($_GET['namenew'])) { foreach($_GET['namenew'] as $smsgwid => $title) { C::t('common_smsgw')->update($smsgwid, array( 'available' => $_GET['availablenew'][$smsgwid], 'order' => $_GET['ordernew'][$smsgwid], 'name' => $_GET['namenew'][$smsgwid] )); } } updatecache('setting'); cpmsg('smsgw_succeed', dreferer(), 'succeed'); } } elseif($operation == 'edit' && !empty($_GET['smsgwid'])) { if(!submitcheck('smsgwsubmit')) { $smsgwid = $_GET['smsgwid']; $smsgw = C::t('common_smsgw')->fetch($smsgwid); if(!$smsgw) { cpmsg('smsgw_nonexistence', '', 'error'); } $smsgw['parameters'] = dunserialize($smsgw['parameters']); $class = $smsgw['class']; $etype = explode(':', $class); if(count($etype) > 1 && preg_match('/^[\w\_:]+$/', $class)) { include_once DISCUZ_ROOT.'./source/plugin/'.$etype[0].'/smsgw/smsgw_'.$etype[1].'.php'; $smsgwclass = 'smsgw_'.$etype[1]; } else { require_once libfile('smsgw/'.$class, 'class'); $smsgwclass = 'smsgw_'.$class; } $smsgwclass = new $smsgwclass; $smsgwsetting = $smsgwclass->getsetting(); $smsgwname = lang('smsgw/'.$class, $smsgwclass->name).' '.$smsgwclass->customname; $returnurl = 'action=smsgw&operation=list'; $return = ''.cplang('smsgw_admin_list').(empty($_GET['from']) ? ' - '.$smsgwname : '').''; shownav('extended', 'smsgw_admin'); showsubmenu($root.' » '.$return.' » ' . cplang('smsgw_edit')); showformheader("smsgw&operation=$operation&smsgwid=$smsgwid", 'enctype'); showhiddenfields(array('referer' => $returnurl)); showtableheader(cplang('smsgw_edit').' - '.lang('smsgw/'.$class, $smsgwclass->name), 'fixpadding'); showsetting('smsgw_edit_name', 'smsgwnew[name]', $smsgw['name'], 'text'); showsetting('smsgw_edit_order', 'smsgwnew[order]', $smsgw['order'], 'text'); showsetting('smsgw_edit_sendrule', 'smsgwnew[sendrule]', $smsgw['sendrule'], 'text'); if(is_array($smsgwsetting)) { foreach($smsgwsetting as $settingvar => $setting) { if(!empty($setting['value']) && is_array($setting['value'])) { foreach($setting['value'] as $k => $v) { $setting['value'][$k][1] = lang('smsgw/'.$class, $setting['value'][$k][1]); } } $varname = in_array($setting['type'], array('mradio', 'mcheckbox', 'select', 'mselect')) ? ($setting['type'] == 'mselect' ? array('parameters['.$settingvar.'][]', $setting['value']) : array('parameters['.$settingvar.']', $setting['value'])) : 'parameters['.$settingvar.']'; $value = $smsgw['parameters'][$settingvar] != '' ? $smsgw['parameters'][$settingvar] : $setting['default']; $comment = lang('smsgw/'.$class, $setting['title'].'_comment'); $comment = $comment != $setting['title'].'_comment' ? $comment : ''; showsetting(lang('smsgw/'.$class, $setting['title']).':', $varname, $value, $setting['type'], '', 0, $comment); } } showsubmit('smsgwsubmit'); showtablefooter(); showformfooter(); } else { $smsgwid = $_GET['smsgwid']; $smsgw = C::t('common_smsgw')->fetch($smsgwid); $class = $smsgw['class']; $smsgw['parameters'] = dunserialize($smsgw['parameters']); $etype = explode(':', $class); if(count($etype) > 1 && preg_match('/^[\w\_:]+$/', $class)) { include_once DISCUZ_ROOT.'./source/plugin/'.$etype[0].'/smsgw/smsgw_'.$etype[1].'.php'; $smsgwclass = 'smsgw_'.$etype[1]; } else { require_once libfile('smsgw/'.$class, 'class'); $smsgwclass = 'smsgw_'.$class; } $smsgwclass = new $smsgwclass; $smsgwnew = $_GET['smsgwnew']; $parameters = !empty($_GET['parameters']) ? $_GET['parameters'] : array(); $smsgwclass->setsetting($smsgwnew, $parameters); if(!$smsgwnew['name']) { cpmsg('smsgw_name_invalid', '', 'error'); } elseif(strlen($smsgwnew['name']) > 255) { cpmsg('smsgw_name_more', '', 'error'); } if(!$smsgwnew['sendrule']) { cpmsg('smsgw_sendrule_invalid', '', 'error'); } C::t('common_smsgw')->update($smsgwid, array( 'name' => $smsgwnew['name'], 'order' => (int)$smsgwnew['order'], 'sendrule' => $smsgwnew['sendrule'], 'parameters' => serialize($parameters), )); updatecache('setting'); cpmsg('smsgw_succeed', 'action=smsgw&operation=edit&smsgwid='.$smsgwid, 'succeed'); } } elseif($operation == 'setting') { if(submitcheck('smsgwsubmit')) { $smsstatus = (int)$_GET['smsstatusnew']; $smsdefaultcc = (int)$_GET['smsdefaultccnew']; $smsdefaultcc = $smsdefaultcc > 0 ? $smsdefaultcc : 86; $smsdefaultlength = (int)$_GET['smsdefaultlengthnew']; $smsdefaultlength = $smsdefaultlength > 0 ? $smsdefaultlength : 4; $smstimelimit = (int)$_GET['smstimelimitnew']; $smstimelimit = $smstimelimit > 0 ? $smstimelimit : 86400; $smsnumlimit = (int)$_GET['smsnumlimitnew']; $smsnumlimit = $smsnumlimit > 0 ? $smsnumlimit : 5; $smsinterval = (int)$_GET['smsintervalnew']; $smsinterval = $smsinterval > 0 ? $smsinterval : 300; $smsmillimit = (int)$_GET['smsmillimitnew']; $smsmillimit = $smsmillimit > 0 ? $smsmillimit : 20; $smsglblimit = (int)$_GET['smsglblimitnew']; $smsglblimit = $smsglblimit > 0 ? $smsglblimit : 1000; C::t('common_setting')->update_setting('smsstatus', $smsstatus); C::t('common_setting')->update_setting('smsdefaultcc', $smsdefaultcc); C::t('common_setting')->update_setting('smsdefaultlength', $smsdefaultlength); C::t('common_setting')->update_setting('smstimelimit', $smstimelimit); C::t('common_setting')->update_setting('smsnumlimit', $smsnumlimit); C::t('common_setting')->update_setting('smsinterval', $smsinterval); C::t('common_setting')->update_setting('smsmillimit', $smsmillimit); C::t('common_setting')->update_setting('smsglblimit', $smsglblimit); updatecache('setting'); cpmsg('setting_update_succeed', 'action=smsgw&operation=setting', 'succeed'); } else { shownav('extended', 'smsgw_admin'); showsubmenu('smsgw_admin', array( array('smsgw_admin_setting', 'smsgw&operation=setting', 1), array('smsgw_admin_list', 'smsgw&operation=list', 0) )); $smsstatus = C::t('common_setting')->fetch_setting('smsstatus'); $smsdefaultcc = C::t('common_setting')->fetch_setting('smsdefaultcc'); $smsdefaultlength = C::t('common_setting')->fetch_setting('smsdefaultlength'); $smstimelimit = C::t('common_setting')->fetch_setting('smstimelimit'); $smsnumlimit = C::t('common_setting')->fetch_setting('smsnumlimit'); $smsinterval = C::t('common_setting')->fetch_setting('smsinterval'); $smsmillimit = C::t('common_setting')->fetch_setting('smsmillimit'); $smsglblimit = C::t('common_setting')->fetch_setting('smsglblimit'); showformheader("smsgw&operation=$operation"); showtableheader(); showsetting('smsgw_setting_smsstatus', 'smsstatusnew', $smsstatus, 'radio', 0, 1); showsetting('smsgw_setting_smsdefaultcc', 'smsdefaultccnew', $smsdefaultcc, 'text'); showsetting('smsgw_setting_smsdefaultlength', 'smsdefaultlengthnew', $smsdefaultlength, 'text'); showsetting('smsgw_setting_smstimelimit', 'smstimelimitnew', $smstimelimit, 'text'); showsetting('smsgw_setting_smsnumlimit', 'smsnumlimitnew', $smsnumlimit, 'text'); showsetting('smsgw_setting_smsinterval', 'smsintervalnew', $smsinterval, 'text'); showsetting('smsgw_setting_smsmillimit', 'smsmillimitnew', $smsmillimit, 'text'); showsetting('smsgw_setting_smsglblimit', 'smsglblimitnew', $smsglblimit, 'text'); showtagfooter('tbody'); showsubmit('smsgwsubmit'); showtablefooter(); showformfooter(); } } function getsmsgws() { global $_G; $checkdirs = array_merge(array(''), $_G['setting']['plugins']['available']); $smsgws = array(); foreach($checkdirs as $key) { if($key) { $dir = DISCUZ_ROOT.'./source/plugin/'.$key.'/smsgw'; } else { $dir = DISCUZ_ROOT.'./source/class/smsgw'; } if(!file_exists($dir)) { continue; } $smsgwdir = dir($dir); while($entry = $smsgwdir->read()) { if(!in_array($entry, array('.', '..')) && preg_match("/^smsgw\_[\w\.]+$/", $entry) && substr($entry, -4) == '.php' && strlen($entry) < 30 && is_file($dir.'/'.$entry)) { @include_once $dir.'/'.$entry; $smsgwclass = substr($entry, 0, -4); if(class_exists($smsgwclass)) { $smsgw = new $smsgwclass(); $script = substr($smsgwclass, 6); $script = ($key ? $key.':' : '').$script; $smsgws[$entry] = array( 'class' => $script, 'name' => lang('smsgw/'.$script, $smsgw->name), 'version' => $smsgw->version, 'copyright' => lang('smsgw/'.$script, $smsgw->copyright), 'type' => $smsgw->type, 'sendrule' => $smsgw->sendrule, 'filemtime' => @filemtime($dir.'/'.$entry) ); } } } } uasort($smsgws, 'filemtimesort'); return $smsgws; } ?>