conert wiki to use native booleans
This commit is contained in:
parent
345c64b821
commit
006c53f499
1 changed files with 21 additions and 4 deletions
|
@ -80,7 +80,7 @@ class WikiPage
|
||||||
$this->date = $row['date'];
|
$this->date = $row['date'];
|
||||||
$this->title = $row['title'];
|
$this->title = $row['title'];
|
||||||
$this->revision = (int)$row['revision'];
|
$this->revision = (int)$row['revision'];
|
||||||
$this->locked = ($row['locked'] == 'Y');
|
$this->locked = bool_escape($row['locked']);
|
||||||
$this->body = $row['body'];
|
$this->body = $row['body'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -133,18 +133,35 @@ class Wiki extends Extension
|
||||||
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
title VARCHAR(255) NOT NULL,
|
title VARCHAR(255) NOT NULL,
|
||||||
revision INTEGER NOT NULL DEFAULT 1,
|
revision INTEGER NOT NULL DEFAULT 1,
|
||||||
locked SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N,
|
locked BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
body TEXT NOT NULL,
|
body TEXT NOT NULL,
|
||||||
UNIQUE (title, revision),
|
UNIQUE (title, revision),
|
||||||
FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE RESTRICT
|
FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE RESTRICT
|
||||||
");
|
");
|
||||||
$this->set_version("ext_wiki_version", 2);
|
$this->set_version("ext_wiki_version", 3);
|
||||||
}
|
}
|
||||||
if ($this->get_version("ext_wiki_version") < 2) {
|
if ($this->get_version("ext_wiki_version") < 2) {
|
||||||
$database->execute("ALTER TABLE wiki_pages ADD COLUMN
|
$database->execute("ALTER TABLE wiki_pages ADD COLUMN
|
||||||
locked ENUM('Y', 'N') DEFAULT 'N' NOT NULL AFTER REVISION");
|
locked ENUM('Y', 'N') DEFAULT 'N' NOT NULL AFTER REVISION");
|
||||||
$this->set_version("ext_wiki_version", 2);
|
$this->set_version("ext_wiki_version", 2);
|
||||||
}
|
}
|
||||||
|
if ($this->get_version("ext_wiki_version") < 3) {
|
||||||
|
$d = $database->get_driver_name();
|
||||||
|
if ($d == DatabaseDriver::MYSQL) {
|
||||||
|
$database->execute("ALTER TABLE wiki_pages MODIFY COLUMN locked BOOLEAN;");
|
||||||
|
$database->execute("UPDATE wiki_pages SET locked=0 WHERE locked=2;");
|
||||||
|
}
|
||||||
|
if ($d == DatabaseDriver::SQLITE) {
|
||||||
|
$database->execute("ALTER TABLE wiki_pages SET locked = (locked IN ('Y', 1))");
|
||||||
|
}
|
||||||
|
if ($d == DatabaseDriver::PGSQL) {
|
||||||
|
$database->execute("ALTER TABLE wiki_pages ADD COLUMN locked_b BOOLEAN DEFAULT FALSE NOT NULL AFTER locked");
|
||||||
|
$database->execute("UPDATE wiki_pages SET locked_b = (locked IN ('Y', 1))");
|
||||||
|
$database->execute("ALTER TABLE wiki_pages DROP COLUMN locked");
|
||||||
|
$database->execute("ALTER TABLE wiki_pages RENAME COLUMN locked_b TO locked");
|
||||||
|
}
|
||||||
|
$this->set_version("ext_wiki_version", 3);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest(PageRequestEvent $event)
|
public function onPageRequest(PageRequestEvent $event)
|
||||||
|
@ -233,7 +250,7 @@ class Wiki extends Extension
|
||||||
INSERT INTO wiki_pages(owner_id, owner_ip, date, title, revision, locked, body)
|
INSERT INTO wiki_pages(owner_id, owner_ip, date, title, revision, locked, body)
|
||||||
VALUES (:owner_id, :owner_ip, now(), :title, :revision, :locked, :body)",
|
VALUES (:owner_id, :owner_ip, now(), :title, :revision, :locked, :body)",
|
||||||
["owner_id"=>$event->user->id, "owner_ip"=>$_SERVER['REMOTE_ADDR'],
|
["owner_id"=>$event->user->id, "owner_ip"=>$_SERVER['REMOTE_ADDR'],
|
||||||
"title"=>$wpage->title, "revision"=>$wpage->revision, "locked"=>$wpage->locked?'Y':'N', "body"=>$wpage->body]
|
"title"=>$wpage->title, "revision"=>$wpage->revision, "locked"=>$wpage->locked, "body"=>$wpage->body]
|
||||||
);
|
);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
throw new WikiUpdateException("Somebody else edited that page at the same time :-(");
|
throw new WikiUpdateException("Somebody else edited that page at the same time :-(");
|
||||||
|
|
Reference in a new issue