/** * Devuelve un array anidado de zonas de banners con sus banners * * El array tiene los siguientes elementos: * * - titulo => el título de la zona * - nBanners => el número de banners que hay en la zona * - banners => array de objetos BannBanners, que son los banners que hay en la zona * * @return array Array de zonas y banners */ public function getArbolZonasBanners() { $zona = new BannZonas(); $zonas = $zona->cargaCondicion("Id,Titulo", "1", "SortOrder ASC"); unset($zona); $arbol = array(); foreach ($zonas as $zona) { $banner = new BannBanners(); $banners = $banner->cargaCondicion('Id', "IdZona='{$zona['Id']}'", "SortOrder ASC"); unset($banner); $arbol[$zona['Id']]['titulo'] = $zona['Titulo']; $arbol[$zona['Id']]['nBanners'] = count($banners); foreach ($banners as $banner) { $arbol[$zona['Id']]['banners'][] = new BannBanners($banner['Id']); } } return $arbol; }
/** * 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 BannZonas($this->IdZona); $banner = new BannBanners(); $rows = $banner->cargaCondicion("count(Id) as nMax", "IdZona='{$this->IdZona}'"); if ($zona->getNumeroMaximoBanners() < $rows[0]['nMax'] + 1) { $this->_errores[] = "Se ha superado el número de banners para la zona {$zona->getTitulo()}. Consulte con el administrador de la web"; } unset($banner); unset($zona); } if (count($this->_errores) == 0) { $this->OrdenMostrarEnListado = $this->SortOrder; } }