/**
  * Carga valores de un articulo de un propietario
  * @param $id_articulo
  * @return array|null|\yii\db\ActiveRecord
  */
 public function cargarArticuloUsuario($id_articulo)
 {
     $usuario = Yii::$app->getUser()->identity->getId();
     if (($model = Articulos::find()->where(['idarticulo' => $id_articulo, 'usuario' => $usuario])->one()) !== null) {
         $this->articulo = $model;
         return $model;
     }
 }
Example #2
0
 /**
  * Obtiene el detalle de un articulo por slug y municipio
  * @param $municipio
  * @param $articulo
  * @return array|null|ActiveRecord
  */
 public static function obtenerArticulosEnProvincia($articulo, $provincia)
 {
     $array = MetodosHelper::dividir_texto($articulo, '-', true);
     $like = '';
     foreach ($array as $palabra) {
         $like .= "lower(articulos.nombre) like '%" . $palabra . "%'\n                    or articulos.slug like '%" . $palabra . "%' or ";
     }
     //busqueda general
     if ($articulo == self::ANUNCIOS && $provincia == Provincias::TODA_REP_DOM) {
         return Articulos::find()->all();
     } else {
         if ($articulo == self::ANUNCIOS && $provincia != Provincias::TODA_REP_DOM) {
             return Articulos::find()->joinWith(['categorias', 'usuarios.municipios.provincias'])->leftJoin('referencias', 'articulos.referencia = referencias.idreferencia')->where('provincias.slug = :provincia', [':provincia' => $provincia])->all();
         }
     }
     //busqueda especifica
     if ($provincia == Provincias::TODA_REP_DOM) {
         return Articulos::find()->leftJoin('referencias', 'articulos.referencia = referencias.idreferencia')->where($like . ' articulos.slug like :articulo or referencias.slug like :articulo', [':articulo' => '%' . $articulo . '%'])->all();
     }
     return Articulos::find()->joinWith(['categorias', 'usuarios.municipios.provincias'])->leftJoin('referencias', 'articulos.referencia = referencias.idreferencia')->where($like . ' articulos.slug like :articulo or referencias.slug like :articulo', [':articulo' => '%' . $articulo . '%'])->andWhere('provincias.slug = :provincia', [':provincia' => $provincia])->all();
     //        $debug = $articulos->prepare(Yii::$app->db->queryBuilder)->createCommand()->rawSql;
     //        echo '<pre>';print_r([$articulo, $provincia, $debug]);die();
     //        echo '<pre>';print_r([$articulo, $provincia, count($articulos), $articulos]);die();
 }
 /**
  * Carga valores de un articulo de un propietario
  * @param $id_articulo
  * @return array|null|\yii\db\ActiveRecord
  */
 public function esPropietario($id_articulo)
 {
     $usuario = Yii::$app->getUser()->identity->getId();
     return Articulos::find()->where(['idarticulo' => $id_articulo, 'usuario' => $usuario])->exists();
 }
Example #4
0
 /**
  * Busca articulos en base a articulo y categoria
  * @param array $params
  * @return ActiveDataProvider
  */
 public function buscadorArticuloProvincia($params, $page_size = 18, $pagina = 0)
 {
     $query = Articulos::find();
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['page' => $pagina, 'pageSize' => $page_size, 'pageParam' => 'p', 'pageSizeParam' => 'pp', 'defaultPageSize' => '18', 'pageSizeLimit' => [1, 50]], 'sort' => ['defaultOrder' => ['fechacreado' => SORT_DESC]]]);
     $this->load($params);
     $query->leftJoin('categorias', 'categorias.idcategoria = articulos.categoria');
     $query->leftJoin('usuarios', 'usuarios.idusuario = articulos.usuario');
     $query->leftJoin('municipios', 'municipios.idmunicipio = usuarios.municipio');
     $query->leftJoin('provincias', 'provincias.idprovincia = municipios.provincia');
     $query->leftJoin('referencias', 'articulos.referencia = referencias.idreferencia');
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     //busqueda especifica
     if (strcmp($this->na, self::ANUNCIOS) !== 0) {
         $array = MetodosHelper::dividir_texto($this->na, '-', true);
         foreach ($array as $palabra) {
             $query->orWhere(['like', 'articulos.nombre', $palabra]);
             $query->orWhere(['like', 'articulos.slug', $palabra]);
             $query->orWhere(['like', 'referencias.slug', $palabra]);
             $buscador = new Buscador();
             $ids = $buscador->obtenerIdsResultadosIndexados($palabra);
             $query->orWhere(['in', 'articulos.referencia', $ids]);
         }
     }
     if (!empty($this->ps) && $this->ps != Provincias::TODA_REP_DOM) {
         $query->andwhere('provincias.slug = :provincia', [':provincia' => $this->ps]);
     }
     return $dataProvider;
 }