Source for file CMS_CHAPTER.phpclass

Documentation is available at CMS_CHAPTER.phpclass

  1. <?php
  2. /**
  3.   * openCSP class file CMS_CHAPTER.phpclass
  4.   *
  5.   * @project Open CSP-Management
  6.   * @package cms
  7.   *
  8.   * @author Peter Krebs <pitlinz@users.sourceforge.net>
  9.   * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  10.   *
  11.   * @since pk-19.06.2008
  12.   * @version $Id: CMS_CHAPTER.phpclass,v 1.9 2008/12/17 16:28:51 peterkrebs Exp $
  13.   */
  14.  
  15.     // ---------------------------------------------------------
  16.     // requirements
  17.     // ---------------------------------------------------------
  18.  
  19.     pcf_require_interface('INFA_CMS_CHAPTER',"cms/chapter/");
  20.     
  21.     pcf_require_class('CMS_TABLEOBJ',"cms/");
  22.     pcf_require_class('TMPL_CHAPTER',"cms/template/chapter/");
  23.     pcf_require_class('CMS_CHAPTER_STATE',"cms/chapter/");
  24.  
  25. /**
  26.   * openCSP class CMS_CHAPTER
  27.   *
  28.   * @project Open CSP-Management
  29.   * @package cms
  30.   *
  31.   * @author Peter Krebs <pitlinz@users.sourceforge.net>
  32.   * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  33.   *
  34.   * @since pk-19.06.2008
  35.   * @version $Id: CMS_CHAPTER.phpclass,v 1.9 2008/12/17 16:28:51 peterkrebs Exp $
  36.   */
  37. class CMS_CHAPTER extends CMS_TABLEOBJ implements INFA_CMS_CHAPTER
  38. {
  39.     // ---------------------------------------------------------------------------
  40.     // constants
  41.     // ---------------------------------------------------------------------------
  42.     
  43.     /**
  44.      * @constant string CLASS_SRC_FILE
  45.      */
  46.     const CLASS_SRC_FILE = __FILE__;
  47.  
  48.     // ---------------------------------------------------------------------------
  49.     // class (static)
  50.     // ---------------------------------------------------------------------------
  51.     
  52.     /*** class vars ------------------------------------------------------ */
  53.     
  54.     /**
  55.      * unit of work chapters
  56.      *
  57.      * @staticvar array $loadedChapters 
  58.      */
  59.     protected static $loadedChapters array();
  60.     
  61.     /*** class methods --------------------------------------------------- */
  62.  
  63.     /**
  64.      * uses self::$loadedChapters as unit of work and returns
  65.      * the chapter with $aId
  66.      *
  67.      * @param int $aId 
  68.      * @param boolean $debug 
  69.      * 
  70.      * @return CMS_CHAPTER 
  71.      */
  72.     public static function &getInstance($aId,$debug=False)
  73.     {
  74.         if ($debugechoDebugMethod(__FILE__,"static","CMS_CHAPTER::getInstance({$aId});");
  75.         
  76.         if (!isset(self::$loadedChapters[intval($aId)]|| !pcf_class_implements(self::$loadedChapters[intval($aId)],'INFA_CMS_CHAPTER'))
  77.         {
  78.             self::$loadedChapters[intval($aId)self::factoryFromId($aId,$debug);
  79.         }
  80.         
  81.         return self::$loadedChapters[intval($aId)];
  82.     }    
  83.     
  84.     /**
  85.      * returns if we already have an instance of $aId
  86.      *
  87.      * @param int $aId 
  88.      * @return boolean 
  89.      */
  90.     public static function isInstanced($aId)
  91.     {
  92.         if (isset(self::$loadedChapters[$aId]))
  93.         {
  94.             return pcf_class_implements(self::$loadedChapters[$aId],'INFA_CMS_CHAPTER');
  95.         }
  96.         return False;
  97.     }
  98.  
  99.     /**
  100.      * adds a newsletter to the unit of work
  101.      *
  102.      * @param NWL_CHAPTER $aLetter 
  103.      */
  104.     public static function setInstance(&$aChapter)
  105.     {
  106.         if (pcf_class_implements($aChapter,'INFA_CMS_CHAPTER'))
  107.         {
  108.             if (intval($aChapter->getId()))
  109.             {
  110.                 self::$loadedChapters[$aChapter->getId()$aChapter;
  111.             }
  112.         }
  113.     }    
  114.     
  115.     // ---------------------------------------------------------------------------
  116.     // object vars
  117.     // ---------------------------------------------------------------------------
  118.     
  119.     /*** compostion --------------------------------------------------- */
  120.     
  121.     /**
  122.      * @var TMPL_CHAPTER $myTemplate 
  123.      */
  124.     protected $myTemplate = Null;
  125.     
  126.     
  127.     /*** attributes  -------------------------------------------------- */
  128.     
  129.     /**
  130.       * @var string $myTable 
  131.       */
  132.     protected $myTable        = "T_CMS_CHAPTER";
  133.         
  134.     // ---------------------------------------------------------------------------
  135.     // factory / construct
  136.     // ---------------------------------------------------------------------------
  137.         
  138.     /**
  139.      * factories a chapter object
  140.      *
  141.      * @param int $aId 
  142.      * @param boolean $debug 
  143.      * 
  144.      * @todo add chapter types
  145.      * 
  146.      * @return CMS_CHAPTER 
  147.      */
  148.     public static function &factoryFromId($aId,$debug=False)
  149.     {
  150.         if ($debugechoDebugMethod(__FILE__,"static","CMS_CHAPTER::factoryFromId({$aId})");
  151.         
  152.         $obj_ret new CMS_CHAPTER();
  153.         $obj_ret->populateFromKeys(array('CHA_ID'=>intval($aId)));
  154.         return $obj_ret;        
  155.     }
  156.     
  157.  
  158.     
  159.     // ---------------------------------------------------------------------------
  160.     // getter / setter
  161.     // ---------------------------------------------------------------------------    
  162.  
  163.     /**
  164.       * @return int 
  165.       ***/
  166.     public function getId({
  167.         return intval($this->getDBField('CHA_ID'));
  168.     }    
  169.     
  170.     /**
  171.      * returns the order number
  172.      * 
  173.      * @return int 
  174.      */
  175.     public function getOrderNr()
  176.     {
  177.         return intval($this->getDBField('CHA_SORTORDER'));
  178.     }
  179.     
  180.     /**
  181.      * sets the sort order number
  182.      *
  183.      * @param int $aOrderNr 
  184.      */
  185.     public function setOrderNr($aOrderNr)
  186.     {
  187.         $this->setDBField('CHA_SORTORDER',intval($aOrderNr));
  188.     }
  189.         
  190.     /**
  191.      * returns the chapter state object
  192.      * 
  193.      * @return CMS_CHAPTER_STATE 
  194.      */
  195.     public function &getState()
  196.     {
  197.         return CMS_CHAPTER_STATE::getInstance($this->getDBField('CHA_STATE'));
  198.     }
  199.     
  200.     // ---------------------------------------------------------------------------
  201.     // db methods
  202.     // ---------------------------------------------------------------------------
  203.     
  204.     /**
  205.       * inserts a new row to the table
  206.       *
  207.       * @param boolean   $debug  show debug info
  208.       *
  209.       * @return int   returns the autoIncFld ID if exists or True on success
  210.       *
  211.       */
  212.     public function dbInsert($debug=False
  213.     {
  214.         if ($debugechoDebugMethod(__FILE__,get_class($this),"CMS_CHAPTER::dbInsert()");
  215.         
  216.         $this->setDBField('CHA_LASTCHANGE_AT',"CURRENT_TIMESTAMP");
  217.         $this->setDBField('CHA_LASTCHANGE_BY',OCSP_OBJ::currentUser()->getId());
  218.         $this->setDBField('CHA_CREATE_AT',"CURRENT_TIMESTAMP");
  219.         $this->setDBField('CHA_CREATE_BY',OCSP_OBJ::currentUser()->getId());
  220.         
  221.         $this->setDBField('PROJ_ID',$this->getMyPageObj()->getProjId());
  222.         $this->setDBField('PTMP_ID',$this->getMyTemplate()->getPageTemplateId());
  223.         $this->setDBField('CHA_OBJCLASS',get_class($this));
  224.         
  225.         $str_objInc $this->get_mySourceFile();
  226.         $str_objInc str_replace(__OCSP_PHPINCPATH__,"",$str_objInc);
  227.         $str_objInc str_replace(__OCSP_PROJECTPATH__,"",$str_objInc);
  228.         $this->setDBField('CHA_OBJINC',dirname($str_objInc_OCSP_DIRSEP_);
  229.         
  230.         if (intval($this->getOrderNr()) 1)
  231.         {
  232.             $str_query "SELECT MAX(CHA_SORTORDER)+1 FROM T_CMS_CHAPTER";
  233.             $str_query.= " WHERE PAG_ID=" $this->getPageId();
  234.             $this->setOrderNr(intval($this->getDBObj("r")->getOne($str_query)));
  235.         else {
  236.             $this->sort_check($debug);
  237.         }
  238.         
  239.         return parent::dbInsert($debug);
  240.     }
  241.     
  242.     
  243.     /**
  244.       * replaces a row in the table
  245.       *
  246.       * if the object has not been populated (!$this->populateTS)
  247.       * False is returned
  248.       *
  249.       * @param boolean $debug  show debug info
  250.       * @param boolean $ignorPopulated (if False the table MUST have been populated)
  251.       *
  252.       * @return boolean 
  253.       *
  254.       */
  255.     public function dbReplace($debug=False,$ignorPopulated=False
  256.     {  
  257.         if ($debugechoDebugMethod(__FILE__,get_class($this),"CMS_CHAPTER::dbReplace()");
  258.         
  259.         $this->setDBField('CHA_LASTCHANGE_AT',"CURRENT_TIMESTAMP");
  260.         $this->setDBField('CHA_LASTCHANGE_BY',OCSP_OBJ::currentUser()->getId());
  261.         
  262.         $this->setDBField('PROJ_ID',$this->getMyPageObj()->getProjId());
  263.         $this->setDBField('PTMP_ID',$this->getMyTemplate()->getPageTemplateId());
  264.         $this->setDBField('CHA_OBJCLASS',get_class($this));
  265.         
  266.         $str_objInc $this->get_mySourceFile();
  267.         $str_objInc str_replace(__OCSP_PHPINCPATH__,"",$str_objInc);
  268.         $str_objInc str_replace(__OCSP_PROJECTPATH__,"",$str_objInc);
  269.         $this->setDBField('CHA_OBJINC',dirname($str_objInc_OCSP_DIRSEP_);
  270.                 
  271.         $this->sort_check($debug);
  272.         
  273.         return parent::dbReplace($debug,$ignorPopulated);
  274.         
  275.     }
  276.         
  277.     public function sort_check($debug)
  278.     {
  279.         if ($debugechoDebugMethod(__FILE__,get_class($this),"CMS_CHAPTER::sort_check()");
  280.         
  281.            $str_query "SELECT * FROM T_CMS_CHAPTER";
  282.            $str_query.= " WHERE PAG_ID=" $this->getPageId();
  283.            $str_query.= "   AND CHA_SORTORDER = " $this->getOrderNr();
  284.            $str_query.= "   AND CHA_ID <> " $this->getId();
  285.            $str_query.= " ORDER BY CHA_SORTORDER";
  286.            
  287.            if ($arr_row $this->getDBObj("r")->quickQuery($str_query))
  288.            {
  289.                $this->sort_move(0,$this->getOrderNr());
  290.            }
  291.         
  292.     }
  293.     
  294.     /**
  295.      * moves the chapter (sortorder)
  296.      * 
  297.      * NOTE this method does save other chapters but not itself
  298.      * 
  299.      * @param int $moveDir (-1 down +1 up, 0 pos)
  300.      * @param int $movePos 
  301.      * @param boolean $debug 
  302.      * 
  303.      * @since pk-08-12-17
  304.      */
  305.     public function sort_move($moveDir,$movePos,$debug=False)
  306.     {
  307.         if ($debugechoDebugMethod(__FILE__,get_class($this),"CMS_CHAPTER::sort_move({$moveDir},{$movePos});");
  308.         
  309.         switch(true)
  310.         {
  311.             case ($moveDir 0):
  312.                 if ($this->getOrderNr(1)
  313.                 {
  314.                     $str_query "SELECT * FROM T_CMS_CHAPTER";
  315.                     $str_query.= " WHERE PAG_ID=" $this->getPageId();
  316.                     $str_query.= "   AND CHA_SORTORDER < " $this->getOrderNr();
  317.                     $str_query.= " ORDER BY CHA_SORTORDER DESC";
  318.  
  319.                     if ($arr_row $this->getDBObj("r")->quickQuery($str_query))
  320.                     {
  321.                         $obj_chapter CMS_CHAPTER::getInstance($arr_row['CHA_ID']);
  322.                         $obj_chapter->setOrderNr($this->getOrderNr());
  323.                         $obj_chapter->dbSave();
  324.                         $this->setOrderNr($arr_row['CHA_SORTORDER']);
  325.                         $this->dbSave();
  326.                     else {
  327.                         $this->setOrderNr(1);
  328.                         $this->dbSave();
  329.                     }
  330.                 }
  331.                 break;
  332.             case ($moveDir 0):
  333.                 $str_query "SELECT * FROM T_CMS_CHAPTER";
  334.                 $str_query.= " WHERE PAG_ID=" $this->getPageId();
  335.                 $str_query.= "   AND CHA_SORTORDER >= " $this->getOrderNr();
  336.                 $str_query.= "   AND CHA_ID <> " $this->getId();
  337.                 $str_query.= " ORDER BY CHA_SORTORDER";
  338.                
  339.                 if ($arr_row $this->getDBObj("r")->quickQuery($str_query))
  340.                 {                    
  341.                     if ($this->getOrderNr(== $arr_row['CHA_SORTORDER'])
  342.                     {
  343.                         $str_cmd "UPDATE T_CMS_CHAPTER SET CHA_SORTORDER=CHA_SORTORDER+1";
  344.                         $str_cmd.= " WHERE PAG_ID=" $this->getPageId();
  345.                         $str_cmd.= " AND CHA_SORTORDER >= " $this->getOrderNr();
  346.                         $str_cmd.= " AND CHA_ID <> " $this->getId();
  347.                         $this->getDBObj("w")->executeCmd($str_cmd);
  348.                         $arr_row['CHA_SORTORDER'intval($arr_row['CHA_SORTORDER']1;
  349.                     }
  350.                     $obj_chapter CMS_CHAPTER::getInstance($arr_row['CHA_ID']);
  351.                     $obj_chapter->setOrderNr($this->getOrderNr());
  352.                     $obj_chapter->dbSave();
  353.                     $this->setOrderNr($arr_row['CHA_SORTORDER']);
  354.                 
  355.                 break;
  356.             default:                
  357.                 $arr_chapters $this->getMyPageObj()->getChapterArr(0,False);
  358.                 
  359.                 $this->setOrderNr($movePos);
  360.                 $int_curPos 1;
  361.                 
  362.                 foreach($arr_chapters as &$obj_chapter)
  363.                 {
  364.                     if ($obj_chapter->getId(!= $this->getId())
  365.                     {
  366.                         if ($this->getOrderNr(== $int_curPos$int_curPos++;                        
  367.                         if ($obj_chapter->getOrderNr(!= $int_curPos)
  368.                         {
  369.                             $obj_chapter->setOrderNr($int_curPos);
  370.                             $obj_chapter->dbSave();                            
  371.                         }
  372.                         $int_curPos++;
  373.                     }
  374.                 }
  375.                 if (($this->getOrderNr 1|| ($this->getOrderNr($int_curPos))
  376.                 {
  377.                     $this->setOrderNr($int_curPos);
  378.                 }
  379.         }
  380.     }
  381.     
  382.     // ---------------------------------------------------------------------------
  383.     // online methods
  384.     // ---------------------------------------------------------------------------    
  385.     
  386.     /**
  387.      * returns if the template is online
  388.      * 
  389.      * - check state
  390.      * - check show dates
  391.      *
  392.      * @param boolean $debug 
  393.      * 
  394.      * @return boolean 
  395.      */
  396.       public function isOnline($debug=False)
  397.       {
  398.           if ($debugechoDebugMethod(__FILE__,get_class($this),"CMS_CHAPTER::isOnline()");
  399.           
  400.           if (!$this->getMyPageObj($debug)->isOnline())
  401.           {
  402.               if ($debugechoDebugMethod(__FILE__,__LINE__,"Page is offline");
  403.               return False;
  404.           }
  405.           
  406.         if (!$this->getState()->isOnline())
  407.         {
  408.             if ($debugechoDebugLine(__FILE__,__LINE__,"chapter has an offline state");
  409.             return False;
  410.         }
  411.           
  412.           pcf_require_class('OCSP_DATE','common/');
  413.           $obj_date new OCSP_DATE();
  414.           $obj_date->setDbString($this->getDBField('CHA_SHOWFROM'));
  415.           if ($obj_date->isInFutur())
  416.           {
  417.               if ($debugechoDebugLine(__FILE__,__LINE__,"chapter will come in future");
  418.               return False;
  419.           }
  420.           $obj_date->setDbString($this->getDBField('CHA_SHOWTILL'));
  421.           if ($obj_date->isInPast())
  422.           {
  423.               if ($debugechoDebugLine(__FILE__,__LINE__,"chapter is out of date");
  424.               return False;
  425.           }
  426.           
  427.           $str_showQuery $this->getDBField('CHA_SHOWQUERY');
  428.           if (!empty($str_showQuery))
  429.           {
  430.               $mix_ret OCSP_OBJ::defaultReadDBObj()->getOne("SELECT " $str_showQuery);
  431.               if (empty($mix_ret))
  432.               {
  433.                   if ($debugechoDebugLine(__FILE__,__LINE__,"Show Query: <br />SELECT " $str_showQuery "<br /> failed");
  434.                   return False;
  435.               }
  436.           }
  437.           
  438.           return True;
  439.           
  440.       }
  441.     
  442.     // ---------------------------------------------------------------------------
  443.     // user rights
  444.     // ---------------------------------------------------------------------------    
  445.       
  446.       /**
  447.        * returns if a user can show the chapter
  448.        * 
  449.        * NOTE does not check if the chapter is online
  450.        *
  451.        * @todo allow editors to ?
  452.        * 
  453.        * @param boolean $debug 
  454.        * 
  455.        * @return boolean 
  456.        */
  457.       public function curUserCanShow($debug=False)
  458.       {
  459.           if ($this->getMyPageObj($debug)->curUserCanOpen($debug))
  460.           {
  461.             if (OCSP_OBJ::currentUser()->isGroupMember($this->getDBField('CHA_SHOWGROUP')))
  462.             {
  463.                 return True;                      
  464.             
  465.             else {
  466.                 echoDebugLine(__FILE__,__LINE__,"user can not open page");
  467.                 return False;
  468.             }
  469.             
  470.             return False;
  471.       }
  472.       
  473.       public function curUserCanEdit($debug=False)
  474.       {
  475.           if ($this->getMyPageObj()->curUserCanEdit())
  476.           {
  477.               $int_grpId $this->getState()->getEditGroup();
  478.               switch(TRUE)
  479.               {
  480.                   case (_OCSP_GROUP_PROJ_ADMINGRP_ == $int_grpId):
  481.                       return $this->getMyProject()->curUserIsAdmin();    
  482.                 case (_OCSP_GROUP_PROJ_EDITOR_GRP_ == $int_grpId):    
  483.                     return $this->getMyProject()->curUserIsEditor();
  484.                 case (_OCSP_GROUP_PROJ_AUTHOR_GRP_ == $int_grpId):
  485.                     return $this->getMyProject()->curUserIsAuthor();
  486.                 default:
  487.                     return OCSP_OBJ::currentUser(True)->isGroupMember($int_grpId);                              
  488.               }
  489.           }
  490.       }
  491.  
  492.     // ---------------------------------------------------------------------------
  493.     // templates
  494.     // ---------------------------------------------------------------------------    
  495.       
  496.       /**
  497.        * returns the chapter template id
  498.        *
  499.        * @return int 
  500.        */
  501.       public function getTemplateId()
  502.       {
  503.           return intval($this->getDBField('CTMP_ID'));    
  504.       }
  505.       
  506.       /**
  507.        * returns the chapter template
  508.        *
  509.        * @param boolean $debug 
  510.        * @return TMPL_CHAPTER 
  511.        */
  512.       public function getMyTemplate($debug=False)
  513.       {
  514.           if ($debugechoDebugMethod(__FILE__,get_class($this),"CMS_CHAPTER::getTemplate()");
  515.           if (!pcf_is_instance_of($this->myTemplate,'TMPL_CHAPTER'))
  516.           {
  517.               $this->myTemplate = TMPL_CHAPTER::getInstance($this->getTemplateId());              
  518.           }
  519.           return $this->myTemplate;          
  520.       }
  521.       
  522.       
  523.       /**
  524.        * sets the template object AND column CTMP_ID
  525.        *
  526.        * @param TMPL_CHPATER $aTemplate 
  527.        * 
  528.        */
  529.       public function setMyTemplate(&$aTemplate)
  530.       {
  531.           $this->myTemplate = $aTemplate;
  532.           $this->setDBField('CTMP_ID',$this->myTemplate->getId());
  533.       }
  534.       
  535.    /**
  536.       * replaces dbGetForm and returns a OCSP_FORM
  537.       *
  538.       * @param int $mode 
  539.       * @param mixed $form (string) form name (int) form id
  540.       * @param boolean $debug 
  541.       *
  542.       * @return OCSP_FORM 
  543.       *
  544.       * @requires CMS_CHAPTER_FORM.phpclass
  545.       *
  546.       * @since pk-08-01-14
  547.       *
  548.       * @todo $frmClass require check
  549.       */
  550.     public function &getForm($mode=FRM_MODE_READONLY,$form='',$frmClass='CMS_CHAPTER_FORM',$debug=FALSE)
  551.     {
  552.         if ($debugechoDebugMethod(__FILE__,get_class($this),"CMS_CHAPTER::getForm()");
  553.                     
  554.         if (!$this->getMyTemplate($debug))
  555.         {
  556.             if ($debugechoDebugLine(__FILE__,__LINE__,"no template found");
  557.             
  558.             if (!class_exists('CMS_CHAPTER_FORM'))
  559.             {
  560.                 require_once dirname(__FILE__)._OCSP_DIRSEP_."CMS_CHAPTER_FORM.phpclass";
  561.             }            
  562.             $obj_form=parent::getForm($mode,$form,'CMS_CHAPTER_FORM',$debug);
  563.         else {
  564.             
  565.             if ($debugechoDebugLine(__FILE__,__LINE__,"template found: " $this->myTemplate->getId());
  566.             
  567.             $this->myTemplate->setConttable($this->myTable);
  568.             $obj_form=$this->myTemplate->getChapterForm($form,$frmClass,$debug);
  569.             $obj_form->setFrmMode($mode);    
  570.         }
  571.         
  572.         if (!pcf_class_implements($obj_form,'INFA_OCSP_FORM'))
  573.         {
  574.             throw new Exception(_OCSP_EXCEP_NOFORM_);
  575.         }
  576.         
  577.         if ($debugechoDebugLine(__FILE__,__LINE__,"Form loaded");
  578.         
  579.         $obj_form->setMyTblObj($this);
  580.         if (!empty($this->myClassSrcFile))
  581.         {
  582.             $obj_form->setTblObjInc($this->getClassInclude());
  583.             $obj_form->setTblObjClass(get_class($this));
  584.         }
  585.         return $obj_form;        
  586.     }
  587.       
  588.       
  589.     // ---------------------------------------------------------------------------
  590.     // rendering
  591.     // ---------------------------------------------------------------------------    
  592.       
  593.       /**
  594.        * renders the html content of the chapter
  595.        *
  596.        * @param boolean $debug 
  597.        * 
  598.        * @return string (html)
  599.        */
  600.       public function render($debug=False)
  601.       {         
  602.           if ($debugechoDebugMethod(__FILE__,get_class($this),"CMS_CHAPTER::render()");
  603.                     
  604.         if ($this->myObjValsPopulateTS < (time(ini_get('max_execution_time')))
  605.         
  606.             $this->populateObjVals();
  607.         }
  608.  
  609.         $arr_vals array();
  610.         
  611.         if ($this->myProjObj)
  612.         {
  613.             $arr_vals array_merge($arr_vals,$this->myProjObj->getDBVal());
  614.         }
  615.         
  616.         $arr_vals array_merge($arr_vals,$this->getMyMenuNode()->getDBVal());
  617.         $arr_vals array_merge($arr_vals,$this->getMyPageObj()->getDBVal());
  618.         $arr_vals array_merge($arr_vals,$this->getDBVal());
  619.         
  620.         if ($debugechoDebugLine(__FILE__,__LINE__,"Chapter Template Values: <pre>" print_r($arr_vals,True)  "</pre>" );
  621.         
  622.         return $this->getMyTemplate($debug)->renderToHtml($arr_vals,$debug);          
  623.               
  624.       }
  625.       
  626. }
  627.  
  628. ?>

Documentation generated on Thu, 08 Jan 2009 17:38:34 +0100 by phpDocumentor 1.4.0a2