dedecms增加微信公众号平台发布插件

现在微信公众号很火,基本是个网站都会再运营一个公众号,因此我们用DEDECMS建站也需要与时俱进对接进入公众号功能,在公众号发布文章,提高用户粘度

  1. 把以下代码保存为winxin.php放到dede程序的plus目录下.

代码如下   

  <?php     define("TOKEN", "weixin");  require_once(dirname(__FILE__)."/..//common.inc.php");    $dsql = new DedeSql(false);  $wechatObj = new wechatCallback();  $wechatObj->valid();     class wechatCallback  {      private $items = '';      private $articleCount = 0;      private $key = '';      public function valid()      {          $echoStr = $_GET["echostr"];             //valid signature , option          if($this->checkSignature()){           echo $echoStr;              $this->responseMsg();              exit;          }      }         public function responseMsg()      {    //get post data, May be due to the different environments    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];            //extract post data    if (!empty($postStr)){                    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);                  $fromUsername = $postObj->FromUserName;                  $toUsername = $postObj->ToUserName;                  $this->keyword = strtolower(trim(("UTF-8","gb2312",$postObj->Content)));                     $time = time();                  $textTpl = "<xml>         <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>         <FromUserName><![CDATA[".$toUsername."]]></FromUserName>         <CreateTime>".$time."</CreateTime>         <MsgType><![CDATA[text]]></MsgType>         <Content><![CDATA[%s]]></Content>         <FuncFlag>0</FuncFlag>         </xml>";                      $picTpl = "<xml>                               <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>                               <FromUserName><![CDATA[".$toUsername."]]></FromUserName>                               <CreateTime>".$time."</CreateTime>                               <MsgType><![CDATA[news]]></MsgType>                               <Content><![CDATA[]]></Content>                               <ArticleCount>%d</ArticleCount>                               <Articles>                               %s                               </Articles>                               <FuncFlag>1</FuncFlag>                              </xml>";                  if($this->keyword == 'hi' || $this->keyword == '您好'  || $this->keyword == '你好' ||$this->keyword == 'hello2bizuser' ){                   $contentStr = "输入关键字开始搜索!";//自定义欢迎回复;                   echo sprintf($textTpl, $contentStr);                  }else if( !empty( $this->keyword )){                      $this->search();                      if($this->articleCount == 0){                          $contentStr = "抱歉,没有找到与【{$this->keyword}】相关的文章,要不你更换一下关键字,可能就有结果了哦 :-) ";                          echo sprintf($textTpl, $contentStr);                      }else{                          echo sprintf($picTpl,$this->articleCount,$this->items);                      }                  }             }else {           echo "";           exit;          }      }         private function search(){          global $dsql;          $weixin_posts = $dsql->SetQuery("Select * From `dede_archives` where title like '%".$this->keyword."%' order by id desc LIMIT 0, 5");          $items = '';    $dsql->Execute();       while($weixin_post=$dsql->GetObject()){                     $title =$weixin_post->title;              $excerpt = $weixin_post->description ;//获取摘要              $thumb = $weixin_post->litpic ;//获取;              $link = '/plus/view.php?aid='.$weixin_post->id;              $items = $items . $this->get_item($title, $excerpt, $thumb, $link);       $this->articleCount++;        }          if($this->articleCount > 5) $this->articleCount = 5;             $this->items = $items;      }         private function get_item($title, $description, $picUrl, $url){          if(!$description) $description = $title;             return          '          <item>              <Title><![CDATA['.$title.']]></Title>              <Discription><![CDATA['.$description.']]></Discription>              <PicUrl><![CDATA[http://'.$_SERVER['HTTP_HOST'].$picUrl.']]></PicUrl>              <Url><![CDATA[http://'.$_SERVER['HTTP_HOST'].$url.']]></Url>          </item>          ';      }         private function checkSignature()      {          $signature = $_GET["signature"];          $timestamp = $_GET["timestamp"];          $nonce = $_GET["nonce"];                $token = TOKEN;          $tmpArr = array($token, $timestamp, $nonce);          sort($tmpArr);          $tmpStr = implode( $tmpArr );          $tmpStr = sha1( $tmpStr );             if( $tmpStr == $signature ){              return true;          }else{              return false;          }      }  }

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容