| Server IP : 188.114.96.2 / Your IP : 104.23.243.200 Web Server : Apache/2.4.59 (Debian) System : Linux EDL-STRETCH 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 User : edlftp ( 1002) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/nicolasj/www/formationlangues.be/wp-content/plugins/ |
Upload File : |
<?php
/*
Plugin Name: CodeIgniter Hybrid
Plugin URI: https://codes.solutions/
Description: CI shop integration
Author: Aernout Guillaume [codes.solutions]
Version: 1.2
Author URI: https://codes.solutions/
*/
session_start();
//session_destroy();
ob_start();
function add_cors_http_header(){
header("Access-Control-Allow-Origin: https://sms.ecoledelangues.be");
header('Access-Control-Allow-Headers: x-requested-with');
}
function rewrite_param() {
add_rewrite_rule('^shop/filter/([^/]+)/?$', 'index.php?pagename=shop&filter=$matches[1]', 'top');
}
function display_ci_content(){
$match = array();
$url = $_SERVER["REQUEST_URI"];
$url_clean = $url;
if(strpos($url,'=&')>-1){
$url_clean = substr($url,0,strpos($url,'=&'));
}
elseif(strpos($url,'&')>-1){
$url_clean = substr($url,0,strpos($url,'&'));
}
elseif(strpos($url,'?gclid')>-1){
$url_clean = substr($url,0,strpos($url,'?gclid'));
}
else{
$url_clean = $url;
}
//echo $url_clean;
// echo $url_clean; echo "ok";
// echo '<script>$(document).ready(function() {$(".fusion-header-v1:first").hide();console.log("debug");};</script>';
if($url_clean == "/shop/"){
// echo get_product('4');
//var_dump( get_signature());
echo ajax_Call('hybrid','filters','all');
//echo "debug";
}
else if(preg_match('/\/shop\/\?[0-9,+\-a-zA-Z]+$/',$url_clean, $match) && ($url_clean != "/shop/?filter") && ($url_clean != "/shop/?add") && ($url_clean != "/shop/?cart")){
//echo "on";
$param = substr($match[0],(strpos($match[0],"?")+1));
echo ajax_Call('hybrid','filters',$param);
}
else if($url_clean == "/shop/?filter"){
ob_end_clean();
//echo "filter";
//var_dump($_POST);
var_dump($_GET);
$param = implode(',',$_POST['param']);
$data = ajax_Call('loadData','filters',$param);
echo $data;
ob_start();
add_action("wp_footer", "clean_footer");
//ob_start();
}
else if($url_clean == "/shop/?add"){
ob_end_clean();
$product_id = $_POST['param']['product'];
$product_qty = $_POST['param']['quantity'];
var_dump(add_to_cart($product_id,$product_qty));
ob_start();
add_action("wp_footer", "clean_footer");
}
else if($url_clean == "/shop/?cart"){
ob_end_clean();
echo get_cart();
ob_start();
add_action("wp_footer", "clean_footer");
}
else if(preg_match('/\/shop\/\?filter=+([0-9,])/',$url_clean,$matches)){
ob_end_clean();
$filter = $matches[1];
if(strpos($filter,",")>-1){
$param = implode(',',$filter);
}else{
$param = $filter;
}
$data = ajax_Call('loadData','filters',$param);
echo $data;
ob_start();
add_action("wp_footer", "clean_footer");
}
else{
echo "wrong url parameter";
//
}
}
function display_ci_header(){
$url = $_SERVER["REQUEST_URI"];
$url_clean = $url;
if(strpos($url,'=&')>-1){
$url_clean = substr($url,0,strpos($url,'=&'));
}
elseif(strpos($url,'&')>-1){
$url_clean = substr($url,0,strpos($url,'&'));
}
elseif(strpos($url,'?gclid')>-1){
$url_clean = substr($url,0,strpos($url,'?gclid'));
}
else{
$url_clean = $url;
}
if( $url_clean == "/shop/" or preg_match('/\/shop\/\?[0-9+\-,a-zA-Z]+$/', $url_clean, $match)){
echo'<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>';
echo'<script src="https://sms.ecoledelangues.be/assets/js/shop/home_wp.js"></script>';
echo'<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">';
echo'<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>';
echo'<link rel="stylesheet" href="https://sms.ecoledelangues.be/assets/css/shop/home-wp.css">';
echo'<link rel="stylesheet" href="/wp-content/plugins/ci-hybrid/entypo.css">';
}
}
function display_ci_cart(){
$url = $_SERVER["REQUEST_URI"];
$url_clean = $url;
if(strpos($url,'=&')>-1){
$url_clean = substr($url,0,strpos($url,'=&'));
}
elseif(strpos($url,'&')>-1){
$url_clean = substr($url,0,strpos($url,'&'));
}
elseif(strpos($url,'?gclid')>-1){
$url_clean = substr($url,0,strpos($url,'?gclid'));
}
else{
$url_clean = $url;
}
$cart = <<<EOD
<div id="ci-banner" class="fixed-banner col-sm-12" style="position:absolute;top:102px;"><span class="float-left">Ecole De Langues Shop</span>
<span class="text-right left-content-banner float-left">
<ul class="top-list">
<li onclick="window.location.replace('http://sms.ecoledelangues.be/login');">Login <i class="entypo-user"></i></li>
<li onclick="checkoutBtn();">Cart<i class="entypo-basket"></i><span id="cart-qty"></span><form id="cart_form" method="post" action="https://sms.ecoledelangues.be/shop/setCart"><input type="hidden" name="cart" id="cart" value="{}"></form></li>
</ul>
</span>
</div>
EOD;
if($url_clean == "/shop/" or preg_match('/\/shop\/\?[0-9,+\-a-zA-Z]+$/', $url_clean, $match)){
echo $cart;
}
}
function clean_footer(){
ob_end_clean();
}
function ajax_Call($function,$param_name,$param){
$url = "https://sms.ecoledelangues.be/shop/".$function."/";
if($param != ''){
$postdata = http_build_query(
array($param_name=>$param)
);
}
else{
$postdata = '';
}
$opts = array(
'http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => $postdata
),
'ssl' =>
array(
'verify_peer'=>false,
'verify_peer_name'=>false,
),
);
//var_dump($url);
//var_dump($opts);
return file_get_contents($url, false, stream_context_create($opts));
var_dump($data);
}
//DB functions
function connect_sms() {
global $seconddb;
$seconddb = new wpdb('sms','736dks!3', 'sms', 'localhost');
}
function get_product($id){
global $seconddb;
$product_array = $seconddb->get_results('SELECT * FROM `course_product` WHERE `ID` = '.$id.';',ARRAY_A);
$course = $product_array[0];
//return $this->crud_model->get_course_society_id($course['Course_ID']);
if(!is_vat_course($course['Course_ID'])){
//Propulse
if($course['Course_Promo'] == 0){
$course['Price_HTVA'] = 0;
$course['Price_TVA'] = round($course['Course_Price'],2);
$course['Price_HTVA_Promo'] = 0;
$course['Price_TVA_Promo'] = 0;
}else{
$promo = (($course['Course_Price'] * $course['Course_Promo'])/100);
$course['Price_HTVA'] = 0;
$course['Price_TVA'] = round($course['Course_Price'],2);
$course['Price_HTVA_Promo'] = 0;
$course['Price_TVA_Promo'] = round($course['Course_Price'] - $promo,2);
}
}else{
if($course['Course_Promo'] == 0){
$course['Price_HTVA'] = round($course['Course_Price'],2);
$course['Price_TVA'] = round($course['Course_Price']*1.21,2);
$course['Price_HTVA_Promo'] = 0;
$course['Price_TVA_Promo'] = 0;
}else{
$promo = (($course['Course_Price'] * $course['Course_Promo'])/100);
$course['Price_HTVA'] = round($course['Course_Price'],2);
$course['Price_TVA'] = round($course['Course_Price']*1.21,2);
$course['Price_HTVA_Promo'] = round(($course['Course_Price'] - $promo),2);
$course['Price_TVA_Promo'] = round(($course['Course_Price'] - $promo)*1.21,2);
}
}
$course['Course_Disponibility'] = ($course['Course_Availability'] - get_students_count($course['Course_ID']));
return json_encode(array($course));
//array_push($data,$course);
//$product_array[0]['Course_Disponibility'] = ($product_array[0]['Course_Availability'] - get_students_count($product_array[0]['Course_ID']));
//return json_encode($product_array);
}
function is_vat_course($id){
global $seconddb;
$data = $seconddb->get_results('SELECT * FROM `course_new` WHERE `ID` = '.$id.';',ARRAY_A);
if($data[0]['CourseVat'] == "yes"){
return true;
}
return false;
}
function get_students_count($id){
global $seconddb;
$students_array = $seconddb->get_results('SELECT * FROM `course_student_new` WHERE `course_id` = '.$id.';',ARRAY_A);
$history = array();
$count = 0;
foreach($students_array as $value) {
if(!in_array($value['student_id'],$history)){
$count ++;
}
array_push($history,$value['student_id']);
}
if($count != '' or $count != 0){
return $count;
}
else {
return "0";
}
}
function get_cart(){
$signature = get_signature();
global $seconddb;
$cart_array = $seconddb->get_results('SELECT `Cart_Total`,`Cart_Qty`,`Cart_Vat`,`Pro_Total`,`Pro_Total_VAT`,`OB_Total`,`OB_Total_VAT`,`Cart` FROM `shop_session` WHERE `Signature` = \''.$signature.'\' AND NOT `State` = \'done\';',ARRAY_A);
return json_encode($cart_array[0]);
}
function add_to_cart($id,$qty){
$signature = get_signature();
global $seconddb;
//`Cart_Total`,`Cart_Qty`,`Cart_Vat`,`Pro_Total`,`Pro_Total_VAT`,`OB_Total`,`OB_Total_VAT`,`Cart`,`Cart_Total`
$cart_array = $seconddb->get_results('SELECT * FROM `shop_session` WHERE `Signature` = \''.$signature.'\' AND NOT `State` = \'done\';',ARRAY_A);
//return $seconddb->last_query;
if(!empty($cart_array)){
$cart = array();
if($cart_array[0]['Cart'] != null){
$cart = json_decode($cart_array[0]['Cart'],true);
}
//return $cart;
if(array_key_exists($id,$cart)){
$prevQty = $cart[$id]['qty'];
$cart[$id]['qty'] = $prevQty + $qty;
$cart[$id]['data'] = get_product($id);
}
else{
$product_item = array(
'data' => get_product($id),
'qty' => $qty,
'option' => null,
);
$cart[$id]= $product_item;
}
//resume cart data
$cart_qty = 0;
$cart_total = 0;
$cart_vat = 0;
$pro = 0;$pro_vat = 0; $ob = 0; $ob_vat = 0;
foreach($cart as $key => $product){
$data = json_decode($product['data'],true);
// echo "debug";
var_dump($data);
//return $data;
$price_original = $data[0]['Course_Price'];
$price = $price_original;
$target_vat = 0;
$target_qty = $product['qty'];
echo "product qty=".$target_qty;
// $selector = ($cart[$id]['data']);
if($data['Price_TVA_Promo'] == 0){
$price = $data[0]['Price_TVA'];
}else{
$price = $data[0]['Price_TVA_Promo'];
//echo "promo";
}
if(is_vat_course($data[0]['Course_ID'])){
$ob = $ob + ($price * $target_qty);
}else{
$pro = $pro + ($price * $target_qty);
}
// update cart data
$cart_qty = $cart_qty + $target_qty;
$cart_vat = $cart_vat + ($target_vat * $target_qty);
$cart_total = $cart_total + ($price * $target_qty);
echo "debug:".$cart_total;
}
$data = array(
"Cart_Qty" => $cart_qty,
"Cart_Total" => $cart_total,
"Cart_Vat" => $cart_vat,
"Pro_Total" => $pro,
"Pro_Total_Vat" => $pro_vat,
"OB_Total" => $ob,
"OB_Total_Vat"=> $ob_vat,
"Cart" => json_encode($cart)
);
//UPDATE
$seconddb->update('shop_session',$data,array('Signature'=>$signature));
}else{
//insert
$cart = array();
$product_item = array(
'data' => get_product($id),
'qty' => $qty,
'option' => null,
);
$cart[$id]= $product_item;
// var_dump($cart);
//resume cart data
$cart_qty = 0;
$cart_total = 0;
$cart_vat = 0;
$pro = 0;$pro_vat = 0; $ob = 0; $ob_vat = 0;
foreach($cart as $key => $product){
$data = json_decode($product['data'],true);
$price_original = $data[0]['Course_Price'];
$price = $price_original;
$target_vat = 0;
$target_qty = $product['qty'];
$selector = $data[0];
var_dump($selector);
if($selector['Price_TVA_Promo'] == '0'){
$price = $selector['Price_TVA'];
}else{
$price = $selector['Price_TVA_Promo'];
echo "promo";
}
if(is_vat_course($data[0]['Course_ID'])){
$ob = $ob + ($price * $target_qty);
}else{
$pro = $pro + ($price * $target_qty);
}
// update cart data
$cart_qty = $cart_qty + $target_qty;
$cart_vat = $cart_vat + ($target_vat * $target_qty);
$cart_total = $cart_total + ($price * $target_qty);
}
$data = array(
"Cart_Qty" => $cart_qty,
"Cart_Total" => $cart_total,
"Cart_Vat" => $cart_vat,
"Pro_Total" => $pro,
"Pro_Total_Vat" => $pro_vat,
"OB_Total" => $ob,
"OB_Total_Vat"=> $ob_vat,
"Cart" => json_encode($cart),
"IP" => $_SERVER["HTTP_CF_CONNECTING_IP"],
"Signature" => get_signature()
);
//insert
$seconddb->insert('shop_session',$data);
}
}
function get_signature(){
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$signature = "";
$browsers = array(
array("IE", "Microsoft Internet Explorer"),
array("Chrome", "Google Chrome"),
array("Firefox", "Mozzila Firefox"),
array("Opera", "Opera"),
array("Safari", "Apple Safari")
);
foreach($browsers as $browser){
if (strpos($userAgent, $browser[0]) !== false){
$signature = $signature.",".$browser[1];
}
}
return md5($_SERVER["HTTP_CF_CONNECTING_IP"]."+".$signature);
}
add_action('init', 'connect_sms');
add_action('init','add_cors_http_header');
add_action("ci_header","display_ci_header");
//add_action('init', 'rewrite_param', 10, 0);
add_action("after_fusion_header","display_ci_cart");
add_action("after_main", "display_ci_content");
//ob_end_clean();
add_action( 'admin_menu', 'ci_menu_page' );
function ci_menu_page() {
add_menu_page(
'CI Hybrid Shop', // page <title>Title</title>
'CI Hybrid', // menu link text
'manage_options', // capability to access the page
'ci-hybrid-shop', // page URL slug
'ci_page_content', // callback function /w content
'dashicons-star-half', // menu icon
5 // priority
);
}
function ci_page_content(){
echo "<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>";
// echo "<script>$( document ).ready(function() {$('.fusion-header-v1:first').hide()}</script>";
echo '<div class="col-sm-12 p-4"><h2>CI Hybrid Shop</h2><div class="col-sm-12"><button class="btn btn-info button action" onclick="$.post(\'https://formationlangues.be/wp-content/plugins/ci-hybrid/hook_shop.php\',function(r){console.log(r)});">Re-hook the shop</button></div></div>';
}