diff --git a/mod/admin.php b/mod/admin.php
index 8add5d7f0..c54b0e9cb 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -158,6 +158,7 @@ function admin_content(&$a) {
}
$aside_tools['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs");
+ $aside_tools['viewlogs'] = Array($a->get_baseurl(true)."/admin/viewlogs/", t("View Logs"), 'viewlogs');
$aside_tools['diagnostics_probe'] = Array($a->get_baseurl(true).'/probe/', t('probe address'), 'probe');
$aside_tools['diagnostics_webfinger'] = Array($a->get_baseurl(true).'/webfinger/', t('check webfinger'), 'webfinger');
@@ -165,12 +166,12 @@ function admin_content(&$a) {
$a->page['aside'] .= replace_macros( $t, array(
'$admin' => $aside_tools,
'$subpages' => $aside_sub,
- '$admtxt' => t('Admin'),
- '$plugadmtxt' => t('Plugin Features'),
- '$logtxt' => t('Logs'),
- '$diagnosticstxt' => t('diagnostics'),
- '$h_pending' => t('User registrations waiting for confirmation'),
- '$admurl'=> $a->get_baseurl(true)."/admin/"
+ '$admtxt' => t('Admin'),
+ '$plugadmtxt' => t('Plugin Features'),
+ '$logtxt' => t('Logs'),
+ '$diagnosticstxt' => t('diagnostics'),
+ '$h_pending' => t('User registrations waiting for confirmation'),
+ '$admurl'=> $a->get_baseurl(true)."/admin/"
));
@@ -197,6 +198,9 @@ function admin_content(&$a) {
case 'logs':
$o = admin_page_logs($a);
break;
+ case 'viewlogs':
+ $o = admin_page_viewlogs($a);
+ break;
case 'dbsync':
$o = admin_page_dbsync($a);
break;
@@ -1672,7 +1676,18 @@ function admin_page_logs_post(&$a) {
}
/**
- * @brief generates admin panel subpage for Logs
+ * @brief generates admin panel subpage for configuration of the logs
+ *
+ * This function take the view/templates/admin_logs.tpl file and generates a
+ * page where admin can configure the logging of friendica.
+ *
+ * Displaying the log is separated from the log config as the logfile can get
+ * big depending on the settings and changing settings regarding the logs can
+ * thus waste bandwidth.
+ *
+ * The string returned contains the content of the template file with replaced
+ * macros.
+ *
* @param App $a
* @return string
*/
@@ -1688,7 +1703,7 @@ function admin_page_logs(&$a){
$t = get_markup_template("admin_logs.tpl");
- $f = get_config('system','logfile');
+/* $f = get_config('system','logfile');
$data = '';
@@ -1717,14 +1732,14 @@ readable.");
}
fclose($fp);
}
- }
+ }*/
return replace_macros($t, array(
'$title' => t('Administration'),
'$page' => t('Logs'),
'$submit' => t('Save Settings'),
'$clear' => t('Clear'),
- '$data' => $data,
+// '$data' => $data,
'$baseurl' => $a->get_baseurl(true),
'$logname' => get_config('system','logfile'),
@@ -1734,9 +1749,67 @@ readable.");
'$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices),
'$form_security_token' => get_form_security_token("admin_logs"),
+ '$phpheader' => t("PHP logging"),
+ '$phphint' => t("To enable logging of PHP errors and warnings you can add the following to the .htconfig.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."),
+ '$phplogcode' => "error_reporting(E_ERROR | E_WARNING | E_PARSE );\nini_set('error_log','php.out');\nini_set('log_errors','1');\nini_set('display_errors', '1');",
));
}
+/**
+ * @brief generates admin panel subpage to view the Friendica log
+ *
+ * This function loads the template view/templates/admin_viewlogs.tpl to
+ * display the systemlog content. The filename for the systemlog of friendica
+ * is relative to the base directory and taken from the config entry 'logfile'
+ * in the 'system' category.
+ *
+ * Displaying the log is separated from the log config as the logfile can get
+ * big depending on the settings and changing settings regarding the logs can
+ * thus waste bandwidth.
+ *
+ * The string returned contains the content of the template file with replaced
+ * macros.
+ *
+ * @param App $a
+ * @return string
+ */
+function admin_page_viewlogs(&$a){
+ $t = get_markup_template("admin_viewlogs.tpl");
+ $f = get_config('system','logfile');
+ $data = '';
+
+ if(!file_exists($f)) {
+ $data = t("Error trying to open $f log file.\r\n
Check to see if file $f exist and is readable.");
+ }
+ else {
+ $fp = fopen($f, 'r');
+ if(!$fp) {
+ $data = t("Couldn't open $f log file.\r\n
Check to see if file $f is readable.");
+ }
+ else {
+ $fstat = fstat($fp);
+ $size = $fstat['size'];
+ if($size != 0)
+ {
+ if($size > 5000000 || $size < 0)
+ $size = 5000000;
+ $seek = fseek($fp,0-$size,SEEK_END);
+ if($seek === 0) {
+ $data = escape_tags(fread($fp,$size));
+ while(! feof($fp))
+ $data .= escape_tags(fread($fp,4096));
+ }
+ }
+ fclose($fp);
+ }
+ }
+ return replace_macros($t, array(
+ '$title' => t('Administration'),
+ '$page' => t('View Logs'),
+ '$data' => $data,
+ '$logname' => get_config('system','logfile')
+ ));
+}
/**
* @param App $a
*/