Server : nginx/1.22.1 System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 User : www ( 1000) PHP Version : 5.6.40 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/www.jkmold.com/phpcms/modules/vote/ |
<?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_app_class('admin','admin',0); class vote extends admin { private $db2, $db; function __construct() { parent::__construct(); $this->M = new_html_special_chars(getcache('vote', 'commons')); $this->db = pc_base::load_model('vote_subject_model'); $this->db2 = pc_base::load_model('vote_option_model'); } public function init() { $page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1; $infos = $this->db->listinfo(array('siteid'=>$this->get_siteid()),'subjectid DESC',$page, '14'); $pages = $this->db->pages; $big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=vote&c=vote&a=add\', title:\''.L('vote_add').'\', width:\'700\', height:\'450\'}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('vote_add')); include $this->admin_tpl('vote_list'); } /* *判断标题重复和验证 */ public function public_name() { $subject_title = isset($_GET['subject_title']) && trim($_GET['subject_title']) ? (pc_base::load_config('system', 'charset') == 'gbk' ? iconv('utf-8', 'gbk', trim($_GET['subject_title'])) : trim($_GET['subject_title'])) : exit('0'); $subjectid = isset($_GET['subjectid']) && intval($_GET['subjectid']) ? intval($_GET['subjectid']) : ''; $data = array(); if ($subjectid) { $data = $this->db->get_one(array('subjectid'=>$subjectid), 'subject'); if (!empty($data) && $data['subject'] == $subject_title) { exit('1'); } } if ($this->db->get_one(array('subject'=>$subject_title), 'subjectid')) { exit('0'); } else { exit('1'); } } /* *判断结束时间是否比当前时间小 */ public function checkdate() { $nowdate = date('Y-m-d',SYS_TIME); $todate = $_GET['todate']; if($todate > $nowdate){ exit('1'); }else { exit('0'); } } /** * 添加投票 */ public function add() { //读取配置文件 $data = array(); $data = $this->M; $siteid = $this->get_siteid();//当前站点 if(isset($_POST['dosubmit'])) { $_POST['subject']['addtime'] = SYS_TIME; $_POST['subject']['siteid'] = $this->get_siteid(); if(empty($_POST['subject']['subject'])) { showmessage(L('vote_title_noempty'),'?m=vote&c=vote&a=add'); } //记录选项条数 optionnumber $_POST['subject']['optionnumber'] = count($_POST['option']); $_POST['subject']['template'] = $_POST['vote_subject']['vote_tp_template']; $post_data = trim_script($_POST); $subjectid = $this->db->insert($post_data['subject'],true); if(!$subjectid) return FALSE; //返回投票ID值, 以备下面添加对应选项用,不存在返回错误 //添加选项操作 $this->db2->add_options($post_data['option'],$subjectid,$this->get_siteid()); //生成JS文件 $this->update_votejs($subjectid); if(isset($_POST['from_api'])&& $_POST['from_api']) { showmessage(L('operation_success'),'?m=vote&c=vote&a=add','100', '',"window.top.$('#voteid').val('".$subjectid."');window.top.art.dialog({id:'addvote'}).close();"); } else { showmessage(L('operation_success'),'?m=vote&c=vote','','add'); } } else { $show_validator = $show_scroll = $show_header = true; pc_base::load_sys_class('form', '', 0); @extract($data[$siteid]); //模版 pc_base::load_app_func('global', 'admin'); $siteid = $this->get_siteid(); $template_list = template_list($siteid, 0); $site = pc_base::load_app_class('sites','admin'); $info = $site->get_by_id($siteid); foreach ($template_list as $k=>$v) { $template_list[$v['dirname']] = $v['name'] ? $v['name'] : $v['dirname']; unset($template_list[$k]); } include $this->admin_tpl('vote_add'); } } /** * 编辑投票 */ public function edit() { if(isset($_POST['dosubmit'])){ //验证数据正确性 $subjectid = intval($_GET['subjectid']); if($subjectid < 1) return false; if(!is_array($_POST['subject']) || empty($_POST['subject'])) return false; if((!$_POST['subject']['subject']) || empty($_POST['subject']['subject'])) return false; $post_data = trim_script($_POST); $this->db2->update_options($post_data['option']);//先更新已有 投票选项,再添加新增加投票选项 if(is_array($_POST['newoption'])&&!empty($_POST['newoption'])){ $siteid = $this->get_siteid();//新加选项站点ID $this->db2->add_options($post_data['newoption'],$subjectid,$siteid); } //模版 $_POST['subject']['template'] = $_POST['vote_subject']['vote_tp_template']; $_POST['subject']['optionnumber'] = count($_POST['option'])+count($_POST['newoption']); $this->db->update($post_data['subject'],array('subjectid'=>$subjectid));//更新投票选项总数 $this->update_votejs($subjectid);//生成JS文件 showmessage(L('operation_success'),'?m=vote&c=vote&a=edit','', 'edit'); }else{ $show_validator = $show_scroll = $show_header = true; pc_base::load_sys_class('form', '', 0); //解出投票内容 $info = $this->db->get_one(array('subjectid'=>$_GET['subjectid'])); if(!$info) showmessage(L('operation_success')); extract($info); //解出投票选项 $this->db2 = pc_base::load_model('vote_option_model'); $options = $this->db2->get_options($_GET['subjectid']); //模版 pc_base::load_app_func('global', 'admin'); $siteid = $this->get_siteid(); $template_list = template_list($siteid, 0); $site = pc_base::load_app_class('sites','admin'); $info = $site->get_by_id($siteid); foreach ($template_list as $k=>$v) { $template_list[$v['dirname']] = $v['name'] ? $v['name'] : $v['dirname']; unset($template_list[$k]); } include $this->admin_tpl('vote_edit'); } } /** * 删除投票 * @param intval $sid 投票的ID,递归删除 */ public function delete() { if((!isset($_GET['subjectid']) || empty($_GET['subjectid'])) && (!isset($_POST['subjectid']) || empty($_POST['subjectid']))) { showmessage(L('illegal_parameters'), HTTP_REFERER); } else { if(is_array($_POST['subjectid'])){ foreach($_POST['subjectid'] as $subjectid_arr) { //删除对应投票的选项 $this->db2 = pc_base::load_model('vote_option_model'); $this->db2->del_options($subjectid_arr); $this->db->delete(array('subjectid'=>$subjectid_arr)); } showmessage(L('operation_success'),'?m=vote&c=vote'); }else{ $subjectid = intval($_GET['subjectid']); if($subjectid < 1) return false; //删除对应投票的选项 $this->db2 = pc_base::load_model('vote_option_model'); $this->db2->del_options($subjectid); //删除投票 $this->db->delete(array('subjectid'=>$subjectid)); $result = $this->db->delete(array('subjectid'=>$subjectid)); if($result) { showmessage(L('operation_success'),'?m=vote&c=vote'); }else { showmessage(L("operation_failure"),'?m=vote&c=vote'); } } showmessage(L('operation_success'), HTTP_REFERER); } } /** * 说明:删除对应投票选项 * @param $optionid */ public function del_option() { $result = $this->db2->del_option($_GET['optionid']); if($result) { echo 1; } else { echo 0; } } /** * 投票模块配置 */ public function setting() { //读取配置文件 $data = array(); $siteid = $this->get_siteid();//当前站点 //更新模型数据库,重设setting 数据. $m_db = pc_base::load_model('module_model'); $data = $m_db->select(array('module'=>'vote')); $setting = string2array($data[0]['setting']); $now_seting = $setting[$siteid]; if(isset($_POST['dosubmit'])) { //多站点存储配置文件 $siteid = $this->get_siteid();//当前站点 $setting[$siteid] = $_POST['setting']; setcache('vote', $setting, 'commons'); //更新模型数据库,重设setting 数据. $set = array2string($setting); $m_db->update(array('setting'=>$set), array('module'=>ROUTE_M)); showmessage(L('setting_updates_successful'), '?m=vote&c=vote&a=init'); } else { @extract($now_seting); pc_base::load_sys_class('form', '', 0); //模版 pc_base::load_app_func('global', 'admin'); $siteid = $this->get_siteid(); $template_list = template_list($siteid, 0); $site = pc_base::load_app_class('sites','admin'); $info = $site->get_by_id($siteid); foreach ($template_list as $k=>$v) { $template_list[$v['dirname']] = $v['name'] ? $v['name'] : $v['dirname']; unset($template_list[$k]); } include $this->admin_tpl('setting'); } } /** * 检查表单数据 * @param Array $data 表单传递过来的数组 * @return Array 检查后的数组 */ private function check($data = array()) { if($data['name'] == '') showmessage(L('name_plates_not_empty')); if(!isset($data['width']) || $data['width']==0) { showmessage(L('plate_width_not_empty'), HTTP_REFERER); } else { $data['width'] = intval($data['width']); } if(!isset($data['height']) || $data['height']==0) { showmessage(L('plate_height_not_empty'), HTTP_REFERER); } else { $data['height'] = intval($data['height']); } return $data; } /** * 投票结果统计 */ public function statistics() { $subjectid = intval($_GET['subjectid']); if(!$subjectid){ showmessage(L('illegal_operation')); } $show_validator = $show_scroll = $show_header = true; //获取投票信息 $sdb = pc_base::load_model('vote_data_model'); //加载投票统计的数据模型 $infos = $sdb->select("subjectid = $subjectid",'data'); //新建一数组用来存新组合数据 $total = 0; $vote_data =array(); $vote_data['total'] = 0 ;//所有投票选项总数 $vote_data['votes'] = 0 ;//投票人数 //循环每个会员的投票记录 foreach($infos as $subjectid_arr) { extract($subjectid_arr); $arr = string2array($data); foreach($arr as $key => $values){ $vote_data[$key]+=1; } $total += array_sum($arr); $vote_data['votes']++ ; } $vote_data['total'] = $total ; //取投票选项 $options = $this->db2->get_options($subjectid); include $this->admin_tpl('vote_statistics'); } /** * 投票会员统计 */ public function statistics_userlist() { $subjectid = $_GET['subjectid']; if(empty($subjectid)) return false; $show_validator = $show_scroll = $show_header = true; $where = array ("subjectid" => $subjectid); $sdb = pc_base::load_model('vote_data_model'); //调用统计的数据模型 $page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1; $infos = $sdb->listinfo($where,'time DESC',$page,'7'); $pages = $sdb->pages; include $this->admin_tpl('vote_statistics_userlist'); } /** * 说明:生成JS投票代码 * @param $subjectid 投票ID */ function update_votejs($subjectid){ if(!isset($subjectid)||intval($subjectid) < 1) return false; //解出投票内容 $info = $this->db->get_subject($subjectid); if(!$info) showmessage(L('not_vote')); extract($info); //解出投票选项 $options = $this->db2->get_options($subjectid); ob_start(); include template('vote', $template); $voteform = ob_get_contents(); ob_clean() ; @file_put_contents(CACHE_PATH.'vote_js/vote_'.$subjectid.'.js', $this->format_js($voteform)); } /** * 更新js */ public function create_js() { $infos = $this->db->select(array('siteid'=>$this->get_siteid()), '*'); if(is_array($infos)){ foreach($infos as $subjectid_arr) { $this->update_votejs($subjectid_arr['subjectid']); } } showmessage(L('operation_success'),'?m=vote&c=vote'); } /** * 说明:对字符串进行处理 * @param $string 待处理的字符串 * @param $isjs 是否生成JS代码 */ function format_js($string, $isjs = 1){ $string = addslashes(str_replace(array("\r", "\n"), array('', ''), $string)); return $isjs ? 'document.write("'.$string.'");' : $string; } /** * 投票调用代码 * */ public function public_call() { $_GET['subjectid'] = intval($_GET['subjectid']); if(!$_GET['subjectid']) showmessage(L('illegal_action'), HTTP_REFERER, '', 'call'); $r = $this->db->get_one(array('subjectid'=>$_GET['subjectid'])); include $this->admin_tpl('vote_call'); } /** * 信息选择投票接口 */ public function public_get_votelist() { $infos = $this->db->listinfo(array('siteid'=>$this->get_siteid()),'subjectid DESC',$page,'10'); $target = isset($_GET['target']) ? $_GET['target'] : ''; include $this->admin_tpl('get_votelist'); } } ?>