| Server IP : 194.124.73.198 / Your IP : 216.73.216.61 Web Server : Apache System : Linux vps0314.00gate.com 5.15.0-1089-azure #98~20.04.1-Ubuntu SMP Fri May 2 20:18:39 UTC 2025 x86_64 User : spaceten.it_vps0314 ( 10000) PHP Version : 8.0.30 Disable Function : opcache_get_status MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/vhosts/spaceten.it/salumipasini.spaceten.it/wp-content/plugins/qapla/ |
Upload File : |
<?php
/*
Plugin Name: Qapla'
Plugin URI: https://www.qapla.it/woocommerce-plugin.html
Description: WooCommerce Plugin for Qapla'.
Version: 1.1.3
Author: Qapla'
Author URI: https://www.qapla.it
License: GPL
Text Domain: qapla-woocommerce
Domain Path: /languages/
*/
global $Qapla_Woocommerce;
$Qapla_Woocommerce = @new Qapla_Woocommerce();
class Qapla_Woocommerce{
var $version = '1.1.3';
function __construct() {
/* Languages */
add_action( 'plugins_loaded', array( &$this, 'load_plugin_textdomain' ) );
/* Meta box in admon order page */
add_action( 'add_meta_boxes', array( &$this, 'woocommerce_metaboxes' ) );
/* Send shipment to pushTrack API */
add_action( 'woocommerce_process_shop_order_meta', array( &$this, 'woocommerce_process_shop_ordermeta' ), 10, 3 );
/* Send order to pushOrder API */
add_action('woocommerce_order_status_changed', array( &$this, 'custom_process_order'));
/* Add a tracking section to customer order page */
add_action( 'woocommerce_order_details_after_order_table', array( &$this, 'track_page_shipping_details' ) );
/* Add a tracking section to transactional emails */
//add_action( 'woocommerce_email_after_order_table', array( &$this, 'email_shipping_details' ), 10, 3 );
/* Admin section */
add_action( 'admin_menu', array( &$this, 'qapla_admin_menu'));
add_action( 'admin_init', array( &$this, 'qapla_register_settings'));
/* Add a column to admin order list */
add_action( 'manage_edit-shop_order_columns', array( &$this, 'add_shipping_column'));
add_action( 'manage_shop_order_posts_custom_column', array( &$this, 'add_shipping_column_details'));
/* Update order from Qapla' */
add_action( 'init', array( &$this, 'qapla_update'));
}
function load_plugin_textdomain(){
load_plugin_textdomain('qapla-woocommerce', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/');
}
function add_shipping_column_details($column){
global $post, $woocommerce, $the_order;
$options = get_option( 'qapla_woo_options' );
if($options['QAPLA_OPTIONS'] != 'shipments')return;
if ( empty( $the_order ) || $the_order->id != $post->ID )
$the_order = new WC_Order( $post->ID );
switch ( $column ) {
case "tracking_number" :
$order_meta = get_post_custom( $the_order->id );
if(isset($order_meta['_order_trackno']) && isset($order_meta['_order_trackurl']))
$this->admin_shipping_details( $order_meta['_order_trackno'], $order_meta['_order_trackurl'] , $order);
break;
}
}
function add_shipping_column($columns){
$options = get_option( 'qapla_woo_options' );
if($options['QAPLA_OPTIONS'] != 'shipments')return $columns;
$columns["tracking_number"] = __('Tracking Number', 'qapla-woocommerce');
return $columns;
}
function admin_shipping_details($trackno , $trackurl , $order){
$options = get_option( 'qapla_woo_options' );
$shipping_companies = $this->get_shipping_list();
//echo '<strong>'._e('Tracking Number', 'qapla-woocommerce').'</strong>'.$trackno[0].'<br/><br/>';
echo $trackno[0];
}
function shipping_details_options($data, $options, $part){
if ($part == '0' || $part == '' ) {
$part = '';
}
$shipping_companies = $this->get_shipping_list();
foreach( $shipping_companies as $k => $v ){
if (isset($options[$k]) == '1') {
echo '<option value="'.$k.'" ';
if (isset($data['_order_trackurl'.$part][0]) && $data['_order_trackurl'.$part][0] == $k) {
echo 'selected="selected"';
}
echo '>'.$v.'</option>';
}
}
}
function woocommerce_order_shippingdetails($post){
$options = get_option( 'qapla_woo_options' );
if($options['QAPLA_OPTIONS'] != 'shipments')return;
$data = get_post_custom( $post->ID );
?>
<div>
<div style="float:right;"><a href="https://cp.qapla.it/"><img title="<?php _e('Go to Qapla\' Control Panel', 'qapla-woocommerce'); ?>" src="<?=self::getPluginDir()?>/img/logo-small.png"/ ></a></div>
<ul class="totals">
<li>
<label><?php _e('Courier', 'qapla-woocommerce'); ?></label><br />
<select id="_order_trackurl" name="_order_trackurl">
<?php $this->shipping_details_options( $data, $options, '' ); ?>
</select>
</li>
<li>
<label><?php _e('Tracking Number', 'qapla-woocommerce'); ?></label>
<br />
<input type="text" id="_order_trackno" name="_order_trackno" value="<?php if (isset($data['_order_trackno'][0])) echo $data['_order_trackno'][0]; ?>" class="first" />
</li>
</ul>
</div>
<div class="clear"></div>
<?php
}
function woocommerce_process_shop_ordermeta( $post_id, $post ){
$options = get_option('qapla_woo_options');
if(empty($options['QAPLA_OPTIONS']))return;
if($options['QAPLA_OPTIONS'] != 'shipments')return;
if(empty($options['QAPLA_API_KEY']))return;
add_post_meta( $post_id, '_order_key', uniqid('order_') );
update_post_meta( $post_id, '_order_trackno', stripslashes( $_POST['_order_trackno'] ));
update_post_meta( $post_id, '_order_trackurl', stripslashes( $_POST['_order_trackurl'] ));
if(!empty($_POST['_order_trackno']) && !empty($_POST['_order_trackurl'])):
$order = wc_get_order($post_id);
if(!$order)return;
$data = array("apiKey" => $options['QAPLA_API_KEY'], "source" => "woocommerce",
"pushTrack" => array(
array("trackingNumber" => $_POST['_order_trackno'], "courier" => $_POST['_order_trackurl'], "shipDate" => date("Y-m-d")
, "reference" => $order->get_order_number(), "orderDate" => $_POST['order_date'], "name" => $_POST['_shipping_first_name'].' '. $_POST['_shipping_last_name'], "street" => $_POST['_shipping_address_1'], "city" => $_POST['_shipping_city']
, "ZIP" => $_POST['_shipping_postcode'], "state" => $_POST['_shipping_state'], "country" => $_POST['_shipping_country'], "email" => $_POST['_billing_email'], "telephone" => $_POST['_billing_phone']
, "amount" => $_POST['_order_total'], "pod" => (($_POST['_payment_method']=='cod')?1:0))
)
);
$ch = curl_init('https://api.qapla.it/1.1/pushTrack/');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$result = curl_exec($ch);
curl_close($ch);
endif;
}
function woocommerce_metaboxes(){
$options = get_option( 'qapla_woo_options' );
if($options['QAPLA_OPTIONS'] != 'shipments')return;
add_meta_box( 'woocommerce-order-ship', __('Shipping', 'qapla-woocommerce'), array( &$this, 'woocommerce_order_shippingdetails' ), 'shop_order', 'side', 'high');
}
function qapla_register_settings(){
register_setting('qapla_woo_group','qapla_woo_options');
}
function qapla_admin_menu(){
if (!function_exists('current_user_can') || !current_user_can('manage_options') )
return;
if ( function_exists( 'add_options_page' ) )
{
add_options_page(__('Qapla\' Settings', 'qapla-woocommerce'),__('Qapla\'', 'qapla-woocommerce'),'manage_options','qapla_woocommerce_admin',array( &$this, 'admin_options' ));
}
}
public function admin_options(){
$options = get_option( 'qapla_woo_options' );
ob_start();
?>
<div class="wrap">
<a href="https://www.qapla.it" target="_blank"><img src="<?=self::getPluginDir()?>/img/logo.png" /></a>
<form action="options.php" method="post">
<h3><?php _e('API Key', 'qapla-woocommerce');?></h3>
<p><input type="text" size="64" maxlength="64" minlength="64" style="padding:5px;width:600px" name="qapla_woo_options[QAPLA_API_KEY]" id="QAPLA_API_KEY" value="<?php if(isset($options['QAPLA_API_KEY'])) echo $options['QAPLA_API_KEY']; ?>" /></p>
<h3><?php _e('Send data to Qapla\'', 'qapla-woocommerce');?></h3>
<p>
<label><input<?php if($options['QAPLA_OPTIONS'] == 'orders' ) echo ' checked="checked"'; ?> type="radio" name="qapla_woo_options[QAPLA_OPTIONS]" value="orders" /><?php _e('On order placed', 'qapla-woocommerce');?></label>
<label style="margin-left:15px"><input<?php if($options['QAPLA_OPTIONS'] == 'shipments' ) echo ' checked="checked"'; ?> type="radio" name="qapla_woo_options[QAPLA_OPTIONS]" value="shipments" /><?php _e('On shipment creation', 'qapla-woocommerce');?></label>
</p>
<?php if($options['QAPLA_OPTIONS'] != 'shipments' ) echo '<div style="display:none">' ?>
<h3><?php _e('Select Couriers', 'qapla-woocommerce');?></h3>
<?php
settings_fields('qapla_woo_group');
$shipping_companies = $this->get_shipping_list();
$i = 1;
foreach( $shipping_companies as $k => $v )
echo "<span style='margin-right:10px;display:inline-block;width:170px;background:#fbfbfb;padding:10px 6px'><input style='vertical-align:middle;;margin-right:10px' type='checkbox' name='qapla_woo_options[$k]' id='$k' value='1'",(isset($options[$k])==1)?" checked='checked'":""," /><label for='$k' >$v</label></span>",($i++%5==0)?"<div style='margin-top:10px'></div>":"";
?>
<?php if($options['QAPLA_OPTIONS'] != 'shipments' ) echo '</div>' ?>
<p class="submit"><input name="Submit" type="submit" class="button-primary" value="<?php esc_attr_e('Update', 'qapla-woocommerce'); ?>" /></p>
</form>
</div>
<?php
echo ob_get_clean();
}
function track_page_shipping_details( $order ){
$order_meta = get_post_custom( $order->id );
$this->shipping_details( $order_meta['_order_trackno'], $order_meta['_order_trackurl'] , $order);
}
function email_shipping_details( $order ){
$order_meta = get_post_custom( $order->id );
$this->shipping_details($order_meta['_order_trackno'] , $order_meta['_order_trackurl'] , $order);
}
function shipping_details($trackno, $trackurl, $order){
$options = get_option( 'qapla_woo_options' );
if(!empty($trackno[0] ) && !empty($options['QAPLA_API_KEY'])):
$result = file_get_contents('https://api.qapla.it/1.1/getTrack/?auth='.$options['QAPLA_API_KEY'].'&reference='.$order->id);
$json = json_decode($result);
if(!$json->getTrack->error):
echo '<h2>'.__('Shipping', 'qapla-woocommerce').'<a href="https://www.qapla.it" target="_blank"><img class="alignright" src="'.self::getPluginDir().'/img/powered.png" /></a></h2>';
echo __('Your order has been shipped with', 'qapla-woocommerce').' <strong>'.$json->getTrack->courierInfo.', '.__('Tracking Number', 'qapla-woocommerce').'</strong>: <strong><a href="'.$json->getTrack->trackingUrl.'" target="_blank">'.$json->getTrack->trackingNumber.'</a></strong>';
echo '<table style="margin:20px auto"><tr><td>'.$json->getTrack->courierDate.'</td><td>'.$json->getTrack->courierStatus.'</td><td>'.$json->getTrack->courierPlace.'</td></tr></table>';
echo '<p><a href="'.$json->getTrack->trackingUrl.'" target="_blank">'.__('Click here', 'qapla-woocommerce').'</a> '.__('to track your shipment', 'qapla-woocommerce').'</p>';
endif;
endif;
}
function get_shipping_list(){
$options = get_option( 'qapla_woo_options' );
$shipping_companies = Array();
if(empty($options['QAPLA_API_KEY'])):
_e('Plese set API Key to get couriers\' list', 'qapla-woocommerce');
else:
$result = file_get_contents('https://api.qapla.it/getCouriers/?auth='.$options['QAPLA_API_KEY'].'&country=');
$json = json_decode($result);
if(is_null($json))return $shipping_companies;
foreach($json->getCouriers->courier as $courier)
$shipping_companies[$courier->code] = $courier->name;
endif;
ksort($shipping_companies);
return $shipping_companies;
}
public static function getPluginDir(){
return WP_PLUGIN_URL . '/' . dirname(plugin_basename(__FILE__));
}
function custom_process_order($order_id){
$options = get_option('qapla_woo_options');
if(empty($options['QAPLA_OPTIONS']))return $order_id;
if($options['QAPLA_OPTIONS'] != 'orders')return $order_id;
if(empty($options['QAPLA_API_KEY']))return $order_id;
$order = wc_get_order($order_id);
if(!$order)
return $order_id;
$json ='{
"apiKey": "'.$options['QAPLA_API_KEY'].'",
"source": "woocommerce",
"pushOrder": [{
"id": "'.$order->get_order_number().'",
"status": "'.$order->get_status().'",
"createdAt": "'.$order->order_date.'",
"updatedAt": "'.$order->modified_date.'",
"customerName": "'.$order->shipping_first_name.' '.$order->shipping_last_name.'",
"customerAddress": "'.$order->shipping_address_1.($order->shipping_address_2 ? ' '.$order->shipping_address_2 : '' ).'",
"customerCity": "'.$order->shipping_city.'",
"customerState": "'.$order->shipping_state.'",
"customerZip": "'.$order->shipping_postcode.'",
"customerCountry": "'.$order->shipping_country.'",
"customerEmail": "'.$order->billing_email.'",
"customerTelephone": "'.$order->billing_phone.'",
"amount": "'.$order->order_currency.' '.$order->order_total.'",
"paymentType": "'.$order->payment_method_title.'"
}]
}';
$ch = curl_init('https://api.qapla.it/1.1/pushOrder/');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$result = curl_exec($ch);
curl_close($ch);
return $order_id;
}
function qapla_update(){
if(isset($_GET['qapla_update'])):
$options = get_option('qapla_woo_options');
if($_GET['auth'] == $options['QAPLA_API_KEY'] && $_GET['order_id']):
$order = wc_get_order($_GET['order_id']);
if(!$order)return;
if($order->get_status() == 'completed')return;
$result = $order->update_status('completed', $_GET['courier'].': '.$_GET['trackingNumber']);
endif;
endif;
}
}