private function prepare_categories(&$data) { if (!is_array($data)) { $data = array($data); } $category = new Category(); $data = array_filter($data); $existing = $category->get($data); $count = count($data); $parent_id = 0; $result = array(); for ($i = 0; $i < $count; $i++) { $name = $data[$i]; if ($existing && isset($existing[$name])) { $parent_id = $existing[$name]; $result[$existing[$name]] = $name; } else { $new_category = new \Classes\Opencart\Category(); $new_category->name = $name; $new_category->url = Util::translate($new_category->name); $new_category->parent_id = $parent_id; if ($i == 0) { $new_category->top = 1; } if ($saved = $category->post($new_category)) { $existing[$name] = $parent_id = $saved->id(); $result[$saved->id()] = $name; } } } $data = $result; }