現在、Clarizen のすべてのアクティブなプロジェクトのリストを取得して、そのタスクのいくつかのプロパティを変更できるようにしようとしています。Clarizen API を読みましたが、PHP クエリに関する情報はあまりありません。これまでのところ、すべてのプロジェクトにクエリを実行し、それらのステータスを 1 つずつテストすることができました。私は何千ものプロジェクトを持っており、それらのすべてが一度にリストされるわけではないので、実際にはこれは良いアプローチではありません。コードは次のとおりです。
//LOGIN PROCCESS
$soapUrl = 'https://api.clarizen.com/v1.0/Clarizen.svc?WSDL';
$soapApiUrl = 'http://clarizen.com/api';
$soapConfig = array('exceptions' => 1);
$request = array();
$params = array(
'userName' => $username,
'password' => $password
);
$client = new SoapClient($soapUrl, $soapConfig);
$response = $client->Login($params);
$sessionId = $response->LoginResult->SessionId;
$userId = $response->LoginResult->UserId;
//Create a SOAP header containing the session ID for future requests
$header = new SoapHeader($soapApiUrl, 'Session', array("ID"=>$sessionId));
$client->__setSoapHeaders($header);
//Create a Query object
$userQuery = new stdClass();
//Set the name of the entity type you are querying
$userQuery->TypeName = 'Project';
//Select the fields you want retrieved from that entity
$userQuery->Fields = array('Name', 'State');
/* Doesnt work...*/
/*
$userQuery->Where = new stdClass();
$userQuery->Where->LeftExpression = new stdClass();
$userQuery->Where->LeftExpression->FieldName = 'State';
$userQuery->Where->Operator = 'Equal';
$userQuery->Where->RightExpression = new stdClass();
$userQuery->Where->RightExpression->Value = new stdClass();
$userQuery->Where->RightExpression->Value->TypeName = 'State';
$userQuery->Where->RightExpression->Value->Value = 'Active';
*/
$request[] = new SoapVar($userQuery, SOAP_ENC_OBJECT, 'EntityQuery', 'http://clarizen.com/api/queries');
//Execute the request
$result = $client->Execute(array("request"=>$request));
3 つの質問は次のとおりです。
- 「WHERE」句を使用してPHPでクエリを実行する正しい方法は何ですか?
- このプロジェクトのタスクを取得し、たとえばストップウォッチを作成する方法。
- hasMore フラグが 0 になるまでクエリを続行する方法、またはすべてを一度に取得する方法はありますか?
前もって感謝します。