Fossil SCM

Show RCVID values to administrators on the /bloblist page.

drh 2020-04-13 14:07 trunk
Commit a0faf128db08cef59623b001f9b1506242611136072a06e524db8187ee735c06
1 file changed +42 -27
+42 -27
--- src/name.c
+++ src/name.c
@@ -962,10 +962,11 @@
962962
@ rid INTEGER PRIMARY KEY, -- RID of the object
963963
@ uuid TEXT, -- hash of the object
964964
@ ctime DATETIME, -- Time of creation
965965
@ isPrivate BOOLEAN DEFAULT 0, -- True for unpublished artifacts
966966
@ type TEXT, -- file, checkin, wiki, ticket, etc.
967
+@ rcvid INT, -- When the artifact was received
967968
@ summary TEXT, -- Summary comment for the object
968969
@ detail TEXT -- File name, check-in comment, etc
969970
@ );
970971
;
971972
@@ -977,23 +978,24 @@
977978
void describe_artifacts(const char *zWhere){
978979
db_multi_exec("%s", zDescTab/*safe-for-%s*/);
979980
980981
/* Describe check-ins */
981982
db_multi_exec(
982
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
983
- "SELECT blob.rid, blob.uuid, event.mtime, 'checkin',\n"
983
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
984
+ "SELECT blob.rid, blob.uuid, blob.rcvid, event.mtime, 'checkin',\n"
984985
" 'check-in on ' || strftime('%%Y-%%m-%%d %%H:%%M',event.mtime)\n"
985986
" FROM event, blob\n"
986987
" WHERE (event.objid %s) AND event.type='ci'\n"
987988
" AND event.objid=blob.rid;",
988989
zWhere /*safe-for-%s*/
989990
);
990991
991992
/* Describe files */
992993
db_multi_exec(
993
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
994
- "SELECT blob.rid, blob.uuid, event.mtime, 'file', 'file '||filename.name\n"
994
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
995
+ "SELECT blob.rid, blob.uuid, blob.rcvid, event.mtime,"
996
+ " 'file', 'file '||filename.name\n"
995997
" FROM mlink, blob, event, filename\n"
996998
" WHERE (mlink.fid %s)\n"
997999
" AND mlink.mid=event.objid\n"
9981000
" AND filename.fnid=mlink.fnid\n"
9991001
" AND mlink.fid=blob.rid;",
@@ -1000,23 +1002,24 @@
10001002
zWhere /*safe-for-%s*/
10011003
);
10021004
10031005
/* Describe tags */
10041006
db_multi_exec(
1005
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1006
- "SELECT blob.rid, blob.uuid, tagxref.mtime, 'tag',\n"
1007
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1008
+ "SELECT blob.rid, blob.uuid, blob.rcvid, tagxref.mtime, 'tag',\n"
10071009
" 'tag '||substr((SELECT uuid FROM blob WHERE rid=tagxref.rid),1,16)\n"
10081010
" FROM tagxref, blob\n"
10091011
" WHERE (tagxref.srcid %s) AND tagxref.srcid!=tagxref.rid\n"
10101012
" AND tagxref.srcid=blob.rid;",
10111013
zWhere /*safe-for-%s*/
10121014
);
10131015
10141016
/* Cluster artifacts */
10151017
db_multi_exec(
1016
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1017
- "SELECT blob.rid, blob.uuid, rcvfrom.mtime, 'cluster', 'cluster'\n"
1018
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1019
+ "SELECT blob.rid, blob.uuid, blob.rcvid, rcvfrom.mtime,"
1020
+ " 'cluster', 'cluster'\n"
10181021
" FROM tagxref, blob, rcvfrom\n"
10191022
" WHERE (tagxref.rid %s)\n"
10201023
" AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='cluster')\n"
10211024
" AND blob.rid=tagxref.rid"
10221025
" AND rcvfrom.rcvid=blob.rcvid;",
@@ -1023,12 +1026,12 @@
10231026
zWhere /*safe-for-%s*/
10241027
);
10251028
10261029
/* Ticket change artifacts */
10271030
db_multi_exec(
1028
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1029
- "SELECT blob.rid, blob.uuid, tagxref.mtime, 'ticket',\n"
1031
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1032
+ "SELECT blob.rid, blob.uuid, blob.rcvid, tagxref.mtime, 'ticket',\n"
10301033
" 'ticket '||substr(tag.tagname,5,21)\n"
10311034
" FROM tagxref, tag, blob\n"
10321035
" WHERE (tagxref.rid %s)\n"
10331036
" AND tag.tagid=tagxref.tagid\n"
10341037
" AND tag.tagname GLOB 'tkt-*'"
@@ -1036,12 +1039,12 @@
10361039
zWhere /*safe-for-%s*/
10371040
);
10381041
10391042
/* Wiki edit artifacts */
10401043
db_multi_exec(
1041
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1042
- "SELECT blob.rid, blob.uuid, tagxref.mtime, 'wiki',\n"
1044
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1045
+ "SELECT blob.rid, blob.uuid, blob.rcvid, tagxref.mtime, 'wiki',\n"
10431046
" printf('wiki \"%%s\"',substr(tag.tagname,6))\n"
10441047
" FROM tagxref, tag, blob\n"
10451048
" WHERE (tagxref.rid %s)\n"
10461049
" AND tag.tagid=tagxref.tagid\n"
10471050
" AND tag.tagname GLOB 'wiki-*'"
@@ -1049,12 +1052,12 @@
10491052
zWhere /*safe-for-%s*/
10501053
);
10511054
10521055
/* Event edit artifacts */
10531056
db_multi_exec(
1054
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1055
- "SELECT blob.rid, blob.uuid, tagxref.mtime, 'event',\n"
1057
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1058
+ "SELECT blob.rid, blob.uuid, blob.rcvid, tagxref.mtime, 'event',\n"
10561059
" 'event '||substr(tag.tagname,7)\n"
10571060
" FROM tagxref, tag, blob\n"
10581061
" WHERE (tagxref.rid %s)\n"
10591062
" AND tag.tagid=tagxref.tagid\n"
10601063
" AND tag.tagname GLOB 'event-*'"
@@ -1062,21 +1065,22 @@
10621065
zWhere /*safe-for-%s*/
10631066
);
10641067
10651068
/* Attachments */
10661069
db_multi_exec(
1067
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1068
- "SELECT blob.rid, blob.uuid, attachment.mtime, 'attach-control',\n"
1070
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1071
+ "SELECT blob.rid, blob.uuid, blob.rcvid, attachment.mtime,"
1072
+ " 'attach-control',\n"
10691073
" 'attachment-control for '||attachment.filename\n"
10701074
" FROM attachment, blob\n"
10711075
" WHERE (attachment.attachid %s)\n"
10721076
" AND blob.rid=attachment.attachid",
10731077
zWhere /*safe-for-%s*/
10741078
);
10751079
db_multi_exec(
1076
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1077
- "SELECT blob.rid, blob.uuid, attachment.mtime, 'attachment',\n"
1080
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1081
+ "SELECT blob.rid, blob.uuid, blob.rcvid, attachment.mtime, 'attachment',\n"
10781082
" 'attachment '||attachment.filename\n"
10791083
" FROM attachment, blob\n"
10801084
" WHERE (blob.rid %s)\n"
10811085
" AND blob.rid NOT IN (SELECT rid FROM description)\n"
10821086
" AND blob.uuid=attachment.src",
@@ -1084,12 +1088,13 @@
10841088
);
10851089
10861090
/* Forum posts */
10871091
if( db_table_exists("repository","forumpost") ){
10881092
db_multi_exec(
1089
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1090
- "SELECT postblob.rid, postblob.uuid, forumpost.fmtime, 'forumpost',\n"
1093
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1094
+ "SELECT postblob.rid, postblob.uuid, postblob.rcvid,"
1095
+ " forumpost.fmtime, 'forumpost',\n"
10911096
" CASE WHEN fpid=froot THEN 'forum-post '\n"
10921097
" ELSE 'forum-reply-to ' END || substr(rootblob.uuid,1,14)\n"
10931098
" FROM forumpost, blob AS postblob, blob AS rootblob\n"
10941099
" WHERE (forumpost.fpid %s)\n"
10951100
" AND postblob.rid=forumpost.fpid"
@@ -1098,12 +1103,12 @@
10981103
);
10991104
}
11001105
11011106
/* Everything else */
11021107
db_multi_exec(
1103
- "INSERT OR IGNORE INTO description(rid,uuid,type,summary)\n"
1104
- "SELECT blob.rid, blob.uuid,"
1108
+ "INSERT OR IGNORE INTO description(rid,uuid,rcvid,type,summary)\n"
1109
+ "SELECT blob.rid, blob.uuid,blob.rcvid,"
11051110
" CASE WHEN blob.size<0 THEN 'phantom' ELSE '' END,\n"
11061111
" 'unknown'\n"
11071112
" FROM blob WHERE (blob.rid %s);",
11081113
zWhere /*safe-for-%s*/
11091114
);
@@ -1236,21 +1241,26 @@
12361241
zRange = mprintf("BETWEEN %d AND %d", s, s+n-1);
12371242
}
12381243
describe_artifacts(zRange);
12391244
fossil_free(zRange);
12401245
db_prepare(&q,
1241
- "SELECT rid, uuid, summary, isPrivate, type='phantom'"
1246
+ "SELECT rid, uuid, summary, isPrivate, type='phantom', rcvid"
12421247
" FROM description ORDER BY rid"
12431248
);
12441249
if( skin_detail_boolean("white-foreground") ){
12451250
zSha1Bg = "#714417";
12461251
zSha3Bg = "#177117";
12471252
}else{
12481253
zSha1Bg = "#ebffb0";
12491254
zSha3Bg = "#b0ffb0";
12501255
}
1251
- @ <table cellpadding="0" cellspacing="0">
1256
+ @ <table cellpadding="2" cellspacing="0" border="1">
1257
+ if( g.perm.Admin ){
1258
+ @ <tr><th>RID<th>Hash<th>Rcvid<th>Description<th>Remarks
1259
+ }else{
1260
+ @ <tr><th>RID<th>Hash<th>Description<th>Remarks
1261
+ }
12521262
while( db_step(&q)==SQLITE_ROW ){
12531263
int rid = db_column_int(&q,0);
12541264
const char *zUuid = db_column_text(&q, 1);
12551265
const char *zDesc = db_column_text(&q, 2);
12561266
int isPriv = db_column_int(&q,3);
@@ -1268,19 +1278,24 @@
12681278
@ <tr style='background-color:%s(zClr);'><td align="right">%d(rid)</td>
12691279
}else{
12701280
@ <tr><td align="right">%d(rid)</td>
12711281
}
12721282
@ <td>&nbsp;%z(href("%R/info/%!S",zUuid))%S(zUuid)</a>&nbsp;</td>
1283
+ if( g.perm.Admin ){
1284
+ @ <td>%d(db_column_int(&q,5))
1285
+ }
12731286
@ <td align="left">%h(zDesc)</td>
12741287
if( isPriv || isPhantom ){
12751288
if( isPriv==0 ){
1276
- @ <td>&nbsp;(phantom)</td>
1289
+ @ <td>phantom</td>
12771290
}else if( isPhantom==0 ){
1278
- @ <td>&nbsp;(private)</td>
1291
+ @ <td>private</td>
12791292
}else{
1280
- @ <td>&nbsp;(private,phantom)</td>
1293
+ @ <td>private,phantom</td>
12811294
}
1295
+ }else{
1296
+ @ <td>&nbsp;
12821297
}
12831298
@ </tr>
12841299
}
12851300
@ </table>
12861301
db_finalize(&q);
12871302
--- src/name.c
+++ src/name.c
@@ -962,10 +962,11 @@
962 @ rid INTEGER PRIMARY KEY, -- RID of the object
963 @ uuid TEXT, -- hash of the object
964 @ ctime DATETIME, -- Time of creation
965 @ isPrivate BOOLEAN DEFAULT 0, -- True for unpublished artifacts
966 @ type TEXT, -- file, checkin, wiki, ticket, etc.
 
967 @ summary TEXT, -- Summary comment for the object
968 @ detail TEXT -- File name, check-in comment, etc
969 @ );
970 ;
971
@@ -977,23 +978,24 @@
977 void describe_artifacts(const char *zWhere){
978 db_multi_exec("%s", zDescTab/*safe-for-%s*/);
979
980 /* Describe check-ins */
981 db_multi_exec(
982 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
983 "SELECT blob.rid, blob.uuid, event.mtime, 'checkin',\n"
984 " 'check-in on ' || strftime('%%Y-%%m-%%d %%H:%%M',event.mtime)\n"
985 " FROM event, blob\n"
986 " WHERE (event.objid %s) AND event.type='ci'\n"
987 " AND event.objid=blob.rid;",
988 zWhere /*safe-for-%s*/
989 );
990
991 /* Describe files */
992 db_multi_exec(
993 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
994 "SELECT blob.rid, blob.uuid, event.mtime, 'file', 'file '||filename.name\n"
 
995 " FROM mlink, blob, event, filename\n"
996 " WHERE (mlink.fid %s)\n"
997 " AND mlink.mid=event.objid\n"
998 " AND filename.fnid=mlink.fnid\n"
999 " AND mlink.fid=blob.rid;",
@@ -1000,23 +1002,24 @@
1000 zWhere /*safe-for-%s*/
1001 );
1002
1003 /* Describe tags */
1004 db_multi_exec(
1005 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1006 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'tag',\n"
1007 " 'tag '||substr((SELECT uuid FROM blob WHERE rid=tagxref.rid),1,16)\n"
1008 " FROM tagxref, blob\n"
1009 " WHERE (tagxref.srcid %s) AND tagxref.srcid!=tagxref.rid\n"
1010 " AND tagxref.srcid=blob.rid;",
1011 zWhere /*safe-for-%s*/
1012 );
1013
1014 /* Cluster artifacts */
1015 db_multi_exec(
1016 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1017 "SELECT blob.rid, blob.uuid, rcvfrom.mtime, 'cluster', 'cluster'\n"
 
1018 " FROM tagxref, blob, rcvfrom\n"
1019 " WHERE (tagxref.rid %s)\n"
1020 " AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='cluster')\n"
1021 " AND blob.rid=tagxref.rid"
1022 " AND rcvfrom.rcvid=blob.rcvid;",
@@ -1023,12 +1026,12 @@
1023 zWhere /*safe-for-%s*/
1024 );
1025
1026 /* Ticket change artifacts */
1027 db_multi_exec(
1028 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1029 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'ticket',\n"
1030 " 'ticket '||substr(tag.tagname,5,21)\n"
1031 " FROM tagxref, tag, blob\n"
1032 " WHERE (tagxref.rid %s)\n"
1033 " AND tag.tagid=tagxref.tagid\n"
1034 " AND tag.tagname GLOB 'tkt-*'"
@@ -1036,12 +1039,12 @@
1036 zWhere /*safe-for-%s*/
1037 );
1038
1039 /* Wiki edit artifacts */
1040 db_multi_exec(
1041 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1042 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'wiki',\n"
1043 " printf('wiki \"%%s\"',substr(tag.tagname,6))\n"
1044 " FROM tagxref, tag, blob\n"
1045 " WHERE (tagxref.rid %s)\n"
1046 " AND tag.tagid=tagxref.tagid\n"
1047 " AND tag.tagname GLOB 'wiki-*'"
@@ -1049,12 +1052,12 @@
1049 zWhere /*safe-for-%s*/
1050 );
1051
1052 /* Event edit artifacts */
1053 db_multi_exec(
1054 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1055 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'event',\n"
1056 " 'event '||substr(tag.tagname,7)\n"
1057 " FROM tagxref, tag, blob\n"
1058 " WHERE (tagxref.rid %s)\n"
1059 " AND tag.tagid=tagxref.tagid\n"
1060 " AND tag.tagname GLOB 'event-*'"
@@ -1062,21 +1065,22 @@
1062 zWhere /*safe-for-%s*/
1063 );
1064
1065 /* Attachments */
1066 db_multi_exec(
1067 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1068 "SELECT blob.rid, blob.uuid, attachment.mtime, 'attach-control',\n"
 
1069 " 'attachment-control for '||attachment.filename\n"
1070 " FROM attachment, blob\n"
1071 " WHERE (attachment.attachid %s)\n"
1072 " AND blob.rid=attachment.attachid",
1073 zWhere /*safe-for-%s*/
1074 );
1075 db_multi_exec(
1076 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1077 "SELECT blob.rid, blob.uuid, attachment.mtime, 'attachment',\n"
1078 " 'attachment '||attachment.filename\n"
1079 " FROM attachment, blob\n"
1080 " WHERE (blob.rid %s)\n"
1081 " AND blob.rid NOT IN (SELECT rid FROM description)\n"
1082 " AND blob.uuid=attachment.src",
@@ -1084,12 +1088,13 @@
1084 );
1085
1086 /* Forum posts */
1087 if( db_table_exists("repository","forumpost") ){
1088 db_multi_exec(
1089 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
1090 "SELECT postblob.rid, postblob.uuid, forumpost.fmtime, 'forumpost',\n"
 
1091 " CASE WHEN fpid=froot THEN 'forum-post '\n"
1092 " ELSE 'forum-reply-to ' END || substr(rootblob.uuid,1,14)\n"
1093 " FROM forumpost, blob AS postblob, blob AS rootblob\n"
1094 " WHERE (forumpost.fpid %s)\n"
1095 " AND postblob.rid=forumpost.fpid"
@@ -1098,12 +1103,12 @@
1098 );
1099 }
1100
1101 /* Everything else */
1102 db_multi_exec(
1103 "INSERT OR IGNORE INTO description(rid,uuid,type,summary)\n"
1104 "SELECT blob.rid, blob.uuid,"
1105 " CASE WHEN blob.size<0 THEN 'phantom' ELSE '' END,\n"
1106 " 'unknown'\n"
1107 " FROM blob WHERE (blob.rid %s);",
1108 zWhere /*safe-for-%s*/
1109 );
@@ -1236,21 +1241,26 @@
1236 zRange = mprintf("BETWEEN %d AND %d", s, s+n-1);
1237 }
1238 describe_artifacts(zRange);
1239 fossil_free(zRange);
1240 db_prepare(&q,
1241 "SELECT rid, uuid, summary, isPrivate, type='phantom'"
1242 " FROM description ORDER BY rid"
1243 );
1244 if( skin_detail_boolean("white-foreground") ){
1245 zSha1Bg = "#714417";
1246 zSha3Bg = "#177117";
1247 }else{
1248 zSha1Bg = "#ebffb0";
1249 zSha3Bg = "#b0ffb0";
1250 }
1251 @ <table cellpadding="0" cellspacing="0">
 
 
 
 
 
1252 while( db_step(&q)==SQLITE_ROW ){
1253 int rid = db_column_int(&q,0);
1254 const char *zUuid = db_column_text(&q, 1);
1255 const char *zDesc = db_column_text(&q, 2);
1256 int isPriv = db_column_int(&q,3);
@@ -1268,19 +1278,24 @@
1268 @ <tr style='background-color:%s(zClr);'><td align="right">%d(rid)</td>
1269 }else{
1270 @ <tr><td align="right">%d(rid)</td>
1271 }
1272 @ <td>&nbsp;%z(href("%R/info/%!S",zUuid))%S(zUuid)</a>&nbsp;</td>
 
 
 
1273 @ <td align="left">%h(zDesc)</td>
1274 if( isPriv || isPhantom ){
1275 if( isPriv==0 ){
1276 @ <td>&nbsp;(phantom)</td>
1277 }else if( isPhantom==0 ){
1278 @ <td>&nbsp;(private)</td>
1279 }else{
1280 @ <td>&nbsp;(private,phantom)</td>
1281 }
 
 
1282 }
1283 @ </tr>
1284 }
1285 @ </table>
1286 db_finalize(&q);
1287
--- src/name.c
+++ src/name.c
@@ -962,10 +962,11 @@
962 @ rid INTEGER PRIMARY KEY, -- RID of the object
963 @ uuid TEXT, -- hash of the object
964 @ ctime DATETIME, -- Time of creation
965 @ isPrivate BOOLEAN DEFAULT 0, -- True for unpublished artifacts
966 @ type TEXT, -- file, checkin, wiki, ticket, etc.
967 @ rcvid INT, -- When the artifact was received
968 @ summary TEXT, -- Summary comment for the object
969 @ detail TEXT -- File name, check-in comment, etc
970 @ );
971 ;
972
@@ -977,23 +978,24 @@
978 void describe_artifacts(const char *zWhere){
979 db_multi_exec("%s", zDescTab/*safe-for-%s*/);
980
981 /* Describe check-ins */
982 db_multi_exec(
983 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
984 "SELECT blob.rid, blob.uuid, blob.rcvid, event.mtime, 'checkin',\n"
985 " 'check-in on ' || strftime('%%Y-%%m-%%d %%H:%%M',event.mtime)\n"
986 " FROM event, blob\n"
987 " WHERE (event.objid %s) AND event.type='ci'\n"
988 " AND event.objid=blob.rid;",
989 zWhere /*safe-for-%s*/
990 );
991
992 /* Describe files */
993 db_multi_exec(
994 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
995 "SELECT blob.rid, blob.uuid, blob.rcvid, event.mtime,"
996 " 'file', 'file '||filename.name\n"
997 " FROM mlink, blob, event, filename\n"
998 " WHERE (mlink.fid %s)\n"
999 " AND mlink.mid=event.objid\n"
1000 " AND filename.fnid=mlink.fnid\n"
1001 " AND mlink.fid=blob.rid;",
@@ -1000,23 +1002,24 @@
1002 zWhere /*safe-for-%s*/
1003 );
1004
1005 /* Describe tags */
1006 db_multi_exec(
1007 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1008 "SELECT blob.rid, blob.uuid, blob.rcvid, tagxref.mtime, 'tag',\n"
1009 " 'tag '||substr((SELECT uuid FROM blob WHERE rid=tagxref.rid),1,16)\n"
1010 " FROM tagxref, blob\n"
1011 " WHERE (tagxref.srcid %s) AND tagxref.srcid!=tagxref.rid\n"
1012 " AND tagxref.srcid=blob.rid;",
1013 zWhere /*safe-for-%s*/
1014 );
1015
1016 /* Cluster artifacts */
1017 db_multi_exec(
1018 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1019 "SELECT blob.rid, blob.uuid, blob.rcvid, rcvfrom.mtime,"
1020 " 'cluster', 'cluster'\n"
1021 " FROM tagxref, blob, rcvfrom\n"
1022 " WHERE (tagxref.rid %s)\n"
1023 " AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='cluster')\n"
1024 " AND blob.rid=tagxref.rid"
1025 " AND rcvfrom.rcvid=blob.rcvid;",
@@ -1023,12 +1026,12 @@
1026 zWhere /*safe-for-%s*/
1027 );
1028
1029 /* Ticket change artifacts */
1030 db_multi_exec(
1031 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1032 "SELECT blob.rid, blob.uuid, blob.rcvid, tagxref.mtime, 'ticket',\n"
1033 " 'ticket '||substr(tag.tagname,5,21)\n"
1034 " FROM tagxref, tag, blob\n"
1035 " WHERE (tagxref.rid %s)\n"
1036 " AND tag.tagid=tagxref.tagid\n"
1037 " AND tag.tagname GLOB 'tkt-*'"
@@ -1036,12 +1039,12 @@
1039 zWhere /*safe-for-%s*/
1040 );
1041
1042 /* Wiki edit artifacts */
1043 db_multi_exec(
1044 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1045 "SELECT blob.rid, blob.uuid, blob.rcvid, tagxref.mtime, 'wiki',\n"
1046 " printf('wiki \"%%s\"',substr(tag.tagname,6))\n"
1047 " FROM tagxref, tag, blob\n"
1048 " WHERE (tagxref.rid %s)\n"
1049 " AND tag.tagid=tagxref.tagid\n"
1050 " AND tag.tagname GLOB 'wiki-*'"
@@ -1049,12 +1052,12 @@
1052 zWhere /*safe-for-%s*/
1053 );
1054
1055 /* Event edit artifacts */
1056 db_multi_exec(
1057 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1058 "SELECT blob.rid, blob.uuid, blob.rcvid, tagxref.mtime, 'event',\n"
1059 " 'event '||substr(tag.tagname,7)\n"
1060 " FROM tagxref, tag, blob\n"
1061 " WHERE (tagxref.rid %s)\n"
1062 " AND tag.tagid=tagxref.tagid\n"
1063 " AND tag.tagname GLOB 'event-*'"
@@ -1062,21 +1065,22 @@
1065 zWhere /*safe-for-%s*/
1066 );
1067
1068 /* Attachments */
1069 db_multi_exec(
1070 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1071 "SELECT blob.rid, blob.uuid, blob.rcvid, attachment.mtime,"
1072 " 'attach-control',\n"
1073 " 'attachment-control for '||attachment.filename\n"
1074 " FROM attachment, blob\n"
1075 " WHERE (attachment.attachid %s)\n"
1076 " AND blob.rid=attachment.attachid",
1077 zWhere /*safe-for-%s*/
1078 );
1079 db_multi_exec(
1080 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1081 "SELECT blob.rid, blob.uuid, blob.rcvid, attachment.mtime, 'attachment',\n"
1082 " 'attachment '||attachment.filename\n"
1083 " FROM attachment, blob\n"
1084 " WHERE (blob.rid %s)\n"
1085 " AND blob.rid NOT IN (SELECT rid FROM description)\n"
1086 " AND blob.uuid=attachment.src",
@@ -1084,12 +1088,13 @@
1088 );
1089
1090 /* Forum posts */
1091 if( db_table_exists("repository","forumpost") ){
1092 db_multi_exec(
1093 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,ctime,type,summary)\n"
1094 "SELECT postblob.rid, postblob.uuid, postblob.rcvid,"
1095 " forumpost.fmtime, 'forumpost',\n"
1096 " CASE WHEN fpid=froot THEN 'forum-post '\n"
1097 " ELSE 'forum-reply-to ' END || substr(rootblob.uuid,1,14)\n"
1098 " FROM forumpost, blob AS postblob, blob AS rootblob\n"
1099 " WHERE (forumpost.fpid %s)\n"
1100 " AND postblob.rid=forumpost.fpid"
@@ -1098,12 +1103,12 @@
1103 );
1104 }
1105
1106 /* Everything else */
1107 db_multi_exec(
1108 "INSERT OR IGNORE INTO description(rid,uuid,rcvid,type,summary)\n"
1109 "SELECT blob.rid, blob.uuid,blob.rcvid,"
1110 " CASE WHEN blob.size<0 THEN 'phantom' ELSE '' END,\n"
1111 " 'unknown'\n"
1112 " FROM blob WHERE (blob.rid %s);",
1113 zWhere /*safe-for-%s*/
1114 );
@@ -1236,21 +1241,26 @@
1241 zRange = mprintf("BETWEEN %d AND %d", s, s+n-1);
1242 }
1243 describe_artifacts(zRange);
1244 fossil_free(zRange);
1245 db_prepare(&q,
1246 "SELECT rid, uuid, summary, isPrivate, type='phantom', rcvid"
1247 " FROM description ORDER BY rid"
1248 );
1249 if( skin_detail_boolean("white-foreground") ){
1250 zSha1Bg = "#714417";
1251 zSha3Bg = "#177117";
1252 }else{
1253 zSha1Bg = "#ebffb0";
1254 zSha3Bg = "#b0ffb0";
1255 }
1256 @ <table cellpadding="2" cellspacing="0" border="1">
1257 if( g.perm.Admin ){
1258 @ <tr><th>RID<th>Hash<th>Rcvid<th>Description<th>Remarks
1259 }else{
1260 @ <tr><th>RID<th>Hash<th>Description<th>Remarks
1261 }
1262 while( db_step(&q)==SQLITE_ROW ){
1263 int rid = db_column_int(&q,0);
1264 const char *zUuid = db_column_text(&q, 1);
1265 const char *zDesc = db_column_text(&q, 2);
1266 int isPriv = db_column_int(&q,3);
@@ -1268,19 +1278,24 @@
1278 @ <tr style='background-color:%s(zClr);'><td align="right">%d(rid)</td>
1279 }else{
1280 @ <tr><td align="right">%d(rid)</td>
1281 }
1282 @ <td>&nbsp;%z(href("%R/info/%!S",zUuid))%S(zUuid)</a>&nbsp;</td>
1283 if( g.perm.Admin ){
1284 @ <td>%d(db_column_int(&q,5))
1285 }
1286 @ <td align="left">%h(zDesc)</td>
1287 if( isPriv || isPhantom ){
1288 if( isPriv==0 ){
1289 @ <td>phantom</td>
1290 }else if( isPhantom==0 ){
1291 @ <td>private</td>
1292 }else{
1293 @ <td>private,phantom</td>
1294 }
1295 }else{
1296 @ <td>&nbsp;
1297 }
1298 @ </tr>
1299 }
1300 @ </table>
1301 db_finalize(&q);
1302

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button