PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.0 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 4 months ago AdminRouteServiceProvider.php 3 years ago AdminURLService.php 2 months ago PermalinkService.php 1 year ago PermalinkServiceProvider.php 1 year ago PermalinkSettingService.php 1 year ago PermalinksSettingsService.php 1 year ago RouteConditionsServiceProvider.php 3 years ago
AdminURLService.php
294 lines
1 <?php
2
3 namespace SureCart\Routing;
4
5 /**
6 * Generates links for specific admin 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 * Duplicate page url.
115 *
116 * @param string $name Model lowercase name.
117 * @param string $id Model id.
118 *
119 * @return string URL for the page.
120 */
121 public function duplicate( $name, $id ) {
122 return esc_url(
123 add_query_arg(
124 [
125 'action' => 'duplicate',
126 'nonce' => wp_create_nonce( "duplicate_$name" ),
127 'id' => $id,
128 ],
129 $this->index( $name )
130 )
131 );
132 }
133
134 /**
135 * Sync a specific model
136 *
137 * @param string $name Model lowercase name.
138 *
139 * @return string URL for the page.
140 */
141 public function syncAll( $name ) {
142 return esc_url(
143 add_query_arg(
144 [
145 'action' => 'sync_all',
146 'nonce' => wp_create_nonce( "sync_$name" ),
147 ],
148 $this->index( $name )
149 )
150 );
151 }
152
153 /**
154 * Sync a specific model
155 *
156 * @param string $name Model lowercase name.
157 * @param string $id Model id.
158 *
159 * @return string URL for the page.
160 */
161 public function sync( $name, $id ) {
162 return esc_url(
163 add_query_arg(
164 [
165 'action' => 'sync',
166 'nonce' => wp_create_nonce( "sync_$name" ),
167 'id' => $id,
168 ],
169 $this->index( $name )
170 )
171 );
172 }
173
174 /**
175 * Import results page url.
176 *
177 * @param string $name Model lowercase name.
178 * @param string|array $import_ids The import ID(s).
179 * @param string|null $session_id Optional session ID for skipped products lookup.
180 *
181 * @return string URL for the page.
182 */
183 public function importResults( $name, $import_ids, $session_id = null ) {
184 $import_ids = array_map( 'sanitize_key', (array) $import_ids );
185
186 $query_args = [
187 'action' => 'import_results',
188 'import_ids' => implode( ',', $import_ids ),
189 'nonce' => wp_create_nonce( 'sc_import_results' ),
190 ];
191
192 // Add session_id for skipped products lookup.
193 if ( $session_id ) {
194 $query_args['session_id'] = sanitize_key( $session_id );
195 }
196
197 return esc_url( add_query_arg( $query_args, $this->index( $name ) ) );
198 }
199
200 /**
201 * Import results page URL by session ID (for all-skipped imports).
202 *
203 * @param string $name Model lowercase name.
204 * @param string $session_id The session ID.
205 *
206 * @return string URL for the page.
207 */
208 public function importResultsBySession( $name, $session_id ) {
209 return esc_url(
210 add_query_arg(
211 [
212 'action' => 'import_results',
213 'session_id' => sanitize_key( $session_id ),
214 'nonce' => wp_create_nonce( 'sc_import_results' ),
215 ],
216 $this->index( $name )
217 )
218 );
219 }
220
221 /**
222 * Edit model action
223 */
224 public function editModel( $action, $id, $redirect_url = '' ) {
225 return esc_url(
226 add_query_arg(
227 [
228 'action' => $action,
229 'nonce' => wp_create_nonce( $action ),
230 'id' => $id,
231 ],
232 $redirect_url
233 )
234 );
235 }
236
237 /**
238 * Build the checkout url.
239 *
240 * @param array $line_items Line items.
241 * @return string url
242 */
243 public function checkout( $line_items = [] ) {
244 $checkout = \SureCart::pages()->url( 'checkout' );
245 if ( ! $checkout ) {
246 return '';
247 }
248
249 return add_query_arg(
250 [
251 ...( $line_items ? [ 'line_items' => $this->lineItems( $line_items ?? [] ) ] : [] ),
252 ],
253 $checkout
254 );
255 }
256
257 /**
258 * Build the line items array.
259 *
260 * @param array $line_items Line items.
261 * @return array Line items.
262 */
263 public function lineItems( $line_items ) {
264 return array_map(
265 function ( $item ) {
266 return [
267 'price_id' => $item['id'],
268 'quantity' => $item['quantity'],
269 ];
270 },
271 $line_items ?? []
272 );
273 }
274
275 /**
276 * Create Url.
277 *
278 * @param string $name Model lowercase name.
279 *
280 * @return string URL for the page.
281 */
282 public function create( $name ) {
283 return esc_url(
284 add_query_arg(
285 [
286 'action' => 'create',
287 'nonce' => wp_create_nonce( "create_$name" ),
288 ],
289 admin_url( 'admin.php?page=' . $this->page_names[ $name ] ?? '' )
290 )
291 );
292 }
293 }
294