(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: restore.ml,v 1.20 2006/03/27 18:09:46 rich Exp $
+ * $Id: restore.ml,v 1.21 2006/03/28 16:24:08 rich Exp $
*
* 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
| _ -> None in
(* Copy the old version of the page to be live. *)
- let sth = dbh#prepare_cached "select title, description, creation_date,
- redirect, css
- from pages
- where hostid = ?
- and url_deleted = ? and id = ?" in
- sth#execute [Some hostid; Some page; Some version];
+ let rows = PGSQL(dbh)
+ "select title, description, creation_date,
+ redirect, css
+ from pages
+ where hostid = $hostid
+ and url_deleted = $page and id = $version" in
let title, description, creation_date, redirect, css =
- match sth#fetch1 () with
- [ title; description; creation_date; redirect; css ] ->
- title, description, creation_date, redirect, css
- | _ -> assert false in
-
- let sth =
- dbh#prepare_cached
- "set constraints pages_redirect_cn, sitemenu_url_cn,
- page_emails_url_cn, links_from_cn, recently_visited_url_cn
- deferred" in
- sth#execute [];
-
- let sth = dbh#prepare_cached "update pages set url_deleted = url,
- url = null
- where hostid = ? and url = ?" in
- sth#execute [Some hostid; Some page];
-
- let sth = dbh#prepare_cached "insert into pages (hostid, url, title,
- description, creation_date, logged_ip,
- logged_user, redirect, css)
- values (?, ?, ?, ?, ?, ?, ?, ?, ?)" in
- sth#execute [Some hostid; Some page; title; description;
- creation_date; logged_ip; logged_user; redirect; css ];
-
- let pageid = Int64.to_int (sth#serial "pages_id_seq") in
-
- let sth = dbh#prepare_cached "insert into contents (pageid, ordering,
- sectionname, content, divname)
- select ? as pageid, ordering, sectionname,
- content, divname
- from contents
- where pageid = ?" in
- sth#execute [Some pageid; Some version];
+ match rows with
+ | [row] -> row
+ | _ -> assert false in
+
+ PGSQL(dbh)
+ "set constraints pages_redirect_cn, sitemenu_url_cn,
+ page_emails_url_cn, links_from_cn, recently_visited_url_cn
+ deferred";
+ PGSQL(dbh) "update pages set url_deleted = url, url = null
+ where hostid = $hostid and url = $page";
+ PGSQL(dbh) "insert into pages (hostid, url, title,
+ description, creation_date, logged_ip,
+ logged_user, redirect, css)
+ values ($hostid, $page, $title, $description, $creation_date,
+ $?logged_ip, $?logged_user, $?redirect, $?css)";
+
+ let pageid = PGOCaml.serial4 dbh "pages_id_seq" in
+
+ PGSQL(dbh) "insert into contents (pageid, ordering,
+ sectionname, content, divname)
+ select $pageid, ordering, sectionname, content, divname
+ from contents
+ where pageid = $version";
(* Keep the links table in synch. *)
Cocanwiki_links.update_links_for_page dbh hostid page;