Exemplo n.º 1
0
 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();
         }
     }
 }
Exemplo n.º 2
0
 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&amp;task=repeatPayment&amp;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&amp;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 . '&nbsp;' . $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&amp;task=edit&amp;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);
 }
Exemplo n.º 3
0
 static function VerifyUser($username)
 {
     $heartbeat = new aecHeartbeat();
     $heartbeat->frontendping();
     $id = aecUserHelper::UserIDfromUsername($username);
     return AECToolbox::VerifyUserID($id);
 }
Exemplo n.º 4
0
 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;
         }
     }
 }
Exemplo n.º 5
0
 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();
 }