protected function setWidgtedDetalhes($layout) { $html = ''; if ($this->ecommerce_options->produto_detalhes == 1) { $detalhes = unserialize($this->ecommerce_options->produto_detalhe_options); $categoria = Categorias::findById($layout['categoria_id']); $ids = array(); $subcategorias = Categorias::getChildrensIds($categoria); if (!empty($subcategorias)) { foreach ($subcategorias as $value) { $ids[] = (string) $value; } } $ids[] = (string) $categoria->_id; $produtos = Produtos::find($this->getConditions($ids)); foreach ($detalhes as $value) { $array = array(); for ($i = 0; $i < count($produtos); $i++) { foreach ($produtos[$i]['detalhes'] as $key => $valor) { if (isset($valor[$value['label']])) { $array[] = $valor[$value['label']]; } } } $html .= $this->getWidgtedDetalhes($layout, array_unique($array), $value); } } return $html; }
public function indexAction() { $this->view->numeros = array('produtos' => count(Produtos::find()), 'pedidos' => Pedidos::count(), 'total_vendas' => Pedidos::sum(array("column" => "total", "conditions" => "status_id in (3,4,5)")), 'usuarios' => Usuarios::count('nivel_id = 3')); $this->view->ultimos_pedidos = Pedidos::find(array('limit' => 10, 'order' => 'data desc')); $this->view->pedidos = Pedidos::getEstatisticas('pedido'); $this->view->mais_vendidos = PedidoItens::getMaisVendidos(); }
public function searchAction() { if ($this->request->isPost()) { $this->view->disable(); $arr = array(); $param = $this->request->getPost('q'); $produtos = Produtos::find(array('conditions' => array('nome' => new \MongoRegex("/{$param}/i")))); foreach ($produtos as $key => $value) { $arr[$key]['id'] = (string) $value->_id; $arr[$key]['name'] = $value->nome; } $this->response->setHeader("Content-Type", "application/json"); return $this->response->setContent(json_encode($arr)); } }
public function searchAction() { if ($this->request->isPost()) { if (isset($_POST['q'])) { $this->view->disable(); $arr = array(); $param = $this->request->getPost('q'); $produtos = Produtos::find(array('conditions' => array('nome' => new \MongoRegex("/{$param}/i")))); foreach ($produtos as $key => $value) { $arr[$key]['id'] = (string) $value->_id; $arr[$key]['name'] = $value->nome; $arr[$key]['imagem'] = $this->ecommerce_options->url_base . Imagens::findFirst($value->imagens[0])->url; $arr[$key]['url'] = $this->base->generateUrl($value->nome, $value->_id, 'produto'); } $this->response->setHeader("Content-Type", "application/json"); return $this->response->setContent(json_encode($arr)); } else { $this->view->indice = 0; $this->view->pagina = 0; $this->view->filtros = array(); $this->view->search = true; } } }
protected function getData($array) { $arr = array(); if (isset($array['relacionados'])) { if (!empty($array['relacionados'])) { $ids = array(); foreach ($array['relacionados'] as $value) { $ids[] = new \MongoId($value); } $arr['conditions'] = array('_id' => array('$in' => $ids)); } else { $arr['conditions'] = array('categoria' => (string) $array['categoria'], '_id' => array('$ne' => $this->options['produto']->_id)); } } else { if ($array['search']) { $param = $_POST['search']; $arr['conditions'] = array('nome' => new \MongoRegex("/{$param}/i")); } else { if ($array['destaque']) { $arr['conditions'] = array('destaque' => '1'); } else { if ($array['lancamento']) { $arr['conditions'] = array('destaque' => '0'); } else { if ($array['categoria'] != '') { if (is_array($array['categoria'])) { $ids = array(); foreach ($array['categoria'] as $value) { $ids[] = (string) $value; } $arr['conditions'] = array('categoria' => array('$in' => $ids)); } else { $arr['conditions'] = array('categoria' => $array['categoria']); } } } } if (!empty($array['filtros'])) { $filtros = array(); foreach ($array['filtros'] as $key => $value) { if ($key != 'valor') { $filtros['$elemMatch']["{$key}"] = array('$in' => $value); } else { $valores = explode(';', $value[0]); $filtros['$elemMatch']["{$key}"] = array('$gte' => floatval($valores[0]), '$lte' => floatval($valores[1])); } } $arr['conditions']['detalhes'] = $filtros; } } } if ($array['destaque']) { $arr['limit'] = $this->ecommerce_options->produtos_destaque; } else { $arr['limit'] = $this->ecommerce_options->produtos_por_pagina; } $arr['conditions']['ativo'] = '1'; if ($array['pagina'] != 0) { $arr['skip'] = intval($this->ecommerce_options->produtos_por_pagina) * $array['pagina']; } $arr['sort'] = array('created_at' => -1); return Produtos::find($arr); }