]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
add fixup messages for utf8
authorEvan Prodromou <evan@controlyourself.ca>
Sat, 6 Jun 2009 16:54:40 +0000 (09:54 -0700)
committerEvan Prodromou <evan@controlyourself.ca>
Sat, 6 Jun 2009 16:54:40 +0000 (09:54 -0700)
scripts/fixup_utf8.php

index f9debd3eca994f189982160dab43b667dca6c5db..83e4850217b7ccf912e80ae1cb58b7a5d075f83c 100644 (file)
@@ -296,6 +296,63 @@ class UTF8FixerUpper
             echo "OK\n";
         }
     }
+
+    function fixupMessages() {
+
+        // Do a separate DB connection
+
+        $sth = $this->dbu->prepare("UPDATE message SET content = UNHEX(?), rendered = UNHEX(?) WHERE id = ?");
+
+        if (PEAR::isError($sth)) {
+            echo "ERROR: " . $sth->getMessage() . "\n";
+            return;
+        }
+
+        $sql = 'SELECT id, content, rendered FROM message ' .
+          'WHERE LENGTH(content) != CHAR_LENGTH(content) '.
+          'AND modified < "'.$this->max_date.'" '.
+          'ORDER BY id DESC';
+
+        $rn = $this->dbl->query($sql);
+
+        if (PEAR::isError($rn)) {
+            echo "ERROR: " . $rn->getMessage() . "\n";
+            return;
+        }
+
+        echo "Number of rows: " . $rn->numRows() . "\n";
+
+        $message = array();
+
+        while (DB_OK == $rn->fetchInto($message)) {
+
+            $id = ($message[0])+0;
+            $content = bin2hex($message[1]);
+            $rendered = bin2hex($message[2]);
+
+            echo "$id...";
+
+            $result =& $this->dbu->execute($sth, array($content, $rendered, $id));
+
+            if (PEAR::isError($result)) {
+                echo "ERROR: " . $result->getMessage() . "\n";
+                continue;
+            }
+
+            $cnt = $this->dbu->affectedRows();
+
+            if ($cnt != 1) {
+                echo "ERROR: 0 rows affected\n";
+                continue;
+            }
+
+            $message = Message::staticGet('id', $id);
+            $message->decache();
+            $message->free();
+
+            echo "OK\n";
+        }
+    }
 }
 
 $max_date = ($argc > 1) ? $argv[1] : null;