Source for file forms.phpinc

Documentation is available at forms.phpinc

  1. <?php
  2. /**
  3.   * forms.phpinc
  4.   *
  5.   * provides database settings and functions to handle DBMS_FORMS
  6.   * uses $GLOABLS['DBMS_FORM'] to store the forms in an array
  7.   * only pointers are returned in the public functions
  8.   *
  9.   * @project    Open CSP-Management
  10.   * @package    forms
  11.   * @category   dbms_form
  12.   *
  13.   * @author     Peter Krebs <p.krebs@lvus.at>
  14.   * @copyright  (c) 2002-2003 by Peter Krebs and Landesverlag Unternehmensservice
  15.   * @license    http://opensource.org/licenses/gpl-license.php GNU Public License
  16.   *
  17.   * @global array $GLOBALS['DBMS_NAMED_FORMS'] array of loaded forms with frmName as key
  18.   * @global array $GLOBALS['DBMS_FORMS']       array of loaded forms with frmid   as key
  19.   *
  20.   * @since  pk-05-02-16 moved form php/db to php/db/forms
  21.   *
  22.   * @deprecated since pk-08-06-23
  23.   */
  24.  
  25.     global $OCSP_OBJ;
  26.  
  27.     if (!isset($debug)) $debug=FALSE;
  28.  
  29.  
  30.     if (!isset($GLOBALS['PHPFORMPATH'])) {
  31.         $GLOBALS['PHPFORMPATH']__OCSP_PHPINCPATH__ ."db/forms/";
  32.     }
  33.  
  34.  
  35.     /* NOT REAL DATATYPES BUT USED IN DBMS_FORM */
  36.  
  37.     define ('DBMS_FLDTYPE_SELECTLIST',"selectlist");
  38.     define ('DBMS_FLDTYPE_HTMLCODE',"htmlcode");
  39.     
  40.     /**
  41.      * @const string DBMS_NO_DBFIELD used for fields with no table
  42.      * @since pk-03-12-15
  43.      */
  44.     if (!defined('DBMS_NO_DBFIELD')) define ('DBMS_NO_DBFIELD',"__NO-DBFIELD__");
  45.  
  46.  
  47.     global $OCSP_OBJ;
  48.  
  49.     $GLOBALS['DBFLDTYPES'][]="layout";
  50.     
  51.     $str_cachePath OCSP_CONF::getInstance('OCSP')->getValue('OBJCACHEPATH');
  52.     if ($debugechoDebugLine(__FILE__,__LINE__,"cache: {$str_cachePath}");
  53.     
  54.     if (file_exists($str_cachePath."frmFldsDefinition.cache")) {
  55.         require_once $str_cachePath."frmFldsDefinition.cache";
  56.     }
  57.  
  58.     if ((!isset($GLOBALS['DBMS_FIELD_DESC'])) || (!is_array($GLOBALS['DBMS_FIELD_DESC']))) 
  59.     {
  60.         $str_query="SELECT * FROM T_DBMS_FIELDDESC ORDER BY FLD_ISTYPEDEF DESC, FLD_TYPE";
  61.         if ($obj_cursor OCSP_OBJ::defaultReadDBObj()->query($str_query))
  62.         {
  63.             if ($fp=@fopen($str_cachePath."frmFldsDefinition.cache",'w'))
  64.             {
  65.                 fputs($fp,"<?php\n");
  66.                 $b_fopened=TRUE;
  67.             else {
  68.                 $b_fopened=FALSE;
  69.             }
  70.             while($arr_row $obj_cursor->fetchArrayFld())
  71.             {
  72.                 $GLOBALS['DBMS_FIELD_CLASSES'][$arr_row['FLD_TYPE'].$arr_row['FLD_ID']]=$arr_row['FLD_CLASS'];
  73.                 $GLOBALS['DBMS_FIELD_DESC'][$arr_row['FLD_TYPE']."_".$arr_row['FLD_CLASS']]=$arr_row;
  74.                 if ($fp{
  75.                     fputs($fp,"\n// ------------------------------------------------------------- \n");
  76.                     // <pk-07-04-28>
  77.                     fputs($fp,"\$GLOBALS['OCSP_DBMS_FLDCLASS']['".$arr_row['FLD_CLASS']."']=unserialize(base64_decode(\"".base64_encode(serialize($arr_row))."\"));\n");
  78.                     fputs($fp,"\$GLOBALS['DBMS_FIELD_CLASSES']['".$arr_row['FLD_TYPE'].$arr_row['FLD_ID']."']=\"".$arr_row['FLD_CLASS']."\";\n");
  79.                     fputs($fp,"\$GLOBALS['DBMS_FIELD_DESC']['".$arr_row['FLD_TYPE']."_".$arr_row['FLD_CLASS']."']=&\$GLOBALS['OCSP_DBMS_FLDCLASS']['".$arr_row['FLD_CLASS']."'];\n");
  80.                     fputs($fp,"\$GLOBALS['DBMS_FLDCLASS_DESC']['".$arr_row['FLD_CLASS']."']=&\$GLOBALS['DBMS_FIELD_DESC']['".$arr_row['FLD_TYPE']."_".$arr_row['FLD_CLASS']."'];\n");
  81.                     // </pk-07-04-28>
  82.                 }
  83.             }
  84.             if ($fp)
  85.             {
  86.                 fputs($fp,"\n?>");
  87.                 fclose($fp);
  88.             }
  89.         }
  90.     }
  91.     /*
  92.         } else {
  93.             require_once $GLOBALS['OCSP']['DEFAULTCONFPATH']."frmFldsDef.phpinc";
  94.         }
  95.     */
  96.  
  97.     
  98.     /**
  99.       * @global array $GLOBALS['DBMS_FORMS'] a global array for holding loaded form objects
  100.       ***/
  101.     $GLOBALS['DBMS_FORMS']=array();
  102.     $DBMSFORMS=&$GLOBALS['DBMS_FORMS'];     // for old style code whitout the $GLOBALS array
  103.  
  104.     /**#@+
  105.     * Constants
  106.     */
  107.     if (!defined('FRM_MODE_READONLY')) define('FRM_MODE_READONLY',0);
  108.     if (!defined('FRM_MODE_NEW')) define('FRM_MODE_NEW',1);
  109.     if (!defined('FRM_MODE_EDIT')) define('FRM_MODE_EDIT',2);
  110.     if (!defined('FRM_MODE_HIDDEN')) define('FRM_MODE_HIDDEN',3);
  111.     if (!defined('FRM_MODE_LIST')) define('FRM_MODE_LIST',4);
  112.     if (!defined('FRM_MODE_SEARCH')) define('FRM_MODE_SEARCH',5);
  113.     if (!defined('FRM_MODE_DELETE')) define('FRM_MODE_DELETE',6);
  114.     if (!defined('FRM_MODE_COPY')) define('FRM_MODE_COPY',7);
  115.  
  116.  
  117.     /* <pk-05-02-17> */
  118.  
  119.     if (file_exists($GLOBALS['PHPFORMPATH']."DBMS_FORM.phpclass")) {
  120.         require_once $GLOBALS['PHPFORMPATH']."DBMS_FORM.phpclass";
  121.     else {
  122.         require_once __OCSP_PHPINCPATH__ "db" _OCSP_DIRSEP_ "forms" _OCSP_DIRSEP_ "DBMS_FORM.phpclass";
  123.         $GLOBALS['PHPFORMPATH'__OCSP_PHPINCPATH__ "db" _OCSP_DIRSEP_ "forms" _OCSP_DIRSEP_ ;
  124.     }
  125.  
  126.  
  127.     /**
  128.     * writes a form object to file cache
  129.     *
  130.     * @param DBMS_FORM $frmObj 
  131.     * @param bool $debug since pk-05-01-13
  132.     *
  133.     * @return bool 
  134.     *
  135.     * @version pk-04-07-23
  136.     * @version pk-05-01-13
  137.     *
  138.     ***/
  139.     function DBMS_form_cacheFrm($frmObj,$debug=FALSE{
  140.         if ($debugecho "<p><b>DBMS_form_cacheFrm(".$frmObj->getName()." (".$frmObj->getId().")</b> (".__FILE__.")</p>";
  141.         if (!empty($str_cachePath)) {
  142.             require_once $GLOBALS['OCSP']['PHPINCPATH']."common/pcf_directory.phpinc";
  143.             $cacheDir=$str_cachePath."dbms_forms/";
  144.             if ($debugecho "<p>cacheDir$cacheDir</p>";
  145.             if (pcf_checkDir($cacheDir,TRUE)) {
  146.                 $cacheFile $cacheDir.$frmObj->frmId.".cache";
  147.                 if ($fp=fopen($cacheFile,"w")) {
  148.                     fwrite($fp,"<?php \n");
  149.                     fwrite($fp,"    \$timestamp=".time().";\n");
  150.                     fwrite($fp,"    if (!class_exists('".get_class($frmObj)."')) require_once \"".$frmObj->getClassFile()."\";");
  151.                     fwrite($fp,"    \$frmObj=new ".get_class($frmObj)."(0,\$debug);\n");
  152.                     fwrite($fp,"    \$dbRow=unserialize(base64_decode(\"".base64_encode(serialize($frmObj->getDBRow()))."\"));\n");
  153.                     fwrite($fp,"    \$frmObj->setDBRow(\$dbRow,TRUE,\$debug);\n");
  154.                     fwrite($fp,"?>");
  155.                     fclose ($fp);
  156.                     $wd=getcwd();chdir($cacheDir);
  157.                     @symlink($frmObj->frmId.".cache",$frmObj->frmName.".cache");
  158.                     chdir($wd);
  159.                     return TRUE;
  160.                 }
  161.                 return FALSE;
  162.             }
  163.         else {
  164.             return FALSE;
  165.         }
  166.     }
  167.  
  168.     /**
  169.     * gets a form from the file cache with id
  170.     *
  171.     * if file cache does not exists or is expired NULL is returned
  172.     *
  173.     * @param int $aId the form ID
  174.     * @param bool $debug 
  175.     *
  176.     * @return DBMS_FORM 
  177.     *
  178.     ***/
  179.     function DBMS_form_cache_GetId($aId,$debug=FALSE{
  180.         if ($debugecho "<p><b>DBMS_form_cache_GetId($aId,...)</b></p>";
  181.         if (!empty($str_cachePath)) {
  182.             $cacheFile=$str_cachePath."dbms_forms/".$aId.".cache";
  183.             $timestamp=0;
  184.             if ($debug{
  185.                 echo "<blockquote>Including Cache$cacheFile<br />";
  186.                 if (file_exists($cacheFile)) include $cacheFileelse echo "<p>NO CACHE FILE</p>";
  187.                 echo "</blockquote>";
  188.             }
  189.             else @include $cacheFile}
  190.  
  191.             if ($timestamp (time(OCSP_CONF::getInstance('OCSP')->getValue('OBJCACHELIFETIME'))) {
  192.                 return $frmObj;
  193.             else {
  194.                 if ($debugecho "<p>NO CACHE - RETURN NULL</p>";
  195.                 return NULL;
  196.             }
  197.         else {
  198.             if ($debugecho "<p>NO CACHE - RETURN NULL</p>";
  199.             return NULL;
  200.         }
  201.     }
  202.  
  203.     /**
  204.     * gets a form from the file cache with unique name
  205.     *
  206.     * if file cache does not exists or is expired NULL is returned
  207.     *
  208.     * @param string $aName the unique name of the form
  209.     * @param bool $debug since pk-05-01-20
  210.     *
  211.     * @return DBMS_FORM 
  212.     *
  213.     ***/
  214.     function DBMS_form_cache_GetName($aName,$debug=FALSE{
  215.         if ($debugecho "<p><b>DBMS_form_cache_GetName($aName)</b></p>\n";
  216.         if (!empty($str_cachePath)) {
  217.             $cacheFile=$str_cachePath."dbms_forms/".$aName.".cache";
  218.             $timestamp=0;
  219.             if ($debugechoDebug(__FILE__,"<p>Checking cacheFile $cacheFile</p>");
  220.             if (file_exists($cacheFile)) include $cacheFile;
  221.             if ($timestamp (time(OCSP_CONF::getInstance('OCSP')->getValue('OBJCACHELIFETIME'))) {
  222.                 if ($debugechoDebug(__FILE__,"<p>Object Return (Line: ".__LINE__."</p>\n");
  223.                 return $frmObj;
  224.             else {
  225.                 if ($debugechoDebug(__FILE__,"<p>Return NULL (Line: ".__LINE__."</p>\n");
  226.                 return NULL;
  227.             }
  228.         else {
  229.             if ($debugechoDebug(__FILE__,"<p>Return NULL (Line: ".__LINE__."</p>\n");
  230.             return NULL;
  231.         }
  232.     }
  233.  
  234.     /**
  235.     * clears the cache for a form
  236.     *
  237.     * @since pk-04-07-28
  238.     *
  239.     ***/
  240.     function DBMS_form_cache_ClearId($aId{
  241.         if (!empty($str_cachePath)) {
  242.             $cacheFile=$str_cachePath."dbms_forms/".$aId.".cache";
  243.             if (file_exists($cacheFile)) {
  244.                 unlink($cacheFile);
  245.             }
  246.         }
  247.     }
  248.  
  249.     /**
  250.     * generates a new form
  251.     *
  252.     * @param string $aName 
  253.     * @param string $tbls 
  254.     * @param int $asDefault 
  255.     *
  256.     * @return int 
  257.     *
  258.     ***/
  259.     function DBMS_form_new($aName,$tbls="",$asDefault=0{
  260.         if (!$OCSP_OBJ['USRDB']->isConnectedreturn FALSE;
  261.         $aForm=new DBMS_FORM(0);
  262.         if ($aForm->create($aName,$tbls,$asDefault)) {
  263.             $GLOBALS['DBMS_FORMS'][$aForm->frmId]=$aForm;
  264.         }
  265.         return $aForm->frmId;
  266.     }
  267.  
  268.  
  269.     /**
  270.     * register a form to the global array
  271.     *
  272.     * @param DBMS_FORM $aForm 
  273.     * @param bool $debug 
  274.     *
  275.     * @return bool 
  276.     *
  277.     * @since pk-05-01-13
  278.     *
  279.     ***/
  280.     function DBMS_form_register(&$aForm,$debug=FALSE{
  281.         if (!is_object($aForm)) {
  282.             if ($debugecho "<p><b>DBMS_form_register(NULL,...)</b> (".__FILE__.")</p>";
  283.             return FALSE;
  284.         }
  285.         if ($debugecho "<p><b>DBMS_form_register(".$aForm->getName()." (".$aForm->getId().")</b> (".__FILE__.")</p>";
  286.  
  287.         $GLOBALS['DBMS_FORMS'][$aForm->frmId]=&$aForm;
  288.         $GLOBALS['DBMS_NAMED_FORMS'][$aForm->getName()]=&$aForm;
  289.  
  290.         return TRUE;
  291.     }
  292.  
  293.     /**
  294.     * returns a <b>POINTER</b> to the form with id $aId
  295.     *
  296.     * loads a from from cache (or db) into GLOABALS['DBMS_FORMS'][$aId] array
  297.     * if the array element is not an object.
  298.     * Uses $OCSP_OBJ['USRDB'] as DB Object
  299.     * returns a pointer to the global array element
  300.     *
  301.     * @param int $aId 
  302.     * @param boolean $debug 
  303.     * @param boolean $forceDB force a reload from the database since pk-06-07-28
  304.     * 
  305.     * @global array $OCSP_OBJ 
  306.     *
  307.     * @return DBMS_FORM 
  308.     *
  309.     * @version pk-04-07-29 return changed FALSE -> NULL
  310.     * @version pk-04-08-09
  311.     * @version pk-06-07-28
  312.     *
  313.     ***/
  314.     function &DBMS_form_loadId($aId,$debug=FALSE,$forceDB=FALSE{
  315.         global $OCSP_OBJ;
  316.         
  317.         if ($debugecho "<p><b>DBMS_form_loadId($aId,...)</b></p>";
  318.         if (!intval($aId)) return NULL;  /* <pk-04-09-08 /> */
  319.  
  320.         if (!$forceDB// <pk-06-07-28>
  321.             if (isset($GLOBALS['DBMS_FORMS'][$aId]&& is_object($GLOBALS['DBMS_FORMS'][$aId])) {
  322.                 if ($debugecho "<p>FORM ID: ".$aId." already loaded</p>";
  323.                 return $GLOBALS['DBMS_FORMS'][$aId];
  324.             else if ($GLOBALS['DBMS_FORMS'][$aIdDBMS_form_cache_GetId($aId,$debug)) {
  325.                 if ($debugecho "<p>Return Cached Form for ID: ".$aId."</p>";
  326.                 $GLOBALS['DBMS_NAMED_FORMS'][$GLOBALS['DBMS_FORMS'][$aId]->getName()]=&$GLOBALS['DBMS_FORMS'][$aId];
  327.                 return $GLOBALS['DBMS_FORMS'][$aId];
  328.             else if (!$OCSP_OBJ['USRDB']->isConnected()) {
  329.                 if ($debugecho "<h2 color=\"red\">NOT CONNECTED !!!</h2>";
  330.                 return NULL;
  331.             }
  332.         }
  333.  
  334.         if ($GLOBALS['DBMS_FORMS'][$aId]=new DBMS_FORM($aId)) {
  335.             if (!$forceDB)  {
  336.                 DBMS_form_cacheFrm($GLOBALS['DBMS_FORMS'][$aId],$debug);
  337.             }
  338.             $GLOBALS['DBMS_NAMED_FORMS'][$GLOBALS['DBMS_FORMS'][$aId]->getName()]=&$GLOBALS['DBMS_FORMS'][$aId];
  339.             return $GLOBALS['DBMS_FORMS'][$aId];
  340.         else {
  341.             if ($debugecho "<p color=\"red\">FORM ID: ".$aId." not loaded</p>";
  342.             return NULL;
  343.         }
  344.     }
  345.  
  346.     /**
  347.     * loads a form of a special type (subclass ob DBMS_FORM)
  348.     *
  349.     * the subcluss must have the method castFromFrmObj() if not
  350.     * an object of DBMS_FORM is returned
  351.     *
  352.     * you also have to include the class source before calling this method
  353.     *
  354.     * @param string $className name of the form class
  355.     * @param int $aId 
  356.     * @param boolean $debug 
  357.     * @param boolean $reloadGlobals if TRUE the form in $GLOBALS['DBMS_NAMED_FORMS'] is reloaded from cache or DB
  358.     *
  359.     * @returns DBMS_FORM
  360.     *
  361.     * @since pk-06-12-21
  362.     ***/
  363.     function &DBMS_form_loadClassId($className,$aId,$debug=FALSE,$reloadGlobals=FALSE{
  364.         if ($debugechoDebug(__FILE__,"FunctionDBMS_form_loadClassId($className,$aId)");
  365.  
  366.         if ($o_frmObj=DBMS_form_loadId($aId,$debug,$reloadGlobals)) {
  367.             if (!pcf_is_instance_of($o_frmObj,$className)) {
  368.                 if (class_exists($className)) {
  369.                     $s_cmd="\$o_frmClassObj=new $className();";
  370.                     if ($debugechoDebug("<blockquote>$s_cmd</blockquote>");
  371.                     eval($s_cmd);
  372.                     if (pcf_is_instance_of($o_frmClassObj,"DBMS_FORM")) {
  373.                         if (method_exists($o_frmClassObj,"castFromFrmObj")) {
  374.                             $o_frmClassObj->castFromFrmObj($o_frmObj);
  375.                             DBMS_form_cacheFrm($o_frmClassObj);
  376.                             return $o_frmClassObj;
  377.                         }
  378.                     }
  379.                 }
  380.             }
  381.         }
  382.         return $o_frmObj;
  383.     }
  384.  
  385.  
  386.     /**
  387.     * returns a <b>POINTER</b> to the form with unique name $name
  388.     *
  389.     * loads a from from cache (or db) into GLOABALS['DBMS_FORMS'][$aId] array
  390.     * if the array element is not an object.
  391.     * Uses $OCSP_OBJ['USRDB'] as DB Object
  392.     * returns a pointer to the global array element
  393.     *
  394.     * @param string $aName 
  395.     * @param boolean $debug 
  396.     * @param boolean $reloadGlobals if TRUE the form in $GLOBALS['DBMS_NAMED_FORMS'] is reloaded from cache or DB
  397.     *
  398.     * @return DBMS_FORM 
  399.     *
  400.     * @version pk-04-07-29 return changed FALSE -> NULL
  401.     * @version pk-05-02-15 check if $aName not empty
  402.     * @version pk-06-11-28 $useGlobals added
  403.     *
  404.     ***/
  405.     function &DBMS_form_loadName($aName,$debug=FALSE,$reloadGlobals=FALSE{
  406.         global $OCSP_OBJ;
  407.  
  408.         if ($debugechoDebug(__FILE__,"<p>Funktion <b>DBMS_form_loadName($aName)</b></p>");
  409.  
  410.         $null_Return=NULL;
  411.         if (empty($aName)) return $null_Return/*<pk-05-02-15 />*/
  412.  
  413.         if (!$reloadGlobals && isset($GLOBALS['DBMS_NAMED_FORMS'][$aName]&& is_object($GLOBALS['DBMS_NAMED_FORMS'][$aName])) {
  414.             if ($debugecho "<pre>form already loaded</pre>";
  415.             return $GLOBALS['DBMS_NAMED_FORMS'][$aName];
  416.         }
  417.  
  418.         if ($GLOBALS['DBMS_NAMED_FORMS'][$aNameDBMS_form_cache_GetName($aName,$debug)) {
  419.             $GLOBALS['DBMS_FORMS'][$GLOBALS['DBMS_NAMED_FORMS'][$aName]->frmId]=&$GLOBALS['DBMS_NAMED_FORMS'][$aName];
  420.             if ($debugecho "<pre>CACHED FORM</pre>";
  421.             return $GLOBALS['DBMS_NAMED_FORMS'][$aName];
  422.         }
  423.  
  424.         if (!is_object($OCSP_OBJ['USRDB']|| !pcf_is_instance_of($OCSP_OBJ['USRDB'],'OCSP_DB'))
  425.         {
  426.             if ($OCSP_OBJ['USER']->isValid(|| $OCSP_OBJ['USER']->isPublic())
  427.             {
  428.                 if ($debugechoDebugLine(__FILE__,__LINE__,"open required connection to the database");
  429.                 $OCSP_OBJ['USRDB']=$OCSP_OBJ['USER']->dbConnect($OCSP_OBJ['USER']->isAdmin(),$debug);
  430.             }
  431.         }
  432.  
  433.         if (!$OCSP_OBJ['USRDB']->isConnected()) {
  434.             if ($debugecho "<pre style=\"background-color:red\">NO DB_CONNECTION</pre>";
  435.             return $null_Return;
  436.         }
  437.  
  438.         $query="SELECT FRM_ID FROM T_DBMS_FORM WHERE FRM_NAME=\"".addSlashes($aName)."\"";
  439.         if (!($aId=$OCSP_OBJ['USRDB']->quickQuery($query,0))) {
  440.             if ($debugecho "<p><b>ERROR</b><br />No result for query: <br />$query</p>";
  441.             return $null_Return;
  442.         }
  443.         if (isset($GLOBALS['DBMS_FORMS'][$aId]&& is_object($GLOBALS['DBMS_FORMS'][$aId])) return $GLOBALS['DBMS_FORMS'][$aId];
  444.         if ($debugecho "<blockquote>";
  445.         if ($GLOBALS['DBMS_FORMS'][$aId]=new DBMS_FORM($aId,$debug)) {
  446.         if ($debugecho "<p>FORMID$aId generated</p>";
  447.         DBMS_form_cacheFrm($GLOBALS['DBMS_FORMS'][$aId]);
  448.         $GLOBALS['DBMS_NAMED_FORMS'][$GLOBALS['DBMS_FORMS'][$aId]->getName()]=&$GLOBALS['DBMS_FORMS'][$aId];
  449.         if ($debugecho "</blockquote>";
  450.         return $GLOBALS['DBMS_FORMS'][$aId];
  451.         else {
  452.         if ($debugecho "</blockquote>";
  453.         return $null_Return;
  454.         }
  455.     }
  456.  
  457.     /**
  458.     * loads a form of a special type (subclass ob DBMS_FORM)
  459.     *
  460.     * the subcluss must have the method castFromFrmObj() if not
  461.     * an object of DBMS_FORM is returned
  462.     *
  463.     * you also have to include the class source before calling this method
  464.     *
  465.     * @param string $className name of the form class
  466.     * @param string $frmName nome of the form
  467.     * @param boolean $debug 
  468.     * @param boolean $reloadGlobals if TRUE the form in $GLOBALS['DBMS_NAMED_FORMS'] is reloaded from cache or DB
  469.     *
  470.     * @returns DBMS_FORM
  471.     *
  472.     * @since pk-06-12-17
  473.     ***/
  474.     function &DBMS_form_loadClassName($className,$frmName,$debug=FALSE,$reloadGlobals=FALSE{
  475.         if ($debugechoDebug(__FILE__,"FunctionDBMS_form_loadClassName($className,$frmName)");
  476.  
  477.         if ($o_frmObj=DBMS_form_loadName($frmName,$debug,$reloadGlobals)) {
  478.             if (!pcf_is_instance_of($o_frmObj,$className)) {
  479.                 if (class_exists($className)) {
  480.                     $s_cmd="\$o_frmClassObj=new $className();";
  481.                     if ($debugechoDebug("<blockquote>$s_cmd</blockquote>");
  482.                     eval($s_cmd);
  483.                     if (pcf_is_instance_of($o_frmClassObj,"DBMS_FORM")) {
  484.                         if (method_exists($o_frmClassObj,"castFromFrmObj")) {
  485.                             $o_frmClassObj->castFromFrmObj($o_frmObj);
  486.                             DBMS_form_cacheFrm($o_frmClassObj);
  487.                             return $o_frmClassObj;
  488.                         }
  489.                     }
  490.                 }
  491.             }
  492.         }
  493.         return $o_frmObj;
  494.     }
  495.  
  496.  
  497.  
  498.     /**
  499.     * destroies a FORM Object
  500.     *
  501.     * @param int $aId 
  502.     *
  503.     * @since pk-04-07-30
  504.     *
  505.     ***/
  506.     function DBMS_form_unset($aId,$debug=FALSE{
  507.         if (!is_int($aId|| ($aId 1));
  508.  
  509.  
  510.         if (is_object($GLOBALS['DBMS_FORMS'][$aId])) {
  511.             unset($GLOBALS['DBMS_NAMED_FORMS'][$GLOBALS['DBMS_FORMS'][$aId]->getName()]);
  512.             unset($GLOBALS['DBMS_FORMS'][$aId]);
  513.         }
  514.  
  515.     }
  516.  
  517.     /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
  518.     /*  FIELD functions                                                                         */
  519.     /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
  520.  
  521.     /**
  522.     * includes the form field class src file
  523.     *
  524.     * @param string $className 
  525.     * @param boolean $debug 
  526.     *
  527.     * @return boolean 
  528.     *
  529.     * @since pk-05-02-09
  530.     *
  531.     ***/
  532.     function DBMS_field_IncludeSrc($className="DBMS_FIELD",$debug=FALSE{
  533.         if ($debugecho "<p><b>DBMS_field_IncludeSrc($className,...)</b> (".__FILE__.")</p>";
  534.  
  535.         if (class_exists($className)) {
  536.             // file already included
  537.             if ($debugecho "<p>$className already exists</p>";
  538.             return TRUE;
  539.         }
  540.  
  541.         if (isset($GLOBALS['DBMS_FLDCLASS_DESC'][$className])) {
  542.             $classFile=$GLOBALS[$GLOBALS['DBMS_FLDCLASS_DESC'][$className]['FLD_SYSTEM']]['PHPINCPATH'].$GLOBALS['DBMS_FLDCLASS_DESC'][$className]['FLD_CLASS_SRC'];
  543.             if (file_exists($classFile)) {
  544.                 require_once $classFile;
  545.                 return TRUE;
  546.             }
  547.         }
  548.  
  549.         if ($debugecho "<p>$className NOT IN T_DBMS_FIELDDESC</p>";
  550.  
  551.  
  552.         $className=strtoupper($className);
  553.  
  554.         $classFile="";
  555.         if (!empty($GLOBALS['DBMS_FLDCLASS'][$className]['FILE'])) {
  556.             do {
  557.                 $classFile=$GLOBALS['DBMS_FLDCLASS'][$className]['FILE'];
  558.                 if (file_exists($classFile)) break;
  559.                 $classFile=$GLOBALS['PROJECT']['PHPINCPATH'].$classFile;
  560.                 if (file_exists($classFile)) break;
  561.                 $classFile=$GLOBALS['OCSP']['PHPINCPATH'].$GLOBALS['DBMS_FLDCLASS'][$className]['FILE'];
  562.                 if (file_exists($classFile)) break;
  563.                 $classFile=$GLOBALS['OCSP']['DBMSFLD_PATH'].$GLOBALS['DBMS_FLDCLASS'][$className]['FILE'];
  564.                 if (file_exists($classFile)) break;
  565.                 $classFile="";
  566.             while (FALSE);
  567.  
  568.             if (!empty($classFile)) {
  569.                 if ($debugecho "<p>CLASSFILE$classFile</p>";
  570.                 require_once $classFile;
  571.                 return (class_exists($className));
  572.             }
  573.         }
  574.  
  575.         do {
  576.             $classFile=$GLOBALS['OCSP']['DBMSFLD_PATH'].$className.".phpclass";
  577.             if (file_exists($classFile)) break;
  578.             $classFile=$GLOBALS['PROJECT']."db/frmClasses/".$className.".phpclass";
  579.             if (file_exists($classFile)) break;
  580.             $classFile=$GLOBALS['OCSP']."db/frmClasses/".$className.".phpclass";
  581.             if (file_exists($classFile)) break;
  582.             $classFile="";
  583.         while (FALSE);
  584.  
  585.         if (!empty($classFile)) {
  586.             if ($debugecho "<p>CLASSFILE$classFile</p>";
  587.             require_once $classFile;
  588.             return (class_exists($className));
  589.         }
  590.  
  591.         @include_once $className.".phpinc";
  592.         return (class_exists($className));
  593.     }
  594.  
  595.     /**
  596.     * changes the class of a form field
  597.     *
  598.     * @param DBMS_FIELD $fld 
  599.     * @param string $newClassName 
  600.     * @param boolean $debug 
  601.     *
  602.     * @return DBMS_FIELD 
  603.     *
  604.     * @since pk-05-02-09
  605.     *
  606.     ***/
  607.     function DBMS_field_ChangeClass($fld,$newClassName,$debug=FALSE{
  608.         if ($debugecho "<p><b>DBMS_field_ChangeClass(\$fld,$newClassName,...)</b> (".__FILE__.")</p>";
  609.  
  610.         require_once $GLOBALS['OCSP']['PHPINCPATH']."common/pcf.phpinc";
  611.  
  612.         if (!is_object($fld)) {
  613.             if ($debugecho "<p>SOURCE Field is not an object</p>";
  614.         }
  615.  
  616.         if (!pcf_is_instance_of($fld,"DBMS_FIELD")) {
  617.             if ($debugecho "<p>SOURCE Field (".get_class($fld).") is not an instance of DBMS_FIELD</p>";
  618.             return NULL;
  619.         }
  620.  
  621.         if (!DBMS_field_IncludeSrc($newClassName,$debug)) {
  622.             return NULL;
  623.         }
  624.  
  625.         $oldVals=get_object_vars($fld);
  626.         unset($oldVals['className']);
  627.         unset($oldVals['classSrcFile']);
  628.  
  629.         $cmd="\$tmp=new ".$newClassName."(\$oldVals['myTable'],\$oldVals['myName'],\$oldVals['dbDesc'],\$oldVals['sortOrder']);";
  630.  
  631.         if ($debugecho "<pre>$cmd</pre>";
  632.         eval($cmd);
  633.  
  634.         if (pcf_is_instance_of($tmp,"DBMS_FIELD")) {
  635.             foreach($oldVals as $key => $val{
  636.                 $tmp->{$key}=$val;
  637.             }
  638.             return $tmp;
  639.         else {
  640.             return NULL;
  641.         }
  642.     }
  643.  
  644.     /**
  645.     * includes all field object class sources
  646.     *
  647.     * @param boolean $debug 
  648.     *
  649.     * @since pk-05-08-01
  650.     * @version pk-05-08-26 default for $debug added
  651.     * @version pk-05-10-10 DBMD_FLDCLASS_DESC -> DBMS_FLDCLASS_DESC
  652.     *
  653.     * @var string $s_className 
  654.     * @var array $a_FldDesc 
  655.     ***/
  656.     function DBMS_field_IncludeAllSrc($debug=FALSE{
  657.         if ($debugecho "<p><b>DBMS_field_IncludeAllSrc()</b> (".__FILE__.")</p>";
  658.  
  659.         if (isset($GLOBALS['DBMS_FLDCLASS_DESC']&& (is_array($GLOBALS['DBMS_FLDCLASS_DESC']))) // <pk-07-08-19 /> E_ALL
  660.             foreach($GLOBALS['DBMS_FLDCLASS_DESC'as $s_className => $a_FldDesc{
  661.                 DBMS_field_IncludeSrc($s_className,$debug);
  662.             }
  663.         }
  664.     }
  665.     
  666.     //if ($debug) echoDebugLine(__FILE__,__LINE__,"<h2>DBMS_FIELD_CLASSES:</h2><pre>" . print_r( $GLOBALS['DBMS_FIELD_CLASSES'],True) . "</pre>");
  667.     
  668. ?>

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