/** * Antes de insertar hay que comprobar que no se exceda * el número máximo de banners permitido por zona */ public function validaLogico() { parent::validaLogico(); if ($this->getPrimaryKeyValue() == '') { // Voy a insertar $zona = new SldZonas($this->IdZona); $slider = new SldSliders(); $rows = $slider->cargaCondicion("count(Id) as nMax", "IdZona='{$this->IdZona}'"); if ($zona->getNumeroMaximoSliders() > 0 and $zona->getNumeroMaximoSliders() < $rows[0]['nMax'] + 1) { $this->_errores[] = "Se ha superado el número de sliders para la zona {$zona->getTitulo()}. Consulte con el administrador de la web"; } unset($slider); unset($zona); } $filtro = $this->getPrimaryKeyValue() == '' ? '1' : "Id<>'{$this->getPrimaryKeyValue()}'"; $sld = new SldSliders(); $rows = $sld->cargaCondicion("distinct IdTipo", $filtro); unset($sld); foreach ($rows as $row) { $tiposExistentes[$row['IdTipo']] = true; } // Comprobar la jerarquía de los sliders $query = ""; if ($this->IdTipo > '0') { if ($tiposExistentes['1']) { $this->_errores[] = "Ya existe un slider fijo para toda la WEB"; } else { if ($this->IdTipo == '1') { $this->_alertas[] = "Los posibles sliders fijos que hubiese pasan a ser variables"; $query = "UPDATE {$this->getDataBaseName()}.SldSliders SET IdTipo='0' WHERE IdTipo>'0'"; } if ($this->IdTipo == '2' and $tiposExistentes['2']) { $query = "UPDATE {$this->getDataBaseName()}.SldSliders SET IdTipo='0' WHERE IdTipo='{$this->IdTipo}'"; $this->_alertas[] = "Ya existía un slider fijo para el HOME, ha sido cambiado"; } if ($this->IdTipo == '3' and $tiposExistentes['3']) { $query = "UPDATE {$this->getDataBaseName()}.SldSliders SET IdTipo='0' WHERE IdTipo='{$this->IdTipo}'"; $this->_alertas[] = "Ya existía un slider fijo para la WEB excepto el HOME, ha sido cambiado"; } if ($query) { $em = new EntityManager($this->getConectionName()); if ($em->getDbLink()) { $em->query($query); //echo $query; } $em->desConecta(); unset($em); } } } }
/** * Devuelve un array anidado de zonas de sliders con sus sliders * * @return array Array de zonas y sliders */ public function getArbolZonasSliders() { $zona = new SldZonas(); $zonas = $zona->cargaCondicion("Id,Titulo", "1", "SortOrder ASC"); unset($zona); $arbol = array(); foreach ($zonas as $zona) { $slider = new SldSliders(); $sliders = $slider->cargaCondicion('Id', "IdZona='{$zona['Id']}'", "SortOrder ASC"); unset($slider); $arbol[$zona['Id']]['titulo'] = $zona['Titulo']; $arbol[$zona['Id']]['nSliders'] = count($sliders); foreach ($sliders as $slider) { $arbol[$zona['Id']]['sliders'][] = new SldSliders($slider['Id']); } } return $arbol; }