Exemplo n.º 1
0
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;
    }
}
Exemplo n.º 2
0
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*/
            }
        }
    }
}