diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dcf32a9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +data.php +config.php diff --git a/README.md b/README.md index 74790aa..f0bc877 100644 --- a/README.md +++ b/README.md @@ -19,4 +19,17 @@ bien utile) et le stockage de données directement dans les sources. Le contexte serait le tiers et l'événement concerné. Pour un contexte donné on peut s'inscrire et se désinscrire. Via la configuration on peut cadrer la -récurrence des événements ainsi que leschoix disponibles à l'inscription. +récurrence des événements ainsi que les choix disponibles à l'inscription. + +## test + +On peut tester en local avec le serveur PHP embarqué et la commande `php -S +localhost:8000 -t .` à la racine du projet puis en lançant un navigateur pour +visiter `localhost:8000`. + +## todo + +* gérer les erreur potentielles partout où c'est susceptible d'arriver et afficher de jolis messages explicites si ça se produit +* prévoir un accueil avec le liste des suppliers ? +* prévoir un export ics des événements (synchro caldendrier téléphone) selon le HTTP_ACCEPT +* prévoir une interface d'admin qui créérait le config.php à la volée avec protection par auth basic si on met un mot de passe diff --git a/index.php b/index.php new file mode 100644 index 0000000..147ba6f --- /dev/null +++ b/index.php @@ -0,0 +1,156 @@ + '%supplier% %event%', + 'description' => '', + 'choices' => [], + 'start' => 'now 00:00:00', + 'end' => '+1 year', + 'frequency' => '1 day', + + ], + $config[$supplier] +); + +$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null; + +$hasEvent = isset($_REQUEST['event']); +if (!$hasEvent) { + $now = new \DateTime('now'); + $current = new \DateTime($config[$supplier]['start']); + $frequency = \DateInterval::createFromDateString($config[$supplier]['frequency']); + $maxIterations = 1000; + while ( + ($current->getTimestamp() < $now->getTimestamp()) + and ($maxIterations-- > 0) + ) $current->add($frequency); + $nextEvent = $current->format('Y-m-d'); + header(sprintf('Location: %s?supplier=%s&event=%s', $requestUrl, $supplier, $nextEvent)); + die(); +} + +$event = $_REQUEST['event']; + +switch ($action) { +case 'insert' : +case 'delete' : + $isBeginning = (!file_exists(DATA_FILE) or in_array(filesize(DATA_FILE), [ false, 0 ])); + $output = fopen(DATA_FILE, 'a+'); + if (!$output) break; + if (!flock($output, LOCK_EX)) break; + if ($isBeginning) + fwrite($output, ' $prevItem) + if ($prevItem['hash'] === $item['hash']) + unset($items[$index]); + } +} + +while (preg_match('/%([^%]+)%/i', $config[$supplier]['title'], $match)) + $config[$supplier]['title'] = str_replace( + $match[0], + ${$match[1]}, + $config[$supplier]['title'] + ); + + +?> + + + + + <?php echo strip_tags($config[$supplier]['title']); ?> + + +

+ +

+ + + +