/**
  * 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;
     }
 }