public function beforeSave() { $mapper = Manager::getInstance()->getMapper($this->mapper_alias); $categoryMapper = Manager::getInstance()->getMapper($this->category_mapper_alias); $aContainer = $mapper->getContainer(); if (!$this->getOwner()->getGalleryId()) { // Создаем галерею $oCategory = new GalleryCategory(); $oCategory->setName($this->getOwner()->getName()); $oCategory->setAlias(StringHelper::translit($this->getOwner()->getName())); $oCategory->setIsSystem(1); $oCategory->setIsActive(1); $categoryId = $oCategory->save(); $this->getOwner()->setGalleryId($categoryId); } else { $categoryId = $this->getOwner()->getGalleryId(); $oCategory = $categoryMapper->findById($categoryId); } // Удаляем все записи о фотках из базы $oQuery = new DbUpdater(DbUpdater::TYPE_DELETE, $aContainer['TableName'], $aContainer['Object'], $this->getDbConnectionAlias()); $oCriteria = new CriteriaElement('category_id', Criteria::EQUAL, $categoryId); $oQuery->addCriteria($mapper->parseUpdateCriteria($oCriteria->renderWhere())); $oQuery->delete(); // Добавляем фотки $images = $this->getOwner()->getImages(); $images_names = $this->getOwner()->getImagesNames(); if (is_array($images) && count($images)) { foreach ($images as $k => $image) { // Добавляем фотки $oImage = new GalleryItem(); $oImage->setName($images_names[$k]); $oImage->setAlias($image); $oImage->setCategoryId($categoryId); $oImage->setPos($k + 1); $oImage->setIsActive(1); $oImage->save(); } // set cover $oCategory->setCover($images[0]); $oCategory->save(); } // done return true; }