123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 |
- <?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');
- }
-
- }
- ?>
|