0

0

基于Thinkphp3.2的多说评论扩展类

php中文网

php中文网

发布时间:2016-06-07 11:39:16

|

1307人浏览过

|

来源于php中文网

原创

基于Thinkphp3.2的多说评论扩展类
这个有什么不足的地方修改,希望各位多指出来 // +----------------------------------------------------------------------
// | Copyright (c) 2009 http://826v.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: qiandutianxia 
// +----------------------------------------------------------------------
namespace Org\Util;
/**
 *  多说评论扩展类
 */
class Duoshuo {
    // 站点注册的多说二级域名
    private $short_name;
    //站点密钥
    private $secret;

    public function __construct(){
        $this->short_name="826v";
        $this->secret="c9a0ab2eada36f2ef4674cd899865c92";
    }

    /**
     * 获取文章评论、转发数
     * @param  id(int) 文章id
     * return response(json) 包含评论数和转发数
     **/
    public function getComments($id){
        $url="http://api.duoshuo.com/threads/counts.json";
        $param['short_name']=$this->short_name;
        $param['threads']=$id;
        $param =http_build_query($param,'','&');
        $url=$url."?".$param;
        $response=$this->getUrl($url);
        if(empty($response)) exit("返回结果错误");
        if(json_decode($response)->code==0){
            return $response;
        }else{
            exit(json_decode($response)->errorMessage);
        }
    }

    /**
     * 获取热评文章
     * @param range 可选值daily:每日热评文章 weekly:每周热评文章 monthly:每月热评文章;all:总热评文章
     * @param num_items(int)评论的条数 默认是5条
     * @param channel_key(int) 文章所属分类
     * return response(json) 包含文章的id,title等信息
     **/
    public function getTop($range="all",$num_items=5,$channel_key=""){
        $url="http://api.duoshuo.com/sites/listTopThreads.json";
        $param['short_name']=$this->short_name;
        $param['range']=$range;
        $param['num_items']=$num_items;
        $param['channel_key']=$channel_key;
        $param =http_build_query($param,'','&');
        $url=$url."?".$param;
        $response=$this->getUrl($url);
        if(empty($response)) exit("返回结果错误");
        if(json_decode($response)->code==0){
            return $response;
        }else{
            exit(json_decode($response)->errorMessage);
        }
    }

    /**
     * 获取文章评论
     * @param range 可选值daily:每日热评文章 weekly:每周热评文章 monthly:每月热评文章;all:总热评文章
     * @param id(int) 文章id
     * @param page(int) 获取第几页
     * @param limit(int) 每一页显示的条数
     * @param order(string)  返回的评论的排序规则,可选择desc或者asc,默认是desc
     * return response(json)
     **/
    public function getComment($id,$page,$limit,$order="desc"){
        $url="http://api.duoshuo.com/threads/listPosts.json";
        $param['short_name']=$this->short_name;
        $param['thread_key']=$id;
        $param['page']=$page;
        $param['limit']=$limit;
        $param['order']=$order;
        $param =http_build_query($param,'','&');
        $url=$url."?".$param;
        $response=$this->getUrl($url);
        if(empty($response)) exit("返回结果错误");
        if(json_decode($response)->code==0){
            return $response;
        }else{
            exit(json_decode($response)->errorMessage);
        }
    }

    /**
     * 获取多说用户信息
     * @param id 用户id
     * return response(json)
     **/
    public function getUsrInfo($id){
        $url="http://api.duoshuo.com/users/profile.json";
        $param['user_id']=$id;
        $param =http_build_query($param,'','&');
        $url=$url."?".$param;
        $response=$this->getUrl($url);
        if(empty($response)) exit("返回结果错误");
        if(json_decode($response)->code==0){
            return $response;
        }else{
            exit(json_decode($response)->errorMessage);
        }
    }

    /**
     * 同步用户到多说
     * @param usr(array) 是一个数组可以是一维数组也可以是二维
     * 例如:$usr['user_key']=1111  这个一般就是用户数据库的ID
     * $usr['name']="zhangsan" 这个一般就是用户数据库的name
     * 可选参数role(角色),avatar_url(头像),url(网站),email(邮箱),created_at(时间)
     **/
    public function syncUsr($usr){
        $url="http://api.duoshuo.com/users/import.json";
        $param['short_name']=$this->short_name;
        $param['secret']=$this->secret;
        $s=$this->isOneOrTwo($usr);
        if($s==1){
            $param['users'][]=$usr;
        }else{
            foreach($usr as $k=>$v){
                $param['users']=$v;
            }
        }
        $param =http_build_query($param,'','&');
        $response=$this->postUrl($url,$param);
        if(empty($response)) exit("返回结果错误");
        if(json_decode($response)->code==0){
            return $response;
        }else{
            exit(json_decode($response)->errorMessage);
        }
    }

    /**
     * SSO登录用户同步到多说
     * 多说的js代码中设置回调登录地址 然后回调地址中有code
     **/
    public function ssoSync($code){
        $url="http://api.duoshuo.com/sites/join.json";
        $param['short_name']=$this->short_name;
        $param['code']=$code;
        $param =http_build_query($param, '', '&');
        $response=$this->postUrl($url,$param);
        if(empty($response)) exit("返回结果错误");
        if(json_decode($response)->code==0){
            return $response;
        }else{
            exit(json_decode($response)->errorMessage);
        }
    }

    //判断是几维数组
    private function isOneOrTwo($arr){
        if(is_array($arr)){
            $s=1;
            foreach($arr as $v){
                if(is_array($v)){
                    $s=2;
                    break;
                }
            }
            return $s;
        }else{
            exit("数组错误");
        }
    }

    //CURL GET
    private function getUrl($url){
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        if (!empty($options)){
            curl_setopt_array($ch, $options);
        }
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }

    //CURL POST
    private function postUrl($url,$post_data){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        ob_start();
        curl_exec($ch);
        $result = ob_get_contents();
        ob_end_clean();
        return $result;
    }
}

AD:真正免费,域名+虚机+企业邮箱=0元

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

29

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

20

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

37

2025.12.25

word转换成ppt教程大全
word转换成ppt教程大全

本专题整合了word转换成ppt教程,阅读专题下面的文章了解更多详细操作。

6

2025.12.25

msvcp140.dll丢失相关教程
msvcp140.dll丢失相关教程

本专题整合了msvcp140.dll丢失相关解决方法,阅读专题下面的文章了解更多详细操作。

2

2025.12.25

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

6

2025.12.25

微信调黑色模式教程
微信调黑色模式教程

本专题整合了微信调黑色模式教程,阅读下面的文章了解更多详细内容。

5

2025.12.25

ps入门教程
ps入门教程

本专题整合了ps相关教程,阅读下面的文章了解更多详细内容。

4

2025.12.25

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

218

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.2万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号