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