diff options
Diffstat (limited to 'mod/logrotate')
| -rw-r--r-- | mod/logrotate/languages/en.php | 5 | ||||
| -rw-r--r-- | mod/logrotate/manifest.xml | 7 | ||||
| -rw-r--r-- | mod/logrotate/start.php | 56 | ||||
| -rw-r--r-- | mod/logrotate/views/default/plugins/logrotate/settings.php (renamed from mod/logrotate/views/default/settings/logrotate/edit.php) | 32 |
4 files changed, 50 insertions, 50 deletions
diff --git a/mod/logrotate/languages/en.php b/mod/logrotate/languages/en.php index c3cf2d8ad..d785ad50d 100644 --- a/mod/logrotate/languages/en.php +++ b/mod/logrotate/languages/en.php @@ -15,14 +15,15 @@ $english = array( 'logrotate:logrotated' => "Log rotated\n", 'logrotate:lognotrotated' => "Error rotating log\n", - 'logrotate:date' => 'Delete archived logs older than a', + 'logrotate:delete' => 'Delete archived logs older than a', 'logrotate:week' => 'week', 'logrotate:month' => 'month', 'logrotate:year' => 'year', + 'logrotate:never' => 'never', 'logrotate:logdeleted' => "Log deleted\n", - 'logrotate:lognotdeleted' => "Error deleting log\n", + 'logrotate:lognotdeleted' => "No logs deleted\n", ); add_translation("en", $english); diff --git a/mod/logrotate/manifest.xml b/mod/logrotate/manifest.xml index ab6250ac0..1aa62e2e7 100644 --- a/mod/logrotate/manifest.xml +++ b/mod/logrotate/manifest.xml @@ -8,11 +8,10 @@ <description>Rotate the system log at specific intervals</description> <website>http://www.elgg.org/</website> <copyright>See COPYRIGHT.txt</copyright> - <license>GNU Public License version 2</license> + <license>GNU General Public License version 2</license> <requires> - <type>elgg_version</type> - <version>2009030702</version> + <type>elgg_release</type> + <version>1.8</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/logrotate/start.php b/mod/logrotate/start.php index c05506d83..f67e419bc 100644 --- a/mod/logrotate/start.php +++ b/mod/logrotate/start.php @@ -9,7 +9,7 @@ elgg_register_event_handler('init', 'system', 'logrotate_init'); function logrotate_init() { $period = elgg_get_plugin_setting('period', 'logrotate'); - $time = elgg_get_plugin_setting('time', 'logrotate'); + $delete = elgg_get_plugin_setting('delete', 'logrotate'); switch ($period) { case 'weekly': case 'monthly' : @@ -21,8 +21,11 @@ function logrotate_init() { // Register cron hook for archival of logs elgg_register_plugin_hook_handler('cron', $period, 'logrotate_archive_cron'); - // Register cron hook for deletion of selected archived logs - elgg_register_plugin_hook_handler('cron', $time, 'logrotate_delete_cron'); + + if ($delete != 'never') { + // Register cron hook for deletion of selected archived logs + elgg_register_plugin_hook_handler('cron', $delete, 'logrotate_delete_cron'); + } } /** @@ -64,7 +67,7 @@ function logrotate_delete_cron($hook, $entity_type, $returnvalue, $params) { $day = 86400; $offset = 0; - $period = elgg_get_plugin_setting('time', 'logrotate'); + $period = elgg_get_plugin_setting('delete', 'logrotate'); switch ($period) { case 'weekly': $offset = $day * 7; @@ -88,35 +91,32 @@ function logrotate_delete_cron($hook, $entity_type, $returnvalue, $params) { /** * This function deletes archived copies of the system logs that are older than specified. * - * @param int $time_of_delete An offset in seconds from now to delete (useful for log deletion) + * @param int $time_of_delete An offset in seconds from now to delete log tables + * @return bool Were any log tables deleted */ - function log_browser_delete_log($time_of_delete) { global $CONFIG; - $offset = (int)$time_of_delete; - $now = time(); - - $ts = $now - $offset; - - $FLAG = 1; - $result = mysql_query("SHOW TABLES like '{$CONFIG->dbprefix}system_log_%'"); - while ($showtablerow = mysql_fetch_array($result)) { - //To obtain time of archival - $log_time = explode("{$CONFIG->dbprefix}system_log_", $showtablerow[0]); - if ($log_time < $ts) { - //If the time of archival is before the required offset then delete - if (!mysql_query("DROP TABLE $showtablerow[0]")) { - $FLAG = 0; - } + $cutoff = time() - (int)$time_of_delete; + + $deleted_tables = false; + $results = get_data("SHOW TABLES like '{$CONFIG->dbprefix}system_log_%'"); + if ($results) { + foreach ($results as $result) { + $data = (array)$result; + $table_name = array_shift($data); + // extract log table rotation time + $log_time = str_replace("{$CONFIG->dbprefix}system_log_", '', $table_name); + if ($log_time < $cutoff) { + if (delete_data("DROP TABLE $table_name") !== false) { + // delete_data returns 0 when dropping a table (false for failure) + $deleted_tables = true; + } else { + elgg_log("Failed to delete the log table $table_name", 'ERROR'); + } + } } } - //Check if the appropriate tables have been deleted and return true if yes - if ($FLAG) { - return true; - } else { - return false; - } - + return $deleted_tables; } diff --git a/mod/logrotate/views/default/settings/logrotate/edit.php b/mod/logrotate/views/default/plugins/logrotate/settings.php index 206051780..9fd3e08df 100644 --- a/mod/logrotate/views/default/settings/logrotate/edit.php +++ b/mod/logrotate/views/default/plugins/logrotate/settings.php @@ -6,19 +6,19 @@ */ $period = $vars['entity']->period; -$time = $vars['entity']->time; +$delete = $vars['entity']->delete; if (!$period) { $period = 'monthly'; } -if (!$time) { - $time = 'monthly'; +if (!$delete) { + $delete = 'monthly'; } ?> -<p> - <?php echo elgg_echo('logrotate:period'); ?> - +<div> <?php + + echo elgg_echo('logrotate:period') . ' '; echo elgg_view('input/dropdown', array( 'name' => 'params[period]', 'options_values' => array( @@ -26,23 +26,23 @@ if (!$time) { 'monthly' => elgg_echo('logrotate:monthly'), 'yearly' => elgg_echo('logrotate:yearly'), ), - 'value' => $period + 'value' => $period, )); ?> - - <?php echo elgg_echo('<br>'); ?> - - <?php echo elgg_echo('logrotate:date'); ?> - +</div> +<div> <?php - echo elgg_view('input/pulldown', array( - 'internalname' => 'params[time]', + + echo elgg_echo('logrotate:delete') . ' '; + echo elgg_view('input/dropdown', array( + 'name' => 'params[delete]', 'options_values' => array( 'weekly' => elgg_echo('logrotate:week'), 'monthly' => elgg_echo('logrotate:month'), 'yearly' => elgg_echo('logrotate:year'), + 'never' => elgg_echo('logrotate:never'), ), - 'value' => $time + 'value' => $delete, )); ?> -</p> +</div> |
