Documentation/Index/CustomDocumentBeanAfterSave: CRegisterLogObserver.inc

Plik CRegisterLogObserver.inc, 2.0 KB (dodany przez TS, 7 years temu)
xx
Line 
1<?php
2/**
3 * CRegisterLogObserver
4 *
5 * @author Tomasz Świenty
6 * @version 0.1
7 * @copyright Copyright (c) eDokumenty
8 */
9final class CRegisterLogObserver extends LogObserver {
10
11
12
13    private static $cache = [];
14
15
16
17    /**
18     * update
19     *
20     * @param SplSubject $subject
21     * @access public
22     * @return void
23     */
24    public function update(SplSubject $subject) {
25
26        if (!is_a($subject, 'Log')) {
27            return TRUE;
28        }
29
30        $event = $subject->getLastEvent();
31
32        $clsnam = $event->getEventClsnam();
33        $keyval = $event->getEventKeyval();
34
35        if (($clsnam != 'CREGISTER_ENTRY') OR !$keyval) {
36            return FALSE;
37        }
38
39        $db = PgManager::getInstance();
40        $out = $db->query('SELECT * FROM cregisters.creg_moj WHERE id____ = '.$keyval.'', FALSE, PGSQL_ASSOC);
41
42        $cregisterEntry = [];       
43        if (isset($out[0]['id____'])) {
44            $cregisterEntry = $out[0];
45        }       
46       
47        if (isset($cregisterEntry['doc_id'])) {
48            if (!isset(self::$cache[$cregisterEntry['doc_id']])) {
49                self::$cache[$cregisterEntry['doc_id']] = [];
50            }
51
52            self::$cache[$cregisterEntry['doc_id']][] = $cregisterEntry;
53        }
54
55        // TODO UWAGA
56        // Połączenie mechanizmu obserwatora z custom skryptem wymaga aby zapisywanie odbywała się poprzez formatkę
57        // dokumentu.
58       
59        // W przypadku jeśli zależało by nam na aktualizacji dokumentu bezpośrednio po zapisaniu formatki rejestru - np. jeśli otwarto ją z poziomu
60        // modułu rejestrów wtedy należy dodać właściwy kod poniżej również działający na self::$cache[$cregisterEntry['doc_id']] i robiący
61        // $db->update('documents', ...) NIE ROBIĆ TUTAJ BEAN
62       
63    }
64
65
66
67    public static function getCachedCRegisterEntries($doc_id) {
68
69        if (!isset(self::$cache[$doc_id])) {
70            return [];
71        }
72
73        return self::$cache[$doc_id];
74
75    }
76
77}
78
79?>