function geodir_add_edit_price() { global $wpdb, $plugin_prefix; if (current_user_can('manage_options')) { if ($_POST['gd_add_price'] == 'addprice' && isset($_REQUEST['package_add_update_nonce'])) { if (!wp_verify_nonce($_REQUEST['package_add_update_nonce'], 'package_add_update')) { return; } $id = $_POST['gd_id']; $title = $_POST['gd_title']; $amount = $_POST['gd_amount']; $days = $_POST['gd_days']; $status = $_POST['gd_status']; $is_default = $_POST['gd_is_default']; //COMP5 $cat = isset($_POST['gd_cat']) ? $_POST['gd_cat'] : ''; $is_featured = $_POST['gd_is_featured']; $title_desc = $_POST['gd_title_desc']; $image_limit = $_POST['gd_image_limit']; $cat_limit = $_POST['gd_cat_limit']; $google_analytics = $_POST['google_analytics']; $sendtofriend = $_POST['geodir_sendtofriend']; $post_type = $_POST['gd_posting_type']; $link_business_pkg = isset($_POST['gd_link_business_pkg']) ? $_POST['gd_link_business_pkg'] : ''; $recurring_pkg = isset($_POST['gd_recurring_pkg']) ? $_POST['gd_recurring_pkg'] : ''; $reg_desc_pkg = isset($_POST['gd_reg_desc_pkg']) ? $_POST['gd_reg_desc_pkg'] : ''; $reg_fees_pkg = isset($_POST['gd_reg_fees_pkg']) ? $_POST['gd_reg_fees_pkg'] : ''; $downgrade_pkg = $_POST['gd_downgrade_pkg']; $sub_active = isset($_POST['gd_sub_active']) ? $_POST['gd_sub_active'] : ''; $display_order = isset($_POST['gd_display_order']) ? (int) $_POST['gd_display_order'] : ''; $sub_units = $_POST['gd_sub_units']; $sub_units_num = $_POST['gd_sub_units_num']; $sub_num_trial_days = $_POST['sub_num_trial_days']; $sub_num_trial_units = !empty($_POST['gd_sub_num_trial_units']) && in_array($_POST['gd_sub_num_trial_units'], array('D', 'W', 'M', 'Y')) ? $_POST['gd_sub_num_trial_units'] : 'D'; $sub_units_num_times = $_POST['sub_units_num_times']; $use_desc_limit = $_POST['gd_use_desc_limit']; $desc_limit = $_POST['gd_desc_limit']; $use_tag_limit = $_POST['gd_use_tag_limit']; $tag_limit = $_POST['gd_tag_limit']; if ($sub_active) { if ($sub_units == 'D') { $mult = 1; } if ($sub_units == 'W') { $mult = 7; } if ($sub_units == 'M') { $mult = 30; } if ($sub_units == 'Y') { $mult = 365; } $days = $mult; } $hide_related_tab = isset($_POST['geodir_hide_related_tab']) ? (int) $_POST['geodir_hide_related_tab'] : 0; if ($id != '') { $get_oldposttype = $wpdb->get_row($wpdb->prepare("SELECT post_type, is_default FROM " . $plugin_prefix . "price WHERE pid=%d", array($id))); $get_oldpricedata = $wpdb->get_results($wpdb->prepare("SELECT post_type FROM " . $plugin_prefix . "price WHERE post_type=%s", array($get_oldposttype->post_type))); if (count($get_oldpricedata) > 1) { if ($is_default && $get_oldposttype->post_type == $post_type) { $wpdb->query($wpdb->prepare("UPDATE " . $plugin_prefix . "price SET is_default='0' WHERE pid!=%d AND post_type=%s", array($id, $post_type))); $wpdb->query($wpdb->prepare("UPDATE " . $plugin_prefix . "price SET is_default='1' WHERE pid=%d", array($id))); } elseif (!$get_oldposttype->is_default && $get_oldposttype->post_type != $post_type) { $wpdb->query($wpdb->prepare("UPDATE " . $plugin_prefix . "price SET post_type=%s WHERE pid=%d", array($post_type, $id))); if ($is_default) { $wpdb->query($wpdb->prepare("UPDATE " . $plugin_prefix . "price SET is_default='0' WHERE pid!=%d AND post_type=%s", array($id, $post_type))); $wpdb->query($wpdb->prepare("UPDATE " . $plugin_prefix . "price SET is_default='1' WHERE pid=%d", array($id))); } } elseif ($get_oldposttype->is_default) { $error = __("You have not change this package because its default package for " . $get_oldposttype->post_type . ".", GEODIRPAYMENT_TEXTDOMAIN); } } else { if ($get_oldposttype->is_default != $is_default || $get_oldposttype->post_type != $post_type) { $error = __("You have not change this package because its default package for " . $get_oldposttype->post_type . ".", GEODIRPAYMENT_TEXTDOMAIN); } } } if (empty($error)) { if ($cat) { $cat = implode(',', $cat); } if (!$title_desc) { $title_desc = $title . ' : number of publish days are ' . $days . ' (<span id="' . str_replace(' ', '_', $title) . '">' . $amount . ' ' . geodir_get_currency_type() . '</span>)'; } //$title_desc = addslashes($title_desc); do_action('geodir_before_save_package'); if ($id) { $wpdb->query($wpdb->prepare("update " . GEODIR_PRICE_TABLE . " set \n\t\t\t\t\t\t\t\t\t\ttitle=%s, \n\t\t\t\t\t\t\t\t\t\tamount=%f,\n\t\t\t\t\t\t\t\t\t\tdays=%d,\n\t\t\t\t\t\t\t\t\t\tstatus=%d,\n\t\t\t\t\t\t\t\t\t\tcat=%s,\n\t\t\t\t\t\t\t\t\t\tis_featured=%d,\n\t\t\t\t\t\t\t\t\t\ttitle_desc=%s, \n\t\t\t\t\t\t\t\t\t\timage_limit=%s, \n\t\t\t\t\t\t\t\t\t\tcat_limit=%s, \n\t\t\t\t\t\t\t\t\t\tgoogle_analytics = %d, \n\t\t\t\t\t\t\t\t\t\tsendtofriend = %d, \n\t\t\t\t\t\t\t\t\t\tpost_type=%s, \n\t\t\t\t\t\t\t\t\t\tlink_business_pkg=%s, \n\t\t\t\t\t\t\t\t\t\trecurring_pkg=%s, \n\t\t\t\t\t\t\t\t\t\treg_desc_pkg=%s, \n\t\t\t\t\t\t\t\t\t\treg_fees_pkg=%s, \n\t\t\t\t\t\t\t\t\t\tdowngrade_pkg=%s, \n\t\t\t\t\t\t\t\t\t\tsub_active=%s,\n\t\t\t\t\t\t\t\t\t\tdisplay_order=%d,\n\t\t\t\t\t\t\t\t\t\tsub_units=%s,\n\t\t\t\t\t\t\t\t\t\tsub_units_num=%s,\n\t\t\t\t\t\t\t\t\t\tsub_num_trial_days=%s, \n\t\t\t\t\t\t\t\t\t\tsub_num_trial_units=%s, \n\t\t\t\t\t\t\t\t\t\tsub_units_num_times=%s,\n\t\t\t\t\t\t\t\t\t\tuse_desc_limit=%d,\n\t\t\t\t\t\t\t\t\t\tdesc_limit=%d,\n\t\t\t\t\t\t\t\t\t\tuse_tag_limit=%d,\n\t\t\t\t\t\t\t\t\t\ttag_limit=%d,\n\t\t\t\t\t\t\t\t\t\thide_related_tab=%d where pid=%d", array($title, $amount, $days, $status, $cat, $is_featured, $title_desc, $image_limit, $cat_limit, $google_analytics, $sendtofriend, $post_type, $link_business_pkg, $recurring_pkg, $reg_desc_pkg, $reg_fees_pkg, $downgrade_pkg, $sub_active, $display_order, $sub_units, $sub_units_num, $sub_num_trial_days, $sub_num_trial_units, $sub_units_num_times, $use_desc_limit, $desc_limit, $use_tag_limit, $tag_limit, $hide_related_tab, $id))); $msg = 'Price updated successfully.'; } else { $wpdb->query($wpdb->prepare("insert into " . GEODIR_PRICE_TABLE . " set\n\t\t\t\t\t\t\ttitle=%s, \n\t\t\t\t\t\t\tamount=%f, \n\t\t\t\t\t\t\tdays=%d, \n\t\t\t\t\t\t\tstatus=%d,\n\t\t\t\t\t\t\tis_default=%d,\n\t\t\t\t\t\t\tcat=%s,\n\t\t\t\t\t\t\tis_featured=%d,\n\t\t\t\t\t\t\ttitle_desc=%s, \n\t\t\t\t\t\t\timage_limit=%s, \n\t\t\t\t\t\t\tcat_limit=%s, \n\t\t\t\t\t\t\tgoogle_analytics = %d,\n\t\t\t\t\t\t\tsendtofriend = %d,\n\t\t\t\t\t\t\tpost_type=%s, \n\t\t\t\t\t\t\tlink_business_pkg=%s, \n\t\t\t\t\t\t\trecurring_pkg=%s, \n\t\t\t\t\t\t\treg_desc_pkg=%s, \n\t\t\t\t\t\t\treg_fees_pkg=%s, \n\t\t\t\t\t\t\tdowngrade_pkg=%s, \n\t\t\t\t\t\t\tsub_active=%s,\n\t\t\t\t\t\t\tdisplay_order=%d,\n\t\t\t\t\t\t\tsub_units=%s,\n\t\t\t\t\t\t\tsub_units_num=%s,\n\t\t\t\t\t\t\tsub_num_trial_days=%s,\n\t\t\t\t\t\t\tsub_num_trial_units=%s, \n\t\t\t\t\t\t\tsub_units_num_times= %s,\n\t\t\t\t\t\t\tuse_desc_limit=%d,\n\t\t\t\t\t\t\tdesc_limit=%d,\n\t\t\t\t\t\t\tuse_tag_limit=%d,\n\t\t\t\t\t\t\ttag_limit=%d,\n\t\t\t\t\t\t\thide_related_tab=%d", array($title, $amount, $days, $status, $is_default, $cat, $is_featured, $title_desc, $image_limit, $cat_limit, $google_analytics, $sendtofriend, $post_type, $link_business_pkg, $recurring_pkg, $reg_desc_pkg, $reg_fees_pkg, $downgrade_pkg, $sub_active, $display_order, $sub_units, $sub_units_num, $sub_num_trial_days, $sub_num_trial_units, $sub_units_num_times, $use_desc_limit, $desc_limit, $use_tag_limit, $tag_limit, $hide_related_tab))); $id = $wpdb->insert_id; $msg = __('Price created successfully.', GEODIRPAYMENT_TEXTDOMAIN); if ($is_default) { $wpdb->query($wpdb->prepare("UPDATE " . $plugin_prefix . "price SET is_default='0' WHERE pid!=%d AND post_type=%s", array($id, $post_type))); $wpdb->query($wpdb->prepare("UPDATE " . $plugin_prefix . "price SET is_default='1' WHERE pid=%d", array($id))); } } do_action('geodir_after_save_package', $id); $post_fields = isset($_REQUEST['pay_custom_fields']) ? $_REQUEST['pay_custom_fields'] : ''; $all_packages = $wpdb->get_results($wpdb->prepare("SELECT pid FROM " . $plugin_prefix . "price WHERE post_type=%s", array($post_type))); $packages_default_field = ''; if ($all_packages) { foreach ($all_packages as $pkg) { $packages_default_field .= ',' . $pkg->pid; } } /* --- start posts default fields --- */ $default_address_field = $wpdb->get_row($wpdb->prepare("select id from " . GEODIR_CUSTOM_FIELDS_TABLE . " where is_admin='1' and field_type='address' and post_type=%s", array($post_type))); $post_fields[] = $default_address_field->id; $post_default_fields[] = $default_address_field->id; $default_taxonomy_field = $wpdb->get_row($wpdb->prepare("select id from " . GEODIR_CUSTOM_FIELDS_TABLE . " where is_admin='1' and field_type='taxonomy' and post_type=%s", array($post_type))); $post_fields[] = $default_taxonomy_field->id; $post_default_fields[] = $default_taxonomy_field->id; /* --- end posts default fields --- */ if (!empty($post_fields)) { $post_fields_main_array = array($id, $post_type); $post_fields_length = count($post_fields); $post_fields_format = array_fill(0, $post_fields_length, '%d'); $post_fields_format = implode(',', $post_fields_format); $post_fields_main_array = array_merge($post_fields_main_array, $post_fields); $post_default_main_array = array($post_type); $post_default_fields_length = count($post_default_fields); $post_default_format = array_fill(0, $post_default_fields_length, '%d'); $post_default_format = implode(',', $post_default_format); $post_default_main_array = array_merge($post_default_main_array, $post_default_fields); $old_package_change = $wpdb->get_results($wpdb->prepare("SELECT id, packages from " . GEODIR_CUSTOM_FIELDS_TABLE . " WHERE FIND_IN_SET(%s, packages)", array($id))); if (!empty($old_package_change)) { foreach ($old_package_change as $key) { $pck_array = explode(',', $key->packages); $packages = ''; $comma = ''; foreach ($pck_array as $pck_key) { if ($pck_key != $id && $pck_key != '') { $packages .= $comma . $pck_key; $comma = ','; } } $wpdb->query($wpdb->prepare("UPDATE " . GEODIR_CUSTOM_FIELDS_TABLE . " SET packages = %s WHERE id=%d", array($packages, $key->id))); } } $wpdb->query($wpdb->prepare("UPDATE " . GEODIR_CUSTOM_FIELDS_TABLE . " SET packages = CONCAT('',TRIM(BOTH ',' FROM packages),',%d,') WHERE post_type = %s AND id IN ({$post_fields_format})", $post_fields_main_array)); $wpdb->query($wpdb->prepare("UPDATE " . GEODIR_CUSTOM_FIELDS_TABLE . " SET packages = '" . $packages_default_field . "' WHERE post_type = %s AND id IN ({$post_default_format})", $post_default_main_array)); } $msg = urlencode($msg); $location = admin_url() . "admin.php?page=geodirectory&tab=paymentmanager_fields&subtab=geodir_payment_manager&success_msg=" . $msg; wp_redirect($location); exit; } else { $error = urlencode($error); $location = admin_url() . "admin.php?page=geodirectory&tab=paymentmanager_fields&subtab=geodir_payment_manager&error_msg=" . $error; wp_redirect($location); exit; } } } else { wp_redirect(home_url() . '/?geodir_signup=true'); exit; } }
function geodir_ipn_handler_googlewallet() { global $wpdb; require_once GEODIR_PAYMENT_MANAGER_PATH . '/googlewallet/JWT.php'; $paymentOpts = get_payment_options('googlechkout'); $merchantkey = $paymentOpts['merchantsecret']; $currency_code = geodir_get_currency_type(); $merchantid = $paymentOpts['merchantid']; $merchantkey = $paymentOpts['merchantsecret']; $encoded_jwt = $_POST['jwt']; $decodedJWT = JWT::decode($encoded_jwt, $merchantkey); $post_title = $decodedJWT->request->name; $payable_amount = $decodedJWT->request->price; // yes valid recipt $p_arr = explode(",", $decodedJWT->request->sellerData); $p_arr2 = explode(":", $p_arr[1]); $last_postid = $p_arr2[1]; require_once GEODIR_PAYMENT_MANAGER_PATH . '/googlewallet/generate_token.php'; //$encoded_jwt = $_POST['jwt']; // get orderId $orderId = $decodedJWT->response->orderId; if ($_POST['jwt']) { if ($orderId) { // yes valid recipt $p_arr = explode(",", $decodedJWT->request->sellerData); $p_arr2 = explode(":", $p_arr[1]); $postid = $p_arr2[1]; $item_name = $decodedJWT->request->name; $txn_id = $orderId; $payment_status = 'PAID'; $payment_type = 'Google Wallet'; $payment_date = date("F j, Y, g:i a"); $txn_type = $decodedJWT->typ; $mc_currency = $decodedJWT->request->currencyCode; // get curancy code $mc_gross = $decodedJWT->request->price; $mc_amount3 = $decodedJWT->request->price; ################################################################################################################################################################################ global $wpdb; $header = ''; // get current post status $current_post_status = get_post_status($postid); $post_pkg = geodir_get_post_meta($postid, 'package_id', true); /* get the post price package ID*/ global $wpdb; $pricesql = $wpdb->prepare("select * from " . GEODIR_PRICE_TABLE . " where status=1 and pid=%d", array($post_pkg)); $priceinfo = $wpdb->get_row($pricesql, ARRAY_A); /* Get the price package info*/ $pkg_price = $priceinfo['amount']; /* get the price of the package */ $currency_code = geodir_get_currency_type(); /* get the actual curency code */ $merchantid = $paymentOpts['merchantid']; /* Get the site paypal address*/ if ($mc_gross) { $paid_amt = $mc_gross; } else { $paid_amt = $mc_amount3; } $productinfosql = $wpdb->prepare("select ID,post_title,guid,post_author from {$wpdb->posts} where ID = %d", array($postid)); $productinfo = $wpdb->get_results($productinfosql); foreach ($productinfo as $productinfoObj) { /*$post_link = home_url().'/?ptype=preview&alook=1&pid='.$postid;*/ $post_title = '<a href="' . get_permalink($postid) . '">' . $productinfoObj->post_title . '</a>'; $aid = $productinfoObj->post_author; $userInfo = geodir_get_author_info($aid); $to_name = $userInfo->user_nicename; $to_email = $userInfo->user_email; $user_email = $userInfo->user_email; } /*###################################### ######## PAYMENT SUCCESSFUL ########## ######################################*/ if ($txn_type) { $post_default_status = geodir_new_post_default_status(); if ($post_default_status == '') { $post_default_status = 'publish'; } geodir_set_post_status($postid, $post_default_status); $transaction_details = ''; $paid_amount_with_currency = get_option('geodir_currencysym') . $paid_amt; $transaction_details .= "--------------------------------------------------<br />"; $transaction_details .= sprintf(__("Payment Details for Listing ID #%s", GEODIRPAYMENT_TEXTDOMAIN), $postid) . "<br />"; $transaction_details .= "--------------------------------------------------<br />"; $transaction_details .= sprintf(__("Listing Title: %s", GEODIRPAYMENT_TEXTDOMAIN), $item_name) . "<br />"; $transaction_details .= "--------------------------------------------------<br />"; $transaction_details .= sprintf(__("Trans ID: %s", GEODIRPAYMENT_TEXTDOMAIN), $txn_id) . "<br />"; $transaction_details .= sprintf(__("Status: %s", GEODIRPAYMENT_TEXTDOMAIN), $payment_status) . "<br />"; $transaction_details .= sprintf(__("Amount: %s", GEODIRPAYMENT_TEXTDOMAIN), $paid_amount_with_currency) . "<br />"; $transaction_details .= sprintf(__("Type: %s", GEODIRPAYMENT_TEXTDOMAIN), $payment_type) . "<br />"; $transaction_details .= sprintf(__("Date: %s", GEODIRPAYMENT_TEXTDOMAIN), $payment_date) . "<br />"; $transaction_details .= sprintf(__(" Method: %s", GEODIRPAYMENT_TEXTDOMAIN), $txn_type) . "<br />"; $transaction_details .= "--------------------------------------------------<br />"; $transaction_details .= __("Information Submitted URL", GEODIRPAYMENT_TEXTDOMAIN) . "<br />"; $transaction_details .= "--------------------------------------------------<br />"; $transaction_details .= " {$post_title}<br />"; // Extend expire date start $invoice_info = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . INVOICE_TABLE . " WHERE post_id = %d AND is_current=%s", array($postid, '1'))); $invoice_id = $invoice_info->id; $invoice_package_id = ''; if (!empty($invoice_info) && isset($invoice_info->package_id)) { $invoice_package_id = $invoice_info->package_id; $invoice_alive_days = $invoice_info->alive_days; $invoice_status = $invoice_info->status; } $geodir_post_info = geodir_get_post_info($postid); if (!empty($geodir_post_info)) { $post_package_id = $geodir_post_info->package_id; $post_expire_date = $geodir_post_info->expire_date; if (!empty($invoice_package_id) && $invoice_alive_days > 0 && $invoice_package_id == $post_package_id && strtolower($post_expire_date) != 'never' && strtotime($post_expire_date) >= strtotime(date('Y-m-d')) && $current_post_status == 'publish') { $alive_days = (int) ($geodir_post_info->alive_days + $invoice_alive_days); $expire_date = date('Y-m-d', strtotime($post_expire_date . "+" . $invoice_alive_days . " days")); } else { $alive_days = (int) $geodir_post_info->alive_days; if (strtolower($post_expire_date) != 'never' && strtotime($post_expire_date) < strtotime(date('Y-m-d'))) { $alive_days = $invoice_alive_days; } $expire_date = $alive_days > 0 ? date('Y-m-d', strtotime(date('Y-m-d') . "+" . $alive_days . " days")) : 'Never'; } geodir_save_post_meta($postid, 'alive_days', $alive_days); geodir_save_post_meta($postid, 'expire_date', $expire_date); } // Extend expire date start end /*############ SET THE INVOICE STATUS START ############*/ // update invoice statuse and transactio details geodir_update_invoice_status($invoice_id, 'Paid'); geodir_update_invoice_transaction_details($invoice_id, $transaction_details); /*############ SET THE INVOICE STATUS END ############*/ geodir_payment_adminEmail($postid, $aid, 'payment_success', $transaction_details); /*email to admin*/ geodir_payment_clientEmail($postid, $aid, 'payment_success', $transaction_details); /*email to client*/ } /*###################################### ######## PAYMENT SUCCESSFUL ########## ######################################*/ header("HTTP/1.0 200 OK"); echo $orderId; } else { if (strcmp($res, "INVALID") == 0) { geodir_payment_adminEmail($_POST['custom'], '1', 'payment_fail'); /* email to admin*/ } } } }