UpdateDatabase.php
[Pman.Cms] / UpdateDatabase.php
1 <?php
2
3 /**
4  *
5  * This applies database files from
6  * a) OLD - {MODULE}/DataObjects/XXXX.{dbtype}.sql
7  *
8  * b) NEW - {MODULE}/sql/XXX.sql (SHARED or translable)
9  *  and {MODULE}/{dbtype}/XXX.sql (SHARED or translable)
10  *
11  *
12  */
13
14 require_once 'Pman.php';
15 class Pman_Cms_UpdateDatabase extends Pman
16 {
17     
18     static $cli_desc = "Update SQL - Beta";
19  
20     static $cli_opts = array(
21         'template' => array(
22             'desc' => 'Compile a specific template',
23             'default' => '',
24             'short' => 't',
25             'min' => 1,
26             'max' => 1,
27             
28         ),
29         'debug' => array(
30             'desc' => 'Turn on debuggin',
31             'default' => '',
32             'short' => 'd',
33             'min' => 1,
34             'max' => 1,
35             
36         )
37     );
38     
39     var $cli = false;
40     function getAuth() {
41         
42         
43         $ff = HTML_FlexyFramework::get();
44         if (!empty($ff->cli)) {
45             $this->cli = true;
46             return true;
47         }
48         
49         parent::getAuth(); // load company!
50         $au = $this->getAuthUser();
51         if (!$au || $au->company()->comptype != 'OWNER') {
52             $this->jerr("Not authenticated", array('authFailure' => true));
53         }
54         $this->authUser = $au;
55         return true;
56     }
57      
58     function get($tbl, $opts)
59     {
60         if (!empty($opts['debug'])) {
61             DB_DataObject::debugLevel(1);
62             
63         }
64         if (!empty($opts['template'])) {
65              $tp = DB_DataObject::factory('cms_template');
66              //$opts = HTML_FlexyFramework::get()->Pman_Cms;
67              $tp->syncTemplate($opts['template'], true, '');
68              die("done");
69             
70         }
71         
72         $this->updateData();
73         if (!empty($tbl)) {
74             $d = DB_DataObject::factory($tbl);
75             $d->initDatabase($this);
76         }
77         
78     }
79     
80     function updateData()
81     {
82         $enum = DB_DataObject::Factory('core_enum');
83         $enum->initEnums(
84             array(
85                 array(
86                     'etype' => '',
87                     'name' => 'cms_page_type',
88                     'display_name' =>  'Cms Page Type',
89                     'cn' => array(
90                         array(
91                             'name' => 'page',
92                             'display_name' => 'Pages',
93                         ),
94                         array(
95                             'name' => 'element',
96                             'display_name' => 'Elements',
97                         ),
98                         array(
99                             'name' => 'blog',
100                             'display_name' => 'Blog Entries',
101                         ),
102                         array(
103                             'name' => 'menu',
104                             'display_name' => 'Menu Tree',
105                         ),
106                         array(
107                             'name' => 'category',
108                             'display_name' => 'Category',
109                         ),
110                     )
111                 )
112             )
113         );
114        
115         $p = DB_DataObject::Factory('cms_page');
116         $p->page_type_id = 0;
117         $all = $p->fetchAll();
118         foreach($all as $t) {
119             $t->convertOld();
120         }
121        
122         $opts = HTML_FlexyFramework::get()->Pman_Cms;
123         
124         $tp = DB_DataObject::factory('cms_template');
125         $tp->syncTemplateDir(false, '', true);
126             //if (isset($q['lang'])) {
127             //    $this->syncLang($q['lang']);
128             //}
129         
130         $page = DB_DataObject::factory('cms_page');
131         $page->initData();
132         
133         
134         // templates.. -- assume the above does the template syncing..
135         //DB_DataObject::DebugLevel(1);
136         echo "Sync the Languages template.....\n";
137         $x = DB_Dataobject::Factory('cms_templatestr');
138         $x->selectAdd();
139         $x->selectAdd('distinct(lang) as lang');
140         $x->whereAdd("lang != ''");
141         if(!$x->count()){ 
142             echo "Sync default Language.....\n";
143             $tps = DB_DataObject::factory('cms_templatestr');
144             $tps->syncLang('en'); /// this should be configured somewhere..
145             return;
146         }
147         foreach( $x->fetchAll('lang') as $l) {
148             echo "Sync $l Language.....\n";
149             $tps = DB_DataObject::factory('cms_templatestr');
150             $tps->syncLang($l); /// this should be configured somewhere..
151         }
152         
153         
154         //sync the tables to cms_templatestr
155         if(isset($opts['DataObjects_Cms_templatestr']['tables'])){
156             $cts = DB_DataObject::factory('cms_templatestr');
157             
158             foreach($opts['DataObjects_Cms_templatestr']['tables'] as $table=>$cols){
159                 $t =     DB_DataObject::factory($table);
160                 foreach($t->fetchAll() as $d) {
161                     $cts->onTableChange($this, $t, 'update');
162                 }
163             }
164                
165
166
167
168
169
170 //            if()
171 //        }
172     }
173     
174 }