openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 033306a3b109cd0ac4e22d2996c4a77f12ce1f52
parent 2c9056034609d1c0eabddd9d67134c67fd8ff5d4
Author: dankert <devnull@localhost>
Date:   Mon,  7 Dec 2009 09:50:20 +0100

Funktionen für das automatische Bereinigen von Inhalten aus dem Archiv.

Diffstat:
actionClasses/ProjectAction.class.php | 30++++++++++++++----------------
language/de.ini.php | 2++
language/en.ini.php | 2++
objectClasses/Value.class.php | 69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
themes/default/templates/project/maintenance.tpl.src.php | 16++++++++++++----
5 files changed, 99 insertions(+), 20 deletions(-)

diff --git a/actionClasses/ProjectAction.class.php b/actionClasses/ProjectAction.class.php @@ -205,26 +205,24 @@ class ProjectAction extends Action /** * Wartung durchfuehren. - * @return unknown_type */ function maintenanceAction() { - if ( !$this->getRequestVar('type')=='check_files' ) + switch( $this->getRequestVar('type') ) { - $this->project->checkLostFiles(); - $this->addNotice('project',$this->project->name,'DONE'); - $this->setTemplateVar('done',true); - } - elseif ( !$this->getRequestVar('type')=='clean_old_values' ) - { - $this->project->checkLostFiles(); - $this->addNotice('project',$this->project->name,'DONE'); - $this->setTemplateVar('done',true); - } - else - { - $this->addValidationError('type'); - return; + case 'check_files': + $this->project->checkLostFiles(); + $this->addNotice('project',$this->project->name,'DONE'); + break; + + case 'check_limit': + $this->project->checkLimit(); + $this->addNotice('project',$this->project->name,'DONE'); + break; + + default: + $this->addValidationError('type'); + return; } } diff --git a/language/de.ini.php b/language/de.ini.php @@ -1040,3 +1040,5 @@ USER_USERNAME_DESC = "Mit diesem Namen meldet sich der Benutzer am System an" USER_YOURPROFILE = "Persönliche Einstellungen" VALUE = Inhalt WEEK="Woche" +PROJECT_CHECK_FILES="Integritätsprüfung der Ordnerstruktur" +PROJECT_CHECK_LIMIT="Entfernen von alten Inhalten aus dem Archiv" diff --git a/language/en.ini.php b/language/en.ini.php @@ -1061,3 +1061,5 @@ MENU_LINK_EDIT_DESC = "Edit target" MENU_SEARCH_PROP = "Property" MENU_USER_ADD_DESC = "Add new user" SETTING="Setting" +PROJECT_CHECK_FILES="Folder Integritycheck" +PROJECT_CHECK_LIMIT="Remove old values from archives" diff --git a/objectClasses/Value.class.php b/objectClasses/Value.class.php @@ -418,9 +418,78 @@ SQL $sql->setInt ( 'lastchange_userid',$user->userid ); $db->query( $sql ); + + $this->checkLimit(); } + + /** + * Pruefen, ob maximale Anzahl von Versionen erreicht. + * In diesem Fall die zu alten Versionen löschen. + */ + function checkLimit() + { + $limit = config('content','revision-limit'); + + // Nur ausfuehren, wenn in Konfiguration aktiviert. + if ( !$limit['enabled'] ) + return; + + $db = db_connection(); + $sql = new Sql( <<<SQL + SELECT valueid FROM {t_value} + WHERE elementid = {elementid} + AND pageid = {pageid} + AND languageid = {languageid} + AND active = 0 + AND publish = 0 +SQL + ); + $sql->setInt( 'elementid' ,$this->element->elementid ); + $sql->setInt( 'pageid' ,$this->pageid ); + $sql->setInt( 'languageid',$this->languageid ); + $values = $db->getCol( $sql ); + + if ( count($values) > $limit['min-revisions'] ) + { + $sql = new Sql( <<<SQL + DELETE FROM {t_value} + WHERE elementid = {elementid} + AND pageid = {pageid} + AND languageid = {languageid} + AND active = 0 + AND publish = 0 + AND lastchange_date < {min_date} + AND id < {min_id} +SQL + ); + $sql->setInt('min_date',$limit['max-age']); + $sql->setInt('min_id' ,$values[$limit['min-revisions']-1]); + $sql->query(); + } + + if ( count($values) > $limit['max-revisions'] ) + { + $sql = new Sql( <<<SQL + DELETE FROM {t_value} + WHERE elementid = {elementid} + AND pageid = {pageid} + AND languageid = {languageid} + AND active = 0 + AND publish = 0 + AND lastchange_date < {min_date} + AND id < {min_id} +SQL + ); + $sql->setInt('min_date',$limit['min-age']); + $sql->setInt('min_id' ,$values[$limit['max-revisions']-1]); + $sql->query(); + } + } + + + /** * Diesen Inhalt loeschen */ diff --git a/themes/default/templates/project/maintenance.tpl.src.php b/themes/default/templates/project/maintenance.tpl.src.php @@ -3,9 +3,17 @@ page window icon:project name:GLOBAL_PROJECT row cell colspan:2 - label for:check_files - checkbox name:check_files + fieldset title:message:options + row + cell colspan:2 + label for:type_check_limit + radio name:type value:check_limit + text key:project_check_limit + row + cell colspan:2 + label for:type_check_files + radio name:type value:check_files text key:project_check_files row cell colspan:2 class:act - button type:OK- \ No newline at end of file + button type:ok+ \ No newline at end of file