現在取り組んでいるプロジェクトに関する重要な情報を表示する必要がある Basecamp ウィジェットに取り組んでいます。この問題に関する関連する詳細なドキュメントが見つからなかったため、コミュニティに助けを求めたいと思います。
私の状況
現在、すでにプロジェクトをエコーしています。このデータには次が含まれています。
- プロジェクト名
- 説明
- プロジェクト ID
また、To Do アイテムについては、次のデータをエコーします。
- 残りのToDoアイテム
- 完了した To Do アイテム
- ToDo アイテムの合計
- パーセンテージでの進行
私の目標
個々のプロジェクトに取り組んでいるすべての人のアバターを表示したいと思います。この種のプログラミングは私にとってかなり新しいものなので、この問題に関するガイダンスをいただければ幸いです。Basecamp の人気が高まっているため、この情報に関心を持つ人が増えると思います。私は Basecamp の API を参照し、プロジェクト メンバーのエコーを試みるために小さな部分を書きましたが、無駄でした。
よろしくお願いします。
乾杯、
ジン
(投稿スクリプト:これは私が今まで持っている完全なソースです。一部の値は、資格情報などのデータを隠すために意図的に変更されています。長い投稿で申し訳ありません。できるだけ簡潔にしようとしました)
認証とプロジェクト データの取得
$appName = 'MyAppName';
$appContact = 'MyAddress';
$basecampAccountId = 'MyAccountID';
$basecampUsername = 'MyBaseCampUsername';
$basecampPassword = 'MyPassword';
$baseUrl = "https://basecamp.com/************/api/v1";
$url= $baseUrl.'/projects.json';
$credentials = "$basecampUsername:$basecampPassword";
$helloHeader = "User-Agent: $appName ($appContact)";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, $credentials);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //optional
curl_setopt($ch, CURLOPT_MAXREDIRS, 3); //optional
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); //optional
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //optional
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); //optional
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($helloHeader));
$response = curl_exec($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
curl_close($ch);
To Do リストの取得
$json = $response;
$data = json_decode($json);
/*echo "<br/><br/>";*/
foreach($data as $key)
{
echo "<ul>";
echo "<li>".$key->name."</li>";
echo "<li>".$key->id."</li>";
echo "<li>".$key->description."</li>";
$url= $baseUrl.'/projects/'.$key->id.'/todolists.json';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, $credentials);
// curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //optional
curl_setopt($ch, CURLOPT_MAXREDIRS, 3); //optional
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); //optional
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //optional
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); //optional
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($helloHeader));
$response = curl_exec($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
curl_close($ch);
// print_r($response);
$json = $response;
$data = json_decode($json);
$todo_remain = $data[0]->remaining_count;
$todo_completed = $data[0]->completed_count;
$todo_total = $todo_remain + $todo_completed;
echo "<BR>";
echo "<BR>";
echo "Remaining To-Do Items:";
echo "<BR>";
echo $todo_remain;
echo "<BR>";
echo "Completed To-Do Items:";
echo "<BR>";
echo $todo_completed;
echo "<BR>";
echo "Total To-Do Items:";
echo "<BR>";
echo $todo_total;
echo "<BR>";
echo "Remaining percentage is: <BR>";
echo round(($todo_remain/$todo_total)*100);
echo "%";
echo "<BR>";
echo "Completed percentage is: <BR>";
echo round(($todo_completed/$todo_total)*100);
echo "%";
echo "</ul>";