includes(); $this->api = new YqTrack_API(); $options = get_option('yqtrack_option_name'); if ($options) { if (isset($options['plugin'])) { $plugin = $options['plugin']; if ($plugin == '17TRACK') { add_action('admin_print_scripts', array(&$this, 'library_scripts')); add_action('in_admin_footer', array(&$this, 'include_footer_script')); add_action('admin_print_styles', array(&$this, 'admin_styles')); add_action('add_meta_boxes', array(&$this, 'add_meta_box')); add_action('woocommerce_process_shop_order_meta', array(&$this, 'save_meta_box'), 0, 2); add_action('plugins_loaded', array($this, 'load_plugin_textdomain')); $this->couriers = $options['couriers']; } $this->plugin = $plugin; } else { $this->plugin = ''; } add_action('woocommerce_view_order', array(&$this, 'display_tracking_info')); add_action('woocommerce_email_before_order_table', array(&$this, 'email_display')); } add_action('show_user_profile', array($this, 'add_api_key_field')); add_action('edit_user_profile', array($this, 'add_api_key_field')); add_action('personal_options_update', array($this, 'generate_api_key')); add_action('edit_user_profile_update', array($this, 'generate_api_key')); register_activation_hook(__FILE__, array($this, 'install')); } public function install() { global $wp_roles; if (class_exists('WP_Roles')) { if (!isset($wp_roles)) { $wp_roles = new WP_Roles(); } } if (is_object($wp_roles)) { $wp_roles->add_cap('administrator', 'manage_yqtrack'); } } private function includes() { $this->yqtrack_fields = array( 'yqtrack_tracking_number' => array( 'id' => 'yqtrack_tracking_number', 'type' => 'text', 'label' => 'Tracking number', 'placeholder' => '', 'description' => '', 'class' => '' ), ); include_once('yqtrack-api.php'); include_once('yqtrack-settings.php'); } public function load_plugin_textdomain() { load_plugin_textdomain('17TRACK', false, dirname(plugin_basename(__FILE__)) . '/languages/'); } public function admin_styles() { wp_enqueue_style('yqtrack_styles_chosen', plugins_url(basename(dirname(__FILE__))) . '/assets/plugin/chosen/chosen.min.css'); wp_enqueue_style('yqtrack_styles', plugins_url(basename(dirname(__FILE__))) . '/assets/css/admin.css'); } public function library_scripts() { wp_enqueue_script('yqtrack_styles_chosen_jquery', plugins_url(basename(dirname(__FILE__))) . '/assets/plugin/chosen/chosen.jquery.min.js'); wp_enqueue_script('yqtrack_styles_chosen_proto', plugins_url(basename(dirname(__FILE__))) . '/assets/plugin/chosen/chosen.proto.min.js'); wp_enqueue_script('yqtrack_script_util', plugins_url(basename(dirname(__FILE__))) . '/assets/js/util.js'); wp_enqueue_script('yqtrack_script_couriers', '//res.17track.net/global-v2/merge-i18n/enum/enum.en.js?src=woo'); wp_enqueue_script('yqtrack_script_admin', plugins_url(basename(dirname(__FILE__))) . '/assets/js/admin.js'); } public function include_footer_script() { wp_enqueue_script('yqtrack_script_footer', plugins_url(basename(dirname(__FILE__))) . '/assets/js/footer.js', true); } public function add_meta_box() { add_meta_box('woocommerce-yqtrack', __('17TRACK', 'wc_yqtrack'), array(&$this, 'meta_box'), 'shop_order', 'side', 'core'); } public function meta_box() { global $post; $selected_provider = get_post_meta($post->ID, '_yqtrack_tracking_provider', true); echo '
'; echo '


'; echo ''; echo ''; $date = get_post_meta($post->ID, '_yqtrack_tracking_shipdate', true); if($date == '') { $date = new DateTime(); $date = $date->format('Y-m-d\TH:i:s\Z'); } echo ''; $provider_name = get_post_meta($post->ID, '_yqtrack_tracking_provider_name', true); echo ''; // foreach ($this->yqtrack_fields as $field) { woocommerce_wp_text_input(array( 'id' => $field['id'], 'label' => __($field['label'], 'wc_yqtrack'), 'placeholder' => $field['placeholder'], 'description' => $field['description'], 'class' => $field['class'], 'value' => get_post_meta($post->ID, '_' . $field['id'], true), )); } echo '

'; } public function save_meta_box($post_id, $post) { if (isset($_POST['yqtrack_tracking_number'])) { $tracking_provider = wc_clean($_POST['yqtrack_tracking_provider']); $date = wc_clean($_POST['yqtrack_tracking_shipdate']); $provider_name = wc_clean($_POST['yqtrack_tracking_provider_name']); update_post_meta($post_id, '_yqtrack_tracking_provider', $tracking_provider); update_post_meta($post_id, '_yqtrack_tracking_shipdate', $date); update_post_meta($post_id, '_yqtrack_tracking_provider_name', $provider_name); foreach ($this->yqtrack_fields as $field) { update_post_meta($post_id, '_' . $field['id'], wc_clean($_POST[$field['id']])); } } } public function add_api_key_field($user) { if (!current_user_can('manage_yqtrack')) return; if (current_user_can('edit_user', $user->ID)) { ?>

17TRACK

yqtrack_wp_api_key)) : ?> yqtrack_wp_api_key ?>
yqtrack_wp_api_key)) { $api_key = 'ck_' . hash('md5', $user->user_login . date('U') . mt_rand()); update_user_meta($user_id, 'yqtrack_wp_api_key', $api_key); } else { delete_user_meta($user_id, 'yqtrack_wp_api_key'); } } } } function display_tracking_info($order_id, $for_email = false) { if ($this->plugin == '17TRACK') { $this->display_order_yqtrack($order_id, $for_email); } else if ($this->plugin == 'wc-shipment-tracking') { $this->display_order_wc_shipment_tracking($order_id, $for_email); } } private function display_order_yqtrack($order_id, $for_email) { $values = array(); foreach ($this->yqtrack_fields as $field) { $values[$field['id']] = get_post_meta($order_id, '_' . $field['id'], true); } $values['yqtrack_tracking_provider'] = get_post_meta($order_id, '_yqtrack_tracking_provider', true); $values['yqtrack_tracking_provider_name'] = get_post_meta($order_id, '_yqtrack_tracking_provider_name', true); if (!$values['yqtrack_tracking_provider']) return; if (!$values['yqtrack_tracking_number']) return; $options = get_option('yqtrack_option_name'); if (array_key_exists('track_message_1', $options) && array_key_exists('track_message_2', $options)) { $track_message_1 = $options['track_message_1']; $track_message_2 = $options['track_message_2']; } else { $track_message_1 = 'Your order was shipped via '; $track_message_2 = 'Tracking number is '; } echo $track_message_1 . $values['yqtrack_tracking_provider_name'] . '
' . $track_message_2 . $values['yqtrack_tracking_number']; } private function display_order_wc_shipment_tracking($order_id, $for_email) { if ($for_email || !$this->use_track_button) { return; } $tracking = get_post_meta($order_id, '_tracking_number', true); $sharp = strpos($tracking, '#'); $colon = strpos($tracking, ':'); $required_fields = array(); if ($sharp && $colon && $sharp >= $colon) { return; } else if (!$sharp && $colon) { return; } else if ($sharp) { $tracking_provider = substr($tracking, 0, $sharp); if ($colon) { $tracking_number = substr($tracking, $sharp + 1, $colon - $sharp - 1); $temp = substr($tracking, $sharp + 1, strlen($tracking)); $required_fields = explode(':', $temp); } else { $tracking_number = substr($tracking, $sharp + 1, strlen($tracking)); } } else { $tracking_provider = ''; $tracking_number = $tracking; } } function email_display($order) { $this->display_tracking_info(get_order_id($order), true); } } if (!function_exists('getYqTrackInstance')) { function getYqTrackInstance() { return _17TRACK::Instance(); } } } $GLOBALS['yqtrack'] = getYqTrackInstance(); }