1+ <?php
2+ $ api_url = isset ($ attributes ['apiUrl ' ]) ? $ attributes ['apiUrl ' ] : '' ;
3+
4+ if (empty ($ api_url )) { ?>
5+ <div <?= get_block_wrapper_attributes () ?> >
6+ <p><?= esc_html__ ('Set the Dashboard API URL in the block settings. ' , 'mcld-services ' ) ?> </p>
7+ </div>
8+ <?php return ;
9+ }
10+
11+ $ transient_key = 'mcld_services_ ' . md5 ($ api_url );
12+ $ services = get_transient ($ transient_key );
13+
14+ if (false === $ services ) {
15+ $ response = wp_remote_get (rtrim ($ api_url , '/ ' ) . '/api/public/services ' );
16+
17+ if (is_wp_error ($ response ) || 200 !== wp_remote_retrieve_response_code ($ response )) { ?>
18+ <div <?= get_block_wrapper_attributes () ?> >
19+ <p><?= esc_html__ ('Could not load services. ' , 'mcld-services ' ) ?> </p>
20+ </div>
21+ <?php return ;
22+ }
23+
24+ $ services = json_decode (wp_remote_retrieve_body ($ response ), true );
25+ set_transient ($ transient_key , $ services , 60 );
26+ }
27+
28+ if (empty ($ services )) { ?>
29+ <div <?= get_block_wrapper_attributes () ?> >
30+ <p><?= esc_html__ ('No active services available. ' , 'mcld-services ' ) ?> </p>
31+ </div>
32+ <?php return ;
33+ }
34+ ?>
35+
36+ <div <?= get_block_wrapper_attributes () ?> >
37+ <div class="mcld-services-grid">
38+ <?php foreach ($ services as $ service ): ?>
39+ <div class="mcld-service-card">
40+ <h3><?= esc_html ($ service ['title ' ] ?? '' ) ?> </h3>
41+ <?php if (!empty ($ service ['description ' ])): ?>
42+ <p><?= esc_html ($ service ['description ' ]) ?> </p>
43+ <?php endif ; ?>
44+ <?php if (isset ($ service ['priceCents ' ]) && null !== $ service ['priceCents ' ]): ?>
45+ <p class="mcld-service-price">
46+ <?= esc_html (number_format ($ service ['priceCents ' ] / 100 , 2 ) . ' ' . strtoupper ($ service ['priceCurrency ' ] ?? '' )) ?>
47+ </p>
48+ <?php endif ; ?>
49+ </div>
50+ <?php endforeach ; ?>
51+ </div>
52+ </div>
0 commit comments