(defun authorize (proj)
- (setvar 'uid (remote-user))
- (sql "select a.UID,Login,Name,case when b.UID notNull then '1' else '' end from Member a left join Admin b where a.UID=:uid"
- :bind ':uid uid
- :answer '(UID Login Name Admin))
-
- (sql "select PID,PublicProj from Project where Proj=:proj"
- :bind ':proj proj
- :answer '(PID Public))
- (if (emptyp PID)
- (sql "select PID,Proj,PublicProj from Project where Proj='Main'"
- :answer '(PID Proj Public))
- )
- (if (not-emptyp Public)
- (setvar 'Reader "1")
- )
- (if (not-emptyp UID)
- (progn
- (if (not-emptyp Public)
- (setvar 'Reader "1"
- 'Writer "1")
- (sql "select Reader,Writer from ProjectMember where PID=:pid and UID=:uid"
- :bind (list ':pid PID ':uid UID)
- :answer '(Reader Writer))
- )
+ (sql "begin")
+ (progn
+ (sql "select PID,Proj,PublicProj from Project where Proj=:proj"
+ :bind ':proj proj
+ :answer '(PID Proj Public))
+ (if (emptyp PID)
+ (sql "select PID,Proj,PublicProj from Project where Proj='Main'"
+ :answer '(PID Proj Public))
+ )
+;
+ (if (not-emptyp Public)
+ (setvar 'Reader "1")
+ )
+;
+ (set-wikivar 'PID 'Proj 'Public 'Reader)
+;
+ (setvar 'uid (remote-user))
+ (sql "select UID,Login,Name,Pron,Org,Mail from Member where UID=:uid"
+ :bind ':uid uid
+ :answer '(UID Login Name Pron Org Mail))
+ (set-wikivar 'UID 'Login 'Name 'Pron 'Org 'Mail)
+ (if (emptyp UID)
+ (break)
+ )
+;
+ (sql "select '1' from Permission where UID=:uid and Realm='Admin'"
+ :bind ':uid UID
+ :answer '(Admin))
+;
+ (if (not-emptyp Public)
+ (setvar 'Reader "1"
+ 'Writer "1")
+ (sql "select Realm from ProjectMember where PID=:pid and UID=:uid"
+ :bind (list ':pid PID ':uid UID)
+ :@answer '(realm))
+ (doarray '(realm)
+ (setvar 'v (concat "Auth_" realm)
+ v "1")
+ (set-wikivar v)
)
+ (setvar 'Reader (getvar "Auth_Reader")
+ 'Writer (getvar "Auth_Writer"))
+ )
+;
+ (set-wikivar 'Admin 'Reader 'Writer)
)
- (set-wikivar 'UID 'Login 'Name 'Admin 'PID 'Public 'Reader 'Writer)
+ (sql "end")
)
(defun wiki-page (pid page)
- (if Reader
- (let (wid date title text)
- (sql "select a.WID,a.Title,a.WikiText,b.Date from Wiki a,WikiIndex b using(WID) where b.PID=:pid and b.Page=:page"
- :bind (list ':pid pid ':page page)
- :answer '(wid title text date))
- (if (and (emptyp wid)
- (regex "^-special-" page))
- (sql "select a.WID,a.Title,a.WikiText,b.Date from Wiki a,WikiIndex b using(WID),Project c using(PID) where c.Proj='Main' and b.Page=:page"
- :bind (list ':page page)
- :answer '(wid title text date))
- )
+ (let (wid date title text)
+ (sql "select a.WID,a.Title,a.WikiText,b.Date from Wiki a,WikiIndex b using(WID) where b.PID=:pid and b.Page=:page"
+ :bind (list ':pid pid ':page page)
+ :answer '(wid title text date))
+ (if (and (emptyp wid)
+ (regex "^-special-" page))
+ (sql "select a.WID,a.Title,a.WikiText,b.Date from Wiki a,WikiIndex b using(WID),Project c using(PID) where c.Proj='Main' and b.Page=:page"
+ :bind (list ':page page)
+ :answer '(wid title text date))
+ )
- (if (and (emptyp wid) Edit)
- (setvar 'title page
- 'text (concat "=" page "=\n"))
- )
- (list date title text)
+ (if (and (emptyp wid) Edit)
+ (setvar 'title page
+ 'text (concat "=" page "=\n"))
)
+ (list date title text)
)
)
)
(defun wiki-diff (page otime ntime vo1 vo2 vn1 vn2)
- (let (to tn)
- ($sqlite3 'database
- (sql
- )
+ (let (otitle otext ntitle ntext)
+ (setvar '(otitle otext) (wiki-page-date page otime)
+ '(ntitle ntext) (wiki-page-date page ntime)
+ (list (concat '@ vo1) (concat '@ vo2) (concat '@ vn1) (concat '@ vn2)) (diff otext ntext))
)
)