index.php 8.16 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<?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');

/**
 * Λήψη παραμέτρων καθορισμού λειτουργίας από τη γραμμή εντολών 
21 22 23
 * v = verbose output
 * i = incoming file type
 * o = outgoing file type
24
 */
25
$options = getopt('vio', ['send:', 'list', 'listshow', 'show:', 'get:', 'save:']);
26 27 28 29 30 31 32

$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']);
33 34 35 36 37 38 39 40
$incoming_only = isset($options['i']);
$outgoing_only = isset($options['o']);

/**
 * Αρχικοποίηση εφαρμογής 
 */
$app = new App($settings);
$app->setDebug(isset($options['v']));
41 42 43 44 45

/**
 * Έλεγχος παραμέτρων
 */
if (!$send && !$list && !$show && !$get) {
46 47 48 49 50 51
    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,
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
    "  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);
}

85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
/**
 * Αποστολή αρχείου για πρωτοκόλληση
 */
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);
    }
}

129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
/**
 * Λειτουργία λήψης λίστας των καταχωρημένων πρωτοκόλλων.
 * Εάν έχει ζητηθεί επιστρέφονται και οι αναλυτικές πληροφορίες των εγγράφων. 
 */
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);
    }
}

177 178 179 180 181 182 183 184 185 186 187 188 189
/**
 * Λειτουργία λήψης αρχείου με δεδομένο 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;
    }
}

190 191
echo "Done.", PHP_EOL;
exit(0);