// These replace old "fixup_*" scripts
- fixupNoticeRendered();
fixupNoticeConversation();
initConversation();
fixupGroupURI();
fixupFileGeometry();
deleteLocalFileThumbnailsWithoutFilename();
deleteMissingLocalFileThumbnails();
+ fixupFileThumbnailUrlhash();
setFilehashOnLocalFiles();
initGroupProfileId();
initProfileLists();
+ migrateProfilePrefs();
+
Event::handle('EndUpgrade');
}
}
{
printfnq("Upgrading plugin schema...");
+ Event::handle('BeforePluginCheckSchema');
Event::handle('CheckSchema');
printfnq("DONE.\n");
}
-function fixupNoticeRendered()
-{
- printfnq("Ensuring all notices have rendered HTML...");
-
- $notice = new Notice();
-
- $notice->whereAdd('rendered IS NULL');
- $notice->find();
-
- while ($notice->fetch()) {
- $original = clone($notice);
- $notice->rendered = common_render_content($notice->content, $notice);
- $notice->update($original);
- }
-
- printfnq("DONE.\n");
-}
-
function fixupNoticeConversation()
{
printfnq("Ensuring all notices have a conversation ID...");
$notice = new Notice();
$notice->whereAdd('conversation is null');
+ $notice->whereAdd('conversation = 0', 'OR');
$notice->orderBy('id'); // try to get originals before replies
$notice->find();
$orig = clone($notice);
- if (empty($notice->reply_to)) {
- $notice->conversation = $notice->id;
- } else {
+ if (!empty($notice->reply_to)) {
$reply = Notice::getKV('id', $notice->reply_to);
- if (empty($reply)) {
- $notice->conversation = $notice->id;
- } else if (empty($reply->conversation)) {
- $notice->conversation = $notice->id;
- } else {
+ if ($reply instanceof Notice && !empty($reply->conversation)) {
$notice->conversation = $reply->conversation;
}
-
unset($reply);
- $reply = null;
+ }
+
+ // if still empty
+ if (empty($notice->conversation)) {
+ $child = new Notice();
+ $child->reply_to = $notice->getID();
+ $child->limit(1);
+ if ($child->find(true) && !empty($child->conversation)) {
+ $notice->conversation = $child->conversation;
+ }
+ unset($child);
+ }
+
+ // if _still_ empty we just create our own conversation
+ if (empty($notice->conversation)) {
+ $notice->conversation = $notice->getID();
}
$result = $notice->update($orig);
- $orig = null;
unset($orig);
} catch (Exception $e) {
- printv("Error setting conversation: " . $e->getMessage());
+ print("Error setting conversation: " . $e->getMessage());
}
}
'set uri = "%s" '.
'where subscriber = %d '.
'and subscribed = %d',
- Subscription::newURI($sub->subscriber, $sub->subscribed, $sub->created),
+ $sub->escape(Subscription::newUri($sub->getSubscriber(), $sub->getSubscribed(), $sub->created)),
$sub->subscriber,
$sub->subscribed));
} catch (Exception $e) {
$mem->query(sprintf('update group_member set uri = "%s" '.
'where profile_id = %d ' .
'and group_id = %d ',
- Group_member::newURI($mem->profile_id, $mem->group_id, $mem->created),
+ Group_member::newUri(Profile::getByID($mem->profile_id), User_group::getByID($mem->group_id), $mem->created),
$mem->profile_id,
$mem->group_id));
} catch (Exception $e) {
printfnq("DONE.\n");
}
+function fixupFileThumbnailUrlhash()
+{
+ printfnq("Setting urlhash for File_thumbnail entries: ");
+
+ $thumb = new File_thumbnail();
+ $thumb->query('UPDATE '.$thumb->escapedTableName().' SET urlhash=SHA2(url, 256) WHERE'.
+ ' url IS NOT NULL AND'. // find all entries with a url value
+ ' url != "" AND'. // precaution against non-null empty strings
+ ' urlhash IS NULL'); // but don't touch those we've already calculated
+
+ printfnq("DONE.\n");
+}
+
+function migrateProfilePrefs()
+{
+ printfnq("Finding and possibly migrating Profile_prefs entries: ");
+
+ $prefs = array(); // ['qvitter' => ['cover_photo'=>'profile_banner_url', ...], ...]
+ Event::handle('GetProfilePrefsMigrations', array(&$prefs));
+
+ foreach($prefs as $namespace=>$mods) {
+ echo "$namespace... ";
+ assert(is_array($mods));
+ $p = new Profile_prefs();
+ $p->namespace = $namespace;
+ // find all entries in all modified topics given in this namespace
+ $p->whereAddIn('topic', array_keys($mods), $p->columnType('topic'));
+ $p->find();
+ while ($p->fetch()) {
+ // for each entry, update 'topic' to the new key value
+ $orig = clone($p);
+ $p->topic = $mods[$p->topic];
+ $p->updateWithKeys($orig);
+ }
+ }
+
+ printfnq("DONE.\n");
+}
+
main();