UpdateDatabase.php
[Pman.Xtuple] / UpdateDatabase.php
1 <?php
2
3 /**
4  *
5  * Setup the core values in the database
6  *
7  *
8  */
9
10 require_once 'Pman.php';
11 class Pman_Xtuple_UpdateDatabase extends Pman
12 {
13     
14     static $cli_desc = "Update SQL - Beta";
15     
16     static $cli_opts = array(
17         'source' => array(
18             'desc' => 'Source directory for json files.',
19             'short' => 'f',
20             'default' => '',
21             'min' => 1,
22             'max' => 1,
23         ),
24         
25         
26         
27         'base' => array(
28             'desc' => 'Base Currency',
29             'default' => '',
30             'short' => 'b',
31             'min' => 1,
32             'max' => 1,
33             
34         ),
35  
36         'json-accnt' => array(
37             'desc' => 'Accounts JSON file',
38             'default' => '',
39             'min' => 1,
40             'max' => 1,
41             
42         ),
43         'json-curr-symbol' => array(
44             'desc' => 'Currency Symbols JSON file',
45             'default' => '',
46             'min' => 1,
47             'max' => 1,
48             
49         ),
50
51         'json-location' => array(
52             'desc' => 'Location JSON file',
53             'default' => '',
54             'min' => 1,
55             'max' => 1,
56             
57         ),
58         'json-terms' => array(
59             'desc' => 'Terms  JSON file',
60             'default' => '',
61             'min' => 1,
62             'max' => 1,
63             
64         ),
65         
66     );
67     
68     var $cli = false; 
69     function getAuth() {
70         
71         
72         $ff = HTML_FlexyFramework::get();
73         if (!empty($ff->cli)) {
74             $this->cli = true;
75             return true;
76         }
77         die("NOT ALLOWED");
78     }
79     
80     // called to ensure options are correct.
81     // before any data is imported / started..
82     function checkOpts()
83     {
84         $core_opts = HTML_FlexyFramework::get()->page->opts;
85         if (!empty($core_opts['init']) && empty($core_opts['base'])) {
86             die("--base=XXX  must be set when using --init ");
87         }
88         
89         
90         
91     }
92     
93     
94     function get($k = '',$opt)
95     {
96         $k = strtolower($k);
97         
98         $this->opts = $opt;
99         
100         
101         
102         
103         
104         if($k == 'accnt'){
105             if(empty($opt['source'])){
106                 die("Missing Source directory for account json files! Try -f [JSON file path] \n");
107             }
108             
109             if (!file_exists($opt['source'])) {
110                 die("can not found account json file : {$opt['source']} \n");
111             }
112
113             $accounts = json_decode(file_get_contents($opt['source']),true);
114             
115             DB_DataObject::factory('accnt')->importFromArray($this, $accounts);
116             
117             die("DONE! \n");
118         }
119         
120         if($k == 'curr_symbol'){
121             if(!empty($opt['base'])){
122                 DB_DataObject::factory('curr_symbol')->setBase($this, $opt['base']);
123                 die("DONE! \n");
124             }
125             
126             if(!empty($opt['source'])){
127                 
128                 if (!file_exists($opt['source'])) {
129                     die("can not found currency json file : {$opt['source']} \n");
130                 }
131                 
132                 $currencies = json_decode(file_get_contents($opt['source']),true);
133                 
134                 DB_DataObject::factory('curr_symbol')->importFromArray($this, $currencies);
135                 die("DONE! \n");
136             }
137             
138             die("Missing Base Currency or Source directory for Currency json files! Try -b [base currency] or -f [JSON file path]\n");
139         }
140         
141         if($k == 'location'){
142             if(empty($opt['source'])){
143                 die("Missing Source directory for location json file! Try -f [JSON file path] \n");
144             }
145             
146             if (!file_exists($opt['source'])) {
147                 die("can not found location json file : {$opt['source']} \n");
148             }
149             
150             $locations = json_decode(file_get_contents($opt['source']),true);
151             
152             DB_DataObject::factory('location')->importFromArray($this, $locations);
153             
154             die("DONE! \n");
155         }
156         
157         if($k == 'terms'){
158             if(empty($opt['source'])){
159                 die("Missing Source directory for terms json file! Try -f [JSON file path] \n");
160             }
161             
162             if (!file_exists($opt['source'])) {
163                 die("can not found terms json file : {$opt['source']} \n");
164             }
165             
166             $terms = json_decode(file_get_contents($opt['source']),true);
167             
168             DB_DataObject::factory('terms')->importFromArray($this, $terms);
169             
170             die("DONE! \n");
171         }
172         
173         
174         $this->updateData($k);
175         
176     }
177     
178     
179     
180     
181     function updateData($k='') {
182         //DB_DataObject::debugLevel(1);
183         $tables = empty($k) ? array(
184                 
185 //                'curr_symbol', //?? fixme
186                 'custtype',
187                 'plancode',
188                 'prodcat',
189                 'classcode',
190                 'curr_rate',
191                 'char',
192                 'taxzone',
193                 'taxtype',
194                 'expcat',
195 //                'terms', //?? add
196                 
197 //                'location', //?? just check hat one exists.
198         ) : array($k);
199         
200         
201         $core_opts = HTML_FlexyFramework::get()->page->opts;
202         if (!empty($core_opts['init'])) {
203             DB_DataObject::factory('curr_symbol')->setBase($this, $core_opt['base']);
204         }
205         
206         
207         
208         
209         foreach($tables as $t) {
210             $cs = DB_DataObject::factory($t);
211             $cs->initDatabase($this);
212         
213         }
214         
215         // update data is called from main
216         
217         
218         
219         
220     }
221     
222     
223     
224 }