diff options
Diffstat (limited to 'lib/debug.php')
-rw-r--r-- | lib/debug.php | 361 |
1 files changed, 361 insertions, 0 deletions
diff --git a/lib/debug.php b/lib/debug.php new file mode 100644 index 00000000..c554daf7 --- /dev/null +++ b/lib/debug.php @@ -0,0 +1,361 @@ +<?php +/* + + Copyright (c) 2004 Ampache.org + All rights reserved. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + + +/* + @header Debug Library + This library is loaded when somehow our mojo has + been lost, it contains functions for checking sql + connections, web paths etc.. +*/ + +/*! + @function read_config_file + @discussion checks to see if the config + file is readable, overkill I know.. + @param level 0 is readable, 1 detailed info +*/ +function read_config_file($file,$level=0) { + + $fp = @fopen($file, 'r'); + + if (!$level) { + return is_resource($fp); + } + + +} // read_config_file + +/*! + @function check_database + @discussion checks the local mysql db + and make sure life is good +*/ +function check_database($host,$username,$pass,$db,$level=0) { + + $dbh = @mysql_connect($host, $username, $pass); + + if (!is_resource($dbh)) { + $error['error_state'] = true; + $error['mysql_error'] = mysql_errno() . ": " . mysql_error() . "\n"; + } + if (!$host || !$username || !$pass) { + $error['error_state'] = true; + $error['mysql_error'] .= "<br />HOST:$host<br />User:$username<br />Pass:$pass<br />"; + } +print_r($error); + if ($error['error_state']) { return false; } + + + return $dbh; + +} // check_database + +/*! + @function check_database_inserted + @discussion checks to make sure that you + have inserted the database and that the user + you are using has access to it +*/ +function check_database_inserted($dbh,$db_name) { + + + if (!@mysql_select_db($db_name,$dbh)) { + return false; + } + + $sql = "DESCRIBE session"; + $db_results = @mysql_query($sql, $dbh); + if (!@mysql_num_rows($db_results)) { + return false; + } + + return true; + +} // check_database_inserted + +/*! + @function check_php_ver + @discussion checks the php version and makes + sure that it's good enough +*/ +function check_php_ver($level=0) { + + if (strcmp('4.1.2',phpversion()) > 0) { + $error['error_state'] = true; + $error['php_ver'] = phpversion(); + } + + if ($error['error_state']) { return false; } + + return true; + +} // check_php_ver + +/*! + @function check_php_mysql + @discussion checks for mysql support +*/ +function check_php_mysql() { + + if (!function_exists('mysql_query')) { + $error['error_state'] = true; + $error['php_mysql'] = false; + } + + if ($error['error_state']) { return false; } + + return true; + +} // check_php_mysql + +/*! + @function check_php_session + @discussion checks to make sure the needed functions + for sessions exist +*/ +function check_php_session() { + + if (!function_exists('session_set_save_handler')) { + $error['error_state'] = true; + $error['php_session'] = false; + } + + if ($error['error_state']) { return false; } + + return true; + +} // check_php_session + +/*! + @function check_php_iconv + @discussion checks to see if you have iconv installed +*/ +function check_php_iconv() { + + if (!function_exists('iconv')) { + $error['error_state'] = true; + $error['php_iconv'] = false; + } + + if ($error['error_state']) { return false; } + + return true; + +} // check_php_iconv + +/*! + @function check_config_values() + @discussion checks to make sure that they have at + least set the needed variables +*/ +function check_config_values($conf) { + + if (!$conf['libglue']['local_host']) { + return false; + } + if (!$conf['libglue']['local_db']) { + return false; + } + if (!$conf['libglue']['local_username']) { + return false; + } + if (!$conf['libglue']['local_pass']) { + return false; + } + if (!$conf['libglue']['local_length']) { + return false; + } + + return true; + +} // check_config_values + +/*! + @function show_compare_config + @discussion shows the difference between ampache.cfg + and ampache.cfg.dst +*/ +function show_compare_config($prefix) { + + + // Live Config File + $live_config = $prefix . "/config/ampache.cfg.php"; + + // Generic Config File + $generic_config = $prefix . "/config/ampache.cfg.dist"; + +} // show_compare_config + + +/*! + @function debug_read_config + @discussion this is the same as the read config function + except it will pull config values with a # before them + (basicly adding a #config="value" check) and not + ever dieing on a config file error +*/ +function debug_read_config($config_file,$debug) { + + $fp = @fopen($config_file,'r'); + if(!is_resource($fp)) return false; + $file_data = fread($fp,filesize($config_file)); + fclose($fp); + + // explode the var by \n's + $data = explode("\n",$file_data); + if($debug) echo "<pre>"; + $count = 0; + + foreach($data as $value) { + $count++; + + $value = trim($value); + + if (preg_match("/^\[([A-Za-z]+)\]$/",$value,$matches)) { + // If we have previous data put it into $results... + if (isset($config_name) && isset(${$config_name}) && count(${$config_name})) { + $results[$config_name] = ${$config_name}; + } + + $config_name = $matches[1]; + + } // if it is a [section] name + + + elseif (isset($config_name)) { + + // if it's not a comment + if (preg_match("/^#?([\w\d]+)\s+=\s+[\"]{1}(.*?)[\"]{1}$/",$value,$matches) + || preg_match("/^#?([\w\d]+)\s+=\s+[\']{1}(.*?)[\']{1}$/", $value, $matches) + || preg_match("/^#?([\w\d]+)\s+=\s+[\'\"]{0}(.*)[\'\"]{0}$/",$value,$matches)) { + + if (isset(${$config_name}[$matches[1]]) && is_array(${$config_name}[$matches[1]]) && isset($matches[2]) ) { + if($debug) echo "Adding value <strong>$matches[2]</strong> to existing key <strong>$matches[1]</strong>\n"; + array_push(${$config_name}[$matches[1]], $matches[2]); + } + + elseif (isset(${$config_name}[$matches[1]]) && isset($matches[2]) ) { + if($debug) echo "Adding value <strong>$matches[2]</strong> to existing key $matches[1]</strong>\n"; + ${$config_name}[$matches[1]] = array(${$config_name}[$matches[1]],$matches[2]); + } + + elseif ($matches[2] !== "") { + if($debug) echo "Adding value <strong>$matches[2]</strong> for key <strong>$matches[1]</strong>\n"; + ${$config_name}[$matches[1]] = $matches[2]; + } + + // if there is something there and it's not a comment + elseif ($value{0} !== "#" AND strlen(trim($value)) > 0 AND !$test AND strlen($matches[2]) > 0) { + echo "Error Invalid Config Entry --> Line:$count"; return false; + } // elseif it's not a comment and there is something there + + else { + if($debug) echo "Key <strong>$matches[1]</strong> defined, but no value set\n"; + } + } // end if it's not a comment + + } // elseif no config_name + + elseif (preg_match("/^#?([\w\d]+)\s+=\s+[\"]{1}(.*?)[\"]{1}$/",$value,$matches) + || preg_match("/^#?([\w\d]+)\s+=\s+[\']{1}(.*?)[\']{1}$/", $value, $matches) + || preg_match("/^#?([\w\d]+)\s+=\s+[\'\"]{0}(.*)[\'\"]{0}$/",$value,$matches)) { + + + if (is_array($results[$matches[1]]) && isset($matches[2]) ) { + if($debug) echo "Adding value <strong>$matches[2]</strong> to existing key <strong>$matches[1]</strong>\n"; + array_push($results[$matches[1]], $matches[2]); + } + + elseif (isset($results[$matches[1]]) && isset($matches[2]) ) { + if($debug) echo "Adding value <strong>$matches[2]</strong> to existing key $matches[1]</strong>\n"; + $results[$matches[1]] = array($results[$matches[1]],$matches[2]); + } + + elseif ($matches[2] !== "") { + if($debug) echo "Adding value <strong>$matches[2]</strong> for key <strong>$matches[1]</strong>\n"; + $results[$matches[1]] = $matches[2]; + } + + // if there is something there and it's not a comment + elseif ($value{0} !== "#" AND strlen(trim($value)) > 0 AND !$test AND strlen($matches[2]) > 0) { + echo "Error Invalid Config Entry --> Line:$count"; return false; + } // elseif it's not a comment and there is something there + + else { + if($debug) echo "Key <strong>$matches[1]</strong> defined, but no value set\n"; + } + + } // end else + + } // foreach + + if (isset($config_name) && isset(${$config_name}) && count(${$config_name})) { + $results[$config_name] = ${$config_name}; + } + + if($debug) echo "</pre>"; + + return $results; + +} // debug_read_config + +/*! + @function debug_compare_configs + @discussion this takes two config files, and then compares + the results and returns an array of the values + that are missing from the first one passed +*/ +function debug_compare_configs($config,$dist_config) { + + + + /* Get the results from the two difference configs including #'d values */ + $results = debug_read_config($config,0); + $dist_results = debug_read_config($dist_config,0); + + $missing = array(); + if (!count($dist_results['conf'])) { $dist_results['conf'] = array(); } + if (!count($dist_results['libglue'])) { $dist_results['libglue'] = array(); } + + foreach ($dist_results['conf'] as $key=>$value) { + + if (!isset($results['conf'][$key])) { + $missing['conf'][$key] = $value; + } + + } // end foreach conf + + foreach ($dist_results['libglue'] as $key=>$value) { + + if (!isset($results['libglue'][$key])) { + $missing['libglue'][$key] = $value; + } + + } // end foreach libglue + + return $missing; + +} // debug_compare_configs + + +?> |