認証エリア内でレコード作成日時をさせるプログラムを作ってみました。
今後のアップデートで標準提供されるかもしれませんが、
現状の打開策として参考になれば。
事前に必要な情報
API を使用する際に必要な、API キー,アプリID,DB ID を取得します。
API キーの取得方法
アプリIDの取得方法
※ 「アプリID(appId)の確認」の箇所記載
DBID は、DBの基本設定で確認できます。
PHP
レコード作成日時をAPIで取得して、Thymeleaf に渡す処理です。
PHP 全体<?php
//------------------------------
// 設定値用モジュール
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1/");
define("API_KEY", "");
define("APP_ID", "");
define("DB_ID", "");
// アプリロールで権限設定を反映させたい場合、設定してください。
// API の権限を全権限にしている場合は、設定不要です。
define("API_ROLE", "");
//------------------------------
// 下記から日付の表示形式を選択して、番号を設定してください。
// 1 : 'Y年m月d日 H時i分s秒',
// 2 : 'Y/n/d H:i:s',
// 3 : 'Y-n-d H:i:s',
// 4 : 'Y年m月d日',
// 5 : 'Y/m/d',
//------------------------------/
$dateType = 1;
// 日付の取得に失敗した際の文字を設定してください。
$errorText = "日付の取得に失敗しました。";
// タイムゾーンが違う場合、変更してください。
$timeZone = "Asia/Tokyo";
//------------------------------
//------------------------------
// 以下は変更不要
//------------------------------
// 日付取得処理
//------------------------------
$commonBase = CommonBase::getInstance();
// method : GET(レコード取得)
// https://docs.spiral-platform.com/api/#operation/getRecords
$data = $commonBase->apiGetSearchCurlAction("apps/".APP_ID."/dbs/".DB_ID."/records/".$SPIRAL->getAuthRecordByFieldId("_id"));
if(array_key_exists('status', $data)){
if($data["status"] != 200){
$SPIRAL->setTHValue("createdDate", $errorText);
}
}else{
$datetime = DateTime::createFromFormat(DateTime::ISO8601,$data["item"]["_createdAt"]);
$datetime->setTimezone(new DateTimeZone($timeZone));
$SPIRAL->setTHValue("createdDate", date_format($datetime,$commonBase->dateFormat($dateType)));
}
//------------------------------
// 共通用モジュール
//------------------------------
class CommonBase
{
/**
* シングルトンインスタンス
* @var UserManager
*/
protected static $singleton;
public function __construct()
{
if (self::$singleton) {
throw new Exception('must be singleton');
}
self::$singleton = $this;
}
/**
* シングルトンインスタンスを返す
* @return UserManager
*/
public static function getInstance()
{
if (!self::$singleton) {
return new CommonBase();
} else {
return self::$singleton;
}
}
/**
* V2用 GETWhere Add API送信ロジック
* @return Result
*/
function apiGetSearchCurlAction($addUrlPass, $urlParm = null)
{
$header = array(
"Authorization:Bearer " . API_KEY,
"X-Spiral-Api-Version: 1.1",
"X-Spiral-App-Role: " . API_ROLE,
);
// curl
// echo API_URL . $addUrlPass . "?" . $urlParm;
// echo "<br />";
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, API_URL . $addUrlPass . "?" . $urlParm);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_TIMEOUT_MS, 10000);
$response = curl_exec($curl);
if(json_decode($response)){
return json_decode($response, true);
}else{
return;
}
}
/**
* 日付の形式
* @param type $string
* @return type array
*/
public function dateFormat($id)
{
$dateFormat = array(
"1" => 'Y年m月d日 H時i分s秒',
"2" => 'Y/n/d H:i:s',
"3" => 'Y-n-d H:i:s',
"4" => 'Y年m月d日',
"5" => 'Y/n/d',
);
return $dateFormat[$id];
}
}
実際に導入してもらう際に修正する箇所は下記になります。
PHP 変更箇所//------------------------------
// 設定値用モジュール
//------------------------------
define("API_URL", "https://api.spiral-platform.com/v1/");
define("API_KEY", "");
define("APP_ID", "");
define("DB_ID", "");
// アプリロールで権限設定を反映させたい場合、設定してください。
// API の権限を全権限にしている場合は、設定不要です。
define("API_ROLE", "");
//------------------------------
// 下記から日付の表示形式を選択して、番号を設定してください。
// 1 : 'Y年m月d日 H時i分s秒',
// 2 : 'Y/n/d H:i:s',
// 3 : 'Y-n-d H:i:s',
// 4 : 'Y年m月d日',
// 5 : 'Y/m/d',
//------------------------------/
$dateType = 1;
// 日付の取得に失敗した際の文字を設定してください。
$errorText = "日付の取得に失敗しました。";
// タイムゾーンが違う場合、変更してください。
$timeZone = "Asia/Tokyo";
$dateType の選択によって、表示形式を変更できるような作りになっています。
HTML(Thymeleaf)
PHP より渡された値を下記の形で表示させることができます。
<span th:text="${cp.result.value['createdDate']}">日付</span>
※ Thymeleafでは、下記で値が自動で反映されるため、タグは問いません。
表示させたいタグの中に th:text="${cp.result.value['createdDate']}" をセットしてください。
ソースコードも添付しておきます。
不具合やもっとこうしたほうがいい等あれば、リクエストボードよりご指摘ください。