Factory.php
2 weeks ago
JobHooks.php
2 weeks ago
MulticurrencyHooks.php
2 weeks ago
SharedHooks.php
2 weeks ago
class-wcml-product-addons.php
2 weeks ago
SharedHooks.php
57 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WCML\Compatibility\WcProductAddons; |
| 4 | |
| 5 | use WPML\FP\Fns; |
| 6 | |
| 7 | class SharedHooks implements \IWPML_Action { |
| 8 | |
| 9 | const TEMPLATE_FOLDER = '/templates/compatibility/'; |
| 10 | const ADDONS_OPTION_KEY = '_product_addons'; |
| 11 | |
| 12 | public function add_hooks() { |
| 13 | $withoutRecursion = Fns::withoutRecursion( Fns::noop() ); |
| 14 | |
| 15 | add_action( 'init', [ $this, 'loadAssets' ] ); |
| 16 | add_action( 'updated_post_meta', $withoutRecursion( [ $this, 'triggerGlobalAddonUpdated' ] ), 10, 4 ); |
| 17 | add_action( 'added_post_meta', $withoutRecursion( [ $this, 'triggerGlobalAddonUpdated' ] ), 10, 4 ); |
| 18 | } |
| 19 | |
| 20 | public function loadAssets() { |
| 21 | global $pagenow; |
| 22 | |
| 23 | $isProductPage = 'post.php' === $pagenow && isset( $_GET['post'] ); |
| 24 | $isProductNewPage = 'post-new.php' === $pagenow && isset( $_GET['post_type'] ) && 'product' === $_GET['post_type']; |
| 25 | |
| 26 | if ( $isProductPage || $isProductNewPage || self::isGlobalAddonEditPage() ) { |
| 27 | wp_enqueue_script( 'wcml-product-addons', WCML_PLUGIN_URL . '/compatibility/res/js/wcml-product-addons' . WCML_JS_MIN . '.js', [ 'jquery' ], WCML_VERSION ); |
| 28 | wp_enqueue_style( 'wcml-product-addons', WCML_PLUGIN_URL . '/compatibility/res/css/wcml-product-addons.css', [ 'wpml-dialog' ], WCML_VERSION ); |
| 29 | } |
| 30 | } |
| 31 | |
| 32 | public static function isGlobalAddonEditPage() { |
| 33 | global $pagenow; |
| 34 | |
| 35 | return 'edit.php' === $pagenow && |
| 36 | isset( $_GET['post_type'] ) && |
| 37 | 'product' === $_GET['post_type'] && |
| 38 | isset( $_GET['page'] ) && |
| 39 | ( 'global_addons' === $_GET['page'] || 'addons' === $_GET['page'] ); |
| 40 | } |
| 41 | |
| 42 | public function triggerGlobalAddonUpdated( $metaId, $id, $metaKey, $addons ) { |
| 43 | if ( self::ADDONS_OPTION_KEY === $metaKey && self::isGlobalAddon( $id ) ) { |
| 44 | do_action( 'wcml_product_addons_global_updated', $metaId, $id, $metaKey, $addons ); |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | public static function isGlobalAddon( $postId ) { |
| 49 | return 'global_product_addon' === get_post_type( $postId ); |
| 50 | } |
| 51 | |
| 52 | public static function getProductAddons( $productId ) { |
| 53 | $data = get_post_meta( $productId, self::ADDONS_OPTION_KEY, true ); |
| 54 | return $data ? maybe_unserialize( $data ) : []; |
| 55 | } |
| 56 | } |
| 57 |