public function metaUser($userid, $subscriptionid = null) { if (empty($userid) && !empty($subscriptionid)) { $userid = aecUserHelper::UserIDfromSubscriptionID($subscriptionid); } $this->meta = new metaUserDB(); $this->meta->loadUserid($userid); $this->cmsUser = false; $this->hasCBprofile = false; $this->hasJSprofile = false; $this->userid = 0; $this->hasSubscription = 0; $this->objSubscription = null; $this->focusSubscription = null; if ($userid) { $this->cmsUser = new cmsUser(); $this->cmsUser->load($userid); $this->userid = $userid; if (!empty($subscriptionid)) { $aecid = $subscriptionid; } else { $aecid = aecUserHelper::SubscriptionIDfromUserID($userid); } if ($aecid) { $this->objSubscription = new Subscription(); $this->objSubscription->load($aecid); $this->focusSubscription = new Subscription(); $this->focusSubscription->load($aecid); $this->hasSubscription = 1; $this->temporaryRFIX(); } } }
public function edit($userid, $subscriptionid, $task, $page = 0) { if (!empty($subscriptionid)) { $userid = aecUserHelper::UserIDfromSubscriptionID($subscriptionid); } if (!empty($subscriptionid)) { $sid = $subscriptionid; } else { $sid = 0; } $lists = array(); $metaUser = new metaUser($userid); if (!empty($sid)) { $metaUser->moveFocus($sid); } else { if ($metaUser->hasSubscription) { $sid = $metaUser->focusSubscription->id; } } if ($metaUser->loadSubscriptions() && !empty($sid)) { foreach ($metaUser->allSubscriptions as $s_id => $s_c) { if ($s_c->id == $sid) { $metaUser->allSubscriptions[$s_id]->current_focus = true; continue; } } } $invoices_limit = 15; $invoice_ids = aecInvoiceHelper::InvoiceIdList($metaUser->userid, $page * $invoices_limit, $invoices_limit); $group_selection = array(); $group_selection[] = JHTML::_('select.option', '', JText::_('EXPIRE_SET')); $group_selection[] = JHTML::_('select.option', 'expired', JText::_('EXPIRE_NOW')); $group_selection[] = JHTML::_('select.option', 'excluded', JText::_('EXPIRE_EXCLUDE')); $group_selection[] = JHTML::_('select.option', 'active', JText::_('EXPIRE_INCLUDE')); $group_selection[] = JHTML::_('select.option', 'closed', JText::_('EXPIRE_CLOSE')); $group_selection[] = JHTML::_('select.option', 'cancelled', JText::_('EXPIRE_CANCEL')); $group_selection[] = JHTML::_('select.option', 'hold', JText::_('EXPIRE_HOLD')); $lists['set_status'] = JHTML::_('select.genericlist', $group_selection, 'set_status', 'class="inputbox" size="1"', 'value', 'text', ''); $invoices = array(); $couponsh = array(); $invoice_counter = 0; $processors = PaymentProcessorHandler::getObjectList(PaymentProcessorHandler::getProcessorList()); $procs = array('free' => 'Free', 'none' => 'None'); foreach ($processors as $processor) { $procs[$processor->processor_name] = $processor->processor->info['longname']; } foreach ($invoice_ids as $inv_id) { $invoice = new Invoice(); $invoice->load($inv_id); if (!empty($invoice->coupons)) { foreach ($invoice->coupons as $coupon_code) { if (!isset($couponsh[$coupon_code])) { $couponsh[$coupon_code] = couponHandler::idFromCode($coupon_code); } $couponsh[$coupon_code]['invoices'][] = $invoice->invoice_number; } } if ($invoice_counter >= $invoices_limit && strcmp($invoice->transaction_date, '0000-00-00 00:00:00') !== 0) { continue; } else { $invoice_counter++; } $status = aecHTML::Icon('plus') . HTML_AcctExp::DisplayDateInLocalTime($invoice->created_date) . '<br />'; if (isset($invoice->params['deactivated'])) { $status .= aecHTML::Icon('remove-circle') . 'deactivated'; } elseif (strcmp($invoice->transaction_date, '0000-00-00 00:00:00') === 0) { if (isset($invoice->params['pending_reason'])) { if ($this->lang->hasKey('PAYMENT_PENDING_REASON_' . strtoupper($invoice->params['pending_reason']))) { $status .= aecHTML::Icon('warning-sign') . JText::_('PAYMENT_PENDING_REASON_' . strtoupper($invoice->params['pending_reason'])); } else { $status .= aecHTML::Icon('warning-sign') . $invoice->params['pending_reason']; } } else { $status .= aecHTML::Icon('time') . 'uncleared'; } } $actions = array(); $rowstyle = ''; if (strcmp($invoice->transaction_date, '0000-00-00 00:00:00') === 0) { $checkoutlink = AECToolbox::deadsureURL('index.php?option=com_acctexp&task=repeatPayment&invoice=' . $invoice->invoice_number); $actions = array(array('repeat', 'arrow-right', 'USERINVOICE_ACTION_REPEAT', 'info', '', $checkoutlink), array('cancel', 'remove', 'USERINVOICE_ACTION_CANCEL', 'danger'), array('clear', 'ok', 'USERINVOICE_ACTION_CLEAR_APPLY', 'success', '&applyplan=1'), array('clear', 'check', 'USERINVOICE_ACTION_CLEAR', 'warning')); $rowstyle = ' style="background-color:#fee;"'; } else { $status .= aecHTML::Icon('shopping-cart') . HTML_AcctExp::DisplayDateInLocalTime($invoice->transaction_date); } $actions[] = array('print', 'print', 'HISTORY_ACTION_PRINT', '', '&tmpl=component" target="_blank'); $actions[] = array('pdf', 'file', 'PDF', '', ''); $actionlist = '<div class="btn-group">'; foreach ($actions as $action) { if (!empty($action[5])) { $alink = $action[5]; } else { $alink = 'index.php?option=com_acctexp&task=' . $action[0] . 'Invoice&invoice=' . $invoice->invoice_number . '&returntask=edit&entity=Membership&userid=' . $metaUser->userid; if (!empty($action[4])) { $alink .= $action[4]; } } $actionlist .= aecHTML::Button($action[1], $action[2], $action[3], $alink); } $actionlist .= '</div>'; $non_formatted = $invoice->invoice_number; $invoice->formatInvoiceNumber(); $is_formatted = $invoice->invoice_number; if ($non_formatted != $is_formatted) { $is_formatted = $non_formatted . "\n" . '(' . $is_formatted . ')'; } $invoices[$inv_id] = array(); $invoices[$inv_id]['rowstyle'] = $rowstyle; $invoices[$inv_id]['invoice_number'] = $is_formatted; $invoices[$inv_id]['amount'] = $invoice->amount . ' ' . $invoice->currency; $invoices[$inv_id]['status'] = $status; if ($procs[$invoice->method]) { $invoices[$inv_id]['processor'] = $invoice->method; } else { $invoices[$inv_id]['processor'] = $procs[$invoice->method]; } $invoices[$inv_id]['usage'] = $invoice->usage; $invoices[$inv_id]['actions'] = $actionlist; } $coupons = array(); $coupon_counter = 0; foreach ($couponsh as $coupon_code => $coupon) { if ($coupon_counter >= 10) { continue; } else { $coupon_counter++; } $cc = array(); $cc['coupon_code'] = '<a href="index.php?option=com_acctexp&task=edit&entity=Coupon&id=' . $coupon['type'] . '.' . $coupon['id'] . '">' . $coupon_code . '</a>'; $cc['invoices'] = implode(", ", $coupon['invoices']); $coupons[] = $cc; } // get available plans $available_plans = SubscriptionPlanHandler::getActivePlanList(false); $lists['assignto_plan'] = JHTML::_('select.genericlist', $available_plans, 'assignto_plan[]', 'size="1" multiple="multiple" class="select2-bootstrap"', 'value', 'text', 0); $userMIs = $metaUser->getUserMIs(); $mi = array(); $mi['profile'] = array(); $mi['admin'] = array(); $mi['profile_form'] = array(); $mi['admin_form'] = array(); $params = array(); foreach ($userMIs as $m) { $pref = 'mi_' . $m->id . '_'; $ui = $m->profile_info($metaUser); if (!empty($ui)) { $mi['profile'][] = array('name' => $m->info['name'] . ' - ' . $m->name, 'info' => $ui); } $uf = $m->profile_form($metaUser, true); if (!empty($uf)) { foreach ($uf as $k => $v) { $mi['profile_form'][] = $pref . $k; $params[$pref . $k] = $v; } } $ai = $m->admin_info($metaUser); if (!empty($ai)) { $mi['admin'][] = array('name' => $m->info['name'] . ' - ' . $m->name, 'info' => $ai); } $af = $m->admin_form($metaUser); if (!empty($af)) { foreach ($af as $k => $v) { $mi['admin_form'][] = $pref . $k; $params[$pref . $k] = $v; } } } if (!empty($params)) { $settings = new aecSettings('userForm', 'mi'); $settings->fullSettingsArray($params, array(), $lists); // Call HTML Class $aecHTML = new aecHTML($settings->settings, $settings->lists); } else { $aecHTML = new stdClass(); } $aecHTML->invoice_pages = (int) (aecInvoiceHelper::InvoiceCountbyUserID($metaUser->userid) / $invoices_limit); $aecHTML->invoice_page = $page; $aecHTML->sid = $sid; HTML_AcctExp::userForm($metaUser, $invoices, $coupons, $mi, $lists, $task, $aecHTML); }
static function VerifyUser($username) { $heartbeat = new aecHeartbeat(); $heartbeat->frontendping(); $id = aecUserHelper::UserIDfromUsername($username); return AECToolbox::VerifyUserID($id); }
public function loadRenewStatus() { $this->renew = 0; if (empty($this->userid)) { return; } if (!empty($this->metaUser)) { $this->renew = $this->metaUser->meta->is_renewing(); } elseif (aecUserHelper::SubscriptionIDfromUserID($this->userid)) { $user_subscription = new Subscription(); $user_subscription->loadUserID($this->userid); if (strcmp($user_subscription->lastpay_date, '0000-00-00 00:00:00') !== 0) { $this->renew = true; } } }
public function beat() { $this->processors = array(); $this->proc_prepare = array(); $this->result = array('fail_expired' => 0, 'fallback' => 0, 'skipped' => 0, 'expired' => 0, 'pre_expired' => 0, 'pre_exp_actions' => 0); // Some cleanup $this->deleteTempTokens(); // Receive maximum pre expiration time $pre_expiration = microIntegrationHandler::getMaxPreExpirationTime(); $subscription_list = $this->getSubscribers($pre_expiration); // Efficient way to check for expired users without checking on each one if (empty($subscription_list)) { return $this->endBeat(); } foreach ($subscription_list as $sid => $sub_id) { $subscription = new Subscription(); $subscription->load($sub_id); if (!aecUserHelper::UserExists($subscription->userid)) { unset($subscription_list[$sid]); continue; } // Check whether this user really is expired // If this check fails, the following subscriptions might still be pre-expiration events if ($subscription->isExpired()) { // If we don't have any validation response, expire $validate = $this->processorValidation($subscription, $subscription_list); if ($validate === false) { // There was some kind of fatal error, return. return false; } elseif ($validate !== true) { $expire = $subscription->expire(); if ($expire) { $this->result['expired']++; } elseif ($expire === false) { $this->result['fail_expired']++; } elseif (is_null($expire)) { $this->result['fallback']++; } else { $this->result['skipped']++; } } unset($subscription_list[$sid]); } elseif (!$subscription->recurring) { break; } } // Only go for pre expiration action if we have at least one user for it if (empty($pre_expiration) || empty($subscription_list)) { return $this->endBeat(); } // Get all the MIs which have a pre expiration check $mi_pexp = microIntegrationHandler::getPreExpIntegrations(); // Find plans which have the MIs assigned $expmi_plans = microIntegrationHandler::getPlansbyMI($mi_pexp); // Filter out the users which dont have the correct plan $query = 'SELECT `id`, `userid`' . ' FROM #__acctexp_subscr' . ' WHERE `id` IN (' . implode(',', $subscription_list) . ')' . ' AND `plan` IN (' . implode(',', $expmi_plans) . ')'; $this->_db->setQuery($query); $sub_list = $this->_db->loadObjectList(); if (!empty($sub_list)) { foreach ($sub_list as $sl) { $metaUser = new metaUser($sl->userid); $metaUser->moveFocus($sl->id); $res = $metaUser->focusSubscription->triggerPreExpiration($metaUser, $mi_pexp); if ($res) { $this->result['pre_exp_actions'] += $res; $this->result['pre_expired']++; } } } return $this->endBeat(); }