/** * This user-defined error handler supports the built-in error_reporting() * function, and is basically just an expansion of the built-in error- * handling routine. If it receives a fatal error (E_USER_ERROR or E_ERROR), * it prints a more reassuring message to the viewer of the page and sends an * email message to the address stored in Error_Email, which is defined in * conf.php. /**/ function error_handler($errno, $errstr, $errfile, $errline, $vars) { global $db; if (class_exists('Translate')) { $errstr = Translate::find()->string($errstr); } // Try to auto-repair damaged SQL tables if ($db && preg_match("/Incorrect key file for table: '(\\w+)'/", $errstr, $match)) { $db->query('REPAIR TABLE ' . $match[1]); } // Don't die on so-called fatal regex errors if (preg_match("/Got error '(.+?)' from regexp/", $errstr, $match)) { add_error('Regular Expression Error: ' . $match[1]); return; } // Leave early if we haven't requested reports from this kind of error if (!($errno & error_reporting())) { return; } // Fatal errors should report considerably more detail if (in_array($errno, array(E_USER_ERROR, E_ERROR))) { // What type of error? $subject = 'FATAL Error'; // Email a backtrace $err = build_backtrace($errno, $errstr, $errfile, $errline, $vars); email_backtrace($err, $errfile, $errline, $subject); // Print something to the user, too. if (file_exists('modules/_shared/tmpl/_errors/fatal.php')) { require_once 'modules/_shared/tmpl/_errors/fatal.php'; } else { echo "<hr><p><b>Fatal Error</b> at {$errfile}, line {$errline}:<br />{$errstr}</p>\n", '<p>If you choose to ', '<b><u><a href="http://svn.mythtv.org/trac/newticket" target="_blank">submit a bug report</a></u></b>, ', 'please make sure to include a<br />', 'brief description of what you were doing, along with the following<br />', 'backtrace as an attachment (please don\'t paste the whole thing into<br />', "the ticket).\n", "<hr>\n", "<b>Backtrace</b>:<br />\n<pre>", htmlentities($err), '</pre>'; } // Fatal error means that we exit. exit; } else { echo "<hr><p><b>", error_type($errno), "</b>", " at {$errfile}, line {$errline}:<br />{$errstr}</p>\n", "<!-- " . build_backtrace($errno, $errstr, $errfile, $errline, $vars) . " -->\n", "<hr>\n"; } }
// Change language? Make sure we load the new translation file, too. if ($_POST['language'] && $_POST['language'] != $_SESSION['language']) { $_SESSION['language'] = $_POST['language']; // Unset the date/time formats in session so translation can fill in the // language specific defaults unset($_SESSION['date_statusbar']); unset($_SESSION['date_scheduled']); unset($_SESSION['date_scheduled_popup']); unset($_SESSION['date_recorded']); unset($_SESSION['date_search']); unset($_SESSION['date_listing_key']); unset($_SESSION['date_listing_jump']); unset($_SESSION['date_channel_jump']); unset($_SESSION['date_job_status']); unset($_SESSION['time_format']); Translate::find()->load_translation(); } redirect_browser(module . '/' . $Path[1] . '/' . $Path[2]); } /** * Displays a <select> of the available templates /**/ function template_select($name = 'tmpl', $selected = null) { echo '<select name="' . $name . '">'; foreach (array('default', 'lite', 'kgtv') as $tmpl) { // Print the option echo '<option value="' . html_entities($tmpl) . '"'; if ($selected == $tmpl) { echo ' SELECTED'; }
function tn($string) { $args = func_get_args(); $args = array_slice($args, 1); return Translate::find()->number($string, $args); }