PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.2.2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.2.2
4.7.2 4.7.1 4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.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 All 281 releases
surecart / app / src / Controllers / Admin / Reviews / ReviewsController.php
ReviewsController.php
139 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SureCart\Controllers\Admin\Reviews;
4
5 use SureCart\Controllers\Admin\AdminController;
6 use SureCart\Models\Review;
7 use SureCartVendors\Psr\Http\Message\ResponseInterface;
8
9 /**
10 * Handle the reviews admin page.
11 */
12 class ReviewsController extends AdminController {
13 /**
14 * Index.
15 *
16 * @return string
17 */
18 public function index() {
19 $table = new ReviewsListTable();
20 $table->prepare_items();
21 $this->withHeader(
22 array(
23 'breadcrumbs' => [
24 'reviews' => [
25 'title' => __( 'Product Reviews', 'surecart' ),
26 ],
27 ],
28 )
29 );
30
31 // add notices.
32 $this->withNotices(
33 array(
34 'published' => __( 'Review approved.', 'surecart' ),
35 'unpublished' => __( 'Review rejected.', 'surecart' ),
36 'deleted' => __( 'Review deleted.', 'surecart' ),
37 )
38 );
39
40 return \SureCart::view( 'admin/reviews/index' )->with( [ 'table' => $table ] );
41 }
42
43 /**
44 * Edit.
45 *
46 * @return string
47 */
48 public function edit() {
49 $id = sanitize_text_field( wp_unslash( $_GET['id'] ?? '' ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
50 if ( ! $id ) {
51 wp_die( esc_html__( 'Please provide a review id.', 'surecart' ) );
52 }
53
54 // enqueue needed script.
55 add_action( 'admin_enqueue_scripts', \SureCart::closure()->method( ReviewsScriptsController::class, 'enqueue' ) );
56
57 $this->preloadPaths(
58 [
59 '/wp/v2/users/me',
60 '/wp/v2/types?context=view',
61 '/wp/v2/types?context=edit',
62 '/surecart/v1/reviews/' . $id . '?context=edit',
63 ]
64 );
65
66 // return view.
67 return '<div id="app"></div>';
68 }
69
70 /**
71 * Publish a review.
72 *
73 * @param \SureCartCore\Requests\RequestInterface $request Request.
74 *
75 * @return ResponseInterface
76 */
77 public function publish( $request ): ResponseInterface {
78 $published = Review::publish( sanitize_text_field( wp_unslash( $request->query( 'id' ) ) ) );
79
80 if ( is_wp_error( $published ) ) {
81 wp_die( implode( ' ', array_map( 'esc_html', $published->get_error_messages() ) ) );
82 }
83
84 return \SureCart::redirect()
85 ->to(
86 add_query_arg(
87 [ 'published' => true ],
88 \SureCart::getUrl()->index( 'reviews' )
89 )
90 );
91 }
92
93 /**
94 * Unpublish a review.
95 *
96 * @param \SureCartCore\Requests\RequestInterface $request Request.
97 *
98 * @return ResponseInterface
99 */
100 public function unpublish( $request ): ResponseInterface {
101 $unpublished = Review::unpublish( sanitize_text_field( wp_unslash( $request->query( 'id' ) ) ) );
102
103 if ( is_wp_error( $unpublished ) ) {
104 wp_die( implode( ' ', array_map( 'esc_html', $unpublished->get_error_messages() ) ) );
105 }
106
107 return \SureCart::redirect()
108 ->to(
109 add_query_arg(
110 [ 'unpublished' => true ],
111 \SureCart::getUrl()->index( 'reviews' )
112 )
113 );
114 }
115
116 /**
117 * Delete a review.
118 *
119 * @param \SureCartCore\Requests\RequestInterface $request Request.
120 *
121 * @return ResponseInterface
122 */
123 public function delete( $request ): ResponseInterface {
124 $deleted = Review::delete( sanitize_text_field( wp_unslash( $request->query( 'id' ) ) ) );
125
126 if ( is_wp_error( $deleted ) ) {
127 wp_die( implode( ' ', array_map( 'esc_html', $deleted->get_error_messages() ) ) );
128 }
129
130 return \SureCart::redirect()
131 ->to(
132 add_query_arg(
133 [ 'deleted' => true ],
134 \SureCart::getUrl()->index( 'reviews' )
135 )
136 );
137 }
138 }
139