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(); } } }