PluginProbe ʕ •ᴥ•ʔ
VK Blocks / trunk
VK Blocks vtrunk
1.123.0 1.122.0 1.121.0 1.120.0 1.119.2 1.119.1 1.119.0 1.118.7 1.82.0.0 1.82.0.1 1.83.0.0 1.83.0.1 1.84.0.0 1.84.0.1 1.85.0.2 1.85.0.3 1.85.1.0 1.85.1.1 1.86.0.0 1.86.0.1 1.86.1.0 1.87.0.0 1.87.0.1 1.88.0.1 1.88.0.2 1.89.0.0 1.9.2 1.90.0.0 1.90.0.1 1.90.1.1 1.91.0.0 1.91.1.1 1.92.0.0 1.92.0.1 1.92.1.0 1.92.1.1 1.93.0.0 trunk 1.93.0.1 0.1.1 1.93.1.0 0.10.3 1.93.1.1 0.11.0 1.94.0.0 0.12.6 1.94.0.1 0.15.1 1.94.1.0 0.16.2 1.94.2.1 0.17.6 1.94.2.2 0.2.2 1.95.0.3 0.22.4 1.95.0.4 0.26.7 1.96.2.0 0.3.2 1.96.2.1 0.31.0 1.97.0.1 0.35.5 1.97.0.2 0.37.5 1.99.0.0 0.38.8 1.99.0.1 0.39.4 0.4.7 0.41.0 0.42.0 0.44.13 0.45.2 0.46.1 0.47.0 0.48.0 0.49.8 0.5.2 0.50.3 0.51.0 0.52.2 0.53.2 0.54.0 0.55.0 0.56.2 0.56.3 0.57.6 0.58.10 0.59.0 0.6.0 0.60.1 0.61.2 0.7.1 0.8.2 1.0.16 1.10.0 1.100.0.0 1.100.0.1 1.102.0.0 1.102.0.1 1.103.0.0 1.104.0.0 1.104.0.1 1.105.1.0 1.105.1.1 1.106.0.0 1.106.0.1 1.107.0.0 1.107.0.1 1.107.0.2 1.108.0.0 1.108.0.1 1.109.0.0 1.109.0.1 1.11.4 1.110.0.0 1.110.0.1 1.111.0.0 1.111.0.1 1.111.0.2 1.112.0.0 1.112.0.1 1.113.0.0 1.113.0.1 1.114.0.0 1.114.0.1 1.114.2.0 1.114.2.1 1.115.0.0 1.115.0.1 1.115.1.0 1.115.1.1 1.115.2.0 1.115.2.1 1.116.0.0 1.116.0.1 1.116.1.0 1.116.1.1 1.116.2.0 1.117.0.0 1.117.0.1 1.117.1.0 1.118.2 1.118.5 1.12.0 1.13.2 1.14.1 1.15.1 1.16.11 1.17.0 1.18.6 1.19.0 1.19.1 1.2.3 1.20.7 1.21.0 1.22.4 1.23.0 1.24.5 1.25.1 1.26.2 1.27.7.2 1.28.0.1 1.29.2.0 1.3.9 1.30.0.1 1.31.0.1 1.32.0.2 1.33.2.1 1.36.1.5 1.37.0.0 1.39.2.1 1.4.6 1.40.0.1 1.40.1.0 1.40.1.1 1.41.0.0 1.41.0.1 1.41.2.2 1.41.2.3 1.43.0.0 1.43.0.1 1.43.0.2 1.44.0.0 1.44.0.1 1.45.0.0 1.45.0.1 1.46.0.0 1.46.0.1 1.47.0.0 1.47.0.1 1.47.1.0 1.48.0.0 1.48.0.1 1.48.0.2 1.48.1.0 1.48.1.1 1.5.0 1.50.0.0 1.50.0.1 1.51.0.0 1.51.0.1 1.52.0.0 1.52.0.1 1.53.0.0 1.53.0.1 1.54.0.0 1.54.0.1 1.55.0.0 1.55.0.1 1.56.0.0 1.56.0.1 1.57.0.0 1.57.0.2 1.57.0.3 1.57.0.4 1.57.0.5 1.57.1.0 1.57.1.1 1.57.1.2 1.58.0.0 1.58.0.1 1.59.0.0 1.59.0.1 1.6.0 1.60.0.0 1.60.0.1 1.63.0.0 1.63.0.1 1.64.0.0 1.64.0.1 1.64.1.0 1.64.1.2 1.67.0.0 1.67.0.1 1.68.0.0 1.68.0.1 1.69.0.0 1.69.0.1 1.69.1.1 1.69.1.2 1.7.1 1.70.0.0 1.70.0.1 1.71.0.0 1.71.0.1 1.72.0.0 1.72.1.0 1.72.1.1 1.73.0.0 1.73.0.1 1.74.0.0 1.74.0.1 1.75.0.0 1.75.1.0 1.75.1.1 1.76.0.0 1.76.0.1 1.76.1.0 1.76.1.1 1.76.2.0 1.76.2.1 1.77.0.0 1.77.0.1 1.78.0.0 1.78.0.1 1.79.0.0 1.79.0.1 1.79.0.2 1.79.0.3 1.79.1.0 1.79.1.1 1.8.2 1.80.1.0 1.80.1.1 1.80.1.2 1.81.0.1 1.81.0.2
vk-blocks / vk-blocks.php
vk-blocks Last commit date
build 13 hours ago editor-css 2 weeks ago inc 13 hours ago languages 13 hours ago lib 1 year ago options-css 9 months ago src 13 hours ago vendor 13 hours ago composer.json 13 hours ago composer.lock 13 hours ago eslint.config.js 2 weeks ago readme.txt 13 hours ago screenshot-1.png 4 years ago screenshot-2.png 4 years ago vk-blocks.php 13 hours ago
vk-blocks.php
421 lines
1 <?php
2 /**
3 * Plugin Name: VK Blocks
4 * Plugin URI: https://github.com/vektor-inc/vk-blocks
5 * Description: This is a plugin that extends Block Editor.
6 * Version: 1.123.0
7 * Requires at least: 6.5
8 * Author: Vektor,Inc.
9 * Author URI: https://vektor-inc.co.jp
10 * Text Domain: vk-blocks
11 * License: GPLv2 or later
12 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
13 *
14 * @package vk-blocks
15 */
16
17 // Do not load directly.
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit;
20 }
21
22
23 /*
24 無料版の VK Blocks の無効化が正常に動作しなかった場合に無料版の関数が�
25 �に定義され
26 重複 -> Fatal error になるため function_exists は フォールバックとして付与している
27 */
28 if ( ! function_exists( 'vk_blocks_get_version' ) ) {
29 /**
30 * Get Plugin Version
31 *
32 * @return string
33 */
34 function vk_blocks_get_version() {
35 $data = get_file_data( __FILE__, array( 'version' => 'Version' ) );
36 return $data['version'];
37 }
38 }
39
40 /**
41 * Deactivate VK Blocks ( Free )
42 *
43 * 読み込んでだ時に無料版が有効化されていたら、誤動作しないようになるべく早く無効化するためそのまま実行させている
44 * VK Blocks 無料版の 1.36.0 で vk_blocks_is_pro を function_exists を経由せずに定義してしまっているため、
45 * 無料版 1.36.0 を停止する前に vk_blocks_is_pro を定義するとエラーになるため、
46 * vk_blocks_is_pro の定義前に無料版の無効化処理を行っている
47 * 1.36.0無料版有効化時にPRo版を有効化時に一瞬エラーが表示されるが、再読み込みで復帰する
48 * 1.36.0無料版をアップデートしてもらわないとこれは避けられないので、当面はこのまま運用する
49 *
50 * プロ版での読み込みかどうかの判定は strpos を使っているが、
51 * strpos は"合致している"にも関わらず返り値は"0"を返してしまうため !== false で処理している.
52 */
53 require_once ABSPATH . 'wp-admin/includes/plugin.php';
54
55 if ( strpos( plugin_dir_path( __FILE__ ), 'vk-blocks-pro' ) !== false ) {
56 if ( is_plugin_active( 'vk-blocks/vk-blocks.php' ) ) {
57 deactivate_plugins( 'vk-blocks/vk-blocks.php' );
58
59 // Deactivate ExUnit included VK Blocks.
60 $vk_blocks_exunit_common_options = get_option( 'vkExUnit_common_options' );
61 if ( ! empty( $vk_blocks_exunit_common_options['active_vk-blocks'] ) ) {
62 $vk_blocks_exunit_common_options['active_vk-blocks'] = false;
63 update_option( 'vkExUnit_common_options', $vk_blocks_exunit_common_options );
64 }
65 return;
66 }
67 if ( is_plugin_active( 'vk-gridcolcard/vk-gridcolcard.php' ) ) {
68 deactivate_plugins( 'vk-gridcolcard/vk-gridcolcard.php' );
69 require_once ABSPATH . 'wp-admin/includes/plugin.php';
70 // Deactivate ExUnit included VK Blocks.
71 $vk_blocks_exunit_common_options = get_option( 'vkExUnit_common_options' );
72 if ( ! empty( $vk_blocks_exunit_common_options['active_vk-blocks'] ) ) {
73 $vk_blocks_exunit_common_options['active_vk-blocks'] = false;
74 update_option( 'vkExUnit_common_options', $vk_blocks_exunit_common_options );
75 }
76 return;
77 }
78 } elseif ( strpos( plugin_dir_path( __FILE__ ), 'vk-blocks' ) !== false ) {
79 if ( is_plugin_active( 'vk-blocks-pro/vk-blocks.php' ) ) {
80 require_once ABSPATH . 'wp-admin/includes/plugin.php';
81 // Deactivate ExUnit included VK Blocks.
82 $vk_blocks_exunit_common_options = get_option( 'vkExUnit_common_options' );
83 if ( ! empty( $vk_blocks_exunit_common_options['active_vk-blocks'] ) ) {
84 $vk_blocks_exunit_common_options['active_vk-blocks'] = false;
85 update_option( 'vkExUnit_common_options', $vk_blocks_exunit_common_options );
86 }
87 return;
88 }
89 }
90
91 if ( is_admin() && ! is_network_admin() ) {
92 $vk_blocks_options = get_option( 'vkExUnit_common_options' );
93 if ( ! empty( $vk_blocks_options['active_vk-blocks'] ) ) {
94 $vk_blocks_options['active_vk-blocks'] = false;
95 update_option( 'vkExUnit_common_options', $vk_blocks_options );
96
97 add_action(
98 'admin_notices',
99 function () {
100 echo '<div class="updated notice"><p>';
101 echo esc_html( __( 'Disabled Blocks module on VK All in One Expansion Unit. Because VK-Blocks Plugin running.', 'vk-blocks' ) );
102 echo '</p></div>';
103 }
104 );
105 }
106 }
107
108 /*
109 無料版の VK Blocks の無効化が正常に動作しなかった場合に無料版の関数が�
110 �に定義され
111 重複 -> Fatal error になるため function_exists は フォールバックとして付与している
112 */
113 if ( ! function_exists( 'vk_blocks_is_pro' ) ) {
114 /**
115 * Check Free or Pro
116 *
117 * @return bool
118 */
119 function vk_blocks_is_pro() {
120 $return = false;
121 // 注意 : strpos() は合致した開始位置を返すので、最初に合致すると、
122 // "合致している"にも関わらず返り値は"0"を返してしまうため !== false で処理している.
123 if ( strpos( plugin_dir_path( __FILE__ ), 'vk-blocks-pro' ) !== false ) {
124 $return = true;
125 }
126 return $return;
127 }
128 }
129
130 /****************************************************************************************
131 * Start VK Blocks
132 * 無料版を無効化した後に書かないと関数の二重宣言などになるので注意
133 */
134 if ( ! function_exists( 'vk_blocks_loaded' ) ) {
135 /**
136 * Load VK Blocks
137 *
138 * @return void
139 */
140 function vk_blocks_loaded() {
141 // Composer のファイルを読み込み ( composer install --no-dev ).
142 require_once plugin_dir_path( __FILE__ ) . 'vendor/autoload.php';
143 // Set plugin dir path.
144 if ( ! defined( 'VK_BLOCKS_DIR_PATH' ) ) {
145 define( 'VK_BLOCKS_DIR_PATH', plugin_dir_path( __FILE__ ) );
146 }
147 // Set Plugin Dir URL.
148 if ( ! defined( 'VK_BLOCKS_DIR_URL' ) ) {
149 define( 'VK_BLOCKS_DIR_URL', plugin_dir_url( __FILE__ ) );
150 }
151 // Load VK Blocks
152 require_once plugin_dir_path( __FILE__ ) . 'inc/vk-blocks-config.php';
153 }
154 add_action( 'plugins_loaded', 'vk_blocks_loaded' );
155 }
156
157
158 /****************************************************************************************
159 * Load updater ( Pro version only )
160 */
161
162 if ( function_exists( 'vk_blocks_is_pro' ) && vk_blocks_is_pro() ) {
163
164 // 翻訳を実行
165 add_action(
166 'plugins_loaded',
167 function () {
168 // サイトのロケールを取得
169 $locale = determine_locale();
170 // 翻訳ファイルのパスを指定
171 $path = plugin_dir_path( __FILE__ ) . 'languages';
172
173 // 日本語の設定のみ翻訳ファイルを読み込み
174 if ( strpos( $locale, 'ja' ) === 0 ) {
175 // PHPファイルの翻訳読み込み
176 load_textdomain( 'vk-blocks-pro', $path . '/vk-blocks-pro-ja.mo' );
177
178 // JavaScriptファイルの翻訳設定
179 add_action(
180 'wp_enqueue_scripts',
181 function () use ( $path ) {
182 // スクリプト登録後に翻訳設定
183 wp_set_script_translations( 'vk-blocks-build-js', 'vk-blocks-pro', $path );
184 wp_set_script_translations( 'vk-blocks-admin-js', 'vk-blocks-pro', $path );
185 }
186 );
187 }
188 }
189 );
190
191 // 本来 Pro 版でしか読み込まないが、1.36.0.0 は間違って読み込んでしまっており
192 // 無料版 1.36.0 を有効化していると previously declared になるため ! function_exists() を通した上で宣言している.
193 if ( ! function_exists( 'vk_blocks_update_checker' ) ) {
194 /**
195 * Perform update checks on VK Blocks.
196 *
197 * @return void
198 */
199 function vk_blocks_update_checker() {
200
201 // Cope with : WP HTTP Error: cURL error 60: SSL certificate problem: certificate has expired.
202 add_filter( 'https_ssl_verify', '__return_false' );
203
204 global $vk_blocks_update_checker;
205
206 $vk_blocks_update_checker = YahnisElsts\PluginUpdateChecker\v5\PucFactory::buildUpdateChecker(
207 'https://license.vektor-inc.co.jp/check/?action=get_metadata&slug=vk-blocks-pro',
208 __FILE__, // この処理を他の場所に移動するとここを変更しないといけなくなるので注意.
209 'vk-blocks-pro'
210 );
211
212 $vk_blocks_update_checker->addQueryArgFilter( 'vk_blocks_get_license_check_query_arg' );
213
214 // 管理画面 かつ テーマオプションの編集権限がある場合.
215 if ( is_admin() && current_user_can( 'edit_theme_options' ) ) {
216 $network_runnning_pro = false;
217
218 // マルチサイトでOriginal Brand Unitが動いていたら.
219 if ( is_multisite() ) {
220 $network_options = get_site_option( 'active_sitewide_plugins', array() );
221 if ( isset( $network_options['lightning-original-brand-unit/lightning-original-brand-unit.php'] ) ) {
222 $network_runnning_pro = true;
223 }
224 }
225
226 // マルチサイトでOriginal Brand Unitが動いていない && Original Brand Unitが有効になっていない.
227 $active_plugins = get_option( 'active_plugins', array() );
228 if ( ! $network_runnning_pro && ! in_array( 'lightning-original-brand-unit/lightning-original-brand-unit.php', $active_plugins, true ) ) {
229 add_action(
230 'admin_notices',
231 function () {
232 vk_blocks_the_update_messsage();
233 }
234 );
235 }
236 }
237 }
238 }
239
240 add_action( 'after_setup_theme', 'vk_blocks_update_checker' );
241
242 if ( ! function_exists( 'vk_blocks_license_check' ) ) {
243 /**
244 * Licence Checker
245 *
246 * @param array $test_data テストデータ.
247 * @return string $check_result ライセンス認証の結果.
248 */
249 function vk_blocks_license_check( $test_data = array() ) {
250
251 // アップデート周りの変数を取得.
252 global $vk_blocks_update_checker;
253
254 // オプション値を取得.
255 $options = get_option( 'vk_blocks_options' );
256
257 // 返す値
258 $check_result = null;
259
260 // テストデータがある場合はそれを処理し、ない場合はそれぞれ取得
261 if ( ! empty( $test_data ) ) {
262
263 // 現在のテーマ
264 $template = $test_data['template'];
265
266 // Pro 版か否か
267 $is_pro = $test_data['is_pro'];
268
269 // ライセンスキー
270 $license_key = ! empty( $test_data['license_key'] ) ? $test_data['license_key'] : '';
271
272 // アップデート API
273 $update = ! empty( $test_data['update'] ) ? $test_data['update'] : array();
274 } else {
275
276 // 現在のテーマ
277 $template = wp_get_theme()->Template;
278
279 // Pro 版か否か
280 $is_pro = vk_blocks_is_pro();
281
282 // ライセンスキー
283 $license_key = ! empty( $options['vk_blocks_pro_license_key'] ) ? $options['vk_blocks_pro_license_key'] : '';
284
285 // アップデート API の�
286 報(オブジェクトは扱いにくいので�
287 �列化)
288 $update = (array) $vk_blocks_update_checker->getUpdateState()->getUpdate();
289 }
290
291 // 条件に応じて認証結果を返す.
292 if ( 'katawara' === $template || false === $is_pro ) {
293
294 // Katawara と無料版はライセンス認証�
295 �除対象なので 'exemption' を返す
296 $check_result = 'exemption';
297 } elseif ( empty( $license_key ) ) {
298
299 // それ以外でライセンスキーが空の場合は 'empty' を返す
300 $check_result = 'empty';
301 } elseif ( ! empty( $update ) && empty( $update['download_url'] ) ) {
302
303 // それ以外でライセンスキーが違う場合は 'invalid' を返す
304 $check_result = 'invalid';
305 } else {
306
307 // それ以外の場合はライセンスキーが正しいと言えるので 'valid' を返す
308 $check_result = 'valid';
309 }
310
311 // 実際の API がどう動いているかのチェック用
312 // var_dump( $check_result );
313
314 return $check_result;
315 }
316 }
317
318 if ( ! function_exists( 'vk_blocks_the_update_messsage' ) ) {
319 /**
320 * Update alert message
321 *
322 * @return void
323 */
324 function vk_blocks_the_update_messsage() {
325 global $vk_blocks_update_checker;
326 $license_check = vk_blocks_license_check();
327 $notice_title = '';
328
329 // ライセンスキーが未�
330 �力の場合.
331 if ( 'empty' === $license_check ) {
332 $notice_title = __( 'License Key has no registered.', 'vk-blocks' );
333 } elseif ( 'invalid' === $license_check ) {
334
335 // ライセンスが切れている あるいは 無効な場合.
336 // アップデートは存在するがURLが帰ってこなかった場合.
337 $notice_title = __( 'The VK Blocks Pro license is invalid.', 'vk-blocks' );
338 }
339
340 if ( empty( $notice_title ) ) {
341 return;
342 }
343
344 $link_url = wp_nonce_url(
345 add_query_arg(
346 array(
347 'puc_check_for_updates' => 1,
348 'puc_slug' => $vk_blocks_update_checker->slug,
349 ),
350 self_admin_url( 'plugins.php' )
351 ),
352 'puc_check_for_updates'
353 );
354
355 $alert_html = '';
356 $alert_html .= '<div class="error">';
357 $alert_html .= '<h4>VK Blocks Pro : ' . $notice_title . '</h4>';
358 $alert_html .= '<p>' . __( 'Please enter a valid license key for any of the following products on the settings screen.', 'vk-blocks' ) . '</p>';
359 $alert_html .= '<ul>';
360 $alert_html .= '<li><a href="https://vws.vektor-inc.co.jp/product/vektor-passport-1y/?rel=vk-blocks-pro-alert" target="_blank">Vektor Passport</a></li>';
361 $alert_html .= '<li><a href="https://vws.vektor-inc.co.jp/product/lightning-g3-pro-pack/?rel=vk-blocks-pro-alert" target="_blank">Lightning G3 Pro Pack</a></li>';
362 $alert_html .= '<li><a href="https://vws.vektor-inc.co.jp/product/lightning-pro-update-license?rel=vk-blocks-pro-alert" target="_blank">Lightning Pro</a></li>';
363 $alert_html .= '</ul>';
364
365 $alert_html .= '<p><a href="' . admin_url( '/options-general.php?page=vk_blocks_options' ) . '" class="button button-primary">' . __( 'Enter the license key', 'vk-blocks' ) . '</a></p>';
366
367 $alert_html .= '<p style="margin-bottom:15px">';
368 $alert_html .= __( 'If this display does not disappear even after entering a valid license key, re-acquire the update.', 'vk-blocks' );
369 $alert_html .= ' <span class="nowrap">[ <a href="' . $link_url . '">' . __( 'Re-acquisition of updates', 'vk-blocks' ) . '</a> ]</span>';
370 $alert_html .= '</p>';
371
372 $alert_html .= '</div>';
373 echo wp_kses_post( $alert_html );
374 }
375 }
376
377 if ( ! function_exists( 'vk_blocks_get_license_check_query_arg' ) ) {
378 /**
379 * Register update license key
380 *
381 * @param array $query_args : updatechacker array.
382 * @return $query_args
383 */
384 function vk_blocks_get_license_check_query_arg( $query_args ) {
385 $options = get_option( 'vk_blocks_options' );
386 $license = '';
387 if ( ! empty( $options['vk_blocks_pro_license_key'] ) ) {
388 $license = esc_html(
389 preg_replace(
390 "/\A[\x20\xE3\x80\x80]++|[\x20\xE3\x80\x80]++\z/u",
391 '',
392 $options['vk_blocks_pro_license_key']
393 )
394 );
395 }
396
397 if ( ! empty( $license ) ) {
398 $query_args['vk-blocks-pro-license-key'] = $license;
399 }
400 $query_args['template'] = wp_get_theme()->Template;
401
402 return $query_args;
403 }
404 }
405 }
406
407 if ( function_exists( 'register_deactivation_hook' ) ) {
408 register_deactivation_hook( __FILE__, 'vk_blocks_deactivate_function' );
409 }
410
411 if ( ! function_exists( 'vk_blocks_deactivate_function' ) ) {
412 /**
413 * Deactivate function
414 *
415 * @return void
416 */
417 function vk_blocks_deactivate_function() {
418 delete_option( 'vk_blocks_checked_flags' );
419 }
420 }
421