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( 'wp_ajax_yqtrack_tracking_delete_item', array( $this, 'meta_box_delete_tracking' ) ); add_action( 'wp_ajax_yqtrack_tracking_save_form', array( $this, 'save_meta_box_ajax' ) ); // add_action( 'wp_ajax_yqtrack_upload_csv', array( $this, 'upload_tracking_csv_fun') ); // add_action('plugins_loaded', array($this, 'load_plugin_textdomain')); $this->couriers = $options['couriers']; } $this->plugin = $plugin; } else { $this->plugin = ''; } $orderDisplay = '1'; if (isset($options['order'])) { $orderDisplay = $options['order']; } if($orderDisplay == '1') { add_action('woocommerce_view_order', array(&$this, 'display_tracking_info')); } $emailDisplay = '1'; if (isset($options['email'])) { $emailDisplay = $options['email']; } if($emailDisplay == '1') { add_action('woocommerce_email_after_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'); include_once('yqtrack-upload.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/i18n/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', 'high'); } public function meta_box() { global $post; $selected_provider = get_post_meta($post->ID, '_yqtrack_tracking_provider', true); $tracking_items = $this->get_tracking_items( $post->ID ); echo '
';
echo '';
//
$date = new DateTime();
$date = $date->format('Y-m-d\TH:i:s\Z');
echo '';
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' => '',
));
}
echo '';
}
public function save_meta_box( $post_id, $post ) {
if ( isset( $_POST['yqtrack_tracking_number'] ) && $_POST['yqtrack_tracking_provider'] != '' && strlen( $_POST['yqtrack_tracking_number'] ) > 0 ) {
$tracking_number = str_replace(' ', '', $_POST['yqtrack_tracking_number']);
$args = array(
'tracking_provider' => wc_clean($_POST['yqtrack_tracking_provider']),
'tracking_provider_name' => wc_clean($_POST['yqtrack_tracking_provider_name']),
'tracking_number' => wc_clean( $_POST['yqtrack_tracking_number'] ),
'tracking_shipdate' => wc_clean( $_POST['yqtrack_tracking_shipdate'] ),
);
$this->add_tracking_item( $post_id, $args );
}
}
public function save_meta_box_ajax() {
$tracking_number = str_replace(' ', '', $_POST['tracking_number']);
if ( isset( $_POST['tracking_number'] ) && $_POST['tracking_provider'] != '' && isset( $_POST['tracking_provider'] ) && strlen( $_POST['tracking_number'] ) > 0 ) {
$order_id = wc_clean( $_POST['order_id'] );
$args = array(
'tracking_provider' => wc_clean($_POST['tracking_provider']),
'tracking_provider_name' => wc_clean( $_POST['tracking_provider_name'] ),
'tracking_number' => wc_clean( $_POST['tracking_number'] ),
'tracking_shipdate' => wc_clean( $_POST['tracking_shipdate'] ),
);
$tracking_item = $this->add_tracking_item( $order_id, $args );
$this->display_html_tracking_item_for_meta_box( $order_id, $tracking_item );
}
die();
}
public function meta_box_delete_tracking() {
$order_id = wc_clean( $_POST['order_id'] );
$tracking_number = wc_clean( $_POST['tracking_number'] );
$this->delete_tracking_item( $order_id, $tracking_number );
}
public function add_tracking_item( $order_id, $args, $is_updateDate = false) {
$tracking_item = array();
$tracking_items = $this->get_tracking_items( $order_id );
if(isset($args['tracking_number'])){
$tracking_item['tracking_number'] = $args['tracking_number'] ;
if ( count( $tracking_items ) > 0 ) {
foreach ( $tracking_items as $key => $item ) {
if ( $item['tracking_number'] == $tracking_item['tracking_number'] ) {
return $tracking_item;
}
}
}
}
if(isset($args['tracking_provider'])){
$tracking_item['tracking_provider'] = $args['tracking_provider'];
}
if(isset($args['tracking_provider_name'])){
$tracking_item['tracking_provider_name'] = $args['tracking_provider_name'] ;
}
if(isset($args['tracking_shipdate'])){
$tracking_item['tracking_shipdate'] = $args['tracking_shipdate'];
}
$tracking_items[] = $tracking_item;
$this->save_tracking_items( $order_id, $tracking_items, $is_updateDate);
return $tracking_item;
}
public function save_tracking_items( $order_id, $tracking_items, $is_updateDate = false) {
update_post_meta( $order_id, '_yqtrack_tracking_items', $tracking_items );
if($is_updateDate){
$date = new DateTime();
$my_post = array(
'ID' => $order_id,
'post_modified' => $date->format('Y-m-dH:i:s'),
'post_modified_gmt' => $date->format('Y-m-d\TH:i:s\Z')
);
wp_update_post($my_post);
}
}
public function delete_tracking_item( $order_id, $tracking_number ) {
$tracking_items = $this->get_tracking_items( $order_id );
$is_deleted = false;
//
$tracking_number_old = get_post_meta($order_id, '_yqtrack_tracking_number', true);
if($tracking_number == $tracking_number_old)
{
delete_post_meta($order_id, '_yqtrack_tracking_number');
delete_post_meta($order_id, '_yqtrack_tracking_provider_name');
delete_post_meta($order_id, '_yqtrack_tracking_provider');
delete_post_meta($order_id, '_yqtrack_tracking_shipdate');
}
//
if ( count( $tracking_items ) > 0 ) {
foreach ( $tracking_items as $key => $item ) {
if ( $item['tracking_number'] == $tracking_number ) {
unset( $tracking_items[ $key ] );
$is_deleted = true;
break;
}
}
$this->save_tracking_items( $order_id, $tracking_items, true);
}
return $is_deleted;
}
function upload_tracking_csv_fun(){
$replace_tracking_info = $_POST['replace_tracking_info'];
$order_id = $_POST['order_id'];
$tracking_provider = $_POST['tracking_provider'];
$tracking_provider_name = $_POST['tracking_provider_name'];
$tracking_number = $_POST['tracking_number'];
$tracking_shipdate = $_POST['tracking_shipdate'];
$replace_tracking_info = $_POST['replace_tracking_info'];
$update_order_status = $_POST['update_order_status'];
if($tracking_provider == 0){
echo '
yqtrack_wp_api_key)) : ?>
yqtrack_wp_api_key ?>
|
| Carrier | Tracking number | |
|---|---|---|
| ' . esc_html($item['tracking_provider_name']) .' | '; echo '' . esc_html($item['tracking_number']) .' | '; echo '' . $track .' | '; echo '