Uncommited changes synced
[Pman.Cms] / UpdateTemplates.php
index 4b39067..c76ca09 100644 (file)
@@ -31,7 +31,7 @@ class Pman_Cms_UpdateTemplates extends Pman
             
         ),
         'debug' => array(
-            'desc' => 'Turn on debuggin',
+            'desc' => 'Turn on debugging',
             'default' => '',
             'short' => 'd',
             'min' => 1,
@@ -56,7 +56,7 @@ class Pman_Cms_UpdateTemplates extends Pman
         return true;
     }
      
-    function get($tbl, $opts)
+    function get($tbl, $opts=array())
     {
         PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
         
@@ -80,6 +80,10 @@ class Pman_Cms_UpdateTemplates extends Pman
     function fixOldNames()
     {
         $ff = HTML_FlexyFramework::get();
+        if (empty($ff->Pman_Cms)) {
+            $this->jerr("config[Pman_Cms] is not set");
+        }
+        
         $base = $ff->Pman_Cms['project_name'];
         $tdirs = $ff->Pman_Cms['templateDir'];
         if (!is_array($tdirs)) {
@@ -117,7 +121,7 @@ class Pman_Cms_UpdateTemplates extends Pman
             $page_templates[$pg['template']] =1;
         }
         
-        //print_R($pages); exit;;
+       
         
         
         
@@ -130,7 +134,7 @@ class Pman_Cms_UpdateTemplates extends Pman
             $pages[] = $pg;
         }
         
-        
+        //print_R($pages); exit;;
         
          
         // now generate all the templates..
@@ -145,10 +149,12 @@ class Pman_Cms_UpdateTemplates extends Pman
                 continue;
             }
             
+            
             $pages[$i]['template_object'] = $tp->syncTemplatePage($pg);
+           // print_r($pages[$i]['template_object'] );exit;
+            
         }
         
-        //print_R($pages); exit;
         $pgo = DB_DataObject::factory('cms_page');
         foreach($pages as $i=>$pg) {
             
@@ -163,22 +169,22 @@ class Pman_Cms_UpdateTemplates extends Pman
             }
             $cur_els = array();
             foreach($pg['template_object']->elements as $e) {
-//                print_r($pg);
-//                print_r($e);exit;
                 $cur_els[] = $e->id;
                 $e->syncTemplateFromPage($pg);
             }
-            // now find all elements of this page, that are not in cur_els'
-            // and disabled them?
-            DB_DataObject::debugLevel(1);
-            $cur_pg = DB_DataObject::factory('cms_page');
-            $cur_pg->parent_id = $pg->page->id;
-//            $cur_
-//            $cur_pg->whereAddIn('!element_id', $cur_els, 'int');
-            $cur_pg->whereAdd("
-                cms_page.element_id NOT IN (".  implode(',', $cur_els) .")");
-//            print_r($cur_pg->fetchAll());
-            exit;
+            
+            // #2012 disable the unused item.......
+            // needs testing
+            if(!empty($pg['page']->id)){
+                $cur_pg = DB_DataObject::factory('cms_page');
+                $cur_pg->parent_id = $pg['page']->id;
+                $cur_pg->whereAddIn("!cms_page.element_id", $cur_els, 'int');
+                foreach($cur_pg->fetchAll() as $unused){
+                    $old = clone($unused);
+                    $unused->is_deleted = 1; 
+                    $unused->update($old);
+                }
+            }
         }
         
         $opts = HTML_FlexyFramework::get()->Pman_Cms;
@@ -195,11 +201,27 @@ class Pman_Cms_UpdateTemplates extends Pman
         }
         $ff = HTML_FlexyFramework::get();
         $opt_lang = empty($ff->Pman_Core_I18n) ? array( 'l' => array()) : $ff->Pman_Core_I18n;
+        
+        $langs = $opt_lang['l'] ;
+        // see what languages are in there already!?
+        $cl = DB_DataObject::factory('cms_templatestr');
+        $cl->selectAdd();
+        $cl->selectAdd('distinct(lang) as lang');
+        $cl->whereAdd("lang != ''");
+        $dblangs = $cl->fetchAll('lang');
+        foreach($langs as $l) {
+            if (!in_array($$l, $dblangs)) {
+                $dblangs[] = $l;
+            }
+        }
+         
+        
+        
         // templates.. -- assume the above does the template syncing..
         //DB_DataObject::DebugLevel(1);
         echo "Sync the Languages template.....\n";
         
-        foreach($opt_lang['l'] as $l) {
+        foreach($dblangs as $l) {
             echo "Sync $l Language.....\n";
             $tps = DB_DataObject::factory('cms_templatestr');
             $tps->syncLang($l); /// this should be configured somewhere..
@@ -274,7 +296,7 @@ class Pman_Cms_UpdateTemplates extends Pman
                          
                      foreach($prefixes as $pr) {
                          
-                         
+                        // print_r($x);
                          
                          $add =  array(
                              'base' => $pr,
@@ -296,7 +318,7 @@ class Pman_Cms_UpdateTemplates extends Pman
              
         }   
         
-        
+        //print_r($ret);exit;
        
 
         $dh = opendir($class_dir);
@@ -339,6 +361,12 @@ class Pman_Cms_UpdateTemplates extends Pman
             $cls = $class_base .'_' . str_replace('/', '_', preg_replace('/.php$/', '', $fn));
             if (!class_exists($cls)) {
                 echo "SKIP - not a PHP class $cls\n";
+                continue;
+            }
+            
+            if (!is_a($cls,'HTML_FlexyFramework_Page')) {
+                echo "SKIP - not a PHP class $cls\n";
+                continue;
             }
             
             $x = new $cls();
@@ -379,7 +407,7 @@ class Pman_Cms_UpdateTemplates extends Pman
         echo "TSCAN base= $base subdir =$subdir\n ";
         $ff = HTML_FlexyFramework::get();
         
-        $generate_cms_page_for = $ff->Pman_Cms['generate_cms_page_for'];
+        $generate_cms_page_for = isset($ff->Pman_Cms['generate_cms_page_for']) ? $ff->Pman_Cms['generate_cms_page_for'] : false;
         
         
         $tdirs = $ff->Pman_Cms['templateDir'];