public function saveAction() { $session = Mage::getSingleton('adminhtml/session'); if ($data = $this->getRequest()->getPost()) { try { $data['article_tags'] = implode(', ', Mage::helper('kbase')->prepareTags($data['article_tags'])); $id = $this->getRequest()->getParam('id'); $_article = Mage::getModel('kbase/article')->load($id); $_oldSelectedCategories = $_article->getData('category_ids'); $_currentAllCategories = AW_Kbase_Model_Mysql4_Category::toOptionArray(); $_currentAllCategoriesFlat = array(); foreach ($_currentAllCategories as $k => $v) { if (isset($v['value'])) { $_currentAllCategoriesFlat[] = $v['value']; } } $data['category_ids'] = array_merge($data['category_ids'], array_values(array_diff($_oldSelectedCategories, $_currentAllCategoriesFlat))); unset($_article); $fileUploadNeeded = isset($_FILES['article_attachment']['name']) && $_FILES['article_attachment']['name']; // delete file if checkbox checked if (isset($data['article_attachment_delete']) && isset($data['article_attachment_old']) && $data['article_attachment_old']) { @unlink(AW_Kbase_Helper_Data::attachmentDirName($id) . DS . $data['article_attachment_old']); $data['article_attachment'] = ''; } // checking creation & updating date if (!isset($data['article_date_created']) || !$data['article_date_created']) { $data['article_date_created'] = now(); } $data['article_date_updated'] = now(); // end of time checking // checking rating $data['article_rating_votes'] = abs($data['article_rating_votes']); if (1 > $data['article_rating'] || 5 < $data['article_rating']) { $session->addError($this->__('Rating should be between 1 and 5')); $session->setKBaseArticleData($data); $this->_redirect('*/*/edit', array('id' => $id, 'tab' => 'rating')); return; } // checking URL key if (!isset($data['article_url_key']) || !$data['article_url_key']) { $data['article_url_key'] = $data['article_title']; } $data['article_url_key'] = AW_Kbase_Helper_Url::nameToUrlKey($data['article_url_key']); $model = Mage::getModel('kbase/article')->setData($data)->setId($id); //checking URL keys uniqueness $_origUrlKey = $data['article_url_key']; $_cnt = 1; $_categoryModel = Mage::getModel('kbase/category'); $_categoryModel->setCategoryStoreIds($model->getResource()->getCategorySetStoreIds($model->getCategoryIds()))->setCategoryUrlKey($data['article_url_key']); while ($model->isUrlKeyUsed() || $_categoryModel->isUrlKeyUsed()) { $model->setData('article_url_key', sprintf("%s-%d", $_origUrlKey, $_cnt)); $_categoryModel->setCategoryUrlKey(sprintf("%s-%d", $_origUrlKey, $_cnt++)); } if (!$id && $fileUploadNeeded) { $model->save(); $id = $model->getId(); } if ($fileUploadNeeded) { $uploader = new Varien_File_Uploader('article_attachment'); $uploader->setAllowedExtensions(null)->setAllowRenameFiles(false)->setAllowCreateFolders(true)->setFilesDispersion(false); $uploader->save(AW_Kbase_Helper_Data::attachmentDirName($id), $_FILES['article_attachment']['name']); $model->setArticleAttachment($uploader->getUploadedFileName()); } $model->save(); $session->addSuccess($this->__('Article was successfully saved')); $session->setKBaseArticleData(false); if ($this->getRequest()->getParam('back')) { $this->_redirect('*/*/edit', array('id' => $model->getId())); return; } $this->_redirect('*/*/'); return; } catch (Exception $e) { Mage::logException($e); $session->addError($e->getMessage()); $session->setKBaseArticleData($data); $this->_redirect('*/*/edit', array('id' => $id)); return; } } else { $session->addError($this->__('Unable to find an article to save')); $this->_redirect('*/*/'); } }
protected function _beforeDelete() { AW_Kbase_Helper_Data::removeDirectory(AW_Kbase_Helper_Data::attachmentDirName($this->getId())); return parent::_beforeDelete(); }