Source for file forms.phpinc
Documentation is available at forms.phpinc
* provides database settings and functions to handle DBMS_FORMS
* uses $GLOABLS['DBMS_FORM'] to store the forms in an array
* only pointers are returned in the public functions
* @project Open CSP-Management
* @author Peter Krebs <p.krebs@lvus.at>
* @copyright (c) 2002-2003 by Peter Krebs and Landesverlag Unternehmensservice
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @global array $GLOBALS['DBMS_NAMED_FORMS'] array of loaded forms with frmName as key
* @global array $GLOBALS['DBMS_FORMS'] array of loaded forms with frmid as key
* @since pk-05-02-16 moved form php/db to php/db/forms
* @deprecated since pk-08-06-23
if (!isset
($debug)) $debug=
FALSE;
if (!isset
($GLOBALS['PHPFORMPATH'])) {
/* NOT REAL DATATYPES BUT USED IN DBMS_FORM */
define ('DBMS_FLDTYPE_SELECTLIST',"selectlist");
define ('DBMS_FLDTYPE_HTMLCODE',"htmlcode");
* @const string DBMS_NO_DBFIELD used for fields with no table
if (!defined('DBMS_NO_DBFIELD')) define ('DBMS_NO_DBFIELD',"__NO-DBFIELD__");
$GLOBALS['DBFLDTYPES'][]=
"layout";
if ($debug) echoDebugLine(__FILE__
,__LINE__
,"cache: {$str_cachePath}");
if (file_exists($str_cachePath.
"frmFldsDefinition.cache")) {
require_once $str_cachePath.
"frmFldsDefinition.cache";
if ((!isset
($GLOBALS['DBMS_FIELD_DESC'])) ||
(!is_array($GLOBALS['DBMS_FIELD_DESC'])))
$str_query=
"SELECT * FROM T_DBMS_FIELDDESC ORDER BY FLD_ISTYPEDEF DESC, FLD_TYPE";
if ($fp=
@fopen($str_cachePath.
"frmFldsDefinition.cache",'w'))
while($arr_row =
$obj_cursor->fetchArrayFld())
$GLOBALS['DBMS_FIELD_CLASSES'][$arr_row['FLD_TYPE'].
$arr_row['FLD_ID']]=
$arr_row['FLD_CLASS'];
$GLOBALS['DBMS_FIELD_DESC'][$arr_row['FLD_TYPE'].
"_".
$arr_row['FLD_CLASS']]=
$arr_row;
fputs($fp,"\n// ------------------------------------------------------------- \n");
fputs($fp,"\$GLOBALS['OCSP_DBMS_FLDCLASS']['".
$arr_row['FLD_CLASS'].
"']=unserialize(base64_decode(\"".
base64_encode(serialize($arr_row)).
"\"));\n");
fputs($fp,"\$GLOBALS['DBMS_FIELD_CLASSES']['".
$arr_row['FLD_TYPE'].
$arr_row['FLD_ID'].
"']=\"".
$arr_row['FLD_CLASS'].
"\";\n");
fputs($fp,"\$GLOBALS['DBMS_FIELD_DESC']['".
$arr_row['FLD_TYPE'].
"_".
$arr_row['FLD_CLASS'].
"']=&\$GLOBALS['OCSP_DBMS_FLDCLASS']['".
$arr_row['FLD_CLASS'].
"'];\n");
fputs($fp,"\$GLOBALS['DBMS_FLDCLASS_DESC']['".
$arr_row['FLD_CLASS'].
"']=&\$GLOBALS['DBMS_FIELD_DESC']['".
$arr_row['FLD_TYPE'].
"_".
$arr_row['FLD_CLASS'].
"'];\n");
require_once $GLOBALS['OCSP']['DEFAULTCONFPATH']."frmFldsDef.phpinc";
* @global array $GLOBALS['DBMS_FORMS'] a global array for holding loaded form objects
$GLOBALS['DBMS_FORMS']=
array();
$DBMSFORMS=
&$GLOBALS['DBMS_FORMS']; // for old style code whitout the $GLOBALS array
if (!defined('FRM_MODE_READONLY')) define('FRM_MODE_READONLY',0);
if (file_exists($GLOBALS['PHPFORMPATH'].
"DBMS_FORM.phpclass")) {
require_once $GLOBALS['PHPFORMPATH'].
"DBMS_FORM.phpclass";
require_once __OCSP_PHPINCPATH__ .
"db" .
_OCSP_DIRSEP_ .
"forms" .
_OCSP_DIRSEP_ .
"DBMS_FORM.phpclass";
* writes a form object to file cache
* @param DBMS_FORM $frmObj
* @param bool $debug since pk-05-01-13
if ($debug) echo
"<p><b>DBMS_form_cacheFrm(".
$frmObj->getName().
" (".
$frmObj->getId().
")</b> (".__FILE__.
")</p>";
if (!empty($str_cachePath)) {
require_once $GLOBALS['OCSP']['PHPINCPATH'].
"common/pcf_directory.phpinc";
$cacheDir=
$str_cachePath.
"dbms_forms/";
if ($debug) echo
"<p>cacheDir: $cacheDir</p>";
$cacheFile =
$cacheDir.
$frmObj->frmId.
".cache";
if ($fp=
fopen($cacheFile,"w")) {
fwrite($fp," if (!class_exists('".
get_class($frmObj).
"')) require_once \"".
$frmObj->getClassFile().
"\";");
fwrite($fp," \$frmObj->setDBRow(\$dbRow,TRUE,\$debug);\n");
@symlink($frmObj->frmId.
".cache",$frmObj->frmName.
".cache");
* gets a form from the file cache with id
* if file cache does not exists or is expired NULL is returned
* @param int $aId the form ID
if ($debug) echo
"<p><b>DBMS_form_cache_GetId($aId,...)</b></p>";
if (!empty($str_cachePath)) {
$cacheFile=
$str_cachePath.
"dbms_forms/".
$aId.
".cache";
echo
"<blockquote>Including Cache: $cacheFile<br />";
if (file_exists($cacheFile)) include $cacheFile; else echo
"<p>NO CACHE FILE</p>";
else { @include $cacheFile; }
if ($debug) echo
"<p>NO CACHE - RETURN NULL</p>";
if ($debug) echo
"<p>NO CACHE - RETURN NULL</p>";
* gets a form from the file cache with unique name
* if file cache does not exists or is expired NULL is returned
* @param string $aName the unique name of the form
* @param bool $debug since pk-05-01-20
if ($debug) echo
"<p><b>DBMS_form_cache_GetName($aName)</b></p>\n";
if (!empty($str_cachePath)) {
$cacheFile=
$str_cachePath.
"dbms_forms/".
$aName.
".cache";
if ($debug) echoDebug(__FILE__
,"<p>Checking cacheFile $cacheFile</p>");
if ($debug) echoDebug(__FILE__
,"<p>Object Return (Line: ".__LINE__.
"</p>\n");
if ($debug) echoDebug(__FILE__
,"<p>Return NULL (Line: ".__LINE__.
"</p>\n");
if ($debug) echoDebug(__FILE__
,"<p>Return NULL (Line: ".__LINE__.
"</p>\n");
* clears the cache for a form
if (!empty($str_cachePath)) {
$cacheFile=
$str_cachePath.
"dbms_forms/".
$aId.
".cache";
if (!$OCSP_OBJ['USRDB']->isConnected) return FALSE;
if ($aForm->create($aName,$tbls,$asDefault)) {
$GLOBALS['DBMS_FORMS'][$aForm->frmId]=
$aForm;
* register a form to the global array
* @param DBMS_FORM $aForm
if ($debug) echo
"<p><b>DBMS_form_register(NULL,...)</b> (".__FILE__.
")</p>";
if ($debug) echo
"<p><b>DBMS_form_register(".
$aForm->getName().
" (".
$aForm->getId().
")</b> (".__FILE__.
")</p>";
$GLOBALS['DBMS_FORMS'][$aForm->frmId]=
&$aForm;
$GLOBALS['DBMS_NAMED_FORMS'][$aForm->getName()]=
&$aForm;
* returns a <b>POINTER</b> to the form with id $aId
* loads a from from cache (or db) into GLOABALS['DBMS_FORMS'][$aId] array
* if the array element is not an object.
* Uses $OCSP_OBJ['USRDB'] as DB Object
* returns a pointer to the global array element
* @param boolean $forceDB force a reload from the database since pk-06-07-28
* @global array $OCSP_OBJ
* @version pk-04-07-29 return changed FALSE -> NULL
if ($debug) echo
"<p><b>DBMS_form_loadId($aId,...)</b></p>";
if (!intval($aId)) return NULL; /* <pk-04-09-08 /> */
if (!$forceDB) { // <pk-06-07-28>
if (isset
($GLOBALS['DBMS_FORMS'][$aId]) &&
is_object($GLOBALS['DBMS_FORMS'][$aId])) {
if ($debug) echo
"<p>FORM ID: ".
$aId.
" already loaded</p>";
return $GLOBALS['DBMS_FORMS'][$aId];
if ($debug) echo
"<p>Return Cached Form for ID: ".
$aId.
"</p>";
$GLOBALS['DBMS_NAMED_FORMS'][$GLOBALS['DBMS_FORMS'][$aId]->getName()]=
&$GLOBALS['DBMS_FORMS'][$aId];
return $GLOBALS['DBMS_FORMS'][$aId];
} else if (!$OCSP_OBJ['USRDB']->isConnected()) {
if ($debug) echo
"<h2 color=\"red\">NOT CONNECTED !!!</h2>";
if ($GLOBALS['DBMS_FORMS'][$aId]=
new DBMS_FORM($aId)) {
$GLOBALS['DBMS_NAMED_FORMS'][$GLOBALS['DBMS_FORMS'][$aId]->getName()]=
&$GLOBALS['DBMS_FORMS'][$aId];
return $GLOBALS['DBMS_FORMS'][$aId];
if ($debug) echo
"<p color=\"red\">FORM ID: ".
$aId.
" not loaded</p>";
* loads a form of a special type (subclass ob DBMS_FORM)
* the subcluss must have the method castFromFrmObj() if not
* an object of DBMS_FORM is returned
* you also have to include the class source before calling this method
* @param string $className name of the form class
* @param boolean $reloadGlobals if TRUE the form in $GLOBALS['DBMS_NAMED_FORMS'] is reloaded from cache or DB
if ($debug) echoDebug(__FILE__
,"Function: DBMS_form_loadClassId($className,$aId)");
$s_cmd=
"\$o_frmClassObj=new $className();";
if ($debug) echoDebug("<blockquote>$s_cmd</blockquote>");
$o_frmClassObj->castFromFrmObj($o_frmObj);
* returns a <b>POINTER</b> to the form with unique name $name
* loads a from from cache (or db) into GLOABALS['DBMS_FORMS'][$aId] array
* if the array element is not an object.
* Uses $OCSP_OBJ['USRDB'] as DB Object
* returns a pointer to the global array element
* @param boolean $reloadGlobals if TRUE the form in $GLOBALS['DBMS_NAMED_FORMS'] is reloaded from cache or DB
* @version pk-04-07-29 return changed FALSE -> NULL
* @version pk-05-02-15 check if $aName not empty
* @version pk-06-11-28 $useGlobals added
if ($debug) echoDebug(__FILE__
,"<p>Funktion <b>DBMS_form_loadName($aName)</b></p>");
if (empty($aName)) return $null_Return; /*<pk-05-02-15 />*/
if (!$reloadGlobals && isset
($GLOBALS['DBMS_NAMED_FORMS'][$aName]) &&
is_object($GLOBALS['DBMS_NAMED_FORMS'][$aName])) {
if ($debug) echo
"<pre>form already loaded</pre>";
return $GLOBALS['DBMS_NAMED_FORMS'][$aName];
$GLOBALS['DBMS_FORMS'][$GLOBALS['DBMS_NAMED_FORMS'][$aName]->frmId]=
&$GLOBALS['DBMS_NAMED_FORMS'][$aName];
if ($debug) echo
"<pre>CACHED FORM</pre>";
return $GLOBALS['DBMS_NAMED_FORMS'][$aName];
if ($debug) echoDebugLine(__FILE__
,__LINE__
,"open required connection to the database");
$OCSP_OBJ['USRDB']=
$OCSP_OBJ['USER']->dbConnect($OCSP_OBJ['USER']->isAdmin(),$debug);
if (!$OCSP_OBJ['USRDB']->isConnected()) {
if ($debug) echo
"<pre style=\"background-color:red\">NO DB_CONNECTION</pre>";
$query=
"SELECT FRM_ID FROM T_DBMS_FORM WHERE FRM_NAME=\"".
addSlashes($aName).
"\"";
if (!($aId=
$OCSP_OBJ['USRDB']->quickQuery($query,0))) {
if ($debug) echo
"<p><b>ERROR</b><br />No result for query: <br />$query</p>";
if (isset
($GLOBALS['DBMS_FORMS'][$aId]) &&
is_object($GLOBALS['DBMS_FORMS'][$aId])) return $GLOBALS['DBMS_FORMS'][$aId];
if ($debug) echo
"<blockquote>";
if ($GLOBALS['DBMS_FORMS'][$aId]=
new DBMS_FORM($aId,$debug)) {
if ($debug) echo
"<p>FORMID: $aId generated</p>";
$GLOBALS['DBMS_NAMED_FORMS'][$GLOBALS['DBMS_FORMS'][$aId]->getName()]=
&$GLOBALS['DBMS_FORMS'][$aId];
if ($debug) echo
"</blockquote>";
return $GLOBALS['DBMS_FORMS'][$aId];
if ($debug) echo
"</blockquote>";
* loads a form of a special type (subclass ob DBMS_FORM)
* the subcluss must have the method castFromFrmObj() if not
* an object of DBMS_FORM is returned
* you also have to include the class source before calling this method
* @param string $className name of the form class
* @param string $frmName nome of the form
* @param boolean $reloadGlobals if TRUE the form in $GLOBALS['DBMS_NAMED_FORMS'] is reloaded from cache or DB
if ($debug) echoDebug(__FILE__
,"Function: DBMS_form_loadClassName($className,$frmName)");
$s_cmd=
"\$o_frmClassObj=new $className();";
if ($debug) echoDebug("<blockquote>$s_cmd</blockquote>");
$o_frmClassObj->castFromFrmObj($o_frmObj);
* destroies a FORM Object
if (!is_int($aId) ||
($aId <
1));
if (is_object($GLOBALS['DBMS_FORMS'][$aId])) {
unset
($GLOBALS['DBMS_NAMED_FORMS'][$GLOBALS['DBMS_FORMS'][$aId]->getName()]);
unset
($GLOBALS['DBMS_FORMS'][$aId]);
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
* includes the form field class src file
* @param string $className
if ($debug) echo
"<p><b>DBMS_field_IncludeSrc($className,...)</b> (".__FILE__.
")</p>";
if ($debug) echo
"<p>$className already exists</p>";
if (isset
($GLOBALS['DBMS_FLDCLASS_DESC'][$className])) {
$classFile=
$GLOBALS[$GLOBALS['DBMS_FLDCLASS_DESC'][$className]['FLD_SYSTEM']]['PHPINCPATH'].
$GLOBALS['DBMS_FLDCLASS_DESC'][$className]['FLD_CLASS_SRC'];
if ($debug) echo
"<p>$className NOT IN T_DBMS_FIELDDESC</p>";
if (!empty($GLOBALS['DBMS_FLDCLASS'][$className]['FILE'])) {
$classFile=
$GLOBALS['DBMS_FLDCLASS'][$className]['FILE'];
$classFile=
$GLOBALS['PROJECT']['PHPINCPATH'].
$classFile;
$classFile=
$GLOBALS['OCSP']['PHPINCPATH'].
$GLOBALS['DBMS_FLDCLASS'][$className]['FILE'];
$classFile=
$GLOBALS['OCSP']['DBMSFLD_PATH'].
$GLOBALS['DBMS_FLDCLASS'][$className]['FILE'];
if (!empty($classFile)) {
if ($debug) echo
"<p>CLASSFILE: $classFile</p>";
$classFile=
$GLOBALS['OCSP']['DBMSFLD_PATH'].
$className.
".phpclass";
$classFile=
$GLOBALS['PROJECT'].
"db/frmClasses/".
$className.
".phpclass";
$classFile=
$GLOBALS['OCSP'].
"db/frmClasses/".
$className.
".phpclass";
if (!empty($classFile)) {
if ($debug) echo
"<p>CLASSFILE: $classFile</p>";
@include_once $className.
".phpinc";
* changes the class of a form field
* @param string $newClassName
if ($debug) echo
"<p><b>DBMS_field_ChangeClass(\$fld,$newClassName,...)</b> (".__FILE__.
")</p>";
require_once $GLOBALS['OCSP']['PHPINCPATH'].
"common/pcf.phpinc";
if ($debug) echo
"<p>SOURCE Field is not an object</p>";
if ($debug) echo
"<p>SOURCE Field (".
get_class($fld).
") is not an instance of DBMS_FIELD</p>";
unset
($oldVals['className']);
unset
($oldVals['classSrcFile']);
$cmd=
"\$tmp=new ".
$newClassName.
"(\$oldVals['myTable'],\$oldVals['myName'],\$oldVals['dbDesc'],\$oldVals['sortOrder']);";
if ($debug) echo
"<pre>$cmd</pre>";
foreach($oldVals as $key =>
$val) {
* includes all field object class sources
* @version pk-05-08-26 default for $debug added
* @version pk-05-10-10 DBMD_FLDCLASS_DESC -> DBMS_FLDCLASS_DESC
* @var string $s_className
if ($debug) echo
"<p><b>DBMS_field_IncludeAllSrc()</b> (".__FILE__.
")</p>";
if (isset
($GLOBALS['DBMS_FLDCLASS_DESC']) &&
(is_array($GLOBALS['DBMS_FLDCLASS_DESC']))) { // <pk-07-08-19 /> E_ALL
foreach($GLOBALS['DBMS_FLDCLASS_DESC'] as $s_className =>
$a_FldDesc) {
//if ($debug) echoDebugLine(__FILE__,__LINE__,"<h2>DBMS_FIELD_CLASSES:</h2><pre>" . print_r( $GLOBALS['DBMS_FIELD_CLASSES'],True) . "</pre>");
Documentation generated on Thu, 08 Jan 2009 17:44:09 +0100 by phpDocumentor 1.4.0a2