diff --git a/bin/update.php b/bin/update.php index 67b5dcd..921bd9e 100644 --- a/bin/update.php +++ b/bin/update.php @@ -7,6 +7,8 @@ die("Missing argument (server url)\n"); $_SERVER = [ 'SERVER_NAME' => $argv[1] ]; - $upd = new Updater(); + + // If 2nd argument -> diplome id to update only + $upd = new Updater(isset($argv[2]) ? $argv[2] : null); $upd->update(); diff --git a/build/service/Updater.php b/build/service/Updater.php index 9017934..3512f18 100644 --- a/build/service/Updater.php +++ b/build/service/Updater.php @@ -11,14 +11,17 @@ /* [1] Attributes =========================================================*/ private $config = null; + private $d_data = null; /* (1) Constructs and initialise an updater * + * @d_id Diplome id to update (only) + * * @return instance New Updater * ---------------------------------------------------------*/ - public function __construct(){ + public function __construct($d_id=null){ /* [1] Fetch config =========================================================*/ { @@ -32,6 +35,11 @@ } + + $d_list = $this->config->getDiplomes(); + if( !is_null($d_id) && isset($d_list[$d_id]) ) + $this->d_data = [ $d_id, $d_list[$d_id] ]; + } @@ -43,11 +51,52 @@ ---------------------------------------------------------*/ public function update(){ - /* [1] Browse ech diplome + + /* [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", 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); + + } + + 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"); + 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", 775); /* (1) Browse each date