<?

php

error_reporting(E_ERROR);

date_default_timezone_set('Asia/Shanghai');



$red_server = "http://redmine.meilishuo.com/projects";

$project_name    = "opupdate";

$wiki_name = "故障纪录";

$url        = $red_server . "/$project_name/wiki/wiki.json";













create_wiki($url, "故障记录-" . date('Y-m'), $wiki_name, $message);









function create_wiki( $url, $title, $wiki_name, $message) {

    $level = preg_split('/\//', $title);

    for ( $i = 0; $i <= count($level); $i++) {

        $suffix = ".json";

        if ( $i == 0 ) {

            $url = preg_replace('/wiki.*/i', "wiki/$wiki_name", $url);

        }

        if ( ! strstr($url, $suffix)) {

            $url .= $suffix;

        }

        $page = get_page_content($url, "GET", "");

        $org = json_decode( $page["content"] );

        $org_content = $org->{'wiki_page'}->{'text'};

        if ( 0 == $i ) {

            $check_str = $wiki_name;

            $parent = "Wiki";

        } else {

            $parent = $i == 1 ? $wiki_name : $level[($i-1)];

            $check_str = $level[$i];

        }

        $check_result = strstr($org->{'wiki_page'}->{'text'}, $check_str);

        if ( ! $check_result && 0 == $i ) {

            $new_content = "h1. $check_str\r\n\r\nh2. [[$level[$i]]]";

        } elseif ( count($level) == $i ) {

            $new_content = "h3. " . strftime("%Y-%m-%d %H:%M:%S") . " : \r\n\r\n$message";

        } elseif ( ! $check_result ) {

                $last = $level[($i-1)];

                $new_content = "h1. $last\r\n\r\nh2. [[$level[$i]]]";

        }

        $org_content .= "\r\n\r\n$new_content ";

        $org->{'wiki_page'}->{'text'} = $org_content;

        $org->{'wiki_page'}->{'parent_title'} = $parent;

        $new = json_encode($org);

        if ( isset($new_content) ) {

            $response = get_page_content($url, "PUT", $new);

            if ( 200 == $response['http_code']) {

                print_r("Wiki : $url updated.\n$new\n");

            } elseif ( 201 == $response['http_code']) {

                print_r("Wiki : $url created.\n");

            } else {

                print_r("Failed to update wiki : $url\t" . $response['http_code'] . "\n");

            }

        }

        $url = preg_replace('/wiki.*/i', "wiki/$level[$i]", $url);

    }

}

$page = get_page_content($url, "GET", "");

$org = json_decode( $page["content"] );

if ( ! strstr($org->{'wiki_page'}->{'text'}, $wiki_name) ) {

    $org_content = $org->{'wiki_page'}->{'text'};

    $new_content = "* [[$wiki_name]]";

    $org_content .= "\r\n\r\n$new_content ";

    $org->{'wiki_page'}->{'text'} = $org_content;

    $new = json_encode($org);

    $response = get_page_content($url, "PUT", $new);

    if ( 201 == $response['http_code']) {

        printf("Wiki : $wiki_name created.\n");

    }

}





function get_page_content( $url, $func, $curl_data ) {

    $header = array(

        "X-Redmine-API-Key: 5b01xxxxxxxddddddddddddddddddd",

        "Content-Type: application/json"

    );

    $options = array(

        CURLOPT_HTTPHEADER      => $header,

        CURLOPT_RETURNTRANSFER  => true,         // return web page

        CURLOPT_HEADER          => false,        // don't return headers

        CURLOPT_FOLLOWLOCATION  => true,         // follow redirects

        CURLOPT_ENCODING        => "",           // handle all encodings

        CURLOPT_USERAGENT       => "Release Shell",     // who am i

        CURLOPT_AUTOREFERER     => true,         // set referer on redirect

        CURLOPT_CONNECTTIMEOUT  => 10,          // timeout on connect

        CURLOPT_TIMEOUT         => 10,          // timeout on response

        CURLOPT_MAXREDIRS       => 10,           // stop after 10 redirects

        CURLOPT_CUSTOMREQUEST   => $func,

        CURLOPT_VERBOSE         => 0,                //

        CURLOPT_POSTFIELDS      => $curl_data    // this are my post vars

    );

    if ( "POST" == $func ) {

        $post_opt = array(

            CURLOPT_POST            => 1,            // i am sending post data

        );

        $options = array_merge($options, $post_opt);

    }

    $ch      = curl_init($url);

    curl_setopt_array($ch,$options);

    $content = curl_exec($ch);

    $err     = curl_errno($ch);

    $errmsg  = curl_error($ch) ;

    $header  = curl_getinfo($ch);

    curl_close($ch);

    $header['content'] = $content;

    $header['errmsg'] = $errmsg;

    return $header;

}

最新文章

  1. 超链接的那些事(二): 属性href
  2. ie6下兼容问题
  3. Underscore.js 函数节流简单测试
  4. C#异常处理策略
  5. 【学习笔记】Mac OS X系统介绍
  6. wpf 仿QQ音乐歌词卡拉OK
  7. 百度云推送的Java实现
  8. 我的Android进阶之旅------&gt;Android服务的生命周期回调方法
  9. android如何用adb shell启动应用程序
  10. SQL Server 查看数据库是否存在阻塞
  11. mongodb安装 win7版
  12. .net的retrofit--WebApiClient库深入篇
  13. 使用Vertx构建微服务
  14. Objective-C特有类型——id
  15. Cocos Creator学习一:学习目录以及v2.0 必须关注的网址
  16. day11---函数对象、名称空间、作用域、闭包函数
  17. Java并发编程笔记之CopyOnWriteArrayList源码分析
  18. sqlserver 中通配符%和_的使用
  19. (水题) Div 3 -- SGU -- 105
  20. nilcms file类 简单文件缓存实现

热门文章

  1. 阿里云RDS for SQL Server使用的一些最佳实践
  2. 树莓派配置允许WINDOWS远程桌面 x11nvc+xrdp
  3. c#关键字及ref和out
  4. JAVA的继承,构造函数,窗体
  5. java 导出blob图片到excel
  6. 转-Gitorious搭建步骤
  7. javascript第三章--引用类型
  8. 自动化之路 python psutil模块 收集硬件信息
  9. [最短路]P1339 [USACO09OCT]热浪Heat Wave
  10. Struts1.2,struts2.0原理分析