public function addAction() { if ($this->_request->isPost()) { $url = $this->_request->getParam('currentUrl'); if ($this->_request->getParam('dataFormProducts')) { $dataProducts = $this->_request->getParam('dataFormProducts'); //основные - sku, name, description, note, sorting, path $product = new Catalog_Model_Products($dataProducts); //modDate, order $product->setMetaTitle($dataProducts['name'])->setMetaDescription($dataProducts['description'])->setMetaKeywords($dataProducts['name'])->setOrder($dataProducts['sorting'])->setActive(1)->setDeleted(0)->setAddDate(date("Y-m-d H:i:s"))->setModDate(date("Y-m-d H:i:s")); $this->_modelMapper->save($product); $productId = $this->_modelMapper->getDbTable()->getAdapter()->lastInsertId(); $categoriesMapperXref = new Catalog_Model_Mapper_CategoriesXref(); $categoriesMapperXref->save(new Catalog_Model_CategoriesXref(array('productId' => $productId, 'categoryId' => $this->_request->getParam('categoryId')))); $product = $this->_modelMapper->find($productId, $this->_model); $upload = new Zend_File_Transfer(); $uploadPath = '/upload/products/' . $product->getId() . '/'; //image if ($upload->isUploaded('fileLoadImage')) { $imageFile = $this->_uploadFiles($productId, $upload, 'fileLoadImage'); $product->setUploadPath($uploadPath)->setImage($imageFile['fileLoadImage']['name']); } //draft if ($upload->isUploaded('fileLoadDraft')) { $imageFile = $this->_uploadFiles($productId, $upload, 'fileLoadDraft'); $product->setUploadPathDraft($uploadPath)->setDraft($imageFile['fileLoadDraft']['name']); } $this->_modelMapper->save($product); $url = '/catalog/' . $product->getFullPath(); } $this->clearCache('CatalogProductsList'); $this->_redirector->gotoUrlAndExit($url); } //Zend_Debug::dump($this->_request->getParams()); }
/** * @param int $category_id * @param int $active * @return array */ function GetProductsCategory($category_id, $active = 0) { $categories = new Catalog_Model_Mapper_Categories(); $productsMapper = new Catalog_Model_Mapper_Products(); $select = $productsMapper->getDbTable()->select(); $select->where('active != ?', $active)->order('sorting ASC'); $entries = $categories->fetchProductsRel($category_id, $select); return $entries; }
/** * @param $id_group * @return Catalog_Model_Products[]|null */ private function _getCategoryProducts($id_group) { $cache = Zend_Registry::get('cache'); $cacheName = 'categoryProducts_' . $id_group; $select = $this->_modelProductsMapper->getDbTable()->select()->order('sorting ASC'); if (!($products = $cache->load($cacheName))) { ini_set('max_execution_time', 900); $products = $this->_modelCategoriesMapper->fetchProductsRel($id_group, $select); $cache->save($products, $cacheName, array('api', 'Catalog', 'categoryProducts')); } return $products; }
/** * @throws Zend_Controller_Action_Exception * */ public function indexAction() { $fullPath = $this->getFullPath(); $categories = new Catalog_Model_Mapper_Categories(); $category = new Catalog_Model_Categories(); $category = $categories->findByFulPath($fullPath, $category); if (is_null($category)) { throw new Zend_Controller_Action_Exception("Страница не найдена", 404); } $this->setCurrentCategory($category); $current_category_id = $category->getId(); $productsMapper = new Catalog_Model_Mapper_Products(); $select = $productsMapper->getDbTable()->select(); if (!Zend_Auth::getInstance()->hasIdentity()) { $select->where('deleted != ?', 1)->where('active != ?', 0); } $select->order('sorting ASC'); $entries = $categories->fetchProductsRel($current_category_id, $select); if (!empty($entries)) { $this->view->entries = $entries; } if ($category->getMetaDescription() != '') { $meta_description = $category->getMetaDescription(); } else { $categoryMapper = new Catalog_Model_Mapper_Categories(); $parentCategories = $categoryMapper->fetchTreeParentCategories($category->getId()); $aDescription = array(); if (!empty($parentCategories)) { foreach ($parentCategories as $parentCategory) { $aDescription[] = $parentCategory->name; } } $aDescription[] = 'Альфа-Гидро - Каталог продукции'; $meta_description = implode(", ", array_reverse($aDescription)); } if ($category->getMetaKeywords() != '') { $meta_keywords = $category->getMetaKeywords(); } else { $aKeywords = array(); if (!empty($entries)) { foreach ($entries as $propduct) { $sku = $propduct->getSku(); $aKeywords[] = str_replace('A', '', $sku); $aKeywords[] = str_replace(' ', '', $sku); $aKeywords[] = str_replace(array(' ', 'A'), '', $sku); } } $aKeywords[] = $category->getName(); $meta_keywords = implode(", ", array_reverse($aKeywords)); } $this->view->assign(array('adminPath' => 'categories/list/' . $current_category_id, 'full_path_category' => $this->getFullPath(), 'title' => $category->getName(), 'current_category' => $current_category_id, 'meta_description' => $meta_description, 'meta_keywords' => $meta_keywords)); }
public function autocompleteAction() { $this->_helper->layout()->disableLayout(); $query = $this->getRequest()->getParam('query'); $productsMapper = new Catalog_Model_Mapper_Products(); if ($this->_request->getParam('query')) { $query = str_replace(array('.', ',', ' ', '-', '_', '/', '\\', '*', '+', '&', '^', '%', '#', '@', '!', '(', ')', '~', '<', '>', ':', ';', '"', "'", "|"), '', $query); //$nameQuery = $this->_request->getParam('query'); //$sQuery = "(`s_name` LIKE '%$query%' OR `name` LIKE '%$nameQuery%')"; $sQuery = "MATCH(s_name, sku, name, meta_keywords) AGAINST ('+{$query}*' IN BOOLEAN MODE)"; $select = $productsMapper->getDbTable()->select(); $select->where('active != ?', 0)->where('deleted != ?', 1)->where($sQuery)->limit(15)->order("CHAR_LENGTH(sku) ASC"); $products = $productsMapper->fetchAll($select); if (!empty($products)) { $this->view->assign('products', $products); } } }
public function indexAction() { $productsMapper = new Catalog_Model_Mapper_Products(); $jsonData = array(); if ($this->_request->getParam('query')) { $query = $this->_request->getParam('query'); $query = str_replace(array('.', ',', ' ', '-', '_', '/', '\\', '*', '+', '&', '^', '%', '#', '@', '!', '(', ')', '~', '<', '>', ':', ';', '"', "'", "|"), '', $query); //$nameQuery = $this->_request->getParam('query'); //$sQuery = "(`s_name` LIKE '%$query%' OR `name` LIKE '%$nameQuery%')"; $sQuery = "MATCH(s_name, sku, name) AGAINST ('+{$query}*' IN BOOLEAN MODE)"; $select = $productsMapper->getDbTable()->select(); if (!Zend_Auth::getInstance()->hasIdentity()) { $select->where('active != ?', 0)->where('deleted != ?', 1); } $select->where($sQuery)->limit(15)->order("CHAR_LENGTH(sku) ASC"); $products = $productsMapper->fetchAll($select, true); $products && ($jsonData = $products); } $this->_helper->json->sendJson($jsonData); }
/** * @param $category_id * @return array */ public function getProductsCategory($category_id) { $cache = Zend_Registry::get('cache'); if (!($expProducts = $cache->load('productsCategory' . $category_id))) { $expProducts = array(); $categoryMapper = new Catalog_Model_Mapper_Categories(); $productMapper = new Catalog_Model_Mapper_Products(); $selectProduct = $productMapper->getDbTable()->select()->where('deleted != ?', 1)->where('active != ?', 0)->order('sorting ASC'); $products = $categoryMapper->fetchProductsRel($category_id, $selectProduct); if (!empty($products)) { foreach ($products as $product) { $expProducts[] = array('item', 'name', 'image', 'uri', 'description', 'note'); $item = $this->productToArray($product); $expProducts[] = $item; $property = $this->productProperty_Csv($product, false); if (!empty($property)) { $expProducts[] = array('propertiesTable'); $expProducts[] = $property['name']; $expProducts[] = $property['value']; } $modifications = $this->productModificationTableValues($product, false); if (!empty($modifications)) { $expProducts[] = array('modificationsTable'); foreach ($modifications as $modification) { $expProducts[] = $modification; } } } } $cache->save($expProducts, 'productsCategory' . $category_id); } return $expProducts; }
/** * @param null $id * @param Zend_Db_Table_Select $select * @return array|false|mixed|null */ public function fetchTreeSubCategoriesInArray($id = null, Zend_Db_Table_Select $select = null) { if (is_null($id)) { $id = 0; } $entries = $this->fetchSubCategoriesRel($id, $select); if (0 == count($entries)) { return null; } $result = array(); foreach ($entries as $entry) { $id = $entry->id; $data = $this->_getDbData($entry); $data['id'] = $id; $productMapper = new Catalog_Model_Mapper_Products(); $selectProduct = $productMapper->getDbTable()->select()->where('deleted != ?', 1)->where('active != ?', 0)->order('sorting ASC'); $products = $this->fetchProductsRel($id, $selectProduct); if (!is_null($products)) { $data['countProducts'] = count($products); } $subCategories = $this->fetchSubCategoriesRel($id, $select); if (!is_null($subCategories)) { $data['subCategories'] = $this->fetchTreeSubCategoriesInArray($id); } $result[] = $data; } return $result; }