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
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('<' => '<', '>' => '>', '"' => '"', ' ' => ' '));
00077 $msg = strtr($msg, array('<br />' => '<br />', '<b>' => '<b>', '</b>' => '</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
00111
00112
00113
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
00124
00125
00126
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();
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 }