[ros-diffs] [dgoette] 37567: if stable entries of type 'page' or dynamic 'content' are deleted -> delete them also from hdd and not only in our Database
dgoette at svn.reactos.org
dgoette at svn.reactos.org
Sat Nov 22 21:49:00 CET 2008
Author: dgoette
Date: Sat Nov 22 14:49:00 2008
New Revision: 37567
URL: http://svn.reactos.org/svn/reactos?rev=37567&view=rev
Log:
if stable entries of type 'page' or dynamic 'content' are deleted -> delete them also from hdd and not only in our Database
Modified:
branches/danny-web/reactos.org/htdocs/roscms/lib/Data.class.php
Modified: branches/danny-web/reactos.org/htdocs/roscms/lib/Data.class.php
URL: http://svn.reactos.org/svn/reactos/branches/danny-web/reactos.org/htdocs/roscms/lib/Data.class.php?rev=37567&r1=37566&r2=37567&view=diff
==============================================================================
--- branches/danny-web/reactos.org/htdocs/roscms/lib/Data.class.php [iso-8859-1] (original)
+++ branches/danny-web/reactos.org/htdocs/roscms/lib/Data.class.php [iso-8859-1] Sat Nov 22 14:49:00 2008
@@ -229,6 +229,69 @@
}
}
} // end of member function getCookieDomain
+
+
+ /**
+ * deletes files from generated entries
+ *
+ * @param int rev_id
+ * @access public
+ */
+ public static function deleteFile( $rev_id )
+ {
+ global $roscms_security_level;
+ // only for admins
+ if ($roscms_security_level < 3) {
+ return;
+ }
+
+ $stmt=DBConnection::getInstance()->prepare("SELECT d.data_id, d.data_name, d.data_type, r.rev_id, r.rev_language FROM data_ d JOIN data_revision r ON r.data_id=d.data_id WHERE r.rev_id = :rev_id LIMIT 1");
+ $stmt->bindParam('rev_id',$rev_id,PDO::PARAM_INT);
+ $stmt->execute();
+ $page = $stmt->fetchOnce(PDO::FETCH_ASSOC);
+
+ // only for entries of type page
+ if ($page === false) {
+ return;
+ }
+
+ //if data_type is page -> delete file in all languages
+ if ($page['data_type'] == 'page'){
+ $stmt=DBConnection::getInstance()->prepare("SELECT lang_id FROM languages");
+ }
+
+ //if data_type is content (only for dynamic) -> delete only selected one
+ elseif ($page['data_type'] == ''){
+ $dynamic_num = Tag::getValueByUser($page['data_id'],$page['rev_id'],'number',-1);
+ if ($dynamic_num > 0) {
+ $stmt=DBConnection::getInstance()->prepare("SELECT lang_id FROM languages WHERE lang_id = :lang_id LIMIT 1");
+ $stmt->bindParam('lang_id',$page['rev_language'],PDO::PARAM_STR);
+ }
+ // entry is not dynamic
+ else {
+ return;
+ }
+ }
+
+ // neither page or content -> nothing to do
+ else {
+ return;
+ }
+
+ // get file name
+ $file_extension = Tag::getValueByUser($page['data_id'], $page['rev_id'], 'extension', -1);
+ $file_name = $page['data_name'].(isset($dynamic_num) ? '_'.$dynamic_num : '').'.'.$file_extension;
+
+ // delete entries for selected language packs
+ $stmt->execute();
+ while ($lang = $stmt->fetch(PDO::FETCH_ASSOC)) {
+
+ // delete file if it exists
+ if ( file_exists('../'.$lang['lang_id'].'/'.$file_name)) {
+ unlink('../'.$lang['lang_id'].'/'.$file_name);
+ }
+ }
+ }
/**
@@ -846,6 +909,7 @@
if ($roscms_security_level < 3) {
Data::copy($revision['data_id'], $revision['rev_id'], 0, $lang);
}
+ Data::deleteFile($revision['rev_id']);
Data::deleteRevision($revision['rev_id']);
}
else {
@@ -856,6 +920,7 @@
// move to archiv
case 'va':
Data::copy($revision['data_id'], $revision['rev_id'], 0, $lang);
+ Data::deleteFile($revision['rev_id']);
Data::deleteRevision($revision['rev_id']);
break;
} // switch
More information about the Ros-diffs
mailing list