2011-08-05 11 views
1

Metaweblog APIを使用するためのPHPクラスまたはリソースはありますか? 私は、他のアプリケーションを簡単に投稿する(または...)ことができるように(WPのような)私自身のCMSにこのAPIを追加したいPHP MetaWeblog APIサーバ

+0

無回答? :( – RezaSh

+1

私はちょうどこれを見て始めました。それほどたくさんありません(あなただけではありません)が、これが私が始める場所です:http://ryanhemelaar.blogsome.com/2009/ 01/29/using-metaweblog-with-php-xmlrpc/- それは彼が使っているファイルを見ているだけで説明はしていませんが、それはコメントされています – americruiser

答えて

3

Implementation of the MetaWeblog API http://www.xmlrpc.com/metaWeblogApi in PHP.

それを投げる私は、このスクリプトに見えた私は、開発にインスピレーションを得るためリンク私が現在使っている実装。 metaweblog APIの実装例として、以下のサンプルコードを自由に使用してください。ただし、最新のXMLRPCライブラリを使用することを検討してください。私は、サンプルコードが必要とする元の "xmlrpc.php"ファイルの修正版へのリンクを含んでいます。

例コードで使用されるxmlrpcライブラリは、XMLRPC library modified to work with PHP 5.4 - originally written by Keith Devensです。

packagistでクイックパッケージを検索すると、PHP標準に関してはるかに前向きな考え方がたくさんあります。 ZendFramework2 even includes a componentあなたは最小限の依存関係でプロジェクトで使用できます(フレームワーク全体ではなく10個のパッケージ)。このサンプルコードをそのまま使用することを強くお勧めします。新しい開発は現代のXMLRPCライブラリで行うべきです。ケースここでサンプルコードを追加

最初のリンクは、ダイ:

<?php 
/** 
* Skeleton file for MetaWeblog API http://www.xmlrpc.com/metaWeblogApi in PHP 
* Requires Keith Devens' XML-RPC Library http://keithdevens.com/software/xmlrpc and store it as xmlrpc.php in the same folder 
* Written by Daniel Lorch, based heavily on Keith Deven's examples on the Blogger API. 
*/ 

require_once dirname(__FILE__) . '/xmlrpc.php'; 

function metaWeblog_newPost($params) { 
    list($blogid, $username, $password, $struct, $publish) = $params; 
    $title = $struct['title']; 
    $description = $struct['description']; 


    // YOUR CODE: 
    $post_id = 0; // id of the post you just created 


    XMLRPC_response(XMLRPC_prepare((string)$post_id), WEBLOG_XMLRPC_USERAGENT); 
} 

function metaWeblog_editPost($params) { 
    list($postid, $username, $password, $struct, $publish) = $params; 


    // YOUR CODE: 
    $result = false; // whether or not the action succeeded 


    XMLRPC_response(XMLRPC_prepare((boolean)$result), WEBLOG_XMLRPC_USERAGENT); 
} 

function metaWeblog_getPost($params) { 
    list($postid, $username, $password) = $params; 
    $post = array(); 


    // YOUR CODE: 
    $post['userId'] = '1'; 
    $post['dateCreated'] = XMLRPC_convert_timestamp_to_iso8601(time()); 
    $post['title'] = 'Replace me'; 
    $post['content'] = 'Replace me, too'; 
    $post['postid'] = '1'; 


    XMLRPC_response(XMLRPC_prepare($post), WEBLOG_XMLRPC_USERAGENT); 
} 

function XMLRPC_method_not_found($methodName) { 
    XMLRPC_error("2", "The method you requested, '$methodName', was not found.", WEBLOG_XMLRPC_USERAGENT); 
} 

$xmlrpc_methods = array(
    'metaWeblog.newPost' => 'metaWeblog_newPost', 
    'metaWeblog.editPost' => 'metaWeblog_editPost', 
    'metaWeblog.getPost' => 'metaWeblog_getPost' 
    ); 

$xmlrpc_request = XMLRPC_parse($HTTP_RAW_POST_DATA); 
$methodName = XMLRPC_getMethodName($xmlrpc_request); 
$params = XMLRPC_getParams($xmlrpc_request); 

if(!isset($xmlrpc_methods[$methodName])) { 
    XMLRPC_method_not_found($methodName); 
} else { 
    $xmlrpc_methods[$methodName]($params); 
} 
+0

誰かがKeith Devenの図書館を持っていますか? – emd

+0

@emd [this](https://github.com/graemian/keithdevens-xmlrpc)ですが、この時点で私はちょっと時間があれば、http:// gggeekに対してこれを書き直すつもりです。 .github.io/phpxmlrpc/ – AndrewPK

+0

ありがとう@andrewpk、Iiはこれを見つけました:http://scripts.incutio.com/xmlrpc/使い方が簡単でしたので、私はそれを使用しました。 – emd

関連する問題