. * */ namespace Vvveb\Controller\Product; use function Vvveb\__; use Vvveb\Controller\Crud; use Vvveb\Sql\Option_ValueSQL; use Vvveb\Sql\OptionSQL; use Vvveb\System\Images; class Option extends Crud { protected $type = 'option'; protected $controller = 'option'; protected $module = 'product'; function save() { $this->redirect = false; parent::save(); $delete = $this->request->post['delete']['option_value_id'] ?? []; $option_value = $this->request->post['option_value'] ?? []; $option = $this->request->post['option'] ?? []; $edit = $this->request->get['option_id'] ?? false; $option_id = $this->option_id; $new = []; foreach ($option_value as $index => &$attr) { $attr['option_id'] = $option_id; $attr['sort_order'] = $attr['sort_order'] ?? 0; if (! $attr['option_value_id'] && $attr['name']) { unset($attr['option_value_id']); $new[] = $attr; unset($option_value[$index]); } } if ($option_id) { $optionSql = new OptionSQL(); $option_valueSql = new Option_ValueSQL(); if ($delete) { $option_valueSql->delete(['option_value_id' => $delete] + $this->global); } if ($option_value) { foreach ($option_value as $index => &$attr) { $option_valueSql->edit(['option_value' => $attr, 'option_value_id' => $attr['option_value_id']] + $this->global); } } if ($new) { foreach ($new as $index => &$attr) { $option_valueSql->add(['option_value' => $attr] + $this->global); } } $result = $optionSql->edit(['option_id' => $option_id, 'option' => $option]); if ($result && isset($result['option_content'])) { if (! $edit) { $this->redirect(['module' => "{$this->module}/{$this->controller}", 'option_id' => $option_id]); } } else { $this->view->errors[] = __('Error saving!'); } } return $this->index(); } function index() { parent::index(); $option_id = $this->request->get['option_id'] ?? false; $option_values = []; if ($option_id) { $option_valueGroup = new Option_ValueSQL(); $option_values = $option_valueGroup->getAll(['option_id' => $option_id, 'limit' => 1000] + $this->global)['option_value'] ?? []; foreach ($option_values as &$value) { $value['image_url'] = Images::image($value['image'], 'product', 'thumb'); } } $this->view->type = [ 'text' => 'Text', 'number' => 'Number', 'textarea'=> 'Textarea', 'email' => 'Email', 'select' => 'Select', 'radio' => 'Radio', 'checkbox'=> 'Checkbox', 'select' => 'Select', 'image' => 'Image', 'date' => 'Date', 'time' => 'Time', 'datetime'=> 'Date time', 'file' => 'File', ]; $this->view->option_values = $option_values; $this->view->option_id = $option_id; } }