public function invoiceCreationAction($objInvoice) { if ($this->settings['email_info']) { $metaUser = new metaUser($objInvoice->userid); $request = new stdClass(); $request->metaUser =& $metaUser; $request->invoice =& $objInvoice; $request->plan =& $objInvoice->getObjUsage(); $message = AECToolbox::rewriteEngineRQ($this->settings['text'], $request); $subject = AECToolbox::rewriteEngineRQ($this->settings['subject'], $request); if (!empty($message)) { $recipients = AECToolbox::rewriteEngineRQ($this->settings['recipient'], $request); $recips = explode(',', $recipients); $recipients2 = array(); foreach ($recips as $k => $email) { $recipients2[$k] = trim($email); } $recipients = $recipients2; $bccipients = AECToolbox::rewriteEngineRQ($this->settings['bcc'], $request); $bccips = explode(',', $bccipients); $bccipients2 = array(); foreach ($bccips as $k => $email) { $bccipients2[$k] = trim($email); } $bccipients = $bccipients2; if (!empty($bccipients2)) { $bcc = $bccipients; } else { $bcc = null; } xJ::sendMail($this->settings['sender'], $this->settings['sender_name'], $recipients, $subject, $message, $this->settings['text_html'], null, $bcc); } } if ($this->settings['waitingplan']) { $db = JFactory::getDBO(); $metaUser = new metaUser($objInvoice->userid); if (!$metaUser->hasSubscription || in_array($metaUser->objSubscription->status, array('Expired', 'Closed'))) { if (!$metaUser->hasSubscription) { $payment_plan = new SubscriptionPlan(); $payment_plan->load($this->settings['waitingplan']); $metaUser->establishFocus($payment_plan, 'offline_payment3', false); } $metaUser->objSubscription->applyUsage($this->settings['waitingplan'], 'none', 0); $short = 'waiting plan'; $event = 'Offline Payment waiting plan assigned for ' . $objInvoice->invoice_number; $tags = 'processor,waitingplan'; $params = array('invoice_number' => $objInvoice->invoice_number); $eventlog = new eventLog(); $eventlog->issue($short, $tags, $event, 2, $params); } } }
public function applyPlan($user, $processor = 'none', $silent = 0, $multiplicator = 1, $invoice = null, $tempparams = null) { global $aecConfig; $forcelifetime = false; if (is_string($multiplicator)) { if (strcmp($multiplicator, 'lifetime') === 0) { $forcelifetime = true; } } elseif (is_int($multiplicator) && $multiplicator < 1) { $multiplicator = 1; } if (empty($user)) { return false; } if (is_object($user)) { if (is_a($user, 'metaUser')) { $metaUser = $user; } elseif (is_a($user, 'Subscription')) { $metaUser = new metaUser($user->userid); $metaUser->focusSubscription = $user; } } else { $metaUser = new metaUser($user); } if (!isset($this->params['make_primary'])) { $this->params['make_primary'] = 1; } $fstatus = $metaUser->establishFocus($this, $processor, false); // TODO: Figure out why $status returns 'existing' - even on a completely fresh subscr if ($fstatus != 'existing') { $is_pending = $metaUser->focusSubscription->isPending(); $is_trial = $metaUser->focusSubscription->isTrial(); } else { $is_pending = false; $is_trial = $metaUser->focusSubscription->isTrial(); } $comparison = $this->doPlanComparison($metaUser->focusSubscription); $renew = $metaUser->is_renewing(); $lifetime = $metaUser->focusSubscription->lifetime; if ($comparison['total_comparison'] === false || $is_pending) { // If user is using global trial period he still can use the trial period of a plan if ($this->params['trial_period'] > 0 && !$is_trial) { $trial = true; $value = $this->params['trial_period']; $perunit = $this->params['trial_periodunit']; $this->params['lifetime'] = 0; // We are entering the trial period. The lifetime will come at the renew. $amount = $this->params['trial_amount']; } else { $trial = false; $value = $this->params['full_period']; $perunit = $this->params['full_periodunit']; $amount = $this->params['full_amount']; } } elseif (!$is_pending) { $trial = false; $value = $this->params['full_period']; $perunit = $this->params['full_periodunit']; $amount = $this->params['full_amount']; } else { return false; } if ($this->params['lifetime'] || $forcelifetime) { $metaUser->focusSubscription->expiration = '9999-12-31 00:00:00'; $metaUser->focusSubscription->lifetime = 1; } else { $metaUser->focusSubscription->lifetime = 0; $value *= $multiplicator; if ($comparison['comparison'] == 2 && !$lifetime) { $metaUser->focusSubscription->setExpiration($perunit, $value, 1); } else { $metaUser->focusSubscription->setExpiration($perunit, $value, 0); } } if ($is_pending) { // Is new = set signup date $metaUser->focusSubscription->signup_date = date('Y-m-d H:i:s', (int) gmdate('U')); if ($this->params['trial_period'] > 0 && !$is_trial) { $status = 'Trial'; } else { if ($this->params['full_period'] || $this->params['lifetime']) { if (!isset($this->params['make_active'])) { $status = 'Active'; } else { $status = $this->params['make_active'] ? 'Active' : 'Pending'; } } else { // This should not happen $status = 'Pending'; } } } else { // Renew subscription - Do NOT set signup_date if (!isset($this->params['make_active'])) { $status = $trial ? 'Trial' : 'Active'; } else { $status = $this->params['make_active'] ? $trial ? 'Trial' : 'Active' : 'Pending'; } } $metaUser->focusSubscription->status = $status; $metaUser->focusSubscription->plan = $this->id; $metaUser->temporaryRFIX(); $metaUser->focusSubscription->lastpay_date = date('Y-m-d H:i:s', (int) gmdate('U')); $metaUser->focusSubscription->type = $processor; if (is_object($invoice)) { if (!empty($invoice->params)) { $tempparam = array(); if (!empty($invoice->params['creator_ip'])) { $tempparam['creator_ip'] = $invoice->params['creator_ip']; } if (!empty($tempparam)) { $metaUser->focusSubscription->addParams($tempparam, 'params', false); $metaUser->focusSubscription->storeload(); } } } $pp = new PaymentProcessor(); if ($pp->loadName(strtolower($processor))) { $pp->init(); $pp->getInfo(); $recurring_choice = null; if (is_object($invoice)) { if (!empty($invoice->params)) { if (isset($invoice->params["userselect_recurring"])) { $recurring_choice = $invoice->params["userselect_recurring"]; } } } // Check whether we have a custome choice set if (!is_null($recurring_choice)) { $metaUser->focusSubscription->recurring = $pp->is_recurring($recurring_choice); } else { $metaUser->focusSubscription->recurring = $pp->is_recurring(); } } else { $metaUser->focusSubscription->recurring = 0; } $metaUser->focusSubscription->storeload(); if (empty($invoice->id)) { $invoice = new stdClass(); $invoice->amount = $amount; } $exchange = $add = null; $result = $this->triggerMIs('action', $metaUser, $exchange, $invoice, $add, $silent); if ($result === false) { return false; } elseif ($result === true) { // MIs might have changed the subscription. Reload it. $metaUser->focusSubscription->reload(); } if ($this->params['gid_enabled']) { $metaUser->instantGIDchange($this->params['gid']); } $metaUser->focusSubscription->storeload(); if (!($silent || $aecConfig->cfg['noemails']) || $aecConfig->cfg['noemails_adminoverride']) { $adminonly = $this->id == $aecConfig->cfg['entry_plan'] || $aecConfig->cfg['noemails'] && $aecConfig->cfg['noemails_adminoverride']; $metaUser->focusSubscription->sendEmailRegistered($renew, $adminonly, $invoice); } $metaUser->meta->addPlanID($this->id); $result = $this->triggerMIs('afteraction', $metaUser, $exchange, $invoice, $add, $silent); if ($result === false) { return false; } $this->incrementInventory(); return $renew; }
public function save($userid, $subscriptionid, $assignto_plan) { $post = $_POST; if (!empty($assignto_plan)) { if ($assignto_plan[0] == 0) { unset($assignto_plan[0]); } } $metaUser = new metaUser($userid); if ($metaUser->hasSubscription && !empty($subscriptionid)) { $metaUser->moveFocus($subscriptionid); } $ck_primary = aecGetParam('ck_primary'); if ($ck_primary && !$metaUser->focusSubscription->primary) { $metaUser->focusSubscription->makePrimary(); } if (!empty($assignto_plan) && is_array($assignto_plan)) { foreach ($assignto_plan as $assign_planid) { $plan = new SubscriptionPlan(); $plan->load($assign_planid); $metaUser->establishFocus($plan); $metaUser->focusSubscription->applyUsage($assign_planid, 'none', 1); // We have to reload the metaUser object because of the changes $metaUser = new metaUser($userid); } } $ck_lifetime = aecGetParam('ck_lifetime'); $set_status = trim(aecGetParam('set_status', null)); if (!$metaUser->hasSubscription) { if ($set_status == 'excluded') { $metaUser->focusSubscription = new Subscription(); $metaUser->focusSubscription->createNew($metaUser->userid, 'none', 0); $metaUser->hasSubscription = true; } else { echo "<script> alert('" . JText::_('AEC_ERR_NO_SUBSCRIPTION') . "'); window.history.go(-1); </script>\n"; exit; } } if (empty($assignto_plan)) { if ($ck_lifetime) { $metaUser->focusSubscription->expiration = '9999-12-31 00:00:00'; $metaUser->focusSubscription->status = 'Active'; $metaUser->focusSubscription->lifetime = 1; } elseif (!empty($post['expiration'])) { if ($post['expiration'] != $post['expiration_check']) { if (strpos($post['expiration'], ':') === false) { $metaUser->focusSubscription->expiration = $post['expiration'] . ' 00:00:00'; } else { $metaUser->focusSubscription->expiration = $post['expiration']; } if ($metaUser->focusSubscription->status == 'Trial') { $metaUser->focusSubscription->status = 'Trial'; } else { $metaUser->focusSubscription->status = 'Active'; } $metaUser->focusSubscription->lifetime = 0; } } } if (!empty($set_status)) { switch ($set_status) { case 'expired': $metaUser->focusSubscription->expire(); break; case 'cancelled': $metaUser->focusSubscription->cancel(); break; default: $metaUser->focusSubscription->setStatus(ucfirst($set_status)); break; } } if (!empty($post['notes'])) { $metaUser->focusSubscription->customparams['notes'] = $post['notes']; unset($post['notes']); } if ($metaUser->hasSubscription) { $metaUser->focusSubscription->storeload(); } $userMIs = $metaUser->getUserMIs(); if (!empty($userMIs)) { foreach ($userMIs as $m) { $params = array(); $pref = 'mi_' . $m->id . '_'; $uf = $m->profile_form($metaUser); if (!empty($uf)) { foreach ($uf as $k => $v) { if (isset($post[$pref . $k])) { $params[$k] = $post[$pref . $k]; } } $m->profile_form_save($metaUser, $params); } $admin_params = array(); $af = $m->admin_form($metaUser); if (!empty($af)) { foreach ($af as $k => $v) { if (isset($post[$pref . $k])) { $admin_params[$k] = $post[$pref . $k]; } } $m->admin_form_save($metaUser, $admin_params); } if (empty($params)) { continue; } $metaUser->meta->setMIParams($m->id, null, $params, true); } $metaUser->meta->storeload(); } }
public function import($options = array()) { $db = JFactory::getDBO(); $stdfields = array('id', 'name', 'username', 'email', 'password', 'plan_id', 'invoice_number', 'expiration'); foreach ($this->rows as $k => $row) { // Skip first line, if desired if ($k === 0 && !empty($options['skip_first'])) { continue; } $userid = null; $user = $this->convertRow($row); if (empty($user['username']) && empty($user['id'])) { continue; } if (!empty($user['id'])) { $query = 'SELECT `id`' . ' FROM #__users' . ' WHERE `id` = \'' . $user['id'] . '\''; $db->setQuery($query); $userid = $db->loadResult(); } if (empty($userid)) { $query = 'SELECT `id`' . ' FROM #__users' . ' WHERE `username` = \'' . $user['username'] . '\''; $db->setQuery($query); $userid = $db->loadResult(); } if (!$userid) { // We cannot find any user by this id or name, create one if (!empty($user['email']) && !empty($user['username'])) { if (empty($user['password'])) { $user['password'] = AECToolbox::randomstring(8, true); } if (empty($user['name'])) { $user['name'] = $user['username']; } if (!empty($user['password'])) { $user['password2'] = $user['password']; } $fields = $user; $excludefields = array('plan_id', 'invoice_number', 'expiration'); foreach ($excludefields as $field) { if (isset($fields[$field])) { unset($fields[$field]); } } $userid = $this->createUser($fields); } else { continue; } } if (empty($userid)) { $this->errors++; } $metaUser = new metaUser($userid); $custom_params = array(); foreach ($user as $i => $v) { if (!in_array($i, $stdfields)) { $custom_params[$i] = $v; } } if (!empty($custom_params)) { $metaUser->meta->addCustomParams($custom_params); $metaUser->meta->storeload(); } if (!empty($user['plan_id'])) { $pid = $user['plan_id']; } else { $pid = $this->options['assign_plan']; } $subscr_action = false; if (!empty($pid)) { $plan = new SubscriptionPlan(); $plan->load($pid); $metaUser->establishFocus($plan, 'none', true); $metaUser->focusSubscription->applyUsage($pid, 'none', 1); $subscr_action = true; } if (!empty($user['expiration']) && !empty($metaUser->focusSubscription->id)) { $metaUser->focusSubscription->expiration = date('Y-m-d H:i:s', strtotime($user['expiration'])); if ($metaUser->focusSubscription->status == 'Trial') { $metaUser->focusSubscription->status = 'Trial'; } else { $metaUser->focusSubscription->status = 'Active'; } $metaUser->focusSubscription->lifetime = 0; $metaUser->focusSubscription->storeload(); $subscr_action = true; } if (!empty($user['invoice_number']) && !empty($pid)) { // Create Invoice $invoice = new Invoice(); $invoice->create($userid, $pid, 'none', $user['invoice_number']); if ($subscr_action) { $invoice->subscr_id = $metaUser->focusSubscription->id; } $invoice->setTransactionDate(); } } }