]> git.mxchange.org Git - friendica.git/commitdiff
fix messed up config tables w/ duplicate entries
authorfriendica <info@friendica.com>
Fri, 6 Apr 2012 12:11:09 +0000 (05:11 -0700)
committerfriendica <info@friendica.com>
Fri, 6 Apr 2012 12:11:09 +0000 (05:11 -0700)
boot.php
include/plugin.php
update.php

index f4f44a644769ce35cfbc6d81d18b7265f0dafdfb..1bc4c2a9a91d47f9e5d74dd915d75eec6e70f311 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -11,7 +11,7 @@ require_once('include/cache.php');
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_VERSION',      '2.3.1303' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1136      );
+define ( 'DB_UPDATE_VERSION',      1137      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
index e37ae84357e2bba73d9a702ba3bb2fb6993d1fe9..25fd32b4f06139afbd5614dadd0c5cf1424651b4 100644 (file)
@@ -34,7 +34,7 @@ function install_plugin($plugin){
                );
        }
        else {
-               logger("Addons: FAILED installing " . $plugin);
+//             logger("Addons: FAILED installing " . $plugin);
        }
 
 }}
index 0c8486c316e35cf824a21d4e30963af6445a3535..1a36c754d86aa0354c050f447ea7acb9ebe189d3 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1136 );
+define( 'UPDATE_VERSION' , 1137 );
 
 /**
  *
@@ -1152,12 +1152,57 @@ function update_1135() {
        //so change charset to be smaller
        q("ALTER TABLE `config` CHANGE `cat` `cat` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
 CHANGE `k` `k` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL"); 
-       //and add the index
-       q("ALTER TABLE `config` ADD UNIQUE `access` ( `cat` , `k` ) "); 
        
        //same thing for pconfig
        q("ALTER TABLE `pconfig` CHANGE `cat` `cat` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
        CHANGE `k` `k` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL"); 
-       
+       // faulty update merged forward. Bad update in 1134 caused duplicate k,cat pairs
+       // these have to be cleared before the unique keys can be added.        
+}
+
+function update_1136() {
+
+       $arr = array();
+
+       // order in reverse so that we save the newest entry
+
+       $r = q("select * from config where 1 order by id desc");
+       if(count($r)) {
+               foreach($r as $rr) {
+                       $found = false;
+                       foreach($arr as $x) {
+                               if($x['cat'] == $rr['cat'] && $x['k'] == $rr['k']) {
+                                       $found = true;
+                                       q("delete from config where id = %d limit 1",
+                                               intval($rr['id'])
+                                       );
+                               }
+                       }
+                       if(! $found) {
+                               $arr[] = $rr;
+                       }
+               }
+       }
+                       
+       $arr = array();
+       $r = q("select * from pconfig where 1 order by id desc");
+       if(count($r)) {
+               foreach($r as $rr) {
+                       $found = false;
+                       foreach($arr as $x) {
+                               if($x['uid'] == $rr['uid'] && $x['cat'] == $rr['cat'] && $x['k'] == $rr['k']) {
+                                       $found = true;
+                                       q("delete from pconfig where id = %d limit 1",
+                                               intval($rr['id'])
+                                       );
+                               }
+                       }
+                       if(! $found) {
+                               $arr[] = $rr;
+                       }
+               }
+       }
+       q("ALTER TABLE `config` ADD UNIQUE `access` ( `cat` , `k` ) "); 
        q("ALTER TABLE `pconfig` ADD UNIQUE `access` ( `uid` , `cat` , `k` )"); 
+
 }
\ No newline at end of file