if (!preg_match('#^Error:#', $result)) { $result = str_replace('"', '', $result); $ids = array(); $trans = explode("\n", $result); foreach ($trans as $value) { $options = explode(',', $value); if (!empty($options[3])) { $ids[] = $vbulletin->db->escape_string($options[3]); } } if (!empty($ids)) { $insert = array(); $updatetrans = array(); $subs = $vbulletin->db->query_read("\n\t\t\t\tSELECT paymentinfo.subscriptionsubid, subscription.subscriptionid, subscription.cost,\n\t\t\t\t\tpaymentinfo.userid, paymentinfo.paymentinfoid, paymenttransaction.amount, paymenttransaction.transactionid,\n\t\t\t\t\tpaymenttransaction.paymenttransactionid\n\t\t\t\tFROM " . TABLE_PREFIX . "paymenttransaction AS paymenttransaction\n\t\t\t\tINNER JOIN " . TABLE_PREFIX . "paymentinfo AS paymentinfo ON (paymentinfo.paymentinfoid = paymenttransaction.paymentinfoid)\n\t\t\t\tINNER JOIN " . TABLE_PREFIX . "subscription AS subscription ON (paymentinfo.subscriptionid = subscription.subscriptionid)\n\t\t\t\tINNER JOIN " . TABLE_PREFIX . "subscriptionlog AS subscriptionlog ON (subscriptionlog.subscriptionid = subscription.subscriptionid AND subscriptionlog.userid = paymentinfo.userid)\n\t\t\t\tWHERE transactionid IN ('" . implode("','", $ids) . "')\n\t\t\t\t\tAND subscriptionlog.status = 1\n\t\t\t\t\tAND paymenttransaction.reversed = 0\n\t\t\t"); while ($sub = $vbulletin->db->fetch_array($subs)) { $subobj->delete_user_subscription($sub['subscriptionid'], $sub['userid'], $sub['subscriptionsubid']); $insert[] = "2, " . TIMENOW . ", 'usd', {$sub['amount']}, '" . $vbulletin->db->escape_string($sub['transactionid'] . 'R') . "', {$sub['paymentinfoid']}, {$api['paymentapiid']}"; $updatetrans[] = $sub['paymenttransactionid']; $count++; } if (!empty($insert)) { $vbulletin->db->query_write("\n\t\t\t\t\tINSERT INTO " . TABLE_PREFIX . "paymenttransaction\n\t\t\t\t\t(state, dateline, currency, amount, transactionid, paymentinfoid, paymentapiid)\n\t\t\t\t\tVALUES\n\t\t\t\t\t(" . implode('),(', $insert) . ")\n\t\t\t\t"); $vbulletin->db->query_write("\n\t\t\t\t\tUPDATE " . TABLE_PREFIX . "paymenttransaction\n\t\t\t\t\tSET reversed = 1\n\t\t\t\t\tWHERE paymenttransactionid IN (" . implode(', ', $updatetrans) . ")\n\t\t\t\t"); } } $log = $count; } else { // Error $log = htmlspecialchars_uni($result); } }
toggle_subs(); define('CP_REDIRECT', 'subscriptions.php?do=modify'); print_stop_message('saved_subscription_x_successfully', htmlspecialchars_uni($vbulletin->GPC['title'])); } // ###################### Start Remove ####################### if ($_REQUEST['do'] == 'remove') { print_delete_confirmation('subscription', $vbulletin->GPC['subscriptionid'], 'subscriptions', 'kill', 'subscription', 0, $vbphrase['doing_this_will_remove_additional_access_subscription'], 'subscriptionid'); } // ###################### Start Kill ####################### if ($_POST['do'] == 'kill') { $db->query_write("\n\t\tDELETE FROM " . TABLE_PREFIX . "phrase\n\t\tWHERE fieldname = 'subscription' AND\n\t\t\t\tvarname IN ('sub" . $vbulletin->GPC['subscriptionid'] . "_title', 'sub" . $vbulletin->GPC['subscriptionid'] . "_desc')\n\t"); require_once DIR . '/includes/adminfunctions_language.php'; build_language(); $users = $db->query_read("\n\t\tSELECT * FROM " . TABLE_PREFIX . "subscriptionlog\n\t\tWHERE subscriptionid = " . $vbulletin->GPC['subscriptionid'] . " AND\n\t\tstatus = 1\n\t"); while ($user = $db->fetch_array($users)) { $subobj->delete_user_subscription($vbulletin->GPC['subscriptionid'], $user['userid']); } $db->query_write("DELETE FROM " . TABLE_PREFIX . "subscription WHERE subscriptionid = " . $vbulletin->GPC['subscriptionid']); $db->query_write("DELETE FROM " . TABLE_PREFIX . "subscriptionlog WHERE subscriptionid = " . $vbulletin->GPC['subscriptionid']); toggle_subs(); define('CP_REDIRECT', 'subscriptions.php?do=modify'); print_stop_message('deleted_subscription_successfully'); } // ###################### Start find ####################### if ($_REQUEST['do'] == 'find') { $vbulletin->input->clean_array_gpc('r', array('status' => TYPE_INT, 'orderby' => TYPE_NOHTML, 'limitstart' => TYPE_INT, 'limitnumber' => TYPE_INT)); $condition = '1=1'; $condition .= iif($vbulletin->GPC['subscriptionid'], " AND subscriptionid=" . $vbulletin->GPC['subscriptionid']); $condition .= $vbulletin->GPC['status'] > -1 ? ' AND status = ' . $vbulletin->GPC['status'] : ''; switch ($vbulletin->GPC['orderby']) { case 'subscriptionid':
if (!is_object($vbulletin->db)) { exit; } // ########################## REQUIRE BACK-END ############################ require_once DIR . '/includes/class_paid_subscription.php'; // ######################################################################## // ######################### START MAIN SCRIPT ############################ // ######################################################################## $subobj = new vB_PaidSubscription($vbulletin); $subobj->cache_user_subscriptions(); if (is_array($subobj->subscriptioncache)) { foreach ($subobj->subscriptioncache as $key => $subscription) { // disable people :) $subscribers = $vbulletin->db->query_read("\n\t\t\tSELECT userid\n\t\t\tFROM " . TABLE_PREFIX . "subscriptionlog\n\t\t\tWHERE subscriptionid = {$subscription['subscriptionid']}\n\t\t\t\tAND expirydate <= " . TIMENOW . "\n\t\t\t\tAND status = 1\n\t\t"); while ($subscriber = $vbulletin->db->fetch_array($subscribers)) { $subobj->delete_user_subscription($subscription['subscriptionid'], $subscriber['userid'], -1, true); } } // time for the reminders $subscriptions_reminders = $vbulletin->db->query_read("\n\t\tSELECT subscriptionlog.subscriptionid, subscriptionlog.userid, subscriptionlog.expirydate, user.username, user.email, user.languageid\n\t\tFROM " . TABLE_PREFIX . "subscriptionlog AS subscriptionlog\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = subscriptionlog.userid)\n\t\tWHERE subscriptionlog.expirydate >= " . (TIMENOW + 86400 * 2) . "\n\t\t\tAND subscriptionlog.expirydate <= " . (TIMENOW + 86400 * 3) . "\n\t\t\tAND status = 1\n\t"); vbmail_start(); while ($subscriptions_reminder = $vbulletin->db->fetch_array($subscriptions_reminders)) { require_once DIR . '/includes/functions_misc.php'; $subscription_title = fetch_phrase('sub' . $subscriptions_reminder['subscriptionid'] . '_title', 'subscription', '', true, true, $subscriptions_reminder['languageid']); $username = unhtmlspecialchars($subscriptions_reminder['username']); eval(fetch_email_phrases('paidsubscription_reminder', $subscriptions_reminder['languageid'])); vbmail($subscriptions_reminder['email'], $subject, $message); } vbmail_end(); ($hook = vBulletinHook::fetch_hook('cron_script_subscriptions')) ? eval($hook) : false; }
// transaction hasn't been processed before /*insert query*/ $trans = array('transactionid' => $apiobj->transaction_id, 'paymentinfoid' => $apiobj->paymentinfo['paymentinfoid'], 'amount' => $apiobj->paymentinfo['amount'], 'currency' => $apiobj->paymentinfo['currency'], 'state' => $apiobj->type, 'dateline' => TIMENOW, 'paymentapiid' => $api['paymentapiid']); if (!$apiobj->type) { $trans['request'] = serialize(array('vb_error_code' => $apiobj->error_code, 'GET' => serialize($_GET), 'POST' => serialize($_POST))); } $db->query_write(fetch_query_sql($trans, 'paymenttransaction')); if ($apiobj->type == 1) { $subobj->build_user_subscription($apiobj->paymentinfo['subscriptionid'], $apiobj->paymentinfo['subscriptionsubid'], $apiobj->paymentinfo['userid']); if ($apiobj->display_feedback) { $vbulletin->url = $vbulletin->options['bburl'] . '/payments.php'; eval(print_standard_redirect('payment_complete', true, true)); } } else { if ($apiobj->type == 2) { $subobj->delete_user_subscription($apiobj->paymentinfo['subscriptionid'], $apiobj->paymentinfo['userid'], $apiobj->paymentinfo['subscriptionsubid']); } } } else { if ($apiobj->type == 2) { // transaction is a reversal / refund $subobj->delete_user_subscription($apiobj->paymentinfo['subscriptionid'], $apiobj->paymentinfo['userid'], $apiobj->paymentinfo['subscriptionsubid']); } else { // its most likely a re-post of a payment, if we've already dealt with it serve up a redirect if ($apiobj->display_feedback) { $vbulletin->url = $vbulletin->options['bburl'] . '/payments.php'; eval(print_standard_redirect('payment_complete', true, true)); } } } } else {