$t->assign('products', $pp); $payments =& $db->get_user_payments(intval($_amember_id), 1); usort($payments, 'rcmp_begin_date'); $now = date('Y-m-d'); $member_active = $member_paid = 0; foreach ($payments as $k => $v) { $payments[$k]['is_active'] = $v['expire_date'] >= $now && $v['begin_date'] <= $now ? 1 : 0; if ($payments[$k]['is_active']) { $member_active++; } if ($v['completed']) { $member_paid++; } // try to display "Cancel" Link if ($payments[$k]['expire_date'] >= date('Y-m-d')) { $paysys = get_paysystem($v['paysys_id']); $product = $db->get_product($v['product_id']); if ($paysys['recurring'] && ($pay_plugin =& instantiate_plugin('payment', $v['paysys_id'])) && $product['is_recurring'] && method_exists($pay_plugin, 'get_cancel_link')) { $payments[$k]['cancel_url'] = $pay_plugin->get_cancel_link($v['payment_id']); } } } $t->assign('payments', $payments); /////////////////////////////////////////////////// $member_products = $_SESSION['_amember_products']; foreach ((array) $member_products as $k => $pr) { $member_products[$k]['url'] = add_password_to_url($pr['url']); foreach ((array) $pr['add_urls'] as $u => $kk) { $uu = add_password_to_url($u, $member_login_pw); unset($member_products[$k]['add_urls'][$u]); $member_products[$k]['add_urls'][$uu] = $kk;
/** * Function sets price fields according to paysystem type * @param string paysys_id */ function setPriceFieldsByPaysys($paysys_id) { $built_in_trials = false; if ($paysys_id && ($paysys = get_paysystem($paysys_id))) { $built_in_trials = $paysys['built_in_trials']; } if ($built_in_trials) { $this->setPriceFields('price'); } else { $this->setPriceFields(array('trial1_price', 'price')); } }
function display_payments_form() { global $member_id; global $db, $t, $config; if ($_GET['cancel_recurring'] > 0) { $p = $db->get_payment($_GET['cancel_recurring']); if (!$p) { die('Cannot find payment to cancel recurring. internal error'); } $p['data']['CANCELLED'] = 1; $p['data']['CANCELLED_AT'] = strftime($config['time_format'], time()); $db->update_payment($p['payment_id'], $p); admin_log("Subscription cancelled", 'payments', $p['payment_id']); } if ($_GET['restart_recurring'] > 0) { $p = $db->get_payment($_GET['restart_recurring']); if (!$p) { die('Cannot find payment to restart recurring. internal error'); } $p['data']['CANCELLED'] = 0; $p['data']['CANCELLED_AT'] = ""; $db->update_payment($p['payment_id'], $p); admin_log("Subscription restarted", 'payments', $p['payment_id']); } $products =& $db->get_products_list(); $pp = array(); foreach ($products as $p) { $pp[$p['product_id']] = $p['title']; } $t->assign('products', $pp); $t->assign('member_id', $member_id); $member = $db->get_user($member_id); $payments =& $db->get_user_payments(intval($member_id)); foreach ($payments as $k => $p) { $payments[$k]['items_count'] = count($p['data'][0]['BASKET_PRODUCTS']); /** Following is a dirty hack to show cancel link in admin cp */ if ($payments[$k]['expire_date'] >= date('Y-m-d')) { $paysys = get_paysystem($p['paysys_id']); $product = $db->get_product($p['product_id']); if ($paysys['recurring'] && ($pay_plugin =& instantiate_plugin('payment', $p['paysys_id'])) && $product['is_recurring'] && method_exists($pay_plugin, 'get_cancel_link')) { $l = $pay_plugin->get_cancel_link($p['payment_id']); if (preg_match('|cc.php\\?action=cancel_recurring|', $l, $regs)) { $u = $_SERVER['PHP_SELF'] . "?member_id={$member_id}&action=payments&" . 'cancel_recurring=' . $p['payment_id']; $payments[$k]['cancel_url'] = $u; } if ($member['data']['cc'] && $config['enable_resubscribe']) { $r = $_SERVER['PHP_SELF'] . "?member_id={$member_id}&action=payments&" . 'restart_recurring=' . $p['payment_id']; $payments[$k]['restart_url'] = $r; } } } } $t->assign('payments', $payments); $paysystems = get_paysystems_list(); $pp = array(); foreach ($paysystems as $p) { $pp[$p['paysys_id']] = $p['title']; } $t->assign('paysystems', $pp); global $payment_additional_fields; $t->assign("u", $db->get_user($member_id)); $t->assign('payment_additional_fields', $payment_additional_fields); $t->display('admin/user_payments.html'); }
function mail_expire_members() { // send mail to members having // expiration_date = today() + $config['expire_mail_days'] global $config, $db; $t =& new_smarty(); $pl = array(); $et =& new aMemberEmailTemplate(); $et->name = "mail_expire"; $global_days = $et->find_days(); foreach ($db->get_products_list() as $k => $pr) { if ($pr['dont_mail_expire'] != 2 && !$config['mail_expire']) { continue; } if ($pr['dont_mail_expire'] == 1) { continue; } $et =& new aMemberEmailTemplate(); $et->name = "mail_expire"; $et->product_id = $pr['product_id']; $days = $et->find_days(); if ($pr['dont_mail_expire'] == 2 && !$config['mail_expire'] && !$days) { continue; } $pr['mail_expire_days'] = $days ? $days : $global_days; $pr['mail_expire_days_global'] = $days ? false : true; if (!$pr['mail_expire_days']) { continue; } $pl[$k] = $pr; } // iterate on products $msent = array(); foreach ($pl as $pr) { //iterate on expiration days foreach ($pr['mail_expire_days'] as $days) { $dat = date('Y-m-d', time() + 3600 * 24 * $days); $plist = $db->get_expired_payments($dat, $dat, null, $pr['dont_mail_expire'] ? true : false, $pr['product_id']); //print_rr($plist, "$dat,$pr[product_id]"); foreach ($plist as $p) { // go through expired payments and send mail if ($msent[$p['member_id']]) { continue; } //dont send second mail ! $paysys = get_paysystem($p['paysys_id']); if ($paysys['recurring'] && $pr['is_recurring']) { continue; } // don't send if auto-recurring $u = $db->get_user($p['member_id']); $product = get_product($p['product_id']); /////////////////////////////////// $t->assign('login', $u['login']); $t->assign('pass', $u['pass']); $t->assign('name_f', $u['name_f']); $t->assign('name_l', $u['name_l']); /////////////////////////////////// $t->assign('user', $u); $t->assign('payment', $p); $t->assign('product', $product->config); /////////////////////////////////// $et =& new aMemberEmailTemplate(); $et->name = "mail_expire"; $et->day = $days; if (!$pr['mail_expire_days_global']) { $et->product_id = $pr['product_id']; } //print_rr($et, $u['email']); mail_template_user($t, $et, $u, false); $msent[$p['member_id']]++; } } } }
function plugin_do_payment($paysys_id, $payment_id, $member_id, $product_id, $price, $begin_date, $expire_date, &$vars) { $pay_plugin =& instantiate_plugin('payment', $paysys_id); $ps = get_paysystem($paysys_id); global $db; if ($ps['fixed_price'] && ($product = $db->get_product($product_id)) && $product['price'] != $price && $product['trial1_price'] != $price) { return "Sorry, it is impossible to use this payment method for \n this order. Please select another payment method"; } return $pay_plugin->do_payment($payment_id, $member_id, $product_id, $price, $begin_date, $expire_date, $vars); }