public static function save($HORARIS, $DBDD, $EXTRES, $idS)
 {
     //Carreguem l'horari que estem tractant i guardarem els espais que usa.
     $A_H = array();
     $A_HE = array();
     if ($HORARIS['HorarisID'] > 0) {
         $OH = HorarisPeer::retrieveByPK($HORARIS['HorarisID']);
         if ($OH instanceof Horaris) {
             $A_H = array($HORARIS['HorarisID']);
         }
         foreach ($OH->getHorarisespaiss() as $HE) {
             $A_HE[] = $HE->getIdhorarisespais();
         }
     }
     //Per cada un dels dies que ha entrat, creem un horari
     foreach ($DBDD['DIES'] as $D) {
         //Carreguem algun dels horaris que estem editant i el sobreescriurem sinó li donem un número nou
         $idH = array_pop($A_H);
         //Si estem fent una substitució, recarreguem, sinó en creem un de nou
         $OH = !is_null($idH) ? HorarisPeer::retrieveByPK($idH) : new Horaris();
         $OH->setActivitatsActivitatid($HORARIS['Activitats_ActivitatID']);
         $OH->setHorainici($DBDD['HoraIn']);
         $OH->setHorapre($DBDD['HoraPre']);
         $OH->setHorapost($DBDD['HoraPost']);
         $OH->setHorafi($DBDD['HoraFi']);
         $OH->setAvis($HORARIS['Avis']);
         $OH->setEspectadors($HORARIS['Espectadors']);
         $OH->setPlaces($HORARIS['Places']);
         $OH->setDia($D);
         $OH->setActiu(true);
         $OH->setSiteid($idS);
         $OH->save();
         //Guardem l'Horari en si
         //Si no hi ha espais, vol dir que és un espai extern. Llavors només guardarem el material.
         if (empty($EXTRES['ESPAISOUT'])) {
             $idEE = $EXTRES['ESPAIEXTERN']->getObject()->getIdespaiextern();
             foreach ($EXTRES['MATERIALOUT'] as $K => $idM) {
                 $idHE = array_pop($A_HE);
                 $OHE = !is_null($idHE) ? HorarisespaisPeer::retrieveByPK($idHE) : new Horarisespais();
                 $OHE->setMaterialIdmaterial($idM['material']);
                 $OHE->setEspaisEspaiid(null);
                 $OHE->setHorarisHorarisid($OH->getHorarisid());
                 //Amb l'identificador de l'horari que hem creat
                 $OHE->setIdespaiextern($idEE);
                 $OHE->setActiu(true);
                 $OHE->setSiteid($idS);
                 $OHE->save();
             }
             if (empty($EXTRES['MATERIALOUT'])) {
                 $idHE = array_pop($A_HE);
                 $OHE = !is_null($idHE) ? HorarisespaisPeer::retrieveByPK($idHE) : new Horarisespais();
                 $OHE->setMaterialIdmaterial(null);
                 $OHE->setEspaisEspaiid(null);
                 $OHE->setHorarisHorarisid($OH->getHorarisid());
                 //Amb l'identificador de l'horari que hem creat
                 $OHE->setIdespaiextern($idEE);
                 $OHE->setActiu(true);
                 $OHE->setSiteid($idS);
                 $OHE->save();
             }
             //Han entrat espais i guardem amb el material corresponent
         } else {
             foreach ($EXTRES['ESPAISOUT'] as $K => $idE) {
                 foreach ($EXTRES['MATERIALOUT'] as $K => $idM) {
                     $idHE = array_pop($A_HE);
                     $OHE = !is_null($idHE) ? HorarisespaisPeer::retrieveByPK($idHE) : new Horarisespais();
                     $OHE->setMaterialIdmaterial($idM['material']);
                     $OHE->setEspaisEspaiid($idE);
                     $OHE->setHorarisHorarisid($OH->getHorarisid());
                     //Amb l'identificador de l'horari que hem creat
                     $OHE->setIdespaiextern(null);
                     $OHE->setActiu(true);
                     $OHE->setSiteid($idS);
                     $OHE->save();
                 }
                 if (empty($EXTRES['MATERIALOUT'])) {
                     $idHE = array_pop($A_HE);
                     $OHE = !is_null($idHE) ? HorarisespaisPeer::retrieveByPK($idHE) : new Horarisespais();
                     $OHE->setMaterialIdmaterial(null);
                     $OHE->setEspaisEspaiid($idE);
                     $OHE->setHorarisHorarisid($OH->getHorarisid());
                     //Amb l'identificador de l'horari que hem creat
                     $OHE->setIdespaiextern(null);
                     $OHE->setActiu(true);
                     $OHE->setSiteid($idS);
                     $OHE->save();
                 }
             }
         }
     }
     //Acabem d'eliminar els que sobrin
     if (!empty($A_H)) {
         foreach ($A_H as $idH) {
             HorarisPeer::retrieveByPK($idH)->setInactiu();
         }
     }
     if (!empty($A_HE)) {
         foreach ($A_HE as $idHE) {
             HorarisespaisPeer::retrieveByPK($idHE)->setInactiu();
         }
     }
 }