| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545 | 
							- <?php
 
- abstract class BaseLogic {
 
- 	
 
- 	public function db() {
 
- 		return Doo::db ();
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 获得分页数据
 
- 	 * @param unknown_type $table
 
- 	 * @param unknown_type $condition
 
- 	 * @param unknown_type $on_page
 
- 	 * @param unknown_type $page_size
 
- 	 */
 
- 	function get_page($table = "", $condition = "", $on_page = 1, $page_size = 20, $action = "", $get = "", $other = "page") {
 
- 		$page_c = "";
 
- 		
 
- 		$page ['previous'] = get_previous ( $on_page );
 
- 		
 
- 		$page ['on_page'] = $on_page;
 
- 		
 
- 		$total_count = $this->get_table_count ( $table, $condition );
 
- 		
 
- 		$total = intval ( $total_count / $page_size );
 
- 		
 
- 		$page ['total_page'] = ($total_count % $page_size) == 0 ? $total : $total + 1;
 
- 		
 
- 		$page ['total_data'] = $total_count;
 
- 		
 
- 		$page ['next'] = $on_page == $page ['total_page'] ? $page ['total_page'] : $on_page + 1;
 
- 		
 
- 		$i = 1;
 
- 		
 
- 		$page_max = 1;
 
- 		
 
- 		if ($on_page > 10) {
 
- 			$page_max = intval ( $on_page / 10 ) + 1;
 
- 			$i = intval ( $on_page / 10 ) * 10 - 1;
 
- 		}
 
- 		
 
- 		for(; $i <= $page ['total_page']; $i ++) {
 
- 			
 
- 			if ($i == $on_page) {
 
- 				if ($other == "page")
 
- 					$page_c .= '<a href="javascript:void(0);" class="current">' . $i . '</a>';
 
- 				else
 
- 					$page_c .= ' <span class="current">' . $i . '</span> ';
 
- 			} else if ($other == "page")
 
- 				$page_c .= '<a href="' . $action . $i . $get . '" class="paginate">' . $i . '</a>';
 
- 			else
 
- 				$page_c .= ' <a href="' . $action . $i . $get . '" class="paginate">' . $i . '</a> ';
 
- 			if ($i == (10 * $page_max))
 
- 				break;
 
- 		}
 
- 		
 
- 		$page ['page'] = $page_c;
 
- 		
 
- 		$page ['lower'] = (-- $on_page) * $page_size;
 
- 		
 
- 		return $page;
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 获取总页数
 
- 	 * @param unknown_type $table
 
- 	 * @param unknown_type $condition
 
- 	 */
 
- 	public function get_table_count($table = "", $condition = "") {
 
- 		$sql = "select count(*) as count from " . $table . " where 1 " . $condition;
 
- 		
 
- 		$query = Doo::db ()->query ( $sql );
 
- 		
 
- 		$result = $query->fetch ();
 
- 		
 
- 		return $result ['count'];
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 获取数据
 
- 	 * @param unknown_type $data 一般选择条件
 
- 	 * @param unknown_type $limit 
 
- 	 * @param unknown_type $condition
 
- 	 * @param unknown_type $table
 
- 	 */
 
- 	function get_list($data = array(), $condition = "", $limit = "", $table = "") {
 
- 		
 
- 		foreach ( $data as $key => $value ) {
 
- 			if (is_numeric ( $value ))
 
- 				$condition .= " and " . $key . " = " . $value;
 
- 			else
 
- 				$condition .= " and " . $key . " like '%" . $value . "%' ";
 
- 		}
 
- 		
 
- 		$condition = ' where 1 ' . $condition . $limit;
 
- 		
 
- 		$sql = "select * from " . $table . $condition;
 
- 		
 
- 		$query = Doo::db ()->query ( $sql );
 
- 		
 
- 		$result = $query->fetchAll ();
 
- 		
 
- 		return $result;
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 批量更新数据
 
- 	 * @param unknown_type $params 一个字段为一个数组
 
- 	 * @param unknown_type $table
 
- 	 * @param unknown_type $id
 
- 	 */
 
- 	function update_list($params = array(), $table = "", $id = "") {
 
- 		$pa = array ();
 
- 		
 
- 		$co = array ();
 
- 		
 
- 		$wh = array ();
 
- 		
 
- 		$count = count ( $params [$id] );
 
- 		
 
- 		foreach ( $params as $key => $value ) {
 
- 			array_push ( $pa, $key );
 
- 			
 
- 			if ($key != $id) {
 
- 				array_push ( $wh, $key . "=VALUES(" . $key . ")" );
 
- 			}
 
- 		}
 
- 		//获取更新内容
 
- 		for($i = 0; $i < $count; $i ++) {
 
- 			
 
- 			$tm = array ();
 
- 			
 
- 			foreach ( $pa as $k ) {
 
- 				
 
- 				array_push ( $tm, "'" . $params [$k] [$i] . "'" );
 
- 			}
 
- 			
 
- 			$tm = implode ( ",", $tm );
 
- 			
 
- 			array_push ( $co, "(" . $tm . ")" );
 
- 		}
 
- 		
 
- 		$pa = implode ( ",", $pa );
 
- 		
 
- 		$wh = implode ( ",", $wh );
 
- 		
 
- 		$co = implode ( ",", $co );
 
- 		
 
- 		$sql = "INSERT INTO " . $table . " (" . $pa . ") VALUES " . $co . " ON DUPLICATE KEY UPDATE " . $wh;
 
- 		
 
- 		$query = Doo::db ()->query ( $sql );
 
- 	
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 自动设置问题状态
 
- 	 * @param unknown_type $data 一条问题数据
 
- 	 */
 
- 	function auto_set_status_question($result = array()) {
 
- 		
 
- 		$day_7 = get_last_close_day ( $result ['time'], 7 );
 
- 		
 
- 		$day_15 = get_last_close_day ( $result ['time'], 15 );
 
- 		
 
- 		$endtime = get_date ();
 
- 		
 
- 		$answer = isset ( $result ['qanswers'] ) ? $result ['qanswers'] : $result ['answers'];
 
- 		
 
- 		//条件满足-关闭问题
 
- 		if ($day_7 <= 0) {
 
- 			//必须是未解决问题
 
- 			if ($result ['status'] == 1) {
 
- 				//是否有回答
 
- 				if ($answer > 0) {
 
- 					//有无赞-15天关闭,最佳
 
- 					if ($day_15 <= 0 && $result ['goods'] == 0) {
 
- 						$this->_set_question ( $endtime, "endtime", $result ['id'] );
 
- 						
 
- 						$result ['status'] = format_question_status ( 9, 'page' );
 
- 						
 
- 						$result ['status_num'] = 9;
 
- 						
 
- 						//扣除RMB到基金中
 
- 						if ($result ['price'] > 0)
 
- 							$this->_set_fund ( $result ['authorid'], $result ['id'], $result ['price'] );
 
- 					
 
- 					} else { //系统设置最佳
 
- 						//获取赞最多
 
- 						$sql = "select * from " . t_answer . " where qid = '" . $result ['id'] . "' order by support desc limit 1";
 
- 						
 
- 						$query = Doo::db ()->query ( $sql );
 
- 						
 
- 						$answerinfo = $query->fetch ();
 
- 						
 
- 						$this->set_best_answer_sys ( $result ['id'], $answerinfo ['id'], $answerinfo ['authorid'], $result ['title'], $answerinfo );
 
- 						
 
- 						$result ['status'] = format_question_status ( 2, 'page' );
 
- 						
 
- 						$result ['status_num'] = 2;
 
- 					
 
- 					}
 
- 				} else { //无回答
 
- 					
 
- 					Doo::loadModel ( 'MessageDao' );
 
- 					
 
- 					$messagedao = new MessageDao ();
 
- 					
 
- 					$subject = "问题 <a href=/askpage/" . $result ['id'] . " >" . $result ['title'] . "</a> <span class=colRed>过期,自动关闭</span>";
 
- 					
 
- 					$content = "问题 <a href=/askpage/" . $result ['id'] . " >" . $result ['title'] . "</a> <span class=colRed>过期,自动关闭</span>";
 
- 					
 
- 					$messagedao->send_message ( ADMIN_NAME, 0, $result ['authorid'], $subject, $content );
 
- 					
 
- 					$this->_set_question ( $endtime, "endtime", $result ['id'] );
 
- 					
 
- 					$result ['status'] = format_question_status ( 9, 'page' );
 
- 					
 
- 					$result ['status_num'] = 9;
 
- 					
 
- 					//扣除RMB到基金中
 
- 					if ($result ['price'] > 0)
 
- 						$this->_set_fund ( $result ['authorid'], $result ['id'], $result ['price'] );
 
- 				}
 
- 			}
 
- 		
 
- 		}
 
- 		return $result;
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 添加数据到检索索引
 
- 	 * @param unknown_type $data
 
- 	 */
 
- 	function add_search_index($data = array(), $DB = SEARCH_WD_DB, $CONFIG = SEARCH_INI) {
 
- 		
 
- 		require_once (XUNSEARCH_URL);
 
- 		
 
- 		$xs = new XS ( $CONFIG );
 
- 		$index = $xs->index;
 
- 		
 
- 		$index->setDb ( $DB );
 
- 		//$index->clean();die;
 
- 		// 创建文档对象
 
- 		$doc = new XSDocument ();
 
- 		$doc->setFields ( $data );
 
- 		
 
- 		// 添加到索引数据库中
 
- 		$index->add ( $doc );
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 更新检索库中的索引
 
- 	 * @param unknown_type $data
 
- 	 */
 
- 	function update_search_index($data = array(), $DB = SEARCH_WD_DB, $CONFIG = SEARCH_INI) {
 
- 		require_once (XUNSEARCH_URL);
 
- 		
 
- 		$xs = new XS ( $CONFIG );
 
- 		$index = $xs->index;
 
- 		
 
- 		$index->setDb ( $DB );
 
- 		
 
- 		// 创建文档对象
 
- 		$doc = new XSDocument ();
 
- 		$doc->setFields ( $data );
 
- 		
 
- 		// 添加到索引数据库中
 
- 		$index->update ( $doc );
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 删除索引
 
- 	 * @param unknown_type $data
 
- 	 * @param unknown_type $DB
 
- 	 * @param unknown_type $CONFIG
 
- 	 */
 
- 	function delete_search_index($data = array(), $DB = SEARCH_WD_DB, $CONFIG = SEARCH_INI) {
 
- 		
 
- 		require_once (XUNSEARCH_URL);
 
- 		
 
- 		$xs = new XS ( $CONFIG );
 
- 		$index = $xs->index;
 
- 		
 
- 		$index->setDb ( $DB );
 
- 		
 
- 		$index->del ( $data );
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 扣除金额
 
- 	 * @param unknown_type $price
 
- 	 * @param unknown_type $uid
 
- 	 */
 
- 	function offer_price_by_sso($sso_price = 0, $sso_uid = 0) {
 
- 		require_once (SITE_PATH . '/protected/plugin/client.php');
 
- 		
 
- 		$client = new client ( ZHSSO );
 
- 		
 
- 		$is_succes = $client->zhsso_member_msub ( $sso_uid, $sso_price, "ask" );
 
- 		$is_succes = explode ( "\r", $is_succes );
 
- 		$ts = json_decode ( $is_succes ['0'], true );
 
- 		return $ts;
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 增加金额
 
- 	 * @param unknown_type $sso_price
 
- 	 * @param unknown_type $sso_uid
 
- 	 */
 
- 	function add_price_by_sso($sso_price = 0, $sso_uid = 0) {
 
- 		require_once (SITE_PATH . '/protected/plugin/client.php');
 
- 		
 
- 		$client = new client ( ZHSSO );
 
- 		
 
- 		$is_succes = $client->zhsso_member_madd ( $sso_uid, $sso_price, "ask" );
 
- 		
 
- 		$is_succes = explode ( "\r", $is_succes );
 
- 		
 
- 		$ts = json_decode ( $is_succes ['0'], true );
 
- 		
 
- 		return $ts;
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 获取通行证用户信息
 
- 	 * @param unknown_type $username
 
- 	 */
 
- 	function get_sso_user_info_by_name($username = "") {
 
- 		
 
- 		require_once (SITE_PATH . '/protected/plugin/client.php');
 
- 		
 
- 		$client = new client ( ZHSSO );
 
- 		
 
- 		$userinfo = $client->zhsso_getUserbyName ( $username );
 
- 		
 
- 		$userinfo = explode ( "\r", $userinfo );
 
- 		
 
- 		$ts = json_decode ( $userinfo ['0'], true );
 
- 		
 
- 		return $ts;
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 将财富添加到基金库
 
- 	 * @param unknown_type $uid
 
- 	 * @param unknown_type $qid
 
- 	 * @param unknown_type $amount
 
- 	 */
 
- 	function _set_fund($uid = 0, $qid = 0, $amount = 0) {
 
- 		$sql = "INSERT INTO " . t_fund . " (uid,qid,amount,time) VALUES (" . $uid . "," . $qid . "," . $amount . "," . get_date () . ")";
 
- 		
 
- 		$query = Doo::db ()->query ( $sql );
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 更改问题状态
 
- 	 */
 
- 	private function _set_question($endtime = 0, $parsom = "endtime", $id = 0) {
 
- 		$sql = "UPDATE `" . t_question . "` SET  `status` = " . QUESTOIN_STATUS_CLOSE . " , endtime =" . $endtime . " WHERE `id` = " . $id;
 
- 		
 
- 		$query = Doo::db ()->query ( $sql );
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 管理员设置最佳答案--整理
 
- 	 * @param unknown_type $qid
 
- 	 */
 
- 	function set_best_answer_sys($qid = 0, $aid = 0, $auid = 0, $title = "", $data = array()) {
 
- 		
 
- 		Doo::loadModel ( 'QuestionDao' );
 
- 		Doo::loadModel ( 'AnswerDao' );
 
- 		Doo::loadModel ( 'UserDao' );
 
- 		Doo::loadModel ( 'MessageDao' );
 
- 		Doo::loadModel ( 'Credit3logDao' );
 
- 		
 
- 		$questiondao = new QuestionDao ();
 
- 		$answerdao = new AnswerDao ();
 
- 		$userdao = new UserDao ();
 
- 		$messagedao = new MessageDao ();
 
- 		$credit3logdao = new Credit3logDao ();
 
- 		
 
- 		//获取问题
 
- 		$question = $questiondao->get_question_by_id ( $qid );
 
- 		
 
- 		if ($question ['price'] > 0) {
 
- 			//通行证
 
- 			$info = $userdao->get_userinfo_by_uid ( $auid );
 
- 			
 
- 			$sso_info = $this->get_sso_user_info_by_name ( $info ['username'] );
 
- 			//,
 
- 			$is = $this->add_price_by_sso ( $question ['price'], $sso_info [0] ['id'] );
 
- 			
 
- 			if ($is <= 0)
 
- 				return false;
 
- 		}
 
- 		
 
- 		//答案最佳者获得积分
 
- 		$acd1 = POINT_ADOPT;
 
- 		
 
- 		//更新问题
 
- 		$data_question ['endtime'] = get_date ();
 
- 		
 
- 		$data_question ['status'] = ADOPT;
 
- 		
 
- 		$condition = " where id = " . $qid;
 
- 		
 
- 		$questiondao->update_question ( $data_question, $condition );
 
- 		
 
- 		//更新答案
 
- 		$data_answer ['adopttime'] = $data_question ['endtime'];
 
- 		
 
- 		$data_answer ['comment'] = "谢谢您的回答";
 
- 		
 
- 		$data_answer ['status'] = ADOPT;
 
- 		
 
- 		$condition = " where id = " . $aid;
 
- 		
 
- 		$answerdao->update_answer ( $data_answer, $condition );
 
- 		
 
- 		//更新回答用户信息积分信息
 
- 		$userdao->add_credit1 ( $acd1, $auid, ACTION_ADOPT );
 
- 		
 
- 		//更新该用户的采纳数
 
- 		$userdao->add_adopts ( $auid, 1 );
 
- 		
 
- 		if ($question ['price'] > 0) {
 
- 			//财富-流向问题
 
- 			
 
- 			$userdao->add_credit3 ( + $question ['price'], $auid, RICH_ACTION_ADOPT );
 
- 			
 
- 			//财富流向表
 
- 			$ip = client_ip ();
 
- 			
 
- 			$action = $question ['author'] . "用户在" . format_date ( get_date () ) . "时间" . $ip . "IP回答被采纳,获得财富为" . $question ['price'] . ";问题ID为" . $qid;
 
- 			
 
- 			$credit3logdao->add_credit3_log ( $auid, $data ['author'], $qid, $action, $question ['price'], $ip );
 
- 		}
 
- 		
 
- 		//发送系统信息-发送给发回答用户  
 
- 		$subject = "问题 <a href=/askpage/" . $qid . " >" . $title . "</a> <span class=colRed >自动设置最佳答案</span>";
 
- 		
 
- 		$content = "问题 <a href=/askpage/" . $qid . " >" . $title . "</a> <span class=colRed >自动设置最佳答案</span>";
 
- 		
 
- 		$messagedao->send_message ( ADMIN_NAME, 0, $auid, $subject, $content );
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 发送email
 
- 	 */
 
- 	function send_email($uid = 0, $templete_name = "",$qid=0,$aid=0) {
 
- 		Doo::loadModel ( 'EmailconfigDao' );
 
- 		
 
- 		$emailconfigDao = new EmailconfigDao ();
 
- 		
 
- 		require_once SITE_PATH . '/protected/class/class.phpmailer.php';
 
- 		
 
- 		require_once SITE_PATH . '/protected/class/email_templete.file.php';
 
- 		
 
- 		//检测是否配置了发送
 
- 		$is_send_email = $emailconfigDao->get_emailconfig_by_uid ( $uid );
 
- 		
 
- 		if (empty ( $is_send_email ))
 
- 			return false;
 
- 		
 
- 		//检测需要发送的email和email_templete
 
- 		foreach ($is_send_email as $key=>$value){
 
- 			//是否有设置
 
- 			if($value['action_id']==$templete_name){
 
- 				//是否有模板
 
- 				if(isset($email_file[$templete_name])){
 
- 					
 
- 					$html_templete=$this->format_email_content($email_file[$templete_name],$templete_name,$qid,$aid);
 
- 					
 
- 					//检测邮件地址的正确性 &&ereg("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+",$email)
 
- 					if(!empty($html_templete['toemail']))
 
- 						$this->_mail($html_templete['templete'],$html_templete['subject'],$html_templete['toemail']);
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	/**
 
- 	 * 抽象格式化email内容
 
- 	 * @param unknown_type $html_templete
 
- 	 */
 
- 	abstract protected function format_email_content($html_templete,$templete_name,$qid,$aid);
 
- 	
 
- 	/**
 
- 	 * 发送email
 
- 	 * @param unknown_type $html_templete
 
- 	 * @param unknown_type $subject
 
- 	 * @param unknown_type $toemail
 
- 	 */
 
- 	function _mail( $html_templete = "",$subject="",$toemail=""){
 
- 		
 
- 		require_once SITE_PATH . '/protected/class/class.pop3.php';
 
- 		
 
- 		require_once SITE_PATH . '/protected/class/class.smtp.php';
 
- 		
 
- 		require_once SITE_PATH . '/protected/class/class.phpmailer.php';
 
- 	
 
- 		$mail             = new PHPMailer();
 
- 		
 
- 		$body             = $html_templete;
 
- 		
 
- 		$mail->IsSMTP(); // telling the class to use SMTP
 
- 		
 
- 		$mail->SMTPAuth   = true;                  // enable SMTP authentication
 
- 		//$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
 
- 		$mail->Host       = "smtp.exmail.qq.com";      // sets GMAIL as the SMTP server
 
- 		//$mail->Port       = 465;                   // set the SMTP port for the GMAIL server
 
- 		
 
- 		//$mail->CharSet = "UTF8";
 
- 		
 
- 		$mail->Username   = "zhzdwd@zhzdwd.com";  // GMAIL username
 
- 		$mail->Password   = "smartcost3850";            // GMAIL password
 
- 		
 
- 		$mail->From = "zhzdwd@zhzdwd.com";
 
- 		
 
- 		$mail->FromName   = "=?UTF-8?B?" . base64_encode('纵横知道·问答') . "?=";
 
- 		
 
- 		$mail->Subject    = $subject;
 
- 		
 
- 		$mail->MsgHTML($body);
 
- 		
 
- 		$mail->AddAddress($toemail);
 
- 		
 
- 		$mail->Send();
 
- //	if(!$mail->Send()) {
 
- //		  echo "Mailer Error: " . $mail->ErrorInfo;
 
- //		} else {
 
- //		  echo "Message sent!";
 
- //		}
 
- //		die;
 
- 	}
 
- 	
 
- }
 
- ?>
 
 
  |