PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Routing / AdminURLService.php
surecart / app / src / Routing Last commit date
AdminRouteService.php 2 years ago AdminRouteServiceProvider.php 3 years ago AdminURLService.php 1 year ago PermalinkService.php 3 years ago PermalinkServiceProvider.php 1 year ago PermalinkSettingService.php 2 years ago PermalinksSettingsService.php 2 years ago RouteConditionsServiceProvider.php 3 years ago
AdminURLService.php
226 lines
1 <?php
2
3 namespace SureCart\Routing;
4
5 /**
6 * Generates links for specific amdin urls.
7 */
8 class AdminURLService {
9 /**
10 * Stores the admin page names.
11 *
12 * @var array
13 */
14 protected $page_names = [];
15
16 /**
17 * Initialize page names
18 *
19 * @param array $page_names Array of page names and their admin query names.
20 */
21 public function __construct( $page_names ) {
22 $this->page_names = $page_names;
23 }
24
25 /**
26 * New page url
27 *
28 * @param string $name Model lowercase name.
29 * @return string URL for the page.
30 */
31 public function new( $name ) {
32 return esc_url(
33 add_query_arg(
34 [
35 'action' => 'edit',
36 ],
37 admin_url( 'admin.php?page=' . $this->page_names[ $name ] ?? '' )
38 )
39 );
40 }
41
42 /**
43 * Edit page url
44 *
45 * @param string $name Model lowercase name.
46 * @param string $id Model id.
47 *
48 * @return string URL for the page.
49 */
50 public function edit( $name, $id = null ) {
51 return esc_url(
52 add_query_arg(
53 [
54 'action' => 'edit',
55 'id' => $id,
56 ],
57 admin_url( 'admin.php?page=' . $this->page_names[ $name ] ?? '' )
58 )
59 );
60 }
61
62 /**
63 * Show page url
64 *
65 * @param string $name Model lowercase name.
66 * @param string $id Model id.
67 *
68 * @return string URL for the page.
69 */
70 public function show( $name, $id = null ) {
71 return esc_url(
72 add_query_arg(
73 [
74 'action' => 'show',
75 'id' => $id,
76 ],
77 admin_url( 'admin.php?page=' . $this->page_names[ $name ] ?? '' )
78 )
79 );
80 }
81
82 /**
83 * Admin index page url
84 *
85 * @param string $name Model lowercase name.
86 * @return string URL for the page.
87 */
88 public function index( $name ) {
89 return esc_url( admin_url( 'admin.php?page=' . $this->page_names[ $name ] ) );
90 }
91
92 /**
93 * Archive page url
94 *
95 * @param string $name Model lowercase name.
96 * @param string $id Model id.
97 *
98 * @return string URL for the page.
99 */
100 public function toggleArchive( $name, $id ) {
101 return esc_url(
102 add_query_arg(
103 [
104 'action' => 'toggle_archive',
105 'nonce' => wp_create_nonce( "archive_$name" ),
106 'id' => $id,
107 ],
108 $this->index( $name )
109 )
110 );
111 }
112
113 /**
114 * Sync a specific model
115 *
116 * @param string $name Model lowercase name.
117 *
118 * @return string URL for the page.
119 */
120 public function syncAll( $name ) {
121 return esc_url(
122 add_query_arg(
123 [
124 'action' => 'sync_all',
125 'nonce' => wp_create_nonce( "sync_$name" ),
126 ],
127 $this->index( $name )
128 )
129 );
130 }
131
132 /**
133 * Sync a specific model
134 *
135 * @param string $name Model lowercase name.
136 * @param string $id Model id.
137 *
138 * @return string URL for the page.
139 */
140 public function sync( $name, $id ) {
141 return esc_url(
142 add_query_arg(
143 [
144 'action' => 'sync',
145 'nonce' => wp_create_nonce( "sync_$name" ),
146 'id' => $id,
147 ],
148 $this->index( $name )
149 )
150 );
151 }
152
153 /**
154 * Edit model action
155 */
156 public function editModel( $action, $id, $redirect_url = '' ) {
157 return esc_url(
158 add_query_arg(
159 [
160 'action' => $action,
161 'nonce' => wp_create_nonce( $action ),
162 'id' => $id,
163 ],
164 $redirect_url
165 )
166 );
167 }
168
169 /**
170 * Build the checkout url.
171 *
172 * @param array $line_items Line items.
173 * @return string url
174 */
175 public function checkout( $line_items = [] ) {
176 $checkout = \SureCart::pages()->url( 'checkout' );
177 if ( ! $checkout ) {
178 return '';
179 }
180
181 return add_query_arg(
182 [
183 ...( $line_items ? [ 'line_items' => $this->lineItems( $line_items ?? [] ) ] : [] ),
184 ],
185 $checkout
186 );
187 }
188
189 /**
190 * Build the line items array.
191 *
192 * @param array $line_items Line items.
193 * @return array Line items.
194 */
195 public function lineItems( $line_items ) {
196 return array_map(
197 function ( $item ) {
198 return [
199 'price_id' => $item['id'],
200 'quantity' => $item['quantity'],
201 ];
202 },
203 $line_items ?? []
204 );
205 }
206
207 /**
208 * Create Url.
209 *
210 * @param string $name Model lowercase name.
211 *
212 * @return string URL for the page.
213 */
214 public function create( $name ) {
215 return esc_url(
216 add_query_arg(
217 [
218 'action' => 'create',
219 'nonce' => wp_create_nonce( "create_$name" ),
220 ],
221 admin_url( 'admin.php?page=' . $this->page_names[ $name ] ?? '' )
222 )
223 );
224 }
225 }
226