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