5 * simlar to Pman/Admin/UpdateBjsTemplates...
8 * scans JS (for ._("...") )
13 require_once 'Pman/Admin/UpdateBjsTemplates.php';
14 class Pman_Cms_UpdateBjsTemplates extends Pman_Admin_UpdateBjsTemplates
17 static $cli_desc = "Update BJS Templates";
19 static $cli_opts = array();
28 $ff = HTML_FlexyFramework::get();
29 if (!empty($ff->cli)) {
37 function get($tbl, $opts=array())
39 PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
49 $this->syncLanguage();
58 $ff = HTML_FlexyFramework::get();
60 if (empty($ff->Pman_Cms)) {
61 $this->jerr("config[Pman_Cms] is not set");
65 foreach(explode(',', $ff->Pman_Cms['project_name']) as $base) {
66 $this->scanFilesBase($base);
71 * this does all the scan work.
72 * it's pretty simple (does not do subdirectories...)
74 * only supports BJS / PHP / JS currently.
79 function scanFilesBase($base)
82 $ff = HTML_FlexyFramework::get();
84 $dir = $ff->Pman_Cms['site_dir'][$base];
88 $tp = DB_DAtaObject::Factory('cms_template');
93 $this->jerr("could not open dir: config[Pman_Cms] = " . $dir);
94 return $ret; // something went wrong!?
97 while (($fn = readdir($dh)) !== false) {
99 if(empty($fn) || $fn[0] == '.') {
102 $fp = $dir . '/'. $fn;
110 if (preg_match('/\.js$/', $fn) && !file_exists($dir.'/'. preg_replace('/\.js$/', '.bjs', $fn))) {
111 $temp = $tp->syncJsWords(array(
113 'template_dir' => $dir,
121 if (preg_match('/\.php$/', $fn)) {
122 $temp = $tp->syncPhpGetText(array(
124 'template_dir' => $dir,
133 if (!preg_match('/\.bjs$/', $fn)){
136 // var_dump($fn);exit;
138 echo "Processing {$fn} \n";
144 $template = DB_DataObject::factory('cms_template');
145 $template->setFrom(array(
153 if($template->find(true)){
154 $o = clone ($template);
156 $template->filetype = 'bjs';
158 $template->updated = $template->sqlValue("NOW()");
161 $ids[] = $template->insert() ;
163 $template->update($o);
169 $data = json_decode(file_get_contents($base . '/' . $fn), true);
171 $template->words = empty($data['strings']) ? array() : $data['strings'];
173 $x = DB_DataObject::Factory('cms_templatestr');
174 $x->syncTemplateWords($template, false);
178 $del = DB_DataObject::factory('cms_template');
179 $del->whereAddIn('!id', $ids, 'int');
180 $del->view_name = $base;
181 $del->whereAddIn('filetype' , array( 'php', 'bjs' , 'js' ), 'string');
182 $delids = $del->fetchAll('id');
184 DB_DataObject::factory('core_template')->query(
185 'update cms_template set is_deleted = 1 where id in('. implode(',', $delids). ')'
192 function scanTables()
194 $ff = HTML_FlexyFramework::get();
196 if (empty($ff->Pman_Cms)) {
197 $this->jerr("config[Pman_Cms] is not set");
200 if(isset($ff->Pman_Cms['DataObjects_Cms_templatestr']['tables'])){
201 $cts = DB_DataObject::factory('cms_templatestr');
204 echo "Sync tables.....\n";
207 foreach($ff->Pman_Cms['DataObjects_Cms_templatestr']['tables'] as $table=>$cols){
208 $t = DB_DataObject::factory($table);
209 foreach($t->fetchAll() as $d) {
210 $cts->onTableChange($this, $d, 'update');
216 function syncLanguage()
218 $ff = HTML_FlexyFramework::get();
220 if (empty($ff->Pman_Cms) || empty($ff->Pman_Cms['languages']) || !is_array($ff->Pman_Cms['languages']) ) {
221 $this->jerr("config[Pman_Cms][languages] is not set");
226 echo "Sync the Languages template.....\n";
229 foreach($ff->Pman_Cms['languages'] as $l) {
231 echo "Sync $l Language.....\n";
234 $tps = DB_DataObject::factory('cms_templatestr');
235 $tps->syncLang($l); /// this should be configured somewhere..