Diplome id to update (only) * * @return instance New Updater * ---------------------------------------------------------*/ public function __construct($d_id=null){ /* [1] Fetch config =========================================================*/ { /* (1) Try to load the configuration */ $this->config = Config::load("http://sciences.univ-pau.fr/edt/_ressource.js", "http://sciences.univ-pau.fr/edt/_periode.js"); /* (2) If cannot fetch config */ if( !($this->config instanceof Config) ) throw new \Exception("Cannot fetch configuration"); } $d_list = $this->config->getDiplomes(); if( !is_null($d_id) && isset($d_list[$d_id]) ) $this->d_data = [ $d_id, $d_list[$d_id] ]; } /* (2) Update the ICS files * * @return error FALSE on error * ---------------------------------------------------------*/ public function update(){ /* [1] If only 1 diplome to update -> do it =========================================================*/ if( is_array($this->d_data) ){ $d_id = $this->d_data[0]; $d_name = $this->d_data[1]; file_put_contents(__ROOT__."/tmp/$d_id.ics", "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//xdrm.io//NONSGML v1.0//EN\nMETHOD:PUBLISH\nX-WR-CALNAME: UPPA $d_name\n"); \chmod(__ROOT__."/tmp/$d_id.ics", 00775); /* (1) Browse each date ---------------------------------------------------------*/ foreach($this->config->getPeriods() as $p_id=>$p_date){ /* (1) Load image in the extractor */ $calext = new CalendarExtractor($d_id, "http://sciences.univ-pau.fr/edt/diplomes/${d_id}${p_id}.png", $p_date); /* (2) Extract calendar data */ $calext->process(); /* (3) Get ICS events representation */ $EVENTS = $calext->toIcs(); /* (4) Add to file */ file_put_contents(__ROOT__."/tmp/$d_id.ics", $EVENTS, FILE_APPEND); } file_put_contents(__ROOT__."/tmp/$d_id.ics", "END:VCALENDAR", FILE_APPEND); /* (2) Register update ---------------------------------------------------------*/ $sqlr = DatabaseDriver::getPDO()->prepare("UPDATE diplome SET updated_at = CURRENT_TIMESTAMP WHERE id_diplome = :idd"); $sqlr->execute([ ':idd' => $d_id ]); return; } /* [2] Else -> Browse each diplome =========================================================*/ foreach($this->config->getDiplomes() as $d_id=>$d_name){ file_put_contents(__ROOT__."/tmp/$d_id.ics", "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//xdrm.io//NONSGML v1.0//EN\nMETHOD:PUBLISH\nX-WR-CALNAME:UPPA $d_name\n"); \chmod(__ROOT__."/tmp/$d_id.ics", 0775); /* (1) Browse each date ---------------------------------------------------------*/ foreach($this->config->getPeriods() as $p_id=>$p_date){ /* (1) Load image in the extractor */ $calext = new CalendarExtractor($d_id, "http://sciences.univ-pau.fr/edt/diplomes/${d_id}${p_id}.png", $p_date); /* (2) Extract calendar data */ $calext->process(); /* (3) Get ICS events representation */ $EVENTS = $calext->toIcs(); /* (4) Add to file */ file_put_contents(__ROOT__."/tmp/$d_id.ics", $EVENTS, FILE_APPEND); \chmod(__ROOT__."/tmp/$d_id.ics", 0775); } file_put_contents(__ROOT__."/tmp/$d_id.ics", "END:VCALENDAR", FILE_APPEND); \chmod(__ROOT__."/tmp/$d_id.ics", 0775); /* (2) Register update ---------------------------------------------------------*/ $sqlr = DatabaseDriver::getPDO()->prepare("UPDATE diplome SET updated_at = CURRENT_TIMESTAMP WHERE id_diplome = :idd"); $sqlr->execute([ ':idd' => $d_id ]); } } }