キャッシュデータの作成

諏訪子 <suwako@076.moe>、2026-04-27 14:22
コミット 5b1a9c51bf324b66a7c3516c2b7b2b274b7d8464 ・親 1bc9e59 ・ファイルを見る

9個のファイル、+218 -147

変更 route.php
@@ -60,7 +60,7 @@
6060
6161 if (OPENPROVIDER_ENABLED) {
6262 $routes[] = Route::add('GET', 'openprovider', Op::class.'@index');
63- $routes[] = Route::add('GET', 'openprovider/searchcustomer', Op::class.'@opSearchCustomers');
63+ $routes[] = Route::add('GET', 'openprovider/listcustomer', Op::class.'@opListCustomers');
6464 $routes[] = Route::add('GET', 'openprovider/listtlds', Op::class.'@opListTlds');
6565 $routes[] = Route::add('GET', 'openprovider/gettld/{tld}', Op::class.'@opGetTld');
6666 $routes[] = Route::add('GET', 'openprovider/checkdomain', Op::class.'@opCheckDomainAvailable');
@@ -39,7 +39,7 @@
3939 }
4040 }
4141
42- public function opSearchCustomers(array $params): void {
42+ public function opListCustomers(array $params): void {
4343 try {
4444 $tmpl = new Template('/openprovider/');
4545 $pagetit = 'OpenProvider管理 - 顧客様検索';
@@ -59,11 +59,11 @@
5959 if (!$user || $user->role !== \Roles::ADMIN) goto noaccess;
6060 $op = new Openprovider();
6161 $op->login();
62- $data = $op->searchCustomers();
63- $tmpl->assign('data', $data);
62+ $data = $op->listCustomers();
63+ $tmpl->assign('data', $data->data);
6464
6565 $tmpl->addCss('table');
66- $tmpl->render('searchcustomer');
66+ $tmpl->render('listcustomer');
6767 exit();
6868
6969 noaccess:
@@ -94,7 +94,7 @@
9494 $op = new Openprovider();
9595 $op->login();
9696 $data = $op->listTlds();
97- $tmpl->assign('data', $data);
97+ $tmpl->assign('data', $data->data);
9898
9999 $tmpl->addCss('table');
100100 $tmpl->render('listtlds');
@@ -134,7 +134,7 @@
134134 $op = new Openprovider();
135135 $op->login();
136136 $data = $op->getTld($tld);
137- $tmpl->assign('data', $data);
137+ $tmpl->assign('data', $data->data);
138138
139139 $tmpl->addCss('table');
140140 $tmpl->render('gettld');
@@ -168,7 +168,7 @@
168168 $op = new Openprovider();
169169 $op->login();
170170 $data = $op->listDomains($domains, true);
171- $tmpl->assign('data', $data);
171+ $tmpl->assign('data', $data->data);
172172
173173 $tmpl->assign('saved', $saved);
174174
@@ -209,7 +209,7 @@
209209 $op->login();
210210 if (!empty($domains)) {
211211 $data = $op->checkDomainAvailable($domains, true);
212- $tmpl->assign('data', $data);
212+ $tmpl->assign('data', $data->data);
213213 $saved = $_GET['domains'];
214214 }
215215
@@ -251,7 +251,7 @@
251251 $op = new Openprovider();
252252 $op->login();
253253 $data = $op->getDomainPrices(['domain.name' => $domainname, 'domain.extension' => $domainext]);
254- $tmpl->assign('data', $data);
254+ $tmpl->assign('data', $data->data);
255255
256256 $tmpl->addCss('table');
257257 $tmpl->render('getdomainprices');
@@ -285,7 +285,7 @@
285285 $op = new Openprovider();
286286 $op->login();
287287 $data = $op->listDnsZones();
288- $tmpl->assign('data', $data);
288+ $tmpl->assign('data', $data->data);
289289
290290 $tmpl->addCss('table');
291291 if ($user && $user->role & (\Roles::ADMIN)) $tmpl->render('listdnszones');
@@ -326,7 +326,7 @@
326326 $op = new Openprovider();
327327 $op->login();
328328 $data = ['rec' => $op->listZoneRecords($domain), 'zone' => $op->getDnsZone($domain)];
329- $tmpl->assign('data', $data);
329+ $tmpl->assign('data', $data->data);
330330
331331 $tmpl->addCss('table');
332332 $tmpl->render('getdns');
@@ -4,15 +4,15 @@
44 use Std\Lib\Curl;
55
66 class Openprovider {
7- protected string $dataFile = ROOT."/data/session.json";
7+ protected string $dataDir = ROOT."/data/cache/";
88 protected int $tokenDuration = 172800; // 48時間
99
1010 private string $user = '';
1111 private string $pass = '';
1212 private string $token = '';
1313 private string $ip = '';
14- private int $reseller_id = 0;
15- private int $last_auth = 0;
14+ private int $resellerId = 0;
15+ private int $lastAuth = 0;
1616 private string $BASEURL = DEBUG_MODE ? 'http://api.sandbox.openprovider.nl:8480/v1beta'
1717 : 'https://api.openprovider.eu/v1beta';
1818
@@ -27,14 +27,18 @@
2727 * トークンの受け取り。
2828 * このライブリリーを使ったら、一回「login()」を実行する事が必須となります。
2929 *
30- * @return Result|false 結果
30+ * @return Result 結果
3131 */
32- public function login(): \Result|false {
32+ public function login(): \Result {
3333 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
34- $this->getCache();
35- if (time() < ($this->last_auth + $this->tokenDuration)) return false;
36- $curl = new Curl("{$this->BASEURL}/auth/login");
34+ $cache = $this->getCache('login');
35+ if (time() < ($this->lastAuth + $this->tokenDuration)) {
36+ $this->token = $cache['data']['token'];
37+ $this->lastAuth = $cache['last_auth'];
38+ return \Result::Success('', $cache);
39+ }
3740
41+ $curl = new Curl("{$this->BASEURL}/auth/login");
3842 $payload = [
3943 'username' => $this->user,
4044 'password' => $this->pass,
@@ -62,17 +66,17 @@
6266 }
6367 assert_not_null($body, "返事ボディーは空です。");
6468
65- $data = json_decode($body, true);
66- if (isset($data['data']['token'])) {
67- $this->token = $data['data']['token'];
68- $this->last_auth = time();
69- $this->reseller_id = $data['data']['reseller_id'];
70- $this->mkCache();
69+ $res = json_decode($body, true);
70+ if (isset($res['data']['token'])) {
71+ $this->token = $res['data']['token'];
72+ $this->lastAuth = time();
73+ $res['last_auth'] = $this->lastAuth;
74+ $this->setCache('login', $res);
7175
72- return \Result::Success();
76+ return \Result::Success('', $res);
7377 }
7478
75- return \Result::Error("ログインに失敗。");
79+ return \Result::Error('ログインに失敗。');
7680 }
7781
7882 // カスタマー
@@ -84,15 +88,21 @@
8488 /***
8589 * ドメイン一覧。
8690 *
87- * @return Result|array 結果。
91+ * @return Result 結果。
8892 */
89- public function listDomains(array $query = []): \Result|array {
93+ public function listDomains(array $query = []): \Result {
9094 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
95+ $cache = $this->getCache('listdomains');
96+ if (!empty($cache)) return \Result::Success('', $cache);
97+
9198 $curl = $this->setupCurl('/domains');
92- $data = $this->curlResult($curl);
93- if (isset($data['data']['results'])) return $data['data']['results'];
99+ $res = $this->curlResult($curl);
100+ if (isset($res['data']['results'])) {
101+ $this->setCache('listdomains', $res->data);
102+ return \Result::Success('', $res['data']['results']);
103+ }
94104
95- return \Result::Error("ドメインの確認に失敗。");
105+ return \Result::Error('ドメインの確認に失敗。');
96106 }
97107
98108 /**
@@ -101,9 +111,9 @@
101111 * @param string $name 登録したいドメイン名(例:"076studio.jp")
102112 * @param array $info カスタマー情報等
103113 * @param int $period 年間(デフォルト=1年)
104- * @return Result|array 結果。配列の場合:'activation_date'(リアルタイムで成功したのみ), 'auth_code'(TLDが対応している場合のみ), 'expiration_date', 'id', 'renewal_date', 'status'(ACT又はREQ)
114+ * @return Result 結果。配列の場合:'activation_date'(リアルタイムで成功したのみ), 'auth_code'(TLDが対応している場合のみ), 'expiration_date', 'id', 'renewal_date', 'status'(ACT又はREQ)
105115 */
106- public function createDomain(string $name, array $info, int $period = 1): \Result|array {
116+ public function createDomain(string $name, array $info, int $period = 1): \Result {
107117 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
108118 if (!isset($info['owner_handle']) || $info['owner_handle'] === '') $info['owner_handle'] = OPENPROVIDER['owner_handle'];
109119 if (!isset($info['admin_handle']) || $info['admin_handle'] === '') $info['admin_handle'] = OPENPROVIDER['owner_handle'];
@@ -142,10 +152,10 @@
142152
143153 $curl = $this->setupCurl('/domains/', 'POST', $payload);
144154 kys('TODO');
145- $data = $this->curlResult($curl);
146- if (isset($data['data'])) return $data['data'];
155+ $res = $this->curlResult($curl);
156+ if (isset($res['data'])) return \Result::Success('', $res);
147157
148- return \Result::Error("ドメインの確認に失敗。");
158+ return \Result::Error('ドメインの確認に失敗。');
149159 }
150160
151161 /***
@@ -153,9 +163,9 @@
153163 *
154164 * @param array $domains ドメイン名リスト。例:['076.moe', '076.co.jp', '076.com']
155165 * @param bool $with_price 値段を表示するかどうか。デフォルトは「false」
156- * @return Result|array 結果。配列の場合:'domain'と'status'はいつでもあり、'reason', 'premium', 'is_premium'が多分あり、そして'price'が「with_price」が「true」の場合のみ。
166+ * @return Result 結果。配列の場合:'domain'と'status'はいつでもあり、'reason', 'premium', 'is_premium'が多分あり、そして'price'が「with_price」が「true」の場合のみ。
157167 */
158- public function checkDomainAvailable(array $domains, bool $with_price = false): \Result|array {
168+ public function checkDomainAvailable(array $domains, bool $with_price = false): \Result {
159169 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
160170 $domainList = [];
161171 foreach ($domains as $d) {
@@ -178,10 +188,10 @@
178188 ];
179189
180190 $curl = $this->setupCurl('/domains/check', 'POST', $payload);
181- $data = $this->curlResult($curl);
182- if (isset($data['data']['results'])) return $data['data']['results'];
191+ $res = $this->curlResult($curl);
192+ if (isset($res['data']['results'])) return \Result::Success('', $res['data']['results']);
183193
184- return \Result::Error("ドメインの確認に失敗。");
194+ return \Result::Error('ドメインの確認に失敗。');
185195 }
186196
187197 //// 追加データ
@@ -192,18 +202,24 @@
192202 * 顧客様の検索
193203 *
194204 * @param array $query 検索クエリー
195- * @return Result|array
205+ * @return Result
196206 */
197- public function searchCustomers(array $query = []): \Result|array {
207+ public function listCustomers(array $query = []): \Result {
198208 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
199- foreach ($query as $k => $v) { if (is_bool($v)) $query[$k] = $v ? '1' : '0'; }
209+ $cache = $this->getCache('listcustomer');
210+ if (!empty($cache) && (isset($cache['query']) && $cache['query'] === $query)) return \Result::Success('', $cache);
200211
212+ foreach ($query as $k => $v) { if (is_bool($v)) $query[$k] = $v ? '1' : '0'; }
201213 $uri = '/customers?'.http_build_query($query, '', '&', PHP_QUERY_RFC3986);
202214 $curl = $this->setupCurl($uri);
203- $data = $this->curlResult($curl);
204- if (isset($data['data'])) return $data['data'];
215+ $res = $this->curlResult($curl);
216+ if (isset($res->data['data'])) {
217+ $res->data['query'] = $query;
218+ $this->setCache('listcustomer', $res->data);
219+ return \Result::Success('', $res->data);
220+ }
205221
206- return \Result::Error("TLD一覧の受け取りに失敗。");
222+ return \Result::Error('TLD一覧の受け取りに失敗。');
207223 }
208224
209225 //// ドメイン値段
@@ -212,16 +228,28 @@
212228 * ドメイン値段一覧
213229 *
214230 * @param array $query 検索クエリー
215- * @return Result|array
231+ * @return Result
216232 */
217- public function getDomainPrices(array $query): \Result|array {
233+ public function getDomainPrices(array $query): \Result {
218234 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
235+ $name = '';
236+ $ext = '';
237+ if (isset($query['domain.name'])) $name = $query['domain.name'];
238+ if (isset($query['domain.extension'])) $ext = $query['domain.extension'];
239+ $cacheName = $name && $ext ? "domainprices-{$name}.{$ext}" : 'domainprices';
240+
241+ $cache = $this->getCache($cacheName);
242+ if (!empty($cache)) return \Result::Success('', $cache);
243+
219244 $uri = "/domains/prices?".http_build_query($query, '', '&', PHP_QUERY_RFC3986);
220245 $curl = $this->setupCurl($uri);
221- $data = $this->curlResult($curl);
222- if (isset($data['data'])) return $data['data'];
246+ $res = $this->curlResult($curl);
247+ if (isset($res->data['data'])) {
248+ $this->setCache($cacheName, $res->data);
249+ return \Result::Success('', $res->data);
250+ }
223251
224- return \Result::Error("TLD一覧の受け取りに失敗。");
252+ return \Result::Error('TLD一覧の受け取りに失敗。');
225253 }
226254
227255 //// 認証コード
@@ -232,22 +260,25 @@
232260 * TLD一覧
233261 *
234262 * @param array $query 検索クエリー
235- * @return Result|array
263+ * @return Result
236264 */
237- public function listTlds(array $query = []): \Result|array {
265+ public function listTlds(array $query = []): \Result {
238266 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
267+ $cache = $this->getCache('listtlds');
268+ if (!empty($cache)) return \Result::Success('', $cache);
269+
239270 if (empty($query)) $query = [ 'limit' => 10, 'offset' => 0, 'order' => 'ASC' ];
271+ foreach ($query as $k => $v) if (is_bool($v)) $query[$k] = $v ? '1' : '0';
240272
241- foreach ($query as $k => $v) {
242- if (is_bool($v)) $query[$k] = $v ? '1' : '0';
243- }
244-
245273 $uri = '/tlds?'.http_build_query($query, '', '&', PHP_QUERY_RFC3986);
246274 $curl = $this->setupCurl($uri);
247- $data = $this->curlResult($curl);
248- if (isset($data['data'])) return $data['data'];
275+ $res = $this->curlResult($curl);
276+ if (isset($res->data['data'])) {
277+ $this->setCache('listtlds', $res->data);
278+ return \Result::Success('', $res->data);
279+ }
249280
250- return \Result::Error("TLD一覧の受け取りに失敗。");
281+ return \Result::Error('TLD一覧の受け取りに失敗。');
251282 }
252283
253284 /**
@@ -255,22 +286,25 @@
255286 *
256287 * @param string $tld TLD
257288 * @param array $query 検索クエリー
258- * @return Result|array
289+ * @return Result
259290 */
260- public function getTld(string $tld, array $query = []): \Result|array {
291+ public function getTld(string $tld, array $query = []): \Result {
261292 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
293+ $cache = $this->getCache("gettld-{$tld}");
294+ if (!empty($cache)) return \Result::Success('', $cache);
295+
262296 if (empty($query)) $query = [ 'limit' => 10, 'offset' => 0 ];
297+ foreach ($query as $k => $v) if (is_bool($v)) $query[$k] = $v ? '1' : '0';
263298
264- foreach ($query as $k => $v) {
265- if (is_bool($v)) $query[$k] = $v ? '1' : '0';
266- }
267-
268299 $uri = "/tlds/{$tld}?".http_build_query($query, '', '&', PHP_QUERY_RFC3986);
269300 $curl = $this->setupCurl($uri);
270- $data = $this->curlResult($curl);
271- if (isset($data['data'])) return $data['data'];
301+ $res = $this->curlResult($curl);
302+ if (isset($res->data['data'])) {
303+ $this->setCache("gettld-{$tld}", $res->data);
304+ return \Result::Success('', $res->data);
305+ }
272306
273- return \Result::Error("TLD一覧の受け取りに失敗。");
307+ return \Result::Error('TLD一覧の受け取りに失敗。');
274308 }
275309
276310 /**
@@ -293,22 +327,25 @@
293327 * DNSゾーン一覧
294328 *
295329 * @param array $query
296- * @return Result|array
330+ * @return Result
297331 */
298- public function listDnsZones(array $query = []): \Result|array {
332+ public function listDnsZones(array $query = []): \Result {
299333 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
334+ $cache = $this->getCache('listdnszones');
335+ if (!empty($cache)) return \Result::Success('', $cache);
336+
300337 if (empty($query)) $query = [ 'limit' => 25, 'offset' => 0, 'order_by.name' => 'asc' ];
338+ foreach ($query as $k => $v) if (is_bool($v)) $query[$k] = $v ? '1' : '0';
301339
302- foreach ($query as $k => $v) {
303- if (is_bool($v)) $query[$k] = $v ? '1' : '0';
304- }
305-
306340 $uri = "/dns/zones?".http_build_query($query, '', '&', PHP_QUERY_RFC3986);
307341 $curl = $this->setupCurl($uri);
308- $data = $this->curlResult($curl);
309- if (isset($data['data'])) return $data['data'];
342+ $res = $this->curlResult($curl);
343+ if (isset($res->data['data'])) {
344+ $this->setCache('listdnszones', $res->data);
345+ return \Result::Success('', $res->data);
346+ }
310347
311- return \Result::Error("TLD一覧の受け取りに失敗。");
348+ return \Result::Error('TLD一覧の受け取りに失敗。');
312349 }
313350
314351 /**
@@ -316,19 +353,25 @@
316353 *
317354 * @param string $domain ドメイン名
318355 * @param array $query 検索クエリー
319- * @return Result|array
356+ * @return Result
320357 */
321- public function getDnsZone(string $domain, array $query = []): \Result|array {
358+ public function getDnsZone(string $domain, array $query = []): \Result {
322359 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
360+ $cache = $this->getCache("getdnszone-{$domain}");
361+ if (!empty($cache)) return \Result::Success('', $cache);
362+
323363 if (empty($query)) $query = [ 'limit' => 100, 'offset' => 0, 'order_by.name' => 'asc' ];
324364 foreach ($query as $k => $v) if (is_bool($v)) $query[$k] = $v ? '1' : '0';
325365
326366 $uri = "/dns/zones/{$domain}?".http_build_query($query, '', '&', PHP_QUERY_RFC3986);
327367 $curl = $this->setupCurl($uri);
328- $data = $this->curlResult($curl);
329- if (isset($data['data'])) return $data['data'];
368+ $res = $this->curlResult($curl);
369+ if (isset($res->data['data'])) {
370+ $this->setCache("getdnszone-{$domain}", $res->data);
371+ return \Result::Success('', $res->data);
372+ }
330373
331- return \Result::Error("TLD一覧の受け取りに失敗。");
374+ return \Result::Error('TLD一覧の受け取りに失敗。');
332375 }
333376
334377 //// ゾーンレコード
@@ -337,15 +380,21 @@
337380 * DNSレコード一覧
338381 *
339382 * @param string $domain
340- * @return Result|array
383+ * @return Result
341384 */
342- public function listZoneRecords(string $domain): \Result|array {
385+ public function listZoneRecords(string $domain): \Result {
343386 if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
387+ $cache = $this->getCache("getzonerecords-{$domain}");
388+ if (!empty($cache)) return \Result::Success('', $cache);
389+
344390 $curl = $this->setupCurl("/dns/zones/{$domain}/records");
345- $data = $this->curlResult($curl);
346- if (isset($data['data'])) return $data['data'];
391+ $res = $this->curlResult($curl);
392+ if (isset($res->data['data'])) {
393+ $this->setCache("getzonerecords-{$domain}", $res->data);
394+ return \Result::Success('', $res->data);
395+ }
347396
348- return \Result::Error("TLD一覧の受け取りに失敗。");
397+ return \Result::Error('TLD一覧の受け取りに失敗。');
349398 }
350399
351400 // Easydmarc
@@ -377,7 +426,7 @@
377426 */
378427 public function getResellerId(): int {
379428 if (!OPENPROVIDER_ENABLED) return 0;
380- return $this->reseller_id;
429+ return $this->resellerId;
381430 }
382431
383432 //////////
@@ -394,7 +443,7 @@
394443 return $curl;
395444 }
396445
397- private function curlResult(Curl &$curl): \Result|array {
446+ private function curlResult(Curl &$curl): \Result {
398447 $res = $curl->execute();
399448 if (!$res->isSuccess) {
400449 $err = "CURL実行に失敗: {$curl->message}";
@@ -411,32 +460,47 @@
411460 }
412461 assert_not_null($body, "返事ボディーは空です。");
413462
414- return json_decode($body, true);
463+ return \Result::Success('', json_decode($body, true));
415464 }
416465
417- private function mkCache(): \Result {
418- $session = new \stdClass;
419- $session->lastAuth = $this->last_auth;
420- $session->token = $this->token;
421- $session->resellerId = $this->reseller_id;
466+ /**
467+ * キャッシュの作成
468+ *
469+ * @param string $type キャッシュ類(例:login、domainlist等)
470+ * @param array $data 保存するデータ
471+ * @return Result
472+ */
473+ private function setCache(string $type, array $data): \Result {
474+ if (!file_exists($this->dataDir)) {
475+ if (!mkdir($this->dataDir, 0755))
476+ return \Result::Error('エラー:ユーザーのアイコンディレクトリの作成に失敗。');
477+ }
478+ $json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
479+ if (file_put_contents("{$this->dataDir}{$type}.json", $json) === false) return \Result::Error('エラー:ユーザーデータの保存に失敗。');
422480
423- $json = json_encode($session, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
424- if (file_put_contents($this->dataFile, $json) === false) return \Result::Error('エラー:ユーザーデータの保存に失敗。');
425-
426481 return \Result::Success();
427482 }
428483
429- private function getCache(): void {
430- if (!file_exists($this->dataFile)) return;
484+ /**
485+ * キャッシュから受け取り
486+ *
487+ * @param string $type キャッシュ類(例:login、domainlist等)
488+ * @return array
489+ */
490+ private function getCache(string $type): array {
491+ if (!file_exists("{$this->dataDir}{$type}.json")) return [];
431492
432- $content = file_get_contents($this->dataFile);
433- if ($content === false) return;
493+ $content = file_get_contents("{$this->dataDir}{$type}.json");
494+ if ($content === false) return [];
434495
435496 $data = json_decode($content, true);
436- if (json_last_error() !== JSON_ERROR_NONE || !is_array($data)) return;
497+ if (json_last_error() !== JSON_ERROR_NONE || !is_array($data)) return [];
437498
438- $this->token = $data['token'] ?? null;
439- $this->reseller_id = $data['resellerId'] ?? null;
440- $this->last_auth = $data['lastAuth'] ?? null;
499+ if ($type === 'login') {
500+ $this->token = $data['data']['token'];
501+ $this->lastAuth = $data['last_auth'];
502+ }
503+
504+ return $data;
441505 }
442506 }
変更 util.php
@@ -11,18 +11,20 @@
1111 class Result {
1212 public bool $isSuccess;
1313 public ?string $message;
14+ public array $data;
1415
15- public function __construct(bool $isSuccess, ?string $message = null) {
16+ public function __construct(bool $isSuccess, ?string $message = null, array $data = []) {
1617 $this->isSuccess = $isSuccess;
1718 $this->message = $message;
19+ $this->data = $data;
1820 }
1921
20- public static function Success(?string $message = null): self {
21- return new self(true, $message);
22+ public static function Success(?string $message = null, array $data = []): self {
23+ return new self(true, $message, $data);
2224 }
2325
24- public static function Error(string $message): self {
25- return new self(false, $message);
26+ public static function Error(string $message, array $data = []): self {
27+ return new self(false, $message, $data);
2628 }
2729 }
2830
@@ -3,7 +3,7 @@
33 <ul>
44 <li>顧客様</li>
55 <ul>
6- <li><a href="/openprovider/searchcustomer">顧客様検索</a></li>
6+ <li><a href="/openprovider/listcustomer">顧客様検索</a></li>
77 </ul>
88 <li>ドメイン</li>
99 <ul>
@@ -0,0 +1,30 @@
1+{@ include(common/header) @}
2+ 検索<br />
3+{@ if (isset($data['data']['results'])) @}
4+ <table>
5+ <thead>
6+ <tr>
7+ <th>名前</th>
8+ <th>会社名</th>
9+ <th>メールアドレス</th>
10+ <th>ハンドル</th>
11+ <th>メモ</th>
12+ </tr>
13+ </thead>
14+ <tbody>
15+{@ foreach ($data['data']['results'] as $d) @}
16+ <tr>
17+ <td><a href="/openprovider/getcustomer/{{ $d['handle'] }}">{{ $d['name']['full_name'] }}</a></td>
18+ <td>{{ $d['company_name'] }}</td>
19+ <td>{{ $d['email'] }}</td>
20+ <td>{{ $d['handle'] }}</td>
21+ <td></td>
22+ </tr>
23+{@ endforeach @}
24+ </tbody>
25+ </table>
26+ <p>結果数:{{ $data['data']['total'] }}</p>
27+{@ else @}
28+ <p>何も見つけられませんでした。</p>
29+{@ endif @}
30+{@ include(common/footer) @}
@@ -1,7 +1,7 @@
11 {@ include(common/header) @}
22 検索バー<br />
33 <a href="#" class="">DNSゾーンの追加ボタン</a>
4-{@ if (isset($data['results'])) @}
4+{@ if (isset($data['data']['results'])) @}
55 <table>
66 <thead>
77 <tr>
@@ -14,7 +14,7 @@
1414 </tr>
1515 </thead>
1616 <tbody>
17-{@ foreach ($data['results'] as $d) @}
17+{@ foreach ($data['data']['results'] as $d) @}
1818 <tr>
1919 <td><a href="/openprovider/getdns/{{ $d['name'] }}">{{ $d['name'] }}</a></td>
2020 <td>{{ $d['type'] }}</td>
@@ -26,6 +26,7 @@
2626 {@ endforeach @}
2727 </tbody>
2828 </table>
29+ <p>結果数:{{ $data['data']['total'] }}</p>
2930 {@ else @}
3031 <p>何も見つけられませんでした。</p>
3132 {@ endif @}
@@ -0,0 +1,3 @@
1+{@ include(common/header) @}
2+ <h2>{{ $domain }}の登録</h2>
3+{@ include(common/footer) @}
削除 view/openprovider/searchcustomer.maron
@@ -1,29 +0,0 @@
1-{@ include(common/header) @}
2- 検索<br />
3-{@ if (isset($data['results'])) @}
4- <table>
5- <thead>
6- <tr>
7- <th>Name</th>
8- <th>Company</th>
9- <th>E-mail address</th>
10- <th>Handle</th>
11- <th>Notes</th>
12- </tr>
13- </thead>
14- <tbody>
15-{@ foreach ($data['results'] as $d) @}
16- <tr>
17- <td><a href="/openprovider/getcustomer/{{ $d['handle'] }}">{{ $d['name']['full_name'] }}</a></td>
18- <td>{{ $d['company_name'] }}</td>
19- <td>{{ $d['email'] }}</td>
20- <td>{{ $d['handle'] }}</td>
21- <td></td>
22- </tr>
23-{@ endforeach @}
24- </tbody>
25- </table>
26-{@ else @}
27- <p>何も見つけられませんでした。</p>
28-{@ endif @}
29-{@ include(common/footer) @}