Plugin Directory

Changeset 2417553


Ignore:
Timestamp:
11/12/2020 11:22:35 PM (5 years ago)
Author:
ppakier2017
Message:

Update trunk

Location:
mnumidesigner/trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • mnumidesigner/trunk/admin/woocommerce/class-mnumidesigner-wc-product.php

    r2411168 r2417553  
    435435        $key = 'mnumidesigner_calendars';
    436436        if ( ! empty( $_POST[ $key ] ) && is_array( $_POST[ $key ] ) ) {
    437             $toSave = array();
     437            $to_save = array();
    438438            foreach ( $_POST[ $key ] as $calendar ) {
    439439                if ( strlen( sanitize_text_field( wp_unslash( $calendar ) ) ) > 0 ) {
    440                     $toSave[] = sanitize_text_field( wp_unslash( $calendar ) );
     440                    $to_save[] = sanitize_text_field( wp_unslash( $calendar ) );
    441441                }
    442442            }
    443443
    444             update_post_meta( $post_id, $key, $toSave );
     444            update_post_meta( $post_id, $key, $to_save );
    445445        } else {
    446446            delete_post_meta( $post_id, $key );
     
    485485        $key = 'mnumidesigner_calendars';
    486486        if ( ! empty( $_POST[ $key ] ) && isset( $_POST[ $key ][ $i ] ) && is_array( $_POST[ $key ][ $i ] ) ) {
    487             $toSave = array();
     487            $to_save = array();
    488488            foreach ( $_POST[ $key ][ $i ] as $calendar ) {
    489489                if ( strlen( sanitize_text_field( wp_unslash( $calendar ) ) ) > 0 ) {
    490                     $toSave[] = sanitize_text_field( wp_unslash( $calendar ) );
     490                    $to_save[] = sanitize_text_field( wp_unslash( $calendar ) );
    491491                }
    492492            }
    493493
    494             update_post_meta( $post_id, $key, $toSave );
     494            update_post_meta( $post_id, $key, $to_save );
    495495        } else {
    496496            delete_post_meta( $post_id, $key );
  • mnumidesigner/trunk/assets/js/frontend.js

    r2299029 r2417553  
    3434        }
    3535    );
     36    $( document.body ).on(
     37        'added_to_cart',
     38        function( e, fragments, cart_hash, $button ) {
     39            if (fragments && fragments.mnumidesigner) {
     40                window.location.href = fragments.mnumidesigner;
     41            }
     42        }
     43    );
    3644})( jQuery );
  • mnumidesigner/trunk/includes/class-mnumidesigner-install.php

    r2411168 r2417553  
    1818class MnumiDesigner_Install {
    1919    /**
     20     * Supported default roles
     21     *
     22     * @var array
     23     */
     24    private static $roles = array(
     25        'administrator',
     26        'shop_manager',
     27    );
     28
     29    /**
    2030     * Install MnumiDesigner data
    2131     */
     
    2535        }
    2636
    27         self::create_roles();
     37        self::create_caps();
    2838    }
    2939
     
    3141     * Create MnumiDesigner roles/capabilities.
    3242     */
    33     public static function create_roles() {
    34         global $wp_roles;
    35 
    36         if ( ! class_exists( 'WP_Roles' ) ) {
    37             return;
    38         }
    39 
    40         if ( ! isset( $wp_roles ) ) {
    41             $wp_roles = new WP_Roles();
    42         }
     43    public static function create_caps() {
     44        $wp_roles = wp_roles();
    4345
    4446        $capabilities = self::get_capabilities();
     
    4648        foreach ( $capabilities as $cap_group ) {
    4749            foreach ( $cap_group as $cap ) {
    48                 $wp_roles->add_cap( 'shop_manager', $cap );
    49                 $wp_roles->add_cap( 'administrator', $cap );
     50                foreach ( self::$roles as $role_name ) {
     51                    $role = $wp_roles->get_role( $role_name );
     52                    if ( ! $role ) {
     53                        continue;
     54                    }
     55
     56                    $role->add_cap( $cap );
     57                }
    5058            }
    5159        }
     
    8492     * Remove MnumiDesigner roles/capabilities.
    8593     */
    86     public static function remove_roles() {
    87         global $wp_roles;
    88 
    89         if ( ! class_exists( 'WP_Roles' ) ) {
    90             return;
    91         }
    92 
    93         if ( ! isset( $wp_roles ) ) {
    94             $wp_roles = new WP_Roles();
    95         }
     94    public static function remove_caps() {
     95        $wp_roles = wp_roles();
    9696
    9797        $capabilities = self::get_capabilities();
     
    9999        foreach ( $capabilities as $cap_group ) {
    100100            foreach ( $cap_group as $cap ) {
    101                 $wp_roles->remove_cap( 'shop_manager', $cap );
    102                 $wp_roles->remove_cap( 'administrator', $cap );
     101                foreach ( self::$roles as $role_name ) {
     102                    $role = $wp_roles->get_role( $role_name );
     103                    if ( ! $role ) {
     104                        continue;
     105                    }
     106
     107                    $role->remove_cap( $cap );
     108                }
    103109            }
    104110        }
  • mnumidesigner/trunk/includes/rest-api/endpoints/class-mnumidesigner-rest-calendars-controller.php

    r2415453 r2417553  
    330330                    $event_entry['date'] = substr( $event_entry['date'], 5 );
    331331                }
    332                 if ( $event_entry['type'] === null ) {
     332                if ( null === $event_entry['type'] ) {
    333333                    $event_entry['type'] = '';
    334334                }
    335                 if ( $meta['type'] === 'national-day' ) {
     335                if ( 'national-day' === $meta['type'] ) {
    336336                    $data[ $event_entry['date'] ][] = array(
    337337                        'name' => $event_entry['name'],
     
    445445                    $cyclic   = ! $has_year;
    446446                    if ( $cyclic ) {
    447                         $date = date( 'Y' ) . '-' . $date;
     447                        $date = gmdate( 'Y' ) . '-' . $date;
    448448                    }
    449449
    450                     if ( $meta['type'] === 'national-day' ) {
     450                    if ( 'national-day' === $meta['type'] ) {
    451451                        $data['events'][] = array(
    452452                            'date'   => $date,
  • mnumidesigner/trunk/includes/woocommerce/class-mnumidesigner-wc-cart.php

    r2411168 r2417553  
    6363
    6464        add_action( 'wp_enqueue_scripts', array( $this, 'variable_product_add_to_text_handling' ), 22 );
     65
     66        add_filter( 'woocommerce_add_to_cart_fragments', array( $this, 'add_to_cart_fragments' ), 10, 1 );
    6567    }
    6668
     
    8991
    9092                    if ( MnumiDesigner_WC_Product::is_mnumidesigner_product( $variation ) ) {
    91                         $mnumidesigner_variations[ $variation->get_id() ] = get_option( 'mnumidesigner_add_to_cart_label', 'Personalizuj' );
     93                        $mnumidesigner_variations[ $variation->get_id() ] = get_option( 'mnumidesigner_add_to_cart_label', 'Personalize' );
    9294                    }
    9395                }
     
    350352    }
    351353
     354    private function get_latest_cart_item() {
     355        $latest_cart_item = end( WC()->cart->cart_contents );
     356
     357        // $items = WC()->cart->get_cart();
     358        // $latest_cart_item = end($items);
     359        return $latest_cart_item;
     360    }
     361
    352362    /**
    353363     * Sets MnumiDesigner as redirect destination after adding to cart product
     
    372382        $product = wc_get_product( $product_id );
    373383
    374         $latest_cart_item = end( WC()->cart->cart_contents );
    375 
    376         $product_or_variation    = $latest_cart_item['data'];
    377         $product_or_variation_id = $product_or_variation->get_id();
    378         $product_id              = $product_or_variation->get_id();
    379         $extra                   = '';
    380         if ( $product_or_variation instanceof WC_Product_Variation ) {
    381             $product_id = $product_or_variation->get_parent_id();
    382             $extra     .= sprintf( 'variation_id="%s"', $product_or_variation->get_id() );
    383         }
    384 
    385         $trans = MnumiDesigner_WC_Product::get_translation( $product_or_variation );
    386         if ( $trans ) {
    387             $extra .= sprintf( ' translation_id="%s"', $trans );
    388         }
    389 
    390         $cals = MnumiDesigner_WC_Product::get_event_calendars( $product_or_variation );
    391 
    392         if ( count( $cals ) > 0 ) {
    393             $extra .= sprintf( ' calendar_ids="%s"', implode( ',', $cals ) );
    394         }
    395 
    396         if ( MnumiDesigner_WC_Product::is_mnumidesigner_product( $product_or_variation ) ) {
    397             $url = do_shortcode(
    398                 sprintf(
    399                     '[%s product_id="%d" back_url="%s" %s]',
    400                     MnumiDesigner_WC_Shortcode_New_Project_Url::SHORTCODE,
    401                     $product_id,
    402                     MnumiDesigner_BackUrl_Handler::get_permalink(
    403                         array(
    404                             'mnumidesigner_uri_action'     => 'attach',
    405                             'mnumidesigner_uri_cart_item_id' => $latest_cart_item['key'],
    406                             'mnumidesigner_uri_project_id' => '%s',
    407                             'mnumidesigner_uri_pages_count' => '%s',
    408                         )
    409                     ),
    410                     $extra
    411                 )
    412             );
    413         }
    414 
     384        $latest_cart_item = $this->get_latest_cart_item();
     385        $new_url          = $this->get_attach_url_for_cart_item( $latest_cart_item );
     386        if ( $new_url ) {
     387            return $new_url;
     388        }
    415389        return $url;
    416390    }
     
    498472        }
    499473    }
     474
     475    /**
     476     *
     477     * @param array $fragments
     478     */
     479    public function add_to_cart_fragments( $fragments ) {
     480        if ( ! MnumiDesigner::is_configured() ) {
     481            return $fragments;
     482        }
     483
     484        $latest_cart_item = $this->get_latest_cart_item();
     485        $product_id       = $latest_cart_item['data']->get_id();
     486
     487        $product = wc_get_product( $product_id );
     488        if ( ! MnumiDesigner_WC_Product::is_mnumidesigner_product( $product ) ) {
     489            return $fragments;
     490        }
     491
     492        return array_merge(
     493            $fragments,
     494            array(
     495                'mnumidesigner' => $this->get_attach_url_for_cart_item( $latest_cart_item ),
     496            )
     497        );
     498    }
     499
     500    /**
     501     * @param array $latest_cart_item
     502     * @return string|false
     503     */
     504    private function get_attach_url_for_cart_item( $latest_cart_item ) {
     505        $product_or_variation    = $latest_cart_item['data'];
     506        $product_or_variation_id = $product_or_variation->get_id();
     507        $product_id              = $product_or_variation->get_id();
     508        $extra                   = '';
     509
     510        if ( $product_or_variation instanceof WC_Product_Variation ) {
     511            $product_id = $product_or_variation->get_parent_id();
     512            $extra     .= sprintf( 'variation_id="%s"', $product_or_variation->get_id() );
     513        }
     514
     515        $trans = MnumiDesigner_WC_Product::get_translation( $product_or_variation );
     516        if ( $trans ) {
     517            $extra .= sprintf( ' translation_id="%s"', $trans );
     518        }
     519
     520        $cals = MnumiDesigner_WC_Product::get_event_calendars( $product_or_variation );
     521
     522        if ( count( $cals ) > 0 ) {
     523            $extra .= sprintf( ' calendar_ids="%s"', implode( ',', $cals ) );
     524        }
     525
     526        if ( ! MnumiDesigner_WC_Product::is_mnumidesigner_product( $product_or_variation ) ) {
     527            return false;
     528        }
     529
     530        return do_shortcode(
     531            sprintf(
     532                '[%s product_id="%d" back_url="%s" %s]',
     533                MnumiDesigner_WC_Shortcode_New_Project_Url::SHORTCODE,
     534                $product_id,
     535                MnumiDesigner_BackUrl_Handler::get_permalink(
     536                    array(
     537                        'mnumidesigner_uri_action'       => 'attach',
     538                        'mnumidesigner_uri_cart_item_id' => $latest_cart_item['key'],
     539                        'mnumidesigner_uri_project_id'   => '%s',
     540                        'mnumidesigner_uri_pages_count'  => '%s',
     541                    )
     542                ),
     543                $extra
     544            )
     545        );
     546    }
    500547}
    501548
  • mnumidesigner/trunk/languages/mnumidesigner.pot

    r2415453 r2417553  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: mnumidesigner 0.7.1\n"
     5"Project-Id-Version: mnumidesigner 0.7.2\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mnumidesigner\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2020-11-09T23:37:15+01:00\n"
     12"POT-Creation-Date: 2020-11-13T00:17:24+01:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.4.0\n"
     
    237237
    238238#: admin/woocommerce/class-mnumidesigner-wc-order-data.php:97
    239 #: includes/woocommerce/class-mnumidesigner-wc-cart.php:224
    240 #: includes/woocommerce/class-mnumidesigner-wc-cart.php:258
     239#: includes/woocommerce/class-mnumidesigner-wc-cart.php:226
     240#: includes/woocommerce/class-mnumidesigner-wc-cart.php:260
    241241msgid "Project"
    242242msgstr ""
     
    897897msgstr ""
    898898
    899 #: includes/woocommerce/class-mnumidesigner-wc-cart.php:108
     899#: includes/woocommerce/class-mnumidesigner-wc-cart.php:110
    900900msgid "Add to cart"
    901901msgstr ""
    902902
    903 #: includes/woocommerce/class-mnumidesigner-wc-cart.php:180
     903#: includes/woocommerce/class-mnumidesigner-wc-cart.php:182
    904904msgid "Invalid project ID"
    905905msgstr ""
  • mnumidesigner/trunk/mnumidesigner.php

    r2415453 r2417553  
    55 * Description: MnumiDesigner is an online application for photo products. You can design photo calendars, photo albums or any other photo products sold in WooCommerce.
    66 * Author: Mnumi
    7  * Version: 0.7.1
     7 * Version: 0.7.2
     8 * WC requires at least: 3.0.0
    89 * Text Domain: mnumidesigner
    910 *
  • mnumidesigner/trunk/readme.txt

    r2415453 r2417553  
    22Contributors: ppakier2017, mnumi
    33Tags: product customiser, product designer, custom product, print, photo book, photo album, photo calendar, photo-book, woocommerce, web2print
    4 Stable tag: 0.7.1
     4Stable tag: 0.7.2
    55Requires at least: 4.6
    66Tested up to: 5.4.4
     
    159159== Changelog ==
    160160
     161= 0.7.2 - 2020-11-13 =
     162
     163* Fix - Handle AJAX add to cart on archive view
     164
    161165= 0.7.1 - 2020-11-09 =
    162166
Note: See TracChangeset for help on using the changeset viewer.