<?php // barebone app - autoload classes from src/ dir spl_autoload_register(function ($class_name) { $class_name_parts = explode('\\', $class_name); $class_filename = __DIR__ . '/src/' . end($class_name_parts) . '.php'; if (file_exists($class_filename)) { include $class_filename; if (class_exists($class_name)) { return true; } } return false; }); use Gr\Gov\Minedu\Osteam\App; $settings = require(__DIR__ . '/settings.php'); /** * Λήψη παραμέτρων καθορισμού λειτουργίας από τη γραμμή εντολών * v = verbose output * i = incoming file type * o = outgoing file type */ $options = getopt('vio', ['send:', 'list', 'listshow', 'show:', 'get:', 'save:']); $send = isset($options['send']); $list = isset($options['list']) || isset($options['listshow']); $listdetails = isset($options['listshow']); $show = isset($options['show']); $get = isset($options['get']) || isset($options['save']); $save = isset($options['save']); $incoming_only = isset($options['i']); $outgoing_only = isset($options['o']); /** * Αρχικοποίηση εφαρμογής */ $app = new App($settings); $app->setDebug(isset($options['v'])); /** * Έλεγχος παραμέτρων */ if (!$send && !$list && !$show && !$get) { echo "Χρήση: {$argv[0]} [-v] [--list] [--listshow] [-i|-o] [--send <file>] [--show <hashid>] [--get <hashid>] [--save <hashid>]", PHP_EOL, " v: παραγωγή μηνυμάτων παρακολούθησης εκτέλεσης", PHP_EOL, " list: λίστα hashids των εγγράφων (των τελευταίων 5 ημερών)", PHP_EOL, " listshow: λίστα αρχείων (των τελευταίων 5 ημερών)", PHP_EOL, " i: να συμπεριληφθούν μόνο τα εισερχόμενα στη λίστα αρχείων", PHP_EOL, " ο: να συμπεριληφθούν μόνο τα εξερχόμενα στη λίστα αρχείων", PHP_EOL, " send <file>: καταχώρηση πρωτοκόλλου με αποστολή του αρχείου file", PHP_EOL, " show <hash>: αναλυτικές πληροφορίες αρχείου με δεδομένο hashid", PHP_EOL, " get <hash>: λήψη αρχείου με δεδομένο hashid", PHP_EOL, " save <hash>: λήψη και αποθήκευση αρχείου με δεδομένο hashid", PHP_EOL, " στον τρέχοντα φάκελο και με το όνομα αρχείου που επιστρέφεται", PHP_EOL, exit(0); } if ($send) { echo "Έλεγχος για το αρχείο {$options['send']}... "; if (is_readable($options['send'])) { $file = base64_encode(file_get_contents($options['send'])); if ($file === false) { echo PHP_EOL, "ΛΑΘΟΣ: Αδυναμία κωδικοποίησης του αρχείου.", PHP_EOL; } echo "OK", PHP_EOL; } else { echo PHP_EOL, "ΛΑΘΟΣ: Το αρχείο δεν είναι αναγνώσιμο.", PHP_EOL; exit(-1); } } /** * If any work is to be done, an api key is required */ echo "Ανάκτηση API key...", PHP_EOL; try { $apikey = $app->getApiKey(); echo "Το API key είναι: ", $apikey, PHP_EOL; } catch (\Exception $e) { echo 'ΛΑΘΟΣ: Αδυναμία ανάκτησης API key. ', PHP_EOL, $e->getMessage(), PHP_EOL; exit(-1); } /** * Αποστολή αρχείου για πρωτοκόλληση */ if ($send) { echo "Αποστολή εγγράφου...", PHP_EOL; echo "Έλεγχος για το αρχείο {$options['send']}... "; if (is_readable($options['send'])) { $file = base64_encode(file_get_contents($options['send'])); if ($file === false) { echo PHP_EOL, "ΛΑΘΟΣ: Αδυναμία κωδικοποίησης του αρχείου.", PHP_EOL; } echo "OK", PHP_EOL; } else { echo PHP_EOL, "ΛΑΘΟΣ: Το αρχείο δεν είναι αναγνώσιμο.", PHP_EOL; exit(-1); } try { // καθορισμός παραμέτρων σε πίνακα για απλοποίηση $submission_data = [ 'theme' => 'ΔΟΚΙΜΗ: Αυτοματοποιημένο κείμενο της ' . date('c'), 'description' => 'ΔΟΚΙΜΗ: Αυτοματοποιημένο κείμενο περιγραφής ' . date('Ymdhmi'), 'docCategory' => 20, 'mainDoc' => [ 'document' => [ "base64" => $file ], 'fileName' => $options['send'], 'description' => "ΔΟΚΙΜΗ: Αποστολή δοκιμαστικού αρχείου {$options['send']}" ] // το παράδειγμα δεν περιλαμβάνει συνημμένα αρχεία // και ορισμένες επιπλέον παραμέτρους // senderId, senderProtocol, senderProtocolDate, ada, attachedDoc[] ]; $doc_info = $app->postProtocol($submission_data, $apikey); echo "Η αποστολή ολοκληρώθηκε με ΑΡ.Π.: ", $doc_info["protocolNumber"], PHP_EOL; echo "Αναλυτικά: ", print_r($doc_info, true), PHP_EOL; } catch (\Exception $e) { echo 'ΛΑΘΟΣ: Αδυναμία αποστολής εγγράφου. ', PHP_EOL, $e->getMessage(), PHP_EOL; exit(1); } } /** * Λειτουργία λήψης λίστας των καταχωρημένων πρωτοκόλλων. * Εάν έχει ζητηθεί επιστρέφονται και οι αναλυτικές πληροφορίες των εγγράφων. */ if ($list) { echo "Ανάκτηση λίστας εγγράφων...", PHP_EOL; try { $now = date(DATE_W3C); $fivedaysbefore = date(DATE_W3C, mktime(0, 0, 0, date("m"), date("d") - 5, date("Y"))); $doc_type = ($incoming_only ? App::DOCUMENT_INCOMING : null); $doc_type = ($incoming_only ? App::DOCUMENT_OUTGOING : $doc_type); $doc_hash_ids = $app->searchDocuments(null, $fivedaysbefore, $now, $doc_type, $apikey); if ($listdetails) { $doc_details = array_map(function ($hashid) use ($app, $apikey) { try { $details = $app->getDocData($hashid, $apikey); } catch (Exception $ex) { return [ 'id' => $hashid, 'error' => $ex->getCode() ]; } return $details; }, $doc_hash_ids); echo "Λεπτομέρειες εγγράφων: ", PHP_EOL, print_r($doc_details, true), PHP_EOL; } else { echo "Λίστα εγγράφων: ", PHP_EOL, implode(PHP_EOL, $doc_hash_ids), PHP_EOL; } } catch (\Exception $e) { echo 'ΛΑΘΟΣ: Αδυναμία ανάκτησης λίστας εγγράφων. ', PHP_EOL, $e->getMessage(), PHP_EOL; exit(1); } } /** * Λειτουργία ανάκτησης πληροφοριών αρχείου με δεδομένο hash id $options['show'] */ if ($show) { try { $doc_details = $app->getDocData($options['show'], $apikey); echo "Λεπτομέρειες εγγράφου: ", PHP_EOL, print_r($doc_details, true), PHP_EOL; } catch (\Exception $e) { echo 'ΛΑΘΟΣ: Αδυναμία ανάκτησης λεπτομερειών εγγράφων. ', PHP_EOL, $e->getMessage(), PHP_EOL; exit(1); } } /** * Λειτουργία λήψης αρχείου με δεδομένο hash id $options['save'] ή $options['get'] */ if ($get) { if ($save) { $doc_details = $app->savePdf($options['save'], $apikey); echo "Λεπτομέρειες αποθήκευσης εγγράφου: ", PHP_EOL, print_r($doc_details, true), PHP_EOL; } else { $doc_details = $app->getPdf($options['get'], $apikey); echo "Λεπτομέρειες εγγράφου: ", PHP_EOL, print_r($doc_details, true), PHP_EOL; } } echo "Done.", PHP_EOL; exit(0);