mirror of
				https://git.code.sf.net/p/seeddms/code
				synced 2025-10-28 03:31:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			103 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| //    MyDMS. Document Management System
 | |
| //    Copyright (C) 2002-2005  Markus Westphal
 | |
| //    Copyright (C) 2006-2008 Malcolm Cowe
 | |
| //    Copyright (C) 2010 Matteo Lucarelli
 | |
| //    Copyright (C) 2010-2012 Uwe Steinmann
 | |
| //
 | |
| //    This program is free software; you can redistribute it and/or modify
 | |
| //    it under the terms of the GNU General Public License as published by
 | |
| //    the Free Software Foundation; either version 2 of the License, or
 | |
| //    (at your option) any later version.
 | |
| //
 | |
| //    This program is distributed in the hope that it will be useful,
 | |
| //    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| //    GNU General Public License for more details.
 | |
| //
 | |
| //    You should have received a copy of the GNU General Public License
 | |
| //    along with this program; if not, write to the Free Software
 | |
| //    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | |
| 
 | |
| 
 | |
| function check($doupdate=0) { /* {{{ */
 | |
| 	global $db, $settings;
 | |
| 
 | |
| 	$arr = array();
 | |
| 	$arr['tblDocuments'] = array('key'=>'id', 'fields'=>array('name', 'comment', 'keywords'));
 | |
| 	$arr['tblDocumentFiles'] = array('key'=>'id', 'fields'=>array('name', 'comment', 'mimeType'));
 | |
| 	$arr['tblFolders'] = array('key'=>'id', 'fields'=>array('name', 'comment'));
 | |
| 	$arr['tblUsers'] = array('key'=>'id', 'fields'=>array('fullName', 'comment'));
 | |
| 	$arr['tblGroups'] = array('key'=>'id', 'fields'=>array('name', 'comment'));
 | |
| 	$arr['tblKeywords'] = array('key'=>'id', 'fields'=>array('keywords'));
 | |
| 	$arr['tblKeywordCategories'] = array('key'=>'id', 'fields'=>array('name'));
 | |
| 	$arr['tblCategory'] = array('key'=>'id', 'fields'=>array('name'));
 | |
| 	$arr['tblEvents'] = array('key'=>'id', 'fields'=>array('name', 'comment'));
 | |
| 	$arr['tblDocumentApproveLog'] = array('key'=>'approveLogId', 'fields'=>array('comment'));
 | |
| 	$arr['tblDocumentStatusLog'] = array('key'=>'statusLogId', 'fields'=>array('comment'));
 | |
| 	$arr['tblDocumentReviewLog'] = array('key'=>'reviewLogId', 'fields'=>array('comment'));
 | |
| 	$arr['tblDocumentContent'] = array('keys'=>array('document', 'version'), 'fields'=>array('comment', 'mimeType'));
 | |
| 
 | |
| 	$allupdates = array();
 | |
| 	echo "<table>\n";
 | |
| 	echo "<tr><th>Table</th><th>Field</th><th>Old Value</th><th>New Value</th><th>Update statement</th></tr>\n";
 | |
| 	foreach($arr as $tblname => $schema) {
 | |
| 		if(isset($schema['key']))
 | |
| 			$queryStr = "SELECT ".$schema['key'].", `".implode('`,`', $schema['fields'])."` FROM ".$tblname;
 | |
| 		elseif(isset($schema['keys']))
 | |
| 			$queryStr = "SELECT ".implode(',', $schema['keys']).", `".implode('`,`', $schema['fields'])."` FROM ".$tblname;
 | |
| 		$res = $db->query($queryStr);
 | |
| 		$recs = $res->fetchAll(PDO::FETCH_ASSOC);
 | |
| 		foreach($recs as $rec) {
 | |
| 			foreach($schema['fields'] as $field) {
 | |
| 				if($rec[$field] !== mydmsDecodeString($rec[$field])) {
 | |
| 					$updateSql = "UPDATE ".$tblname." SET `".$field."`=".$db->quote(mydmsDecodeString($rec[$field]))." where ";
 | |
| 					if(isset($schema['key']))
 | |
| 						$updateSql .= $schema['key']."=".$rec[$schema['key']];
 | |
| 					elseif(isset($schema['keys'])) {
 | |
| 						$where = array();
 | |
| 						foreach($schema['keys'] as $key) {
 | |
| 							$where[] = $key."=".$rec[$key];
 | |
| 						}
 | |
| 						$updateSql .= implode(' AND ', $where);
 | |
| 					}
 | |
| 					$allupdates[] = $updateSql;
 | |
| 					echo "<tr><td>".$tblname."</td><td>".$field."</td><td>".htmlspecialchars($rec[$field])."</td><td>".htmlspecialchars(mydmsDecodeString($rec[$field]))."</td><td><pre>".htmlspecialchars($updateSql)."</pre></td></tr>\n";
 | |
| 					if($doupdate) {
 | |
| 						$res = $db->exec($updateSql);
 | |
| 						if(!$res) {
 | |
| 							$errormsg = 'Could not execute update statement';
 | |
| 							echo "<tr><td colspan=\"5\"><span style=\"color: red;\">".$errormsg."</span></td></tr>\n";
 | |
| 						} else {
 | |
| 							$errormsg = 'Object updated';
 | |
| 							echo "<tr><td colspan=\"5\"><span style=\"color: green;\">".$errormsg."</span></td></tr>\n";
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	echo "</table>\n";
 | |
| 	if($allupdates) {
 | |
| 		echo "<b>Summary of all updates</b><br />\n";
 | |
| 		echo "<pre>".implode("<br />", $allupdates)."</pre>";
 | |
| 	}
 | |
| 	return true;
 | |
| } /* }}} */
 | |
| 
 | |
| if(isset($_GET['doupdate']) && $_GET['doupdate'] == 1)
 | |
| 	$doupdate = 1;
 | |
| else
 | |
| 	$doupdate = 0;
 | |
| 
 | |
| $doupdate = 1;
 | |
| if (!check($doupdate)) {
 | |
| 	print "<p>Update failed</p>";
 | |
| }
 | |
| 
 | |
| if(!$doupdate) {
 | |
| 	print "<p>If the above update statements look ok, either execute them in your prefered mysql client or click on the link below.</p>";
 | |
| 	print "<a href=\"?doupdate=1\">Execute update</a><br />\n";
 | |
| }
 | |
| ?>
 | 
