コード例 #1
0
 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());
 }
コード例 #2
0
 /**
  * @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;
 }
コード例 #3
0
 /**
  * @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;
 }
コード例 #4
0
 /**
  * @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));
 }
コード例 #5
0
 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);
         }
     }
 }
コード例 #6
0
 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;
 }
コード例 #8
0
 /**
  * @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;
 }