PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.4.19
Post Grid Gutenberg Blocks – PostX v2.4.19
5.0.39 5.0.38 5.0.37 5.0.36 5.0.35 5.0.34 5.0.33 5.0.32 5.0.31 5.0.30 5.0.29 5.0.28 5.0.27 5.0.26 5.0.25 5.0.23 5.0.24 5.0.22 5.0.21 5.0.20 5.0.19 5.0.18 5.0.17 2.1.1 2.1.2 All 237 releases
ultimate-post / classes / Styles.php

Styles.php in Post Grid Gutenberg Blocks – PostX 2.4.19, at classes/Styles.php

279 lines 7.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Styles Add and Style REST API Action.
4 *
5 * @package ULTP\Styles
6 * @since v.1.0.0
7 */
8 namespace ULTP;
9
10 defined('ABSPATH') || exit;
11
12 /**
13 * Styles class.
14 */
15 class Styles {
16
17 /**
18 * Setup class.
19 *
20 * @since v.1.0.0
21 */
22 public function __construct(){
23 $this->require_block_css();
24 add_action('rest_api_init', array($this, 'save_block_css_callback'));
25 }
26
27
28 /**
29 * REST API Action
30 *
31 * @since v.1.0.0
32 * @return NULL
33 */
34 public function save_block_css_callback(){
35 register_rest_route(
36 'ultp/v1',
37 '/save_block_css/',
38 array(
39 array(
40 'methods' => 'POST',
41 'callback' => array( $this, 'save_block_content_css'),
42 'permission_callback' => function () {
43 return current_user_can( 'edit_posts' );
44 },
45 'args' => array()
46 )
47 )
48 );
49 register_rest_route(
50 'ultp/v1',
51 '/get_posts/',
52 array(
53 array(
54 'methods' => 'POST',
55 'callback' => array($this, 'get_posts_call'),
56 'permission_callback' => function () {
57 return current_user_can('edit_posts');
58 },
59 'args' => array()
60 )
61 )
62 );
63 register_rest_route(
64 'ultp/v1',
65 '/appened_css/',
66 array(
67 array(
68 'methods' => 'POST',
69 'callback' => array($this, 'appened_css_call'),
70 'permission_callback' => function () {
71 return current_user_can('edit_posts');
72 },
73 'args' => array()
74 )
75 )
76 );
77 }
78
79
80 /**
81 * Save Import CSS in the top of the File
82 *
83 * @since v.1.0.0
84 * @param OBJECT | Request Param of the REST API
85 * @return ARRAY/Exception | Array of the Custom Message
86 */
87 public function appened_css_call($server) {
88 global $wp_filesystem;
89 if ( ! $wp_filesystem ) {
90 require_once( ABSPATH . 'wp-admin/includes/file.php' );
91 }
92 $post = $server->get_params();
93 $css = $post['inner_css'];
94 $post_id = (int) sanitize_text_field($post['post_id']);
95 if ($post_id) {
96 $upload_dir_url = wp_upload_dir();
97 $filename = "ultp-css-{$post_id}.css";
98 $dir = trailingslashit($upload_dir_url['basedir']).'ultimate-post/';
99 update_post_meta($post_id, '_wopb_css', $css);
100 WP_Filesystem( false, $upload_dir_url['basedir'], true );
101 if( ! $wp_filesystem->is_dir( $dir ) ) {
102 $wp_filesystem->mkdir( $dir );
103 }
104 if ( ! $wp_filesystem->put_contents( $dir . $filename, $css ) ) {
105 throw new Exception(__('CSS can not be saved due to permission!!!', 'product-blocks' ));
106 }
107 wp_send_json_success(array('success' => true, 'message' => __('Data retrive done', 'ultimate-post')));
108 } else {
109 return array('success' => false, 'message' => __('Data not found!!', 'ultimate-post'));
110 }
111 }
112
113
114 /**
115 * Save Import CSS in the top of the File
116 *
117 * @since v.1.0.0
118 * @param OBJECT | Request Param of the REST API
119 * @return ARRAY/Exception | Array of the Custom Message
120 */
121 public function get_posts_call($server) {
122 $post = $server->get_params();
123 if (isset($post['postId'])) {
124 return array('success' => true, 'data'=> get_post($post['postId'])->post_content, 'message' => __('Data retrive done', 'ultimate-post'));
125 } else {
126 return array('success' => false, 'message' => __('Data not found!!', 'ultimate-post'));
127 }
128 }
129
130
131 /**
132 * Save Import CSS in the top of the File
133 *
134 * @since v.1.0.0
135 * @param OBJECT | Request Param of the REST API
136 * @return ARRAY/Exception | Array of the Custom Message
137 */
138 public function save_block_content_css($request){
139 try{
140 global $wp_filesystem;
141 if ( ! $wp_filesystem ) {
142 require_once( ABSPATH . 'wp-admin/includes/file.php' );
143 }
144 $params = $request->get_params();
145 $post_id = sanitize_text_field($params['post_id']);
146 if ($post_id == 'ultp-widget' && $params['has_block']) {
147 update_option($post_id, $params['block_css']);
148 return ['success' => true, 'message' => __('Widget CSS Saved', 'ultimate-post')];
149 }
150
151 $post_id = (int) $post_id;
152 $filename = "ultp-css-{$post_id}.css";
153 $upload_dir_url = wp_upload_dir();
154 $dir = trailingslashit($upload_dir_url['basedir']) . 'ultimate-post/';
155
156 if ($params['has_block']) {
157 update_post_meta($post_id, '_ultp_active', 'yes');
158 $ultp_block_css = $this->set_top_css($params['block_css']);
159 WP_Filesystem( false, $upload_dir_url['basedir'], true );
160 if( ! $wp_filesystem->is_dir( $dir ) ) {
161 $wp_filesystem->mkdir( $dir );
162 }
163 if ( ! $wp_filesystem->put_contents( $dir . $filename, $ultp_block_css ) ) {
164 throw new Exception(__('CSS can not be saved due to permission!!!', 'ultimate-post'));
165 }
166 update_post_meta($post_id, '_ultp_css', $ultp_block_css);
167 return ['success'=>true, 'message'=>__('PostX css file has been updated.', 'ultimate-post')];
168 } else {
169 delete_post_meta($post_id, '_ultp_active');
170 if (file_exists($dir.$filename)) {
171 unlink($dir.$filename);
172 }
173 delete_post_meta($post_id, '_ultp_css');
174 return ['success' => true, 'message' => __('Data Delete Done', 'ultimate-post')];
175 }
176 }catch(Exception $e){
177 return [ 'success'=> false, 'message'=> $e->getMessage() ];
178 }
179 }
180
181
182 /**
183 * Save Import CSS in the top of the File
184 *
185 * @since v.1.0.0
186 * @param STRING | CSS (STRING)
187 * @return STRING | Generated CSS
188 */
189 public function set_top_css($get_css = ''){
190 $css_url = "@import url('https://fonts.googleapis.com/css?family=";
191 $font_exists = substr_count($get_css, $css_url);
192 if ($font_exists){
193 $pattern = sprintf('/%s(.+?)%s/ims', preg_quote($css_url, '/'), preg_quote("');", '/'));
194 if (preg_match_all($pattern, $get_css, $matches)) {
195 $fonts = $matches[0];
196 $get_css = str_replace($fonts, '', $get_css);
197 if( preg_match_all( '/font-weight[ ]?:[ ]?[\d]{3}[ ]?;/' , $get_css, $matche_weight ) ){
198 $weight = array_map( function($val){
199 $process = trim( str_replace( array( 'font-weight',':',';' ) , '', $val ) );
200 if( is_numeric( $process ) ){
201 return $process;
202 }
203 }, $matche_weight[0] );
204 foreach ( $fonts as $key => $val ) {
205 $fonts[$key] = str_replace( "');",'', $val ).':'.implode( ',',$weight )."');";
206 }
207 }
208 $fonts = array_unique($fonts);
209 $get_css = implode('', $fonts).$get_css;
210 }
211 }
212 return $get_css;
213 }
214
215
216 /**
217 * Enqueue CSS in HEAD or as a File
218 *
219 * @since v.1.0.0
220 * @return NULL
221 */
222 public function require_block_css(){
223 $save_as = ultimate_post()->get_setting('css_save_as');
224 $save_as = $save_as ? $save_as : '';
225 if ($save_as === 'filesystem') {
226 add_action('wp_enqueue_scripts', array($this, 'add_block_css_file'));
227 } else {
228 add_action('wp_head', array( $this, 'add_block_inline_css' ), 100);
229 }
230 }
231
232
233 /**
234 * Set CSS as File
235 *
236 * @since v.1.0.0
237 * @return NULL
238 */
239 public function add_block_css_file() {
240 ultimate_post()->set_css_style( ultimate_post()->get_ID() );
241 }
242
243
244 /**
245 * Set Inline CSS in Head
246 *
247 * @since v.1.0.0
248 * @return NULL
249 */
250 public function add_block_inline_css(){
251 $post_id = ultimate_post()->get_ID();
252 if( $post_id ){
253 $upload_dir_url = wp_get_upload_dir();
254 $upload_css_dir_url = trailingslashit( $upload_dir_url['basedir'] );
255 $css_dir_path = $upload_css_dir_url."ultimate-post/ultp-css-{$post_id}.css";
256
257 // Reusable CSS
258 $reusable_css = '';
259 $reusable_id = ultimate_post()->reusable_id($post_id);
260 foreach ( $reusable_id as $id ) {
261 $reusable_dir_path = $upload_css_dir_url."ultimate-post/ultp-css-{$id}.css";
262 if (file_exists( $reusable_dir_path )) {
263 $reusable_css .= file_get_contents($reusable_dir_path);
264 }else{
265 $reusable_css .= get_post_meta($id, '_ultp_css', true);
266 }
267 }
268
269 if (file_exists( $css_dir_path )) {
270 echo '<style type="text/css">'.file_get_contents($css_dir_path).$reusable_css.'</style>';
271 } else {
272 $css = get_post_meta($post_id, '_ultp_css', true);
273 if($css) {
274 echo '<style type="text/css">'.$css.$reusable_css.'</style>';
275 }
276 }
277 }
278 }
279 }