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 / WordPress / Pages / PageSeeder.php
surecart / app / src / WordPress / Pages Last commit date
PageSeeder.php 3 years ago PageService.php 3 years ago PageServiceProvider.php 3 years ago
PageSeeder.php
221 lines
1 <?php
2
3 namespace SureCart\WordPress\Pages;
4
5 /**
6 * Service for installation related functions.
7 */
8 class PageSeeder {
9 /**
10 * SureCart instance.
11 *
12 * @var \SureCart\WordPress\PostTypes\FormPostTypeService
13 */
14 protected $forms = null;
15
16 /**
17 * SureCart instance.
18 *
19 * @var \SureCart\WordPress\Pages\PageService
20 */
21 protected $pages = null;
22
23 /**
24 * Constructor.
25 *
26 * @param \SureCart\WordPress\PostTypes\FormPostTypeService $forms Forms service.
27 * @param \SureCart\WordPress\Pages\PageService $pages Pages service.
28 */
29 public function __construct( $forms, $pages ) {
30 $this->forms = $forms;
31 $this->pages = $pages;
32 }
33
34 /**
35 * Seed pages and forms.
36 *
37 * @return void
38 */
39 public function seed() {
40 $this->createCheckoutForm();
41 $this->createPages();
42 $this->createCartPost();
43 $this->createShopPage();
44 }
45
46 /**
47 * Delete checkout pages.
48 *
49 * @return void
50 */
51 public function delete() {
52 $this->deletePages();
53 }
54
55 /**
56 * Create the cart post.
57 *
58 * @return void
59 */
60 public function createCartPost() {
61 $pattern = require plugin_dir_path( SURECART_PLUGIN_FILE ) . 'templates/cart.php';
62
63 $cart = apply_filters(
64 'surecart/create_cart',
65 [
66 'cart' => [
67 'name' => _x( 'cart', 'Cart slug', 'surecart' ),
68 'title' => _x( 'Cart', 'Cart title', 'surecart' ),
69 'content' => $pattern['content'],
70 'post_type' => 'sc_cart',
71 ],
72 ]
73 );
74
75 $this->createPosts( $cart );
76 }
77
78 /**
79 * Create shop page.
80 *
81 * @return void
82 */
83 public function createShopPage() {
84 $pattern = require plugin_dir_path( SURECART_PLUGIN_FILE ) . 'templates/shop.php';
85
86 $shop = apply_filters(
87 'surecart/create_shop',
88 [
89 'shop' => [
90 'name' => _x( 'shop', 'Shop page slug', 'surecart' ),
91 'title' => _x( 'Shop', 'Shop page title', 'surecart' ),
92 'content' => $pattern['content'],
93 'post_type' => 'page',
94 ],
95 ]
96 );
97
98 $this->createPosts( $shop );
99 }
100
101 /**
102 * Create the main checkout form.
103 *
104 * @return void
105 */
106 public function createCheckoutForm() {
107 $pattern = require plugin_dir_path( SURECART_PLUGIN_FILE ) . 'templates/forms/checkout.php';
108
109 $forms = apply_filters(
110 'surecart/create_forms',
111 [
112 'checkout' => [
113 'name' => _x( 'checkout', 'Form slug', 'surecart' ),
114 'title' => _x( 'Checkout', 'Form title', 'surecart' ),
115 'content' => '<!-- wp:surecart/form -->' . $pattern['content'] . '<!-- /wp:surecart/form -->',
116 'post_type' => 'sc_form',
117 ],
118 ]
119 );
120
121 $this->createPosts( $forms );
122 }
123
124 /**
125 * Get pages for seeding.
126 *
127 * @param \WP_Post $form Form post.
128 *
129 * @return array
130 */
131 public function getPages( $form = null ) {
132 $customer_dashboard = require plugin_dir_path( SURECART_PLUGIN_FILE ) . 'templates/dashboard/customer-dashboard.php';
133
134 return apply_filters(
135 'surecart/create_pages',
136 array(
137 'checkout' => [
138 'name' => _x( 'checkout', 'Page slug', 'surecart' ),
139 'title' => _x( 'Checkout', 'Page title', 'surecart' ),
140 'content' => '<!-- wp:surecart/checkout-form {"id":' . (int) ( $form->ID ?? 0 ) . '} --><!-- /wp:surecart/checkout-form -->',
141 'page_template' => 'pages/template-surecart-blank.php',
142 ],
143 'dashboard' => [
144 'name' => _x( 'customer-dashboard', 'Page slug', 'surecart' ),
145 'title' => _x( 'Dashboard', 'Page title', 'surecart' ),
146 'content' => $customer_dashboard['content'],
147 'page_template' => 'pages/template-surecart-dashboard.php',
148 ],
149 )
150 );
151 }
152
153 /**
154 * Create pages that the plugin relies on, storing page IDs in variables.
155 *
156 * @return void
157 */
158 public function createPages() {
159 // get default form page.
160 $form = $this->forms->getDefault();
161 // get pages for seeding.
162 $pages = $this->getPages( $form );
163 // seed posts.
164 $this->createPosts( $pages );
165 }
166
167 /**
168 * Delete pages that were created by the plugin.
169 *
170 * @return void
171 */
172 public function deletePages() {
173 $pages = $this->getPages();
174 $this->deletePosts( $pages );
175 }
176
177 /**
178 * Create posts from an array of post data.
179 *
180 * @param array $posts Array of post data.
181 * @return void
182 */
183 public function createPosts( $posts ) {
184 // ability to turn off page seeding.
185 if ( ! apply_filters( 'surecart/seed/all', true ) ) {
186 return;
187 }
188
189 foreach ( $posts as $key => $post ) {
190 $this->pages->findOrCreate(
191 esc_sql( $post['name'] ),
192 $key,
193 $post['title'],
194 $post['content'],
195 ! empty( $post['parent'] ) ? \SureCart::pages()->findOrCreate( $post['parent'] ) : '',
196 ! empty( $post['post_status'] ) ? $post['post_status'] : 'publish',
197 ! empty( $post['post_type'] ) ? $post['post_type'] : 'page',
198 ! empty( $post['page_template'] ) ? $post['page_template'] : null
199 );
200 }
201 }
202
203 /**
204 * Delete posts from an array of post data.
205 *
206 * @param array $posts Array of post data.
207 * @return void
208 */
209 public function deletePosts( $posts ) {
210 foreach ( $posts as $key => $post ) {
211 $page = $this->pages->get(
212 $key,
213 ! empty( $post['post_type'] ) ? $post['post_type'] : 'page'
214 );
215 if ( $page ) {
216 wp_delete_post( $page->ID, true );
217 }
218 }
219 }
220 }
221