(let (iid wid date uid nwid)
(sql "begin")
(sql "select IID,WID,Date,UID from WikiIndex where PID=:pid and Page=:page"
- :bind (list ':pid PID ':page Page)
+ :bind (list ':pid PID ':page page)
:answer '(iid wid date uid))
(if (and (not-emptyp wid)
(> date (- (now) 10800))
)
)
+(defun wiki-delete (page)
+ (sql "begin")
+ (sql "insert into BackupIndex(PID,Page,UID,IP,Date,WID) select PID,Page,UID,IP,Date,WID from WikiIndex where PID=:pid and Page=:page"
+ :bind (list ':pid PID ':page page))
+ (sql "delete from WikiIndex where PID=:pid and Page=:page"
+ :bind (list ':pid PID ':page page))
+ (sql "end")
+)
+
(defun wiki-page-index (cat vpage vtitle)
- ($sqlite3 'database
- (if (null cat)
- (progn
- (sql "select a.Page,b.Title from WikiIndex a,Wiki b using(WID) where a.PID=:pid and a.Page not like 'special-%' order by a.Page"
- :bind ':pid PID
- :@answer (list vpage vtitle))
- )
- (if (emptyp cat)
- (sql "select a.Page,b.Title from WikiIndex a,Wiki b using(WID) where a.PID=:pid and a.IID not in (select IID from WikiCategory where PID=:pid) and a.Page not like 'special-%' order by a.Page"
- :bind (list ':pid PID)
- :@answer (list vpage vtitle))
- (sql "select a.Page,b.Title from CategoryList c,WikiCategory d using(CID),WikiIndex a using(IID),Wiki b using(WID) where a.PID=:pid and c.CName=:cat and a.Page not like 'special-%' order by a.Page"
- :bind (list ':pid PID ':cat cat)
+ (if (null cat)
+ (progn
+ (sql "select a.Page,b.Title from WikiIndex a,Wiki b using(WID) where a.PID=:pid and a.Page not like 'special-%' order by a.Page"
+ :bind ':pid PID
:@answer (list vpage vtitle))
)
+ (if (emptyp cat)
+ (sql "select a.Page,b.Title from WikiIndex a,Wiki b using(WID) where a.PID=:pid and a.IID not in (select IID from WikiCategory where PID=:pid) and a.Page not like 'special-%' order by a.Page"
+ :bind (list ':pid PID)
+ :@answer (list vpage vtitle))
+ (sql "select a.Page,b.Title from CategoryList c,WikiCategory d using(CID),WikiIndex a using(IID),Wiki b using(WID) where a.PID=:pid and c.CName=:cat and a.Page not like 'special-%' order by a.Page"
+ :bind (list ':pid PID ':cat cat)
+ :@answer (list vpage vtitle))
)
)
)
(defun wiki-page-index-special (vpage vtitle)
- ($sqlite3 'database
- (sql "select a.Page,b.Title from WikiIndex a,Wiki b using(WID) where a.PID=:pid and a.Page like 'special-%' order by a.Page"
- :bind ':pid PID
- :@answer (list vpage vtitle))
- )
+ (sql "select a.Page,b.Title from WikiIndex a,Wiki b using(WID) where a.PID=:pid and a.Page like 'special-%' order by a.Page"
+ :bind ':pid PID
+ :@answer (list vpage vtitle))
)
(defun wiki-category-index (vname)
- ($sqlite3 'database
- (sql "select CName from CategoryList where PID=:pid order by CName"
- :bind ':pid PID
- :@answer (list vname))
- )
+ (sql "select CName from CategoryList where PID=:pid order by CName"
+ :bind ':pid PID
+ :@answer (list vname))
)
(defun wiki-add-category (name)
(if (not-emptyp name)
- ($sqlite3 'database
- (sql "insert into CategoryList(PID,CName) values(:pid,:cat)"
- :bind (list ':pid PID ':cat name))
- )
+ (sql "insert into CategoryList(PID,CName) values(:pid,:cat)"
+ :bind (list ':pid PID ':cat name))
+ )
+)
+
+(defun wiki-delete-category (name)
+ (sql "begin")
+ (sql "delete from WikiCategory where CID in (select CID from CategoryList where PID=:pid and CName=:cat)"
+ :bind ':pid PID ':cat cat)
+ (sql "delete from CategoryList where PID=:pid and CName=:cat"
+ :bind ':pid PID ':cat cat)
+ (sql "end")
+)
+
+(defun wiki-set-category (page vlist)
+ (let (iid)
+ (sql "begin")
+ (sql "select IID from WikiIndex where PID=:pid and Page=:page"
+ :bind (list ':pid PID ':page page)
+ :answer '(iid))
+ (if (not-emptyp iid)
+ (progn (sql "delete from WikiCategory where IID=:iid"
+ :bind ':iid iid)
+ (doarray vlist
+ (sql "insert into WikiCategory(PID,IID,CID) select :pid,:iid,CID from CategoryList where PID=:pid and CName=:name"
+ :bind (list ':pid PID ':iid iid ':name vlist))
+ )
+ )
+ )
+ (sql "end")
)
)