PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 1.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v1.2.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
195 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 }
44
45 /**
46 * Delete checkout pages.
47 *
48 * @return void
49 */
50 public function delete() {
51 $this->deletePages();
52 }
53
54 /**
55 * Create the cart post.
56 *
57 * @return void
58 */
59 public function createCartPost() {
60 $pattern = require plugin_dir_path( SURECART_PLUGIN_FILE ) . 'templates/cart.php';
61
62 $cart = apply_filters(
63 'surecart/create_cart',
64 [
65 'cart' => [
66 'name' => _x( 'cart', 'Cart slug', 'surecart' ),
67 'title' => _x( 'Cart', 'Cart title', 'surecart' ),
68 'content' => $pattern['content'],
69 'post_type' => 'sc_cart',
70 ],
71 ]
72 );
73
74 $this->createPosts( $cart );
75 }
76
77 /**
78 * Create the main checkout form.
79 *
80 * @return void
81 */
82 public function createCheckoutForm() {
83 $pattern = require plugin_dir_path( SURECART_PLUGIN_FILE ) . 'templates/forms/checkout.php';
84
85 $forms = apply_filters(
86 'surecart/create_forms',
87 [
88 'checkout' => [
89 'name' => _x( 'checkout', 'Form slug', 'surecart' ),
90 'title' => _x( 'Checkout', 'Form title', 'surecart' ),
91 'content' => '<!-- wp:surecart/form -->' . $pattern['content'] . '<!-- /wp:surecart/form -->',
92 'post_type' => 'sc_form',
93 ],
94 ]
95 );
96
97 $this->createPosts( $forms );
98 }
99
100 /**
101 * Get pages for seeding.
102 *
103 * @param \WP_Post $form Form post.
104 *
105 * @return array
106 */
107 public function getPages( $form = null ) {
108 $order_confirmation = require plugin_dir_path( SURECART_PLUGIN_FILE ) . 'templates/confirmation/order-confirmation.php';
109 $customer_dashboard = require plugin_dir_path( SURECART_PLUGIN_FILE ) . 'templates/dashboard/customer-dashboard.php';
110
111 return apply_filters(
112 'surecart/create_pages',
113 array(
114 'checkout' => [
115 'name' => _x( 'checkout', 'Page slug', 'surecart' ),
116 'title' => _x( 'Checkout', 'Page title', 'surecart' ),
117 'content' => '<!-- wp:surecart/checkout-form {"id":' . (int) $form->ID . '} --><!-- /wp:surecart/checkout-form -->',
118 ],
119 'order-confirmation' => [
120 'name' => _x( 'order-confirmation', 'Page slug', 'surecart' ),
121 'title' => _x( 'Thank you!', 'Page title', 'surecart' ),
122 'content' => $order_confirmation['content'],
123 ],
124 'dashboard' => [
125 'name' => _x( 'customer-dashboard', 'Page slug', 'surecart' ),
126 'title' => _x( 'Dashboard', 'Page title', 'surecart' ),
127 'content' => $customer_dashboard['content'],
128 ],
129 )
130 );
131 }
132
133 /**
134 * Create pages that the plugin relies on, storing page IDs in variables.
135 *
136 * @return void
137 */
138 public function createPages() {
139 // get default form page.
140 $form = $this->forms->getDefault();
141 // get pages for seeding.
142 $pages = $this->getPages( $form );
143 // seed posts.
144 $this->createPosts( $pages );
145 }
146
147 /**
148 * Delete pages that were created by the plugin.
149 *
150 * @return void
151 */
152 public function deletePages() {
153 $pages = $this->getPages();
154 $this->deletePosts( $pages );
155 }
156
157 /**
158 * Create posts from an array of post data.
159 *
160 * @param array $posts Array of post data.
161 * @return void
162 */
163 public function createPosts( $posts ) {
164 foreach ( $posts as $key => $post ) {
165 $this->pages->findOrCreate(
166 esc_sql( $post['name'] ),
167 $key,
168 $post['title'],
169 $post['content'],
170 ! empty( $post['parent'] ) ? \SureCart::pages()->findOrCreate( $post['parent'] ) : '',
171 ! empty( $post['post_status'] ) ? $post['post_status'] : 'publish',
172 ! empty( $post['post_type'] ) ? $post['post_type'] : 'page'
173 );
174 }
175 }
176
177 /**
178 * Delete posts from an array of post data.
179 *
180 * @param array $posts Array of post data.
181 * @return void
182 */
183 public function deletePosts( $posts ) {
184 foreach ( $posts as $key => $post ) {
185 $page = $this->pages->get(
186 $key,
187 ! empty( $post['post_type'] ) ? $post['post_type'] : 'page'
188 );
189 if ( $page ) {
190 wp_delete_post( $page->ID, true );
191 }
192 }
193 }
194 }
195