<?
// php を使って twitter と moco の public_timelineをハンドリングするサンプル
// このプログラムについての質問がありましたら、下記まで
// 問合せ先:りょーち http://ryouchi.seesaa.net/
// 以下説明っす。

// httpプロトコルでデータを取得する際に利用
// 下記においてあります
// http://www.usamimi.info/~ryouchi/mogo_twitter/proxy.phps
// 利用する際は proxy.phps を proxy.php にリネームしてね
include('proxy.php');

definePAGE_TITLE    "Twitter と Mogo2 の API が激似な件" );
defineNOT_CONNECT_MESSAGE "サーバ死亡中?・・・orz");

// Twitter関連設定
defineTW_USER    "twuser" );
defineTW_PASS    "twpass" );
defineTW_BASE    "http://twitter.com/" );
defineTW_ENDPOINT    "http://twitter.com/statuses/public_timeline.xml" );

// MOGO2関連設定
defineMOGO_USER    "user@gmail.com" );
defineMOGO_PASS    "mogopass" );
defineMOGO_BASE    "http://mogo2.jp/" );
defineMOGO_ENDPOINT    "http://api.mogo2.jp/statuses/public_timeline.xml" );

// proxy を利用する場合は 1。しない場合は0で。
$use_proxy 0;
// proxyのホスト名を記載
$proxy_host 'proxy.example.com';
// proxyのポート名を記載
$proxy_port 8080;
$no_proxy = array(
'localhost',        // localhost 
'127.0.0.0/8',      // loopback
);

if (
$use_proxy==1){
    
// proxyを使うならcurlのPROXY_HOSTを下記に設定
    
definePROXY_HOST    "http://".$proxy_host.":".$proxy_port );
}

// public Timeline取得 (TwitterとMogo2ではエンドポイントが違うだけ?)
// 認証の部分は面倒だが、curlを使って認証して、データを取得
function getPublicTimeline($system $username$password){
    if (
$system == "twitter"){
        
$endpoint_uri TW_ENDPOINT;
    }else{
        
$endpoint_uri MOGO_ENDPOINT;
    }
    
$ch curl_init(); 
    
curl_setopt($chCURLOPT_URL"$endpoint_uri"); 
    
curl_setopt($chCURLOPT_CONNECTTIMEOUT2); 
    
curl_setopt($chCURLOPT_RETURNTRANSFER1); 
    
curl_setopt($chCURLOPT_POST1); 
    
curl_setopt($chCURLOPT_USERPWD"$username:$password"); 
    if(
defined ('PROXY_HOST')){
        
curl_setopt($chCURLOPT_PROXYPROXY_HOST);
    }
    
$buffer curl_exec($ch); 
    
curl_close($ch); 
    return (
$buffer);
}

// 取得したXMLを表示(同じ形式で出力されるっぽい)
function view_xml($system $xml){
    foreach (
$xml as $item){
        
$screen_name $item->user->screen_name;
        
$id $item->user->id;
        
$icon_uri $item->user->profile_image_url;
        
$text =  $item->text;
        
// twitter と Mogo2ではベースURIが違うっぽいので分けてみる。
        // ほんとは twitter 用と Mogo2 用で関数を分離したほうが早いはず
        // (これだとforeachで毎回分岐してるもんね)
        // 今回はどのくらい似ているのか検証するためだけのモノなので・・・
        
if ($system == "twitter"){
            
$URI TW_BASE.$screen_name;
        }else{
            
$URI MOGO_BASE.$id;
        }
        echo 
'<a href="'.$URI.'" target="_blank"><img src="'.$icon_uri.'" alt="'.$system.' で '.$screen_name.' を確認" valign="top" /></a><br />'.$text."<br />";
    }
}
?>
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title><?php echo PAGE_TITLE?></title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h1><a href="./"><?php echo PAGE_TITLE?></a></h1>
<dl>
<dt>このプログラムのソース</dt>
<dd>
    <a href="./index.phps" target="_blank">index.php</a><br />
    <a href="./proxy.phps" target="_blank">proxy.php</a>
</dd>
</dl>
<div id="container" >
<div style="width:40%;float:left">
<h3><a href="http://twitter.com/public_timeline" target="_blank">Twitter</a></h3>
<?php
    
// Twitter情報取得
    
$data getPublicTimeline("twitter" TW_USER TW_PASS);
    
// XML取得
    
$xml = @simplexml_load_string($data) or die (NOT_CONNECT_MESSAGE);
    
// XML表示
    
view_xml("twitter" $xml);
?>
</div>
<div style="width:40%">
<h3><a href="http://mogo2.jp/top" target="_blank">MogoMogo</a></h3>
<?php
    
// Mogo2情報取得
    
$data getPublicTimeline("Mogo2" MOGO_USER MOGO_PASS);
    
// XML取得
    
$xml = @simplexml_load_string($data) or die (NOT_CONNECT_MESSAGE);
    
// XML表示
    
view_xml("Mogo2" $xml);
?>
</div>
</div>
</body>
</html>