public function save() { $category = Category::model()->findByPk($this->id); if (is_null($category)) { // insert // Category $category = new Category(); $category->date_added = date('Y-m-d'); $category->date_modified = date('Y-m-d'); $category->image = $this->image; $category->top = $this->top; $category->column = $this->columns; $category->sort_order = $this->sortOrder; $category->status = $this->status; $category->parent_id = $this->parent; $category->save(); // Description $description = new CategoryDescription(); $description->category_id = $category->category_id; $description->language_id = 1; // TODO: language must be dynamic $description->name = $this->name; $description->meta_description = $this->metaTagDescription; $description->meta_keyword = $this->metaTagKeywords; $description->description = $this->description; $description->save(); } else { // update // Category $category->date_modified = date('Y-m-d'); $category->image = $this->image; $category->top = $this->top; $category->column = $this->columns; $category->sort_order = $this->sortOrder; $category->status = $this->status; $category->parent_id = $this->parent; $category->save(); // Description $category->description->name = $this->name; $category->description->meta_description = $this->metaTagDescription; $category->description->meta_keyword = $this->metaTagKeywords; $category->description->description = $this->description; $category->description->save(); } // SEO keyword $category->updateSEOKeyword($this->seoKeyword); // Stores $category->clearAllStoresRelations(); if (isset($this->stores) && count($this->stores)) { foreach ($this->stores as $storeId) { $category->addToStore($storeId); } } // Filters $category->clearAllFiltersRelations(); if (isset($this->filters) && count($this->filters) > 0) { foreach ($this->filters as $filterId) { $category->addFilter($filterId); } } }