Example #1
0
 public function edit($id)
 {
     $lists = array();
     $cph = new couponHandler();
     if (empty($id)) {
         $cph->coupon = new Coupon();
         $cph->coupon->createNew();
         $params_values = array();
         $discount_values = array();
         $restrictions_values = array();
     } else {
         $idx = explode(".", $id[0]);
         $cph->coupon = new Coupon($idx[0]);
         $cph->coupon->load($idx[1]);
         $params_values = $cph->coupon->params;
         $discount_values = $cph->coupon->discount;
         $restrictions_values = $cph->coupon->restrictions;
     }
     // We need to convert the values that are set as object properties
     $params_values['active'] = $cph->coupon->active;
     $params_values['type'] = $cph->coupon->type;
     $params_values['name'] = $cph->coupon->name;
     $params_values['desc'] = $cph->coupon->desc;
     $params_values['coupon_code'] = $cph->coupon->coupon_code;
     $params_values['usecount'] = $cph->coupon->usecount;
     $params_values['micro_integrations'] = $cph->coupon->micro_integrations;
     // params and their type values
     $params['active'] = array('toggle', 1);
     $params['type'] = array('toggle', 1);
     $params['name'] = array('inputC', '');
     $params['desc'] = array('inputE', '');
     $params['coupon_code'] = array('inputC', '');
     $params['micro_integrations'] = array('list', '');
     $params['params_remap'] = array('subarea_change', 'params');
     $params['amount_use'] = array('toggle', '');
     $params['amount'] = array('inputB', '');
     $params['amount_percent_use'] = array('toggle', '');
     $params['amount_percent'] = array('inputB', '');
     $params['percent_first'] = array('toggle', '');
     $params['useon_trial'] = array('toggle', '');
     $params['useon_full'] = array('toggle', '1');
     $params['useon_full_all'] = array('toggle', '1');
     $params['has_start_date'] = array('toggle', 1);
     $params['start_date'] = array('list_date', date('Y-m-d', (int) gmdate('U')));
     $params['has_expiration'] = array('toggle', 0);
     $params['expiration'] = array('list_date', date('Y-m-d', (int) gmdate('U')));
     $params['has_max_reuse'] = array('toggle', 0);
     $params['max_reuse'] = array('inputA', 1);
     $params['has_max_peruser_reuse'] = array('toggle', 1);
     $params['max_peruser_reuse'] = array('inputA', 1);
     $params['usecount'] = array('inputA', 0);
     $params['usage_plans_enabled'] = array('toggle', 0);
     $params['usage_plans'] = array('list', 0);
     $params['usage_cart_full'] = array('toggle', 0);
     $params['cart_multiple_items'] = array('toggle', 0);
     $params['cart_multiple_items_amount'] = array('inputB', '');
     $params['restr_remap'] = array('subarea_change', 'restrictions');
     $params['depend_on_subscr_id'] = array('toggle', 0);
     $params['subscr_id_dependency'] = array('inputB', '');
     $params['allow_trial_depend_subscr'] = array('toggle', 0);
     $params['restrict_combination'] = array('toggle', 0);
     $params['bad_combinations'] = array('list', '');
     $params['allow_combination'] = array('toggle', 0);
     $params['good_combinations'] = array('list', '');
     $params['restrict_combination_cart'] = array('toggle', 0);
     $params['bad_combinations_cart'] = array('list', '');
     $params['allow_combination_cart'] = array('toggle', 0);
     $params['good_combinations_cart'] = array('list', '');
     $restrictionHelper = new aecRestrictionHelper();
     $params = array_merge($params, $restrictionHelper->getParams());
     // get available plans
     $available_plans = array();
     $this->db->setQuery('SELECT `id` as value, `name` as text' . ' FROM #__acctexp_plans');
     $plans = $this->db->loadObjectList();
     if (is_array($plans)) {
         $all_plans = array_merge($available_plans, $plans);
     } else {
         $all_plans = $available_plans;
     }
     $total_all_plans = min(max(count($all_plans) + 1, 4), 20);
     // get usages
     if (!empty($restrictions_values['usage_plans'])) {
         $query = 'SELECT `id` AS value, `name` as text' . ' FROM #__acctexp_plans' . ' WHERE `id` IN (' . implode(',', $restrictions_values['usage_plans']) . ')';
         $this->db->setQuery($query);
         $sel_usage_plans = $this->db->loadObjectList();
     } else {
         $sel_usage_plans = 0;
     }
     $lists['usage_plans'] = JHTML::_('select.genericlist', $all_plans, 'usage_plans[]', 'size="' . $total_all_plans . '" multiple="multiple"', 'value', 'text', $sel_usage_plans);
     // get available micro integrations
     $available_mi = array();
     $query = 'SELECT `id` AS value, CONCAT(`name`, " - ", `desc`) AS text' . ' FROM #__acctexp_microintegrations' . ' WHERE `active` = 1' . ' ORDER BY `ordering`';
     $this->db->setQuery($query);
     $mi_list = $this->db->loadObjectList();
     $mis = array();
     if (!empty($mi_list) && !empty($params_values['micro_integrations'])) {
         foreach ($mi_list as $mi_item) {
             if (in_array($mi_item->value, $params_values['micro_integrations'])) {
                 $mis[] = $mi_item->value;
             }
         }
     }
     if (!empty($mis)) {
         $query = 'SELECT `id` AS value, CONCAT(`name`, " - ", `desc`) AS text' . ' FROM #__acctexp_microintegrations' . (!empty($mis) ? ' WHERE `id` IN (' . implode(',', $mis) . ')' : '');
         $this->db->setQuery($query);
         $selected_mi = $this->db->loadObjectList();
     } else {
         $selected_mi = array();
     }
     $lists['micro_integrations'] = JHTML::_('select.genericlist', $mi_list, 'micro_integrations[]', 'size="' . min(count($mi_list) + 1, 25) . '" multiple="multiple"', 'value', 'text', $selected_mi);
     $query = 'SELECT count(*)' . ' FROM #__acctexp_coupons';
     $this->db->setQuery($query);
     $ccount = $this->db->loadResult();
     if ($ccount > 50) {
         $coupons = array();
     } else {
         $query = 'SELECT `coupon_code` as value, `coupon_code` as text' . ' FROM #__acctexp_coupons' . ' WHERE `coupon_code` != \'' . $cph->coupon->coupon_code . '\'';
         $this->db->setQuery($query);
         $coupons = $this->db->loadObjectList();
     }
     $query = 'SELECT `coupon_code` as value, `coupon_code` as text' . ' FROM #__acctexp_coupons_static' . ' WHERE `coupon_code` != \'' . $cph->coupon->coupon_code . '\'';
     $this->db->setQuery($query);
     $coupons = array_merge($this->db->loadObjectList(), $coupons);
     $cpl = array('bad_combinations', 'good_combinations', 'bad_combinations_cart', 'good_combinations_cart');
     foreach ($cpl as $cpn) {
         $cur = array();
         if (!empty($restrictions_values[$cpn])) {
             if ($ccount > 50) {
                 $cur = array();
             } else {
                 $query = 'SELECT `coupon_code` as value, `coupon_code` as text' . ' FROM #__acctexp_coupons' . ' WHERE `coupon_code` IN (\'' . implode('\',\'', $restrictions_values[$cpn]) . '\')';
                 $this->db->setQuery($query);
                 $cur = $this->db->loadObjectList();
             }
             $query = 'SELECT `coupon_code` as value, `coupon_code` as text' . ' FROM #__acctexp_coupons_static' . ' WHERE `coupon_code` IN (\'' . implode('\',\'', $restrictions_values[$cpn]) . '\')';
             $this->db->setQuery($query);
             $nc = $this->db->loadObjectList();
             if (!empty($nc)) {
                 $cur = array_merge($nc, $cur);
             }
         }
         $lists[$cpn] = JHTML::_('select.genericlist', $coupons, $cpn . '[]', 'size="' . min(count($coupons) + 1, 25) . '" multiple="multiple"', 'value', 'text', $cur);
     }
     $lists = array_merge($lists, $restrictionHelper->getLists($params_values, $restrictions_values));
     $settings = new aecSettings('coupon', 'general');
     if (is_array($discount_values) && is_array($restrictions_values)) {
         $settingsparams = array_merge($params_values, $discount_values, $restrictions_values);
     } else {
         $settingsparams = $params_values;
     }
     $settings->fullSettingsArray($params, $settingsparams, $lists);
     // Call HTML Class
     $aecHTML = new aecHTML($settings->settings, $settings->lists);
     // Lets grab the data and fill it in.
     $this->db->setQuery('SELECT id' . ' FROM #__acctexp_invoices' . ' WHERE `coupons` <> \'\'' . ' ORDER BY `created_date` DESC');
     $rows = $this->db->loadObjectList();
     if ($this->db->getErrorNum()) {
         echo $this->db->stderr();
         return false;
     }
     $aecHTML->invoices = array();
     foreach ($rows as $row) {
         $invoice = new Invoice();
         $invoice->load($row->id);
         if (!in_array($cph->coupon->coupon_code, $invoice->coupons)) {
             continue;
         }
         $in_formatted = $invoice->formatInvoiceNumber();
         $invoice->invoice_number_formatted = $invoice->invoice_number . ($in_formatted != $invoice->invoice_number ? "\n" . '(' . $in_formatted . ')' : '');
         $invoice->usage = '<a href="index.php?option=com_acctexp&amp;task=edit&amp;entity=SubscriptionPlan&amp;id=' . $invoice->usage . '">' . $invoice->usage . '</a>';
         $query = 'SELECT username' . ' FROM #__users' . ' WHERE `id` = \'' . $invoice->userid . '\'';
         $this->db->setQuery($query);
         $username = $this->db->loadResult();
         $invoice->username = '******' . $invoice->userid . '">';
         if (!empty($username)) {
             $invoice->username .= $username . '</a>';
         } else {
             $invoice->username .= $invoice->userid;
         }
         $invoice->username .= '</a>';
         $aecHTML->invoices[] = $invoice;
     }
     HTML_AcctExp::editCoupon($aecHTML, $cph->coupon);
 }