user = wp_get_current_user();
$this->protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === 0 ? 'https://' : 'http://';
$this->cart = function (){
global $woocommerce;
$woocommerce->cart->empty_cart();
};
if (!class_exists('WooCommerce')) {
return;
}
if(isset($_GET['phow_callback'])){
if((int)$_GET['phow_callback'] == (int)$_COOKIE['payhow_cart']){
setcookie('payhow_cart','',time() - 3600);
add_action( 'init', 'payhow_woocommerce_clear_cart_url' );
function payhow_woocommerce_clear_cart_url() {
global $woocommerce;
$woocommerce->cart->empty_cart();
}
}
}
if(!isset($_COOKIE['payhow_cart'])){
setcookie("payhow_cart",time().rand(22222,99999), time()+(3600*24)); // 1hr = 3600 secs
}
add_action('woocommerce_before_cart', [$this, 'add_cart_script']);
add_action('woocommerce_checkout_before_customer_details', [$this, 'add_checkout_script'],10);
add_action('rest_api_init', [$this, 'api']);
}
public function api()
{
}
function is_checkout() {
$page_id = wc_get_page_id( 'checkout' );
return ( $page_id && is_page( $page_id ) ) || wc_post_content_has_shortcode( 'woocommerce_checkout' ) || apply_filters('woocommerce_is_checkout', false ) || Constants::is_defined( 'WOOCOMMERCE_CHECKOUT' );
}
/**
* add_checkout_script
* Put the Payhow Snippet on WC template.
*
* @access public
* @return void
*/
public function add_checkout_script()
{
$this->script(true);
}
public function add_cart_script()
{
$this->script();
}
public function script($isCheckout = false)
{
?>
cart->get_cart();
$cart = [];
foreach ($cartData as $key => $item) {
$cart['items'][] = [
'product_id' => $item['variation_id'] ? $item['variation_id'] : $item['product_id'],
'quantity' => $item['quantity'],
'sku' => get_post_meta($item['product_id'] , '_sku', true ) ? get_post_meta($item['product_id'] , '_sku', true ) : ""
];
}
return json_encode($cart);
}
}
/**
* Load Payhow
*/
function payhow_plugins_loaded() {
new Payhow_WC();
payhow_validUserLogon(); //Valid user logged
}
function payhow_disable_shipping_calc_on_cart( $show_shipping ) {
if( is_cart() ) {
return false;
}
return $show_shipping;
}
add_filter( 'woocommerce_cart_ready_to_calc_shipping', 'payhow_disable_shipping_calc_on_cart', 99 );
function payhow_disable_shipping_calc_on_checkout( $show_shipping ) {
if( is_checkout() ) {
return false;
}
return $show_shipping;
}
add_filter( 'woocommerce_cart_ready_to_calc_shipping', 'payhow_disable_shipping_calc_on_checkout', 998 );
// hide coupon field on cart page
function payhow_hide_coupon_field_on_cart( $enabled ) {
if ( is_cart() ) {
$enabled = false;
}
return $enabled;
}
add_filter( 'woocommerce_coupons_enabled', 'payhow_hide_coupon_field_on_cart' );
// hide coupon field on checkout page
function payhow_hide_coupon_field_on_checkout( $enabled ) {
if ( is_checkout() ) {
$enabled = false;
}
return $enabled;
}
add_filter( 'woocommerce_coupons_enabled', 'payhow_hide_coupon_field_on_checkout' );
add_action('plugins_loaded', 'payhow_plugins_loaded');
//set payhow to menu
function payhow_register_top_level_menu(){
$icon = plugin_dir_url( __FILE__ ) . 'images/payhow_icon_menu.png';
add_menu_page(
'PAYHOW - Plugin de Integração',
'PAYHOW',
'manage_options',
'payhow_wc_integration',
'payhow_display_page_config',
$icon
);
}
add_action( 'admin_menu', 'payhow_register_top_level_menu' );
//load page config
function payhow_display_page_config(){
require __DIR__ . '/page_config.php';
}
//load css
function payhow_load_style() {
wp_register_style( 'custom_wp_admin_css', plugin_dir_url( __FILE__ ) . 'css/style.css', false, '1.0.0' );
wp_enqueue_style( 'custom_wp_admin_css' );
}
add_action( 'admin_enqueue_scripts', 'payhow_load_style' );
//add link to page settings
function payhow_link_settings( $links ) {
$links = array_merge( array(
'' . __( 'Configurações', '' ) . ''
), $links );
return $links;
}
add_action( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'payhow_link_settings' );
//valid user logon
function payhow_validUserLogon(){
$user = wp_get_current_user();
if(empty($user->user_login)){
setcookie('wp_user_logged_in', 'null', time() + 31556926, '/');
$_COOKIE['wp_user_logged_in'] = 'null';
//Redirect to checkout
setcookie('wp_user_require_logon_checkout', 1, time() + 31556926, '/');
$_COOKIE['wp_user_require_logon_checkout'] = 1;
}else{
setcookie('wp_user_logged_in', $user->user_login, time() + 31556926, '/');
$_COOKIE['wp_user_logged_in'] = $user->user_login;
}
}
//function erase cart after sales
function payhow_woocommerce_clear_cart_url() {
$user = wp_get_current_user();
if ( isset( $_GET['sales-ok'] ) ) {
global $woocommerce;
$woocommerce->cart->empty_cart();
}
}
//function auto redirect to checkout valid new user
function payhow_auto_redirect_checkout(){
$user = wp_get_current_user();
$allowed_roles = array('editor', 'administrator', 'author');
if(($_COOKIE['wp_user_require_logon_checkout'] == 1)&&(!empty($user->user_login))&&(!array_intersect($allowed_roles, $user->roles))){
setcookie('wp_user_require_logon_checkout', 'null', time() + 31556926, '/');
$_COOKIE['wp_user_require_logon_checkout'] = 'null';
wp_redirect( wc_get_checkout_url() );
exit();
}
}
add_action( 'init', 'payhow_woocommerce_clear_cart_url' );
add_action( 'init', 'payhow_auto_redirect_checkout' );
?>