|
From: <rgr...@us...> - 2014-02-14 04:30:53
|
Revision: 12309
http://sourceforge.net/p/xoops/svn/12309
Author: rgriffith
Date: 2014-02-14 04:30:50 +0000 (Fri, 14 Feb 2014)
Log Message:
-----------
Add cleanup of unused avatar resources to admin maintenance page - #1292
The user delete workflow needs to be corrected to include related resources like avatars, but for now this will provide a way to clean up any unneeded avatar file and database resources. The overall delete workflow issue will be more fully addressed in 2.6. The clean up code itself will be important going forward as part of conversion and upgrade processes.
Modified Paths:
--------------
XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/admin/maintenance/main.php
XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/class/maintenance.php
XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/language/english/admin/maintenance.php
XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/templates/admin/system_maintenance.html
Modified: XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/admin/maintenance/main.php
===================================================================
--- XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/admin/maintenance/main.php 2014-02-14 04:08:02 UTC (rev 12308)
+++ XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/admin/maintenance/main.php 2014-02-14 04:30:50 UTC (rev 12309)
@@ -70,6 +70,8 @@
$tables_tray->addElement($choice, false);
$form_maintenance->addElement($tables_tray);
+ $form_maintenance->addElement(new XoopsFormRadioYN(_AM_SYSTEM_MAINTENANCE_AVATAR, 'avatar', '', _YES, _NO));
+
$form_maintenance->addElement(new XoopsFormHidden("op", "maintenance_save"));
$form_maintenance->addElement(new XoopsFormButton("", "maintenance_save", _SEND, "submit"));
@@ -115,12 +117,15 @@
$session = system_CleanVars ( $_REQUEST, 'session', 1, 'int' );
$cache = system_CleanVars ( $_REQUEST, 'cache', array(), 'array' );
$tables = system_CleanVars ( $_REQUEST, 'tables', array(), 'array' );
+ $avatar = system_CleanVars ( $_REQUEST, 'avatar', 1, 'int' );
$tables_op = system_CleanVars ( $_REQUEST, 'maintenance', array(), 'array' );
$verif_cache = false;
$verif_session = false;
+ $verif_avatar = false;
$verif_maintenance = false;
$result_cache = false;
$result_session = false;
+ $result_avatar = false;
$result_maintenance = false;
$maintenance = new SystemMaintenance();
@@ -148,15 +153,25 @@
}
}
- if( $result_cache == false && $result_session == false && $result_maintenance == false ) {
+ // Purge unused avatars
+ if ( $avatar == 1 ) {
+ $verif_avatar = true;
+ if($maintenance->CleanAvatar()) {
+ $result_avatar = true;
+ }
+ }
+
+ if ($result_cache == false && $result_session == false && $result_maintenance == false && $result_avatar == false) {
redirect_header("admin.php?fct=maintenance", 2, _AM_SYSTEM_MAINTENANCE_ERROR_MAINTENANCE);
}
$xoopsTpl->assign('verif_cache', $verif_cache);
$xoopsTpl->assign('verif_session', $verif_session);
+ $xoopsTpl->assign('verif_avatar', $verif_avatar);
$xoopsTpl->assign('verif_maintenance', $verif_maintenance);
$xoopsTpl->assign('result_cache', $result_cache);
$xoopsTpl->assign('result_session', $result_session);
+ $xoopsTpl->assign('result_avatar', $result_avatar);
$xoopsTpl->assign('result_maintenance', $result_maintenance);
$xoopsTpl->assign('maintenance', true);
break;
Modified: XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/class/maintenance.php
===================================================================
--- XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/class/maintenance.php 2014-02-14 04:08:02 UTC (rev 12308)
+++ XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/class/maintenance.php 2014-02-14 04:30:50 UTC (rev 12309)
@@ -74,6 +74,43 @@
}
/**
+ * CleanAvatar
+ *
+ * Clean up orphaned custom avatars left when a user is deleted.
+ *
+ * @author slider84 of Team FrXoops
+ *
+ * @return boolean
+ */
+ function CleanAvatar()
+ {
+ $result = $this->db->queryF(
+ 'SELECT avatar_id, avatar_file FROM ' . $this->db->prefix('avatar')
+ . " WHERE avatar_type='C' AND avatar_id IN ("
+ . 'SELECT t1.avatar_id FROM ' . $this->db->prefix('avatar_user_link') .' AS t1 '
+ . 'LEFT JOIN '.$this->db->prefix('users').' AS t2 ON t2.uid=t1.user_id '
+ . 'WHERE t2.uid IS NULL)'
+ );
+
+ while ($myrow = $this->db->fetchArray($result)) {
+ //delete file
+ @unlink(XOOPS_UPLOAD_PATH.'/'.$myrow['avatar_file']);
+ //clean avatar table
+ $result1 = $this->db->queryF(
+ 'DELETE FROM '.$this->db->prefix('avatar')
+ . ' WHERE avatar_id='.$myrow['avatar_id']
+ );
+ }
+ //clean any deleted users from avatar_user_link table
+ $result2 = $this->db->queryF(
+ 'DELETE FROM '.$this->db->prefix('avatar_user_link')
+ . ' WHERE user_id NOT IN (SELECT uid FROM ' . $this->db->prefix('users') . ')'
+ );
+
+ return true;
+ }
+
+ /**
* Clean cache 'xoops_data/caches/smarty_cache'
*
* @param array cache
Modified: XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/language/english/admin/maintenance.php
===================================================================
--- XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/language/english/admin/maintenance.php 2014-02-14 04:08:02 UTC (rev 12308)
+++ XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/language/english/admin/maintenance.php 2014-02-14 04:30:50 UTC (rev 12309)
@@ -13,6 +13,7 @@
define('_AM_SYSTEM_MAINTENANCE_SESSION',"Empty the sessions table");
define('_AM_SYSTEM_MAINTENANCE_SESSION_OK',"Session maintenance : OK");
define('_AM_SYSTEM_MAINTENANCE_SESSION_NOTOK',"Session maintenance : Error");
+define('_AM_SYSTEM_MAINTENANCE_AVATAR',"Purge unused custom avatars");
define('_AM_SYSTEM_MAINTENANCE_CACHE',"Clean cache folder");
define('_AM_SYSTEM_MAINTENANCE_CACHE_OK',"Cache maintenance : OK");
define('_AM_SYSTEM_MAINTENANCE_CACHE_NOTOK',"Cache maintenance : Error");
@@ -26,7 +27,7 @@
define('_AM_SYSTEM_MAINTENANCE_CHOICE2',"Check table(s)");
define('_AM_SYSTEM_MAINTENANCE_CHOICE3',"Repair table(s)");
define('_AM_SYSTEM_MAINTENANCE_CHOICE4',"Analyze table(s)");
-define('_AM_SYSTEM_MAINTENANCE_TABLES_DESC',
+define('_AM_SYSTEM_MAINTENANCE_TABLES_DESC',
"ANALYZE TABLE analyzes and stores the key distribution for a table. During the analysis, the table is locked with a read lock.<br />
CHECK TABLE checks a table or tables for errors.<br />
OPTIMIZE TABLE to reclaim the unused space and to defragment the data file.<br />
@@ -36,10 +37,11 @@
define('_AM_SYSTEM_MAINTENANCE_RESULT_CACHE',"Clean Cache task");
define('_AM_SYSTEM_MAINTENANCE_RESULT_SESSION',"Clean sessions table task");
define('_AM_SYSTEM_MAINTENANCE_RESULT_QUERY',"Database task");
+define('_AM_SYSTEM_MAINTENANCE_RESULT_AVATAR',"Purge unused avatars task");
define('_AM_SYSTEM_MAINTENANCE_ERROR_MAINTENANCE',"No choice for maintenance");
define('_AM_SYSTEM_MAINTENANCE_TABLES1',"Tables");
define('_AM_SYSTEM_MAINTENANCE_TABLES_OPTIMIZE',"Optimize");
-define('_AM_SYSTEM_MAINTENANCE_TABLES_CHECK',"Check");
+define('_AM_SYSTEM_MAINTENANCE_TABLES_CHECK',"Check");
define('_AM_SYSTEM_MAINTENANCE_TABLES_REPAIR',"Repair");
define('_AM_SYSTEM_MAINTENANCE_TABLES_ANALYZE',"Analyze");
//Dump
@@ -57,7 +59,7 @@
define('_AM_SYSTEM_MAINTENANCE_DUMP_RESULT',"Result");
define('_AM_SYSTEM_MAINTENANCE_DUMP_RECORDS',"record(s)");
// Tips
-define('_AM_SYSTEM_MAINTENANCE_TIPS',
+define('_AM_SYSTEM_MAINTENANCE_TIPS',
"<ul>
<li>You can do a simple maintenance of your XOOPS Installation: clear your cache and session table, and do maintenance of your tables</li>
</ul>");
\ No newline at end of file
Modified: XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/templates/admin/system_maintenance.html
===================================================================
--- XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/templates/admin/system_maintenance.html 2014-02-14 04:08:02 UTC (rev 12308)
+++ XoopsCore/branches/2.5.x/2.5.7/htdocs/modules/system/templates/admin/system_maintenance.html 2014-02-14 04:30:50 UTC (rev 12309)
@@ -1,35 +1,42 @@
-<!--maintenance-->
-<{includeq file="db:system_header.html"}>
-<!-- Display mailusers form -->
-<br />
-<{if $form_maintenance}>
- <div class="spacer"><{$form_maintenance}></div><br />
- <div class="spacer"><{$form_dump}></div>
-<{elseif $maintenance}>
- <{if $verif_cache || $verif_session}>
- <table class="outer ui-corner-all" cellspacing="1">
- <tr>
- <th><{$smarty.const._AM_SYSTEM_MAINTENANCE}></th>
- <th><{$smarty.const._AM_SYSTEM_MAINTENANCE_RESULT}></th>
- </tr>
- <{if $verif_cache}>
- <tr>
- <td class="aligntop txtcenter"><{$smarty.const._AM_SYSTEM_MAINTENANCE_RESULT_CACHE}></td>
- <td class="aligntop txtcenter"><{if $result_cache}><img width="16" src="<{xoAdminIcons success.png}>" /><{else}><img style="width:16px;" src="<{xoAdminIcons cancel.png}>" alt="Cancel"/><{/if}></td>
- </tr>
- <{/if}>
-
- <{if $verif_session}>
- <tr>
- <td class="aligntop" align="center"><{$smarty.const._AM_SYSTEM_MAINTENANCE_RESULT_SESSION}></td>
- <td class="aligntop" align="center"><{if $result_session}><img style="width:16px;" src="<{xoAdminIcons success.png}>" alt="Success"/><{else}><img style="width:16px;" src="<{xoAdminIcons cancel.png}>" alt="Cancel"/><{/if}></td>
- </tr>
- <{/if}>
- </table><br />
- <{/if}>
- <{if $verif_maintenance}>
- <{$result_maintenance}>
- <{/if}>
-<{else}>
- <{$result_dump}>
+<!--maintenance-->
+<{includeq file="db:system_header.html"}>
+<!-- Display mailusers form -->
+<br />
+<{if $form_maintenance}>
+ <div class="spacer"><{$form_maintenance}></div><br />
+ <div class="spacer"><{$form_dump}></div>
+<{elseif $maintenance}>
+ <{if $verif_cache || $verif_session || $verif_avatar}>
+ <table class="outer ui-corner-all" cellspacing="1">
+ <tr>
+ <th><{$smarty.const._AM_SYSTEM_MAINTENANCE}></th>
+ <th><{$smarty.const._AM_SYSTEM_MAINTENANCE_RESULT}></th>
+ </tr>
+ <{if $verif_cache}>
+ <tr>
+ <td class="aligntop txtcenter"><{$smarty.const._AM_SYSTEM_MAINTENANCE_RESULT_CACHE}></td>
+ <td class="aligntop txtcenter"><{if $result_cache}><img width="16" src="<{xoAdminIcons success.png}>" /><{else}><img style="width:16px;" src="<{xoAdminIcons cancel.png}>" alt="Cancel"/><{/if}></td>
+ </tr>
+ <{/if}>
+
+ <{if $verif_session}>
+ <tr>
+ <td class="aligntop" align="center"><{$smarty.const._AM_SYSTEM_MAINTENANCE_RESULT_SESSION}></td>
+ <td class="aligntop" align="center"><{if $result_session}><img style="width:16px;" src="<{xoAdminIcons success.png}>" alt="Success"/><{else}><img style="width:16px;" src="<{xoAdminIcons cancel.png}>" alt="Cancel"/><{/if}></td>
+ </tr>
+ <{/if}>
+
+ <{if $verif_avatar}>
+ <tr>
+ <td class="aligntop" align="center"><{$smarty.const._AM_SYSTEM_MAINTENANCE_RESULT_AVATAR}></td>
+ <td class="aligntop" align="center"><{if $result_avatar}><img style="width:16px;" src="<{xoAdminIcons success.png}>" alt="Success"/><{else}><img style="width:16px;" src="<{xoAdminIcons cancel.png}>" alt="Cancel"/><{/if}></td>
+ </tr>
+ <{/if}>
+ </table><br />
+ <{/if}>
+ <{if $verif_maintenance}>
+ <{$result_maintenance}>
+ <{/if}>
+<{else}>
+ <{$result_dump}>
<{/if}>
\ No newline at end of file
|