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&task=edit&entity=SubscriptionPlan&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); }