| 3 |   | Plik o nazwie kończącej się na Command (np. MyfirstCommand.inc) nalezy wgrać do katalogu apps/edokumenty/commands/  | 
                      
                        | 4 |   |   | 
                      
                        | 5 |   | Należy zmienić nazwę klasy i zaimplementować metodę execute.   | 
                      
                        | 6 |   |   | 
                      
                        | 7 |   | {{{  | 
                      
                        | 8 |   | <?php  | 
                      
                        | 9 |   | require_once(COMMANDS_DIR.'AbsCommand.inc');  | 
                      
                        | 10 |   |   | 
                      
                        | 11 |   | /**  | 
                      
                        | 12 |   |  * ExampleCommand  | 
                      
                        | 13 |   |  * Szablon komendy dla Workflow.  | 
                      
                        | 14 |   |  * Należy zaimplementować następujące metody z interfejsu ICommand:  | 
                      
                        | 15 |   |  *      - getDescription  | 
                      
                        | 16 |   |  *      - getExpandedDescription  | 
                      
                        | 17 |   |  *      - getCommandApi  | 
                      
                        | 18 |   |  *      - execute  | 
                      
                        | 19 |   |  * Opis metod poniżej w definicji.  | 
                      
                        | 20 |   |  *  | 
                      
                        | 21 |   |  * Dodatkowo z klasy AbsCommand mamy do dyspozycji:  | 
                      
                        | 22 |   |  *  - $this->action - bean PSAction tabela proc_actions  | 
                      
                        | 23 |   |  *  - $this->stageBean - bean etapu StageOfProc tabela stages  | 
                      
                        | 24 |   |  *    | 
                      
                        | 25 |   |  *  - $stage = $this->getStageDefObj() - zwraca obiekt (klasy Bean) definicji etapu jaki jest wykonywany czyli dane z stages_def - definicja etapu  | 
                      
                        | 26 |   |  *  - $procedure = $this->getProcedure() - zwraca obiekt (klasy Bean) procedury (tabela procedures) *  | 
                      
                        | 27 |   |  *   | 
                      
                        | 28 |   |  * @uses AbsCommand  | 
                      
                        | 29 |   |  * @uses ICommand  | 
                      
                        | 30 |   |  * @final  | 
                      
                        | 31 |   |  * @author Tomasz Świenty   | 
                      
                        | 32 |   |  * @version 0.1  | 
                      
                        | 33 |   |  * @copyright Copyright (c) BetaSoft  | 
                      
                        | 34 |   |  */  | 
                      
                        | 35 |   | final class ExampleCommand extends AbsCommand implements ICommand {  | 
                      
                        | 36 |   |   | 
                      
                        | 37 |   |   | 
                      
                        | 38 |   |   | 
                      
                        | 39 |   |     /**  | 
                      
                        | 40 |   |      * getDescription  | 
                      
                        | 41 |   |      * Metoda zwracająca nazwę komendy (krótki opis). Nazwa ta pojawia się na liście wyboru komend.  | 
                      
                        | 42 |   |      *   | 
                      
                        | 43 |   |      * @static  | 
                      
                        | 44 |   |      * @access public  | 
                      
                        | 45 |   |      * @return string  | 
                      
                        | 46 |   |      */  | 
                      
                        | 47 |   |     public static function getDescription() {  | 
                      
                        | 48 |   |   | 
                      
                        | 49 |   |         return Translator::translate('Moja nowa komenda');  | 
                      
                        | 50 |   |   | 
                      
                        | 51 |   |     }  | 
                      
                        | 52 |   |   | 
                      
                        | 53 |   |   | 
                      
                        | 54 |   |   | 
                      
                        | 55 |   |     /**  | 
                      
                        | 56 |   |      * getExpandedDescription  | 
                      
                        | 57 |   |      * Metoda zwracająca dłuższy opis komendy. Może zawierać znaki HTML.  | 
                      
                        | 58 |   |      *   | 
                      
                        | 59 |   |      * @param string $params - lista parametrów w formacie json (na razie nie jest obsługiwane)  | 
                      
                        | 60 |   |      * @static  | 
                      
                        | 61 |   |      * @access public  | 
                      
                        | 62 |   |      * @return string  | 
                      
                        | 63 |   |      */  | 
                      
                        | 64 |   |     public static function getExpandedDescription($params = NULL) {  | 
                      
                        | 65 |   |   | 
                      
                        | 66 |   |         return Translator::translate('Moja nowa komenda - rozszerzony opis');   | 
                      
                        | 67 |   |   | 
                      
                        | 68 |   |     }    | 
                      
                        | 69 |   |   | 
                      
                        | 70 |   |   | 
                      
                        | 71 |   |   | 
                      
                        | 72 |   |     /**  | 
                      
                        | 73 |   |      * getCommandApi  | 
                      
                        | 74 |   |      * Metoda zwracająca API komendy domyślnie jest implementowana przez AbsCommand i zwraca pustą tablicę.  | 
                      
                        | 75 |   |      * Format api to tablica asocjacyjna, której kluczami głównymi są nazwy parametrów (najczęściej 6 znakowe) a każdy z tych kluczy  | 
                      
                        | 76 |   |      * posiada definicję parametru również w postaci tablicy.  | 
                      
                        | 77 |   |      *  | 
                      
                        | 78 |   |      * Definicja parametru określana jest przez 3 atrybuty (klucze)  | 
                      
                        | 79 |   |      *  - (strint)label - krótka nazwa parametru  | 
                      
                        | 80 |   |      *  - (strint)dscrpt - dokładniejszy opis parametru  | 
                      
                        | 81 |   |      *  - (bool)required - oznaczenie czy parametr jest wymagany  | 
                      
                        | 82 |   |      *  | 
                      
                        | 83 |   |      * Dodatkowo w tej tablicy (głównej) może się pojawić klucz example, które podaje przykład listy parametrów - jednak od wersji   | 
                      
                        | 84 |   |      * 3.7 jest to zbędne gdyż parametry są definiowane w dedykowanym formularzu i przechowywane są w formacie json a nie csv!  | 
                      
                        | 85 |   |      *   | 
                      
                        | 86 |   |      * @param string $params - lista parametrów w formacie json (na razie nie jest obsługiwane)  | 
                      
                        | 87 |   |      * @static  | 
                      
                        | 88 |   |      * @access public  | 
                      
                        | 89 |   |      * @return array  | 
                      
                        | 90 |   |      */  | 
                      
                        | 91 |   |     public static function getCommandApi($params = NULL) {  | 
                      
                        | 92 |   |   | 
                      
                        | 93 |   |         $api = array(  | 
                      
                        | 94 |   |             'contid' => array(  | 
                      
                        | 95 |   |                 'label'     => Translator::translate('Kontrahent'),  | 
                      
                        | 96 |   |                 'dscrpt'    => Translator::translate('identyfikator kontrahenta (contacts.contid, <b>Lista kontrahentów -> Kolumna Id</b>) domyślnie jest przepisywany z kontekstu procedury'),  | 
                      
                        | 97 |   |                 'required'  => TRUE,                  | 
                      
                        | 98 |   |             ),      | 
                      
                        | 99 |   |             'example' => 'contid="1"'  | 
                      
                        | 100 |   |         );  | 
                      
                        | 101 |   |   | 
                      
                        | 102 |   |         return $api;  | 
                      
                        | 103 |   |   | 
                      
                        | 104 |   |     }  | 
                      
                        | 105 |   |   | 
                      
                        | 106 |   |   | 
                      
                        | 107 |   |   | 
                      
                        | 108 |   |     /**  | 
                      
                        | 109 |   |      * execute  | 
                      
                        | 110 |   |      * Metoda odpowiedzialna za wykonanie komendy.  | 
                      
                        | 111 |   |      * Poniżej znajdują się też najważniejsze rzeczy jakie trzeba zrobić!  | 
                      
                        | 112 |   |      *   | 
                      
                        | 113 |   |      * @param Bean $bean - obiekt formularza dokumentu albo sprawy do dyspozycji w tym obiekcie mamy wartości z pól   | 
                      
                        | 114 |   |      * danego formularza (tabele documents (wraz z dodatkowymi tabelami), processes).  | 
                      
                        | 115 |   |      * Wartości pobieramy metodą $bean->get('dscrpt');  | 
                      
                        | 116 |   |      * @param string $params - lista parametrów jaka została zdefiniowana dla tej komendy w konkretnej procedurze.  | 
                      
                        | 117 |   |      * @access public  | 
                      
                        | 118 |   |      * @return bool|CommandException  | 
                      
                        | 119 |   |      */  | 
                      
                        | 120 |   |     public function execute(Bean $bean, $params) {  | 
                      
                        | 121 |   |   | 
                      
                        | 122 |   |         // parsowanie parametrów oraz przekazanie kontekstu beana  | 
                      
                        | 123 |   |         // po wykonaniu tego mamy do dyspozycji atrybut $this->params zawierający tablicę sparsowanych parametrów   | 
                      
                        | 124 |   |         // (jeśli parametr jest w formacie SQL to w tablicy będzie dostępny wynik zapytania, jeśli np featid::89 to wartość cechy)  | 
                      
                        | 125 |   |         parent::parseParams($params, $bean);          | 
                      
                        | 126 |   |   | 
                      
                        | 127 |   |         // jeśli do działania komendy wymagane są jakieś parametry a użytkownik ich nie podał lub nie udało się  | 
                      
                        | 128 |   |         // ich sparsować to należ wykonać poniższe sprawdzenie  | 
                      
                        | 129 |   |         // Wyjątek CommandException przerywa działanie komedny!  | 
                      
                        | 130 |   |         if ((empty($params)) OR (!is_array($this->params))) {  | 
                      
                        | 131 |   |             $this->setMessage(Translator::translate('Komenda nie może zostać wykonana ze względu na brak parametrów lub nieudanej próbie ich utworzenia.'), 'WARNING');  | 
                      
                        | 132 |   |             $this->setMessage(Translator::translate('Komenda nie została wykonana.'), 'ERROR');  | 
                      
                        | 133 |   |             throw new CommandException($this);  | 
                      
                        | 134 |   |         }  | 
                      
                        | 135 |   |   | 
                      
                        | 136 |   |         // api komendy do weryfikacji parametrów  | 
                      
                        | 137 |   |         $api = self::getCommandApi();  | 
                      
                        | 138 |   |   | 
                      
                        | 139 |   |         // walidajca parametrów  | 
                      
                        | 140 |   |         if ((!array_key_exists('contid', $this->params)) OR (!is_numeric($this->params['contid']))) {  | 
                      
                        | 141 |   |             $this->setMessage(sprintf(Translator::translate('Komenda nie może zostać wykonana ze względu na brak parametru contid - %s.'), $api['contid']['dscrpt']), 'WARNING');  | 
                      
                        | 142 |   |             $this->setMessage(Translator::translate('Komenda nie została wykonana.'), 'ERROR');  | 
                      
                        | 143 |   |             throw new CommandException($this);  | 
                      
                        | 144 |   |         }  | 
                      
                        | 145 |   |   | 
                      
                        | 146 |   |         // klucz główny tabeli doc_id lub prc_id (kontekst procedury)  | 
                      
                        | 147 |   |         $keyval = $bean->getPkeyValue();  | 
                      
                        | 148 |   |   | 
                      
                        | 149 |   |         // $this->action - bean PSAction tabela proc_actions  | 
                      
                        | 150 |   |         // $this->stageBean - bean etapu StageOfProc tabela stages  | 
                      
                        | 151 |   |   | 
                      
                        | 152 |   |         // Zwraca obiekt (klasy Bean) definicji etapu jaki jest wykonywany czyli dane z stages_def - definicja etapu  | 
                      
                        | 153 |   |         $stage = $this->getStageDefObj();  | 
                      
                        | 154 |   |   | 
                      
                        | 155 |   |         // Zwraca obiekt (klasy Bean) procedury (tabela procedures)  | 
                      
                        | 156 |   |         $procedure = $this->getProcedure();  | 
                      
                        | 157 |   |   | 
                      
                        | 158 |   |         // Informacja o tym co zostało zrobione  | 
                      
                        | 159 |   |         $this->setMessage(sprintf(Translator::translate('Kontakt o identyfikatorze %d został dodany do dokumentu.'), $this->params['contid']), 'SUCCESS');  | 
                      
                        | 160 |   |   | 
                      
                        | 161 |   |         return TRUE;  | 
                      
                        | 162 |   |   | 
                      
                        | 163 |   |     }   | 
                      
                        | 164 |   |   | 
                      
                        | 165 |   | } // class ExampleCommand  | 
                      
                        | 166 |   |   | 
                      
                        | 167 |   | ?>  | 
                      
                        | 168 |   |   | 
                      
                        | 169 |   | }}}  | 
                      
                        | 170 |   |   | 
                      
                        | 171 |   | Przykładowe komendy są dostępne pod adresem http://support.edokumenty.eu/download/deployment/commands/  | 
                      
                      
                        |   | 3 | Strona została przeniesiona pod nowy adres [http://dokumentacja.edokumenty.eu/index.php/dokumentacja-online-systemu-edokumenty/przetwarzanie-danych/komendy/]  |