function dateDisplay2ISO($string_date, $format = '')
{
    if (empty($format)) {
        $registry = Registry::getInstance();
        $format = $registry->get('language')->get('date_format_short');
    }
    if ($string_date) {
        return dateInt2ISO(dateFromFormat($string_date, $format));
    } else {
        return '';
    }
}
Example #2
0
 private function _getForm()
 {
     if (isset($this->request->get['product_id']) && $this->request->is_GET()) {
         $product_id = $this->request->get['product_id'];
         $product_info = $this->model_catalog_product->getProduct($product_id);
         $product_info['featured'] = $product_info['featured'] ? 1 : 0;
     }
     $this->data['product_description'] = $this->model_catalog_product->getProductDescriptions($product_id);
     $this->data['error'] = $this->error;
     $this->data['cancel'] = $this->html->getSecureURL('catalog/product');
     $this->document->initBreadcrumb(array('href' => $this->html->getSecureURL('index/home'), 'text' => $this->language->get('text_home'), 'separator' => FALSE));
     $this->document->addBreadcrumb(array('href' => $this->html->getSecureURL('catalog/product'), 'text' => $product_id ? $this->language->get('text_edit') . ' ' . $this->language->get('text_product') . ' - ' . $this->data['product_description'][$this->session->data['content_language_id']]['name'] : $this->language->get('text_insert'), 'separator' => ' :: ', 'current' => true));
     $this->loadModel('catalog/category');
     $this->data['categories'] = array();
     $results = $this->model_catalog_category->getCategories(0, $this->session->data['current_store_id']);
     foreach ($results as $r) {
         $this->data['categories'][$r['category_id']] = $r['name'];
     }
     $this->loadModel('setting/store');
     $this->data['stores'] = array(0 => $this->language->get('text_default'));
     $results = $this->model_setting_store->getStores();
     foreach ($results as $r) {
         $this->data['stores'][$r['store_id']] = $r['name'];
     }
     $this->loadModel('catalog/manufacturer');
     $this->data['manufacturers'] = array(0 => $this->language->get('text_none'));
     $results = $this->model_catalog_manufacturer->getManufacturers();
     foreach ($results as $r) {
         $this->data['manufacturers'][$r['manufacturer_id']] = $r['name'];
     }
     $this->loadModel('localisation/stock_status');
     $this->data['stock_statuses'] = array();
     $results = $this->model_localisation_stock_status->getStockStatuses();
     foreach ($results as $r) {
         $this->data['stock_statuses'][$r['stock_status_id']] = $r['name'];
     }
     $this->loadModel('localisation/tax_class');
     $this->data['tax_classes'] = array(0 => $this->language->get('text_none'));
     $results = $this->model_localisation_tax_class->getTaxClasses();
     foreach ($results as $r) {
         $this->data['tax_classes'][$r['tax_class_id']] = $r['title'];
     }
     $this->loadModel('localisation/weight_class');
     $this->data['weight_classes'] = array();
     $results = $this->model_localisation_weight_class->getWeightClasses();
     foreach ($results as $r) {
         $this->data['weight_classes'][$r['weight_class_id']] = $r['title'];
     }
     $this->loadModel('localisation/length_class');
     $this->data['length_classes'] = array();
     $results = $this->model_localisation_length_class->getLengthClasses();
     foreach ($results as $r) {
         $this->data['length_classes'][$r['length_class_id']] = $r['title'];
     }
     $fields = array('product_category', 'featured', 'product_store', 'model', 'call_to_order', 'sku', 'location', 'keyword', 'image', 'manufacturer_id', 'shipping', 'ship_individually', 'shipping_price', 'free_shipping', 'quantity', 'minimum', 'maximum', 'subtract', 'sort_order', 'stock_status_id', 'price', 'cost', 'status', 'tax_class_id', 'weight', 'weight_class_id', 'length', 'width', 'height');
     foreach ($fields as $f) {
         if (isset($this->request->post[$f])) {
             $this->data[$f] = $this->request->post[$f];
         } elseif (isset($product_info)) {
             $this->data[$f] = $product_info[$f];
         }
     }
     if (isset($this->request->post['product_category'])) {
         $this->data['product_category'] = $this->request->post['product_category'];
     } elseif (isset($product_info)) {
         $this->data['product_category'] = $this->model_catalog_product->getProductCategories($product_id);
     } else {
         $this->data['product_category'] = array();
     }
     if (isset($this->request->post['product_store'])) {
         $this->data['product_store'] = $this->request->post['product_store'];
     } elseif (isset($product_info)) {
         $this->data['product_store'] = $this->model_catalog_product->getProductStores($product_id);
     } else {
         $this->data['product_store'] = array(0);
     }
     if (isset($this->request->post['product_description'])) {
         $this->data['product_description'] = $this->request->post['product_description'];
     } elseif (isset($product_info)) {
         $this->data['product_description'] = $this->model_catalog_product->getProductDescriptions($product_id, $this->session->data['content_language_id']);
     } else {
         $this->data['product_description'] = array();
     }
     if (isset($this->request->post['featured'])) {
         $this->data['featured'] = $this->request->post['featured'];
     } elseif (isset($product_info)) {
         $this->data['featured'] = $product_info['featured'];
     } else {
         $this->data['featured'] = 0;
     }
     if (isset($this->request->post['product_tags'])) {
         $this->data['product_tags'] = $this->request->post['product_tags'];
     } elseif (isset($product_info)) {
         $this->data['product_tags'] = $this->model_catalog_product->getProductTags($product_id, $this->session->data['content_language_id']);
     } else {
         $this->data['product_tags'] = '';
     }
     $this->loadModel('tool/image');
     if (isset($product_info) && $product_info['image'] && file_exists(DIR_IMAGE . $product_info['image'])) {
         $this->data['preview'] = $this->model_tool_image->resize($product_info['image'], 100, 100);
     } else {
         $this->data['preview'] = $this->model_tool_image->resize('no_image.jpg', 100, 100);
     }
     if ($this->data['stock_status_id'] == '') {
         $this->data['stock_status_id'] = $this->config->get('config_stock_status_id');
     }
     if (isset($this->request->post['date_available'])) {
         $this->data['date_available'] = $this->request->post['date_available'];
     } elseif (isset($product_info)) {
         $this->data['date_available'] = $product_info['date_available'];
     } else {
         $this->data['date_available'] = dateInt2ISO(time() - 86400);
     }
     $weight_info = $this->model_localisation_weight_class->getWeightClassDescriptionByUnit($this->config->get('config_weight_class'));
     if (isset($this->request->post['weight_class_id'])) {
         $this->data['weight_class_id'] = $this->request->post['weight_class_id'];
     } elseif (isset($product_info)) {
         $this->data['weight_class_id'] = $product_info['weight_class_id'];
     } elseif (isset($weight_info)) {
         $this->data['weight_class_id'] = $weight_info['weight_class_id'];
     } else {
         $this->data['weight_class_id'] = '';
     }
     $length_info = $this->model_localisation_length_class->getLengthClassDescriptionByUnit($this->config->get('config_length_class'));
     if (isset($this->request->post['length_class_id'])) {
         $this->data['length_class_id'] = $this->request->post['length_class_id'];
     } elseif (isset($product_info)) {
         $this->data['length_class_id'] = $product_info['length_class_id'];
     } elseif (isset($length_info)) {
         $this->data['length_class_id'] = $length_info['length_class_id'];
     } else {
         $this->data['length_class_id'] = '';
     }
     if ($this->data['status'] == '') {
         $this->data['status'] = 1;
     }
     if ($this->data['quantity'] == '') {
         $this->data['quantity'] = 1;
     }
     if ($this->data['minimum'] == '') {
         $this->data['minimum'] = 1;
     }
     if ($this->data['sort_order'] == '') {
         $this->data['sort_order'] = 1;
     }
     $this->data['active'] = 'details';
     if (!isset($product_id)) {
         $this->data['action'] = $this->html->getSecureURL('catalog/product/insert');
         $this->data['form_title'] = $this->language->get('text_insert') . $this->language->get('text_product');
         $this->data['update'] = '';
         $form = new AForm('ST');
         $this->data['summary_form'] = '';
     } else {
         $this->data['action'] = $this->html->getSecureURL('catalog/product/update', '&product_id=' . $product_id);
         $this->data['form_title'] = $this->language->get('text_edit') . ' ' . $this->language->get('text_product');
         $this->data['update'] = $this->html->getSecureURL('listing_grid/product/update_field', '&id=' . $product_id);
         $form = new AForm('HS');
         $this->data['active'] = 'general';
         //load tabs controller
         $tabs_obj = $this->dispatch('pages/catalog/product_tabs', array($this->data));
         $this->data['product_tabs'] = $tabs_obj->dispatchGetOutput();
         unset($tabs_obj);
         $this->addChild('pages/catalog/product_summary', 'summary_form', 'pages/catalog/product_summary.tpl');
     }
     $form->setForm(array('form_name' => 'productFrm', 'update' => $this->data['update']));
     $this->data['form']['id'] = 'productFrm';
     $this->data['form']['form_open'] = $form->getFieldHtml(array('type' => 'form', 'name' => 'productFrm', 'action' => $this->data['action'], 'attr' => 'data-confirm-exit="true" class="aform form-horizontal"'));
     $this->data['form']['submit'] = $form->getFieldHtml(array('type' => 'button', 'name' => 'submit', 'text' => $this->language->get('button_save'), 'style' => 'button1'));
     $this->data['form']['cancel'] = $form->getFieldHtml(array('type' => 'button', 'name' => 'cancel', 'text' => $this->language->get('button_cancel'), 'style' => 'button2'));
     $this->data['form']['fields']['general']['status'] = $form->getFieldHtml(array('type' => 'checkbox', 'name' => 'status', 'value' => $this->data['status'], 'style' => 'btn_switch btn-group-sm', 'help_url' => $this->gen_help_url('?p=62')));
     $this->data['form']['fields']['general']['featured'] = $form->getFieldHtml(array('type' => 'checkbox', 'name' => 'featured', 'value' => $this->data['featured'], 'style' => 'btn_switch btn-group-sm', 'help_url' => $this->gen_help_url('?p=62')));
     $this->data['form']['fields']['general']['name'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'product_description[name]', 'value' => $this->data['product_description']['name'], 'required' => true, 'help_url' => $this->gen_help_url('?p=62')));
     $this->data['form']['fields']['general']['description'] = $form->getFieldHtml(array('type' => 'textarea', 'name' => 'product_description[description]', 'value' => $this->data['product_description']['description']));
     $this->data['form']['fields']['general']['meta_keywords'] = $form->getFieldHtml(array('type' => 'textarea', 'name' => 'product_description[meta_keywords]', 'value' => $this->data['product_description']['meta_keywords'], 'help_url' => $this->gen_help_url('?p=62')));
     $this->data['form']['fields']['general']['meta_description'] = $form->getFieldHtml(array('type' => 'textarea', 'name' => 'product_description[meta_description]', 'value' => $this->data['product_description']['meta_description']));
     $this->data['form']['fields']['general']['blurb'] = $form->getFieldHtml(array('type' => 'textarea', 'name' => 'product_description[blurb]', 'value' => $this->data['product_description']['blurb']));
     $this->data['form']['fields']['general']['tags'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'product_tags', 'value' => $this->data['product_tags']));
     $this->data['form']['fields']['general']['category'] = $form->getFieldHtml(array('type' => 'checkboxgroup', 'name' => 'product_category[]', 'value' => $this->data['product_category'], 'options' => $this->data['categories'], 'style' => 'chosen', 'placeholder' => $this->language->get('text_select_category')));
     $this->data['form']['fields']['general']['store'] = $form->getFieldHtml(array('type' => 'checkboxgroup', 'name' => 'product_store[]', 'value' => $this->data['product_store'], 'options' => $this->data['stores'], 'style' => 'chosen', 'placeholder' => $this->language->get('entry_store')));
     $this->data['form']['fields']['data']['manufacturer'] = $form->getFieldHtml(array('type' => 'selectbox', 'name' => 'manufacturer_id', 'value' => $this->data['manufacturer_id'], 'options' => $this->data['manufacturers'], 'style' => 'chosen', 'placeholder' => $this->language->get('entry_manufacturer')));
     $this->data['form']['fields']['data']['model'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'model', 'value' => $this->data['model'], 'required' => false));
     $this->data['form']['fields']['data']['call_to_order'] = $form->getFieldHtml(array('type' => 'checkbox', 'name' => 'call_to_order', 'value' => $this->data['call_to_order'], 'style' => 'btn_switch btn-group-sm', 'help_url' => $this->gen_help_url('?p=62')));
     $this->data['form']['fields']['data']['price'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'price', 'value' => moneyDisplayFormat($this->data['price']), 'style' => 'small-field'));
     $this->data['form']['fields']['data']['cost'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'cost', 'value' => moneyDisplayFormat($this->data['cost']), 'style' => 'small-field'));
     $this->data['form']['fields']['data']['tax_class'] = $form->getFieldHtml(array('type' => 'selectbox', 'name' => 'tax_class_id', 'value' => $this->data['tax_class_id'], 'options' => $this->data['tax_classes'], 'help_url' => $this->gen_help_url('?p=62'), 'style' => 'medium-field'));
     $this->data['form']['fields']['data']['subtract'] = $form->getFieldHtml(array('type' => 'selectbox', 'name' => 'subtract', 'value' => $this->data['subtract'], 'options' => array(1 => $this->language->get('text_yes'), 0 => $this->language->get('text_no')), 'help_url' => $this->gen_help_url('?p=62'), 'style' => 'medium-field'));
     $this->data['form']['fields']['data']['quantity'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'quantity', 'value' => (int) $this->data['quantity'], 'style' => 'col-xs-1 small-field'));
     $this->data['form']['fields']['data']['minimum'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'minimum', 'value' => (int) $this->data['minimum'], 'style' => 'small-field'));
     $this->data['form']['fields']['data']['maximum'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'maximum', 'value' => (int) $this->data['maximum'], 'style' => 'small-field'));
     $this->data['form']['fields']['data']['stock_status'] = $form->getFieldHtml(array('type' => 'selectbox', 'name' => 'stock_status_id', 'value' => $this->data['stock_status_id'], 'options' => $this->data['stock_statuses'], 'style' => 'small-field'));
     $this->data['form']['fields']['data']['sku'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'sku', 'value' => $this->data['sku'], 'help_url' => $this->gen_help_url('?p=62')));
     $this->data['form']['fields']['data']['location'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'location', 'value' => $this->data['location']));
     //prepend button to generate keyword
     $this->data['keyword_button'] = $form->getFieldHtml(array('type' => 'button', 'name' => 'generate_seo_keyword', 'text' => $this->language->get('button_generate'), 'attr' => 'type="button"', 'style' => 'btn btn-info'));
     $this->data['generate_seo_url'] = $this->html->getSecureURL('common/common/getseokeyword', '&object_key_name=product_id&id=' . $product_id);
     $this->data['form']['fields']['data']['keyword'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'keyword', 'value' => $this->data['keyword'], 'help_url' => $this->gen_help_url('?p=62'), 'attr' => ' gen-value="' . SEOEncode($this->data['product_description']['name']) . '" '));
     $this->data['form']['fields']['data']['date_available'] = $form->getFieldHtml(array('type' => 'date', 'name' => 'date_available', 'value' => dateISO2Display($this->data['date_available']), 'default' => dateNowDisplay(), 'dateformat' => format4Datepicker($this->language->get('date_format_short')), 'highlight' => 'future', 'style' => 'small-field'));
     $this->data['form']['fields']['data']['sort_order'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'sort_order', 'value' => $this->data['sort_order'], 'style' => 'tiny-field'));
     $this->data['form']['fields']['data']['shipping'] = $form->getFieldHtml(array('type' => 'checkbox', 'name' => 'shipping', 'style' => 'btn_switch btn-group-sm', 'value' => isset($this->data['shipping']) ? $this->data['shipping'] : 1));
     $this->data['form']['fields']['data']['free_shipping'] = $form->getFieldHtml(array('type' => 'checkbox', 'name' => 'free_shipping', 'style' => 'btn_switch btn-group-sm', 'value' => isset($this->data['free_shipping']) ? $this->data['free_shipping'] : 0));
     $this->data['form']['fields']['data']['ship_individually'] = $form->getFieldHtml(array('type' => 'checkbox', 'name' => 'ship_individually', 'style' => 'btn_switch btn-group-sm', 'value' => isset($this->data['ship_individually']) ? $this->data['ship_individually'] : 0));
     $this->data['form']['fields']['data']['shipping_price'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'shipping_price', 'value' => moneyDisplayFormat($this->data['shipping_price']), 'style' => 'tiny-field'));
     $this->data['form']['fields']['data']['length'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'length', 'value' => $this->data['length'], 'style' => 'tiny-field'));
     $this->data['form']['fields']['data']['width'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'width', 'value' => $this->data['width'], 'attr' => ' autocomplete="false"', 'style' => 'tiny-field'));
     $this->data['form']['fields']['data']['height'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'height', 'value' => $this->data['height'], 'attr' => ' autocomplete="false"', 'style' => 'tiny-field'));
     if ($product_id && !$this->data['length_class_id']) {
         $this->data['length_classes'][0] = $this->language->get('text_none');
     }
     $this->data['form']['fields']['data']['length_class'] = $form->getFieldHtml(array('type' => 'selectbox', 'name' => 'length_class_id', 'value' => $this->data['length_class_id'], 'options' => $this->data['length_classes'], 'style' => 'small-field'));
     if ($product_id && $this->data['shipping'] && (!(double) $this->data['weight'] || !$this->data['weight_class_id']) && !(double) $this->data['shipping_price']) {
         if (!$this->data['weight_class_id']) {
             $this->data['error']['weight_class'] = $this->language->get('error_weight_class');
         }
         if (!(double) $this->data['weight']) {
             $this->data['error']['weight'] = $this->language->get('error_weight_value');
         }
     }
     if ($product_id && !$this->data['weight_class_id']) {
         $this->data['weight_classes'][0] = $this->language->get('text_none');
     }
     $this->data['form']['fields']['data']['weight'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'weight', 'value' => $this->data['weight'], 'attr' => ' autocomplete="false"', 'style' => 'tiny-field'));
     $this->data['form']['fields']['data']['weight_class'] = $form->getFieldHtml(array('type' => 'selectbox', 'name' => 'weight_class_id', 'value' => $this->data['weight_class_id'], 'options' => $this->data['weight_classes'], 'style' => 'small-field'));
     $this->data['product_id'] = $product_id;
     if ($product_id && $this->config->get('config_embed_status')) {
         $this->data['embed_url'] = $this->html->getSecureURL('common/do_embed/product', '&product_id=' . $product_id);
     }
     $this->data['text_clone'] = $this->language->get('text_clone');
     $this->data['clone_url'] = $this->html->getSecureURL('catalog/product/copy', '&product_id=' . $this->request->get['product_id']);
     $this->data['form_language_switch'] = $this->html->getContentLanguageSwitcher();
     $this->data['language_id'] = $this->session->data['content_language_id'];
     $this->data['language_code'] = $this->session->data['language'];
     $this->data['help_url'] = $this->gen_help_url('?p=62');
     $this->data['rl'] = $this->html->getSecureURL('common/resource_library', '&object_name=&object_id&type=image&mode=url');
     $this->view->batchAssign($this->data);
     $this->processTemplate('pages/catalog/product_form.tpl');
 }