PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
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 / Controllers / Admin / Products / ProductsController.php
surecart / app / src / Controllers / Admin / Products Last commit date
ProductScriptsController.php 3 years ago ProductsController.php 2 years ago ProductsListTable.php 2 years ago
ProductsController.php
138 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Products;
4
5 use SureCart\Controllers\Admin\AdminController;
6 use SureCart\Models\Product;
7 use SureCartCore\Responses\RedirectResponse;
8 use SureCart\Controllers\Admin\Products\ProductsListTable;
9
10 /**
11 * Handles product admin requests.
12 */
13 class ProductsController extends AdminController {
14 /**
15 * Products index.
16 */
17 public function index() {
18 $table = new ProductsListTable();
19 $table->prepare_items();
20 $this->withHeader(
21 [
22 'products' => [
23 'title' => __( 'Products', 'surecart' ),
24 ],
25 ]
26 );
27 return \SureCart::view( 'admin/products/index' )->with( [ 'table' => $table ] );
28 }
29
30 /**
31 * Edit a product.
32 */
33 public function edit( $request ) {
34 // enqueue needed script.
35 add_action( 'admin_enqueue_scripts', \SureCart::closure()->method( ProductScriptsController::class, 'enqueue' ) );
36
37 $product = null;
38
39 if ( $request->query( 'id' ) ) {
40 $product = Product::find( $request->query( 'id' ) );
41
42 if ( is_wp_error( $product ) ) {
43 wp_die( implode( ' ', array_map( 'esc_html', $product->get_error_messages() ) ) );
44 }
45 }
46
47 if ( ! empty( $product ) ) {
48 $this->preloadPaths(
49 [
50 [ '/wp/v2/templates', 'OPTIONS' ],
51 '/wp/v2/settings',
52 '/wp/v2/types/wp_template?context=edit',
53 '/wp/v2/types/wp_template-part?context=edit',
54 '/wp/v2/templates?context=edit&per_page=-1',
55 '/wp/v2/template-parts?context=edit&per_page=-1',
56 '/wp/v2/users/me',
57 '/wp/v2/types?context=view',
58 '/wp/v2/types?context=edit',
59 '/wp/v2/templates/' . $product->template_id . '?context=edit',
60 '/wp/v2/template-parts/' . $product->template_part_id . '?context=edit',
61 '/surecart/v1/products/' . $product->id . '?context=edit',
62 // '/surecart/v1/product_medias?context=edit&product_ids[0]=' . $product->id . '&per_page=100',
63 // '/surecart/v1/prices?context=edit&product_ids[0]=' . $product->id . '&per_page=100',
64 '/surecart/v1/integrations?context=edit&model_ids[0]=' . $product->id . '&per_page=50',
65 '/surecart/v1/integration_providers?context=edit',
66 '/surecart/v1/integration_provider_items?context=edit',
67 ]
68 );
69 }
70
71 // add product link.
72 add_action(
73 'admin_bar_menu',
74 function( $wp_admin_bar ) use ( $product ) {
75 $wp_admin_bar->add_node(
76 [
77 'id' => 'view-product-page',
78 'title' => __( 'View Product', 'surecart' ),
79 'href' => esc_url( $product->permalink ?? '#' ),
80 'meta' => [
81 'class' => empty( $product->permalink ) ? 'hidden' : '',
82 ],
83 ]
84 );
85 },
86 99
87 );
88
89 // return view.
90 return '<div id="app"></div>';
91 }
92
93 public function addInstantCheckoutLink( $wp_admin_bar ) {
94 $wp_admin_bar->add_node(
95 [
96 'id' => 'edit',
97 'title' => __( 'Edit Product', 'surecart' ),
98 'href' => '#',
99 ]
100 );
101 }
102
103 /**
104 * Change the archived attribute in the model
105 *
106 * @param \SureCartCore\Requests\RequestInterface $request Request.
107 * @return void
108 */
109 public function toggleArchive( $request ) {
110 $product = Product::find( $request->query( 'id' ) );
111
112 if ( is_wp_error( $product ) ) {
113 wp_die( implode( ' ', array_map( 'esc_html', $product->get_error_messages() ) ) );
114 }
115
116 $updated = $product->update(
117 [
118 'archived' => ! (bool) $product->archived,
119 ]
120 );
121
122 if ( is_wp_error( $updated ) ) {
123 wp_die( implode( ' ', array_map( 'esc_html', $updated->get_error_messages() ) ) );
124 }
125
126 \SureCart::flash()->add(
127 'success',
128 $updated->archived ? __( 'Product archived.', 'surecart' ) : __( 'Product restored.', 'surecart' )
129 );
130
131 return $this->redirectBack( $request );
132 }
133
134 public function redirectBack( $request ) {
135 return ( new RedirectResponse( $request ) )->back();
136 }
137 }
138