DatabaseColumns.php
[Pman.Core] / DatabaseColumns.php
1 <?php
2
3 require_once 'Pman.php';
4
5 class Pman_Core_DatabaseColumns extends Pman {
6     
7     
8     function getAuth()
9     {
10         parent::getAuth(); // load company!
11         $au = $this->getAuthUser();
12        
13         if (!$au) {  
14             $this->jerr("Not authenticated", array('authFailure' => true));
15         }
16         if (!$au->pid()   ) { // not set up yet..
17             $this->jerr("Not authenticated", array('authFailure' => true));
18         }
19         
20         
21         $this->authUser = $au;
22         return true;
23     }
24     
25     function get($table) {
26         $d = DB_DAtaObject::Factory($table);
27         if (method_exists($d, 'availableColumns')) {
28             $cols = $d->availableColumns();
29         } else {
30             
31             $re = $d->autoJoin();
32             //echo '<PRE>';print_r($re);
33             $cols = $re['cols'] ;
34             
35             
36             $types = array();
37             $schemas = array($table => $d->table());
38             
39             foreach($cols as $name=>$table_col) {
40                 list($tbl, $col) = explode('.', $table_col);
41                 if (!isset($schemas[$tbl])) {
42                     $schemas[$tbl] = DB_DataObject::Factory($tbl)->table();
43                 }
44                 $types[$name] = $schemas[$tbl][$col];
45                 
46                 
47             }
48              
49             foreach($re['join_names'] as $c=>$f) {
50                 $cols[$c] = $f;
51             }
52             
53         }
54         
55         
56         
57         foreach($cols as $c=>$f) {
58             $ret[]  = array(
59                 'name' => $c,
60                 'val' => $f,
61                 'type' => isset($types[$c]) ? $this->typeToName($types[$c]) : -1,
62             );
63             
64         }
65         
66         $this->jdata($ret);
67     }
68     
69     function typeToName($t)
70     {
71         switch(true) {
72             case ($t & 64): return 'text';
73             case ($t & 32): return 'text';
74             case ($t & 4 && $t & 8): return 'datetime';
75             case ($t & 4): return 'date';
76             case ($t & 8): return 'time';
77             case ($t & 16): return 'bool';
78             case ($t & 2): return 'varchar';
79             case ($t & 1): return 'number';
80                 
81         }
82         return '??';
83         
84     }
85 }