embient.util.php

Go to the documentation of this file.
00001 <?php
00002 
00011 require_once("domit/xml_domit_include.php");
00012 require_once('domit/xml_domit_utilities.php');
00013 
00015 define('XMLCFG',  'config.xml');
00016 
00018 define('MAINSEC', 'embient');
00019 
00020 // ----------------------------------------------
00021 
00028 $embient_debug_msg = '';
00029 
00031 $embient_dir = '';
00032 
00033 // ----------------------------------------------
00034 
00041 $_embient_extern_fn = array();
00042 
00043 // ----------------------------------------------
00044 
00045 // initialise DOMIT
00046 DOMIT_DOMException::setErrorMode(DOMIT_ONERROR_CONTINUE);
00047 DOMIT_DOMException::setErrorLog(false, '');
00048 
00049 // ----------------------------------------------
00050 
00057 function embient_debug($msg)
00058 {
00059   global $embient_debug_msg;
00060   global $_embient_extern_fn;
00061 
00062   if ( !empty($_embient_extern_fn['debug']) && function_exists($_embient_extern_fn['debug']) )
00063   {
00064     call_user_func($_embient_extern_fn['debug'], $msg);
00065   }
00066   else
00067   {
00068     echo "Debug: $msg<br>";
00069     flush();
00070   }
00071 
00072   embient_log('debug', $msg, true);
00073 
00074   $msg .= "\n";
00075 
00076   $msg = strtr($msg, array('<' => '&lt;', '>' => '&gt;', '"' => '&quot;', ' ' => '&nbsp;'));
00077   $msg = strtr($msg, array('&lt;br /&gt;' => '<br />', '&lt;b&gt;' => '<b>', '&lt;/b&gt;' => '</b>', "\n" => '<br />'));
00078 
00079   $embient_debug_msg .= $msg;
00080 }
00081 
00092 function embient_error($msg, $file = __FILE__, $line = __LINE__)
00093 {
00094   global $_embient_extern_fn;
00095 
00096   if ( !empty($_embient_extern_fn['error']) && function_exists($_embient_extern_fn['error']) )
00097   {
00098     call_user_func($_embient_extern_fn['error'], $msg, $file, $line);
00099   }
00100   else
00101   {
00102     echo "Error: $msg<br>";
00103     flush();
00104   }
00105 
00106   embient_log('error', "($file@$line) $msg", true);
00107 }
00108 
00109 /*
00110  * @brief Error message log facility for the active system
00111  *
00112  * @param $fn
00113  *   object - log function body
00114  */
00115  function embient_set_error_logger($logger)
00116 {
00117   global $_embient_extern_fn;
00118 
00119   $_embient_extern_fn['error'] = $logger;
00120 }
00121 
00122 /*
00123  * @brief Debug message log facility for the active system
00124  *
00125  * @param $fn
00126  *   object - log function body
00127  */
00128  function embient_set_debug_logger($logger)
00129 {
00130   global $_embient_extern_fn;
00131 
00132   $_embient_extern_fn['debug'] = $logger;
00133 }
00134 
00145 function embient_log($filename, $str, $timestamp = false)
00146 {
00147   global $embient_dir;
00148 
00149   $handle = fopen("$embient_dir/embient.$filename.log", 'a');
00150 
00151   if ( $handle )
00152   {
00153     $stamp = '';
00154 
00155     if ( $timestamp )
00156     {
00157       $stamp = strftime("%d-%b-%Y %H:%M:%S - ");
00158     }
00159 
00160     fwrite($handle, $stamp.$str ."\n");
00161     fclose($handle);
00162   }
00163 }
00164 
00176 function embient_load_with_default($val, $default)
00177 {
00178   return ( empty($val) ? $default : $val );
00179 }
00180 
00191 function embient_create_XML_tree($root)
00192 {
00193   $tree = array();
00194 
00195   if ( $root->hasChildNodes() )
00196   {
00197     $c =& $root->childCount;
00198 
00199     for ($i = 0; $i < $c; $i++)
00200     {
00201       $leaf =& $root->childNodes[$i];
00202 
00203       if ( ! empty($leaf->nodeValue) )
00204       {
00205         return trim($leaf->getText());
00206       }
00207       else
00208       {
00209         $tree[$leaf->nodeName] = embient_create_XML_tree($leaf);
00210       }
00211     }
00212   }
00213 
00214   return empty($tree) ? '' : $tree;
00215 }
00216 
00223 function embient_load_config()
00224 {
00225   global $embient_dir;
00226 
00227   $xmlcfg = new DOMIT_Document(); //instance of a DOMIT! document
00228 
00229   if ( ! $xmlcfg->loadXML("$embient_dir/". XMLCFG) )
00230   {
00231     embient_error("Cannot load configuration file - ". $xmlcfg->getErrorString());
00232     return array();
00233   }
00234 
00235   return embient_create_XML_tree($xmlcfg->documentElement);
00236 }
00237 
00248 function embient_save_config($conf)
00249 {
00250   global $embient_dir;
00251 
00252   $xmlcfg =& new DOMIT_Document();
00253   $cfgval = array(MAINSEC => array($conf));
00254 
00255   DOMIT_Utilities::fromArray($xmlcfg, $cfgval );
00256 
00257   if ( ! $xmlcfg->saveXML("$embient_dir/". XMLCFG, true) )
00258   {
00259     embient_error("Cannot save configuration file - ". $xmlcfg->getErrorString());
00260     return false;
00261   }
00262   return true;
00263 }

Generated on Fri Feb 10 15:05:54 2006 for Embient by  doxygen 1.4.6-NO