예제 #1
0
 /**
  * Install WC_Germanized
  */
 public function install()
 {
     // Load Translation for default options
     $locale = apply_filters('plugin_locale', get_locale());
     $mofile = WC_germanized()->plugin_path() . '/i18n/languages/woocommerce-germanized.mo';
     if (file_exists(WC_germanized()->plugin_path() . '/i18n/languages/woocommerce-germanized-' . $locale . '.mo')) {
         $mofile = WC_germanized()->plugin_path() . '/i18n/languages/woocommerce-germanized-' . $locale . '.mo';
     }
     load_textdomain('woocommerce-germanized', $mofile);
     if (!WC_GZD_Dependencies::instance()->is_woocommerce_activated()) {
         deactivate_plugins(WC_GERMANIZED_PLUGIN_FILE);
         wp_die(sprintf(__('Please install <a href="%s" target="_blank">WooCommerce</a> before installing WooCommerce Germanized. Thank you!', 'woocommerce-germanized'), 'http://wordpress.org/plugins/woocommerce/'));
     }
     $this->create_options();
     // Register post types
     include_once 'class-wc-gzd-post-types.php';
     WC_GZD_Post_types::register_taxonomies();
     $this->create_cron_jobs();
     $this->create_units();
     // Virtual Tax Classes
     $tax_classes = array_filter(array_map('trim', explode("\n", get_option('woocommerce_tax_classes'))));
     if (!in_array('Virtual Rate', $tax_classes) || !in_array('Virtual Reduced Rate', $tax_classes)) {
         update_option('_wc_gzd_needs_pages', 1);
         if (!in_array('Virtual Rate', $tax_classes)) {
             array_push($tax_classes, 'Virtual Rate');
         }
         if (!in_array('Virtual Reduced Rate', $tax_classes)) {
             array_push($tax_classes, 'Virtual Reduced Rate');
         }
         update_option('woocommerce_tax_classes', implode("\n", $tax_classes));
     }
     // Queue upgrades
     $current_version = get_option('woocommerce_gzd_version', null);
     $current_db_version = get_option('woocommerce_gzd_db_version', null);
     if (version_compare($current_db_version, '1.0.4', '<') && null !== $current_db_version) {
         update_option('_wc_gzd_needs_update', 1);
     }
     update_option('woocommerce_gzd_db_version', WC_germanized()->version);
     // Update version
     update_option('woocommerce_gzd_version', WC_germanized()->version);
     // Update activation date
     update_option('woocommerce_gzd_activation_date', date('Y-m-d'));
     // Add theme compatibility check
     delete_option('_wc_gzd_hide_theme_notice');
     delete_option('_wc_gzd_hide_review_notice');
     delete_option('_wc_gzd_hide_pro_notice');
     // Check if pages are needed
     if (wc_get_page_id('revocation') < 1) {
         update_option('_wc_gzd_needs_pages', 1);
     }
     // Flush rules after install
     flush_rewrite_rules();
     // Redirect to welcome screen
     set_transient('_wc_gzd_activation_redirect', 1, 60 * 60);
 }
    // Exit if accessed directly
}
/**
 * Registers delivery time taxonomy
 *
 * @class 		WC_GZD_Post_Types
 * @version		1.0.0
 * @author 		Vendidero
 */
class WC_GZD_Post_Types
{
    /**
     * Hook in methods
     */
    public static function init()
    {
        add_action('init', array(__CLASS__, 'register_taxonomies'), 11);
    }
    /**
     * Register Delivery Time Taxonomy
     */
    public static function register_taxonomies()
    {
        // Delivery time
        register_taxonomy('product_delivery_time', apply_filters('woocommerce_germanized_taxonomy_objects_product_delivery_time', array('product')), apply_filters('woocommerce_germanized_taxonomy_args_product_delivery_time', array('hierarchical' => false, 'update_count_callback' => '_wc_term_recount', 'label' => __('Product Delivery Times', 'woocommerce-germanized'), 'labels' => array('name' => __('Product Delivery Times', 'woocommerce-germanized'), 'singular_name' => __('Product Delivery Time', 'woocommerce-germanized'), 'menu_name' => _x('Delivery Time', 'Admin menu name', 'woocommerce-germanized'), 'search_items' => __('Search Delivery Times', 'woocommerce-germanized'), 'all_items' => __('All Product Delivery Times', 'woocommerce-germanized'), 'edit_item' => __('Edit Product Delivery Time', 'woocommerce-germanized'), 'update_item' => __('Update Product Delivery Time', 'woocommerce-germanized'), 'add_new_item' => __('Add New Product Delivery Time', 'woocommerce-germanized'), 'new_item_name' => __('New Product Delivery Time Name', 'woocommerce-germanized')), 'show_ui' => true, 'query_var' => true, 'public' => false, 'capabilities' => array('manage_terms' => 'manage_product_terms', 'edit_terms' => 'edit_product_terms', 'delete_terms' => 'delete_product_terms', 'assign_terms' => 'assign_product_terms'), 'rewrite' => false)));
        // Units
        register_taxonomy('product_unit', apply_filters('woocommerce_germanized_taxonomy_objects_product_unit', array('product')), apply_filters('woocommerce_germanized_taxonomy_args_product_unit', array('hierarchical' => false, 'update_count_callback' => '_wc_term_recount', 'label' => __('Units', 'woocommerce-germanized'), 'labels' => array('name' => __('Units', 'woocommerce-germanized'), 'singular_name' => __('Unit', 'woocommerce-germanized'), 'menu_name' => _x('Units', 'Admin menu name', 'woocommerce-germanized'), 'search_items' => __('Search Units', 'woocommerce-germanized'), 'all_items' => __('All Units', 'woocommerce-germanized'), 'edit_item' => __('Edit Unit', 'woocommerce-germanized'), 'update_item' => __('Update Unit', 'woocommerce-germanized'), 'add_new_item' => __('Add New Unit', 'woocommerce-germanized'), 'new_item_name' => __('New Unit Name', 'woocommerce-germanized')), 'show_ui' => true, 'query_var' => true, 'public' => false, 'capabilities' => array('manage_terms' => 'manage_product_terms', 'edit_terms' => 'edit_product_terms', 'delete_terms' => 'delete_product_terms', 'assign_terms' => 'assign_product_terms'), 'rewrite' => false)));
    }
}
WC_GZD_Post_types::init();
 /**
  * Install WC_Germanized
  */
 public static function install()
 {
     global $wpdb;
     if (!defined('WC_GZD_INSTALLING')) {
         define('WC_GZD_INSTALLING', true);
     }
     // Load Translation for default options
     $locale = apply_filters('plugin_locale', get_locale());
     $mofile = WC_germanized()->plugin_path() . '/i18n/languages/woocommerce-germanized.mo';
     if (file_exists(WC_germanized()->plugin_path() . '/i18n/languages/woocommerce-germanized-' . $locale . '.mo')) {
         $mofile = WC_germanized()->plugin_path() . '/i18n/languages/woocommerce-germanized-' . $locale . '.mo';
     }
     load_textdomain('woocommerce-germanized', $mofile);
     if (!WC_GZD_Dependencies::instance()->is_woocommerce_activated()) {
         deactivate_plugins(WC_GERMANIZED_PLUGIN_FILE);
         wp_die(sprintf(__('Please install <a href="%s" target="_blank">WooCommerce</a> before installing WooCommerce Germanized. Thank you!', 'woocommerce-germanized'), 'http://wordpress.org/plugins/woocommerce/'));
     }
     self::create_options();
     // Register post types
     include_once 'class-wc-gzd-post-types.php';
     WC_GZD_Post_types::register_taxonomies();
     self::create_cron_jobs();
     self::create_units();
     // Virtual Tax Classes
     $tax_classes = array_filter(array_map('trim', explode("\n", get_option('woocommerce_tax_classes'))));
     if (!in_array('Virtual Rate', $tax_classes) || !in_array('Virtual Reduced Rate', $tax_classes)) {
         update_option('_wc_gzd_needs_pages', 1);
         if (!in_array('Virtual Rate', $tax_classes)) {
             array_push($tax_classes, 'Virtual Rate');
         }
         if (!in_array('Virtual Reduced Rate', $tax_classes)) {
             array_push($tax_classes, 'Virtual Reduced Rate');
         }
         update_option('woocommerce_tax_classes', implode("\n", $tax_classes));
     }
     // Queue upgrades
     $current_version = get_option('woocommerce_gzd_version', null);
     $current_db_version = get_option('woocommerce_gzd_db_version', null);
     // Queue messages and notices
     if (!is_null($current_version)) {
         // Show tour for new installs only
         update_option('woocommerce_gzd_hide_tour', 1);
         $major_version = substr($current_version, 0, 3);
         $new_major_version = substr(WC_germanized()->version, 0, 3);
         // Only on major update
         if (version_compare($new_major_version, $major_version, ">")) {
             delete_option('_wc_gzd_hide_theme_notice');
             delete_option('_wc_gzd_hide_pro_notice');
         }
     } else {
         // Fresh install - Check if some german market plugin was installed before
         if (WC_GZD_Admin_Importer::instance()->is_available()) {
             update_option('_wc_gzd_import_available', 1);
         }
     }
     if (!is_null($current_db_version) && version_compare($current_db_version, max(array_keys(self::$db_updates)), '<')) {
         // Update
         update_option('_wc_gzd_needs_update', 1);
     } else {
         self::update_db_version();
     }
     self::update_wc_gzd_version();
     // Update activation date
     update_option('woocommerce_gzd_activation_date', date('Y-m-d'));
     // Add theme compatibility check
     delete_option('_wc_gzd_hide_review_notice');
     // Check if pages are needed
     if (wc_get_page_id('revocation') < 1) {
         update_option('_wc_gzd_needs_pages', 1);
     }
     // Flush rules after install
     flush_rewrite_rules();
     // Redirect to welcome screen
     set_transient('_wc_gzd_activation_redirect', 1, 60 * 60);
 }