Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Fix harmless compiler warnings. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | email-alerts |
| Files: | files | file ages | folders |
| SHA3-256: |
5fde17bbbc2cba69d3f8e2af67bf1289 |
| User & Date: | drh 2018-06-22 01:28:10.159 |
Context
|
2018-06-22
| ||
| 03:17 | Add the /unsubscribe page. check-in: f911608824 user: drh tags: email-alerts | |
| 01:28 | Fix harmless compiler warnings. check-in: 5fde17bbbc user: drh tags: email-alerts | |
| 01:18 | Rename the email_pending table to pending_alert. Add triggers to fill in the pending_alert table each time a row is added to the event table. check-in: 8c4b92ad3e user: drh tags: email-alerts | |
Changes
Changes to src/db.c.
| ︙ | ︙ | |||
908 909 910 911 912 913 914 |
sqlite3_value **argv
){
const unsigned char *zIn = sqlite3_value_text(argv[0]);
int nIn = sqlite3_value_bytes(argv[0]);
unsigned char *zOut;
if( zIn==0 ) return;
if( nIn&1 ) return;
| | < < < | 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 |
sqlite3_value **argv
){
const unsigned char *zIn = sqlite3_value_text(argv[0]);
int nIn = sqlite3_value_bytes(argv[0]);
unsigned char *zOut;
if( zIn==0 ) return;
if( nIn&1 ) return;
if( !validate16((const char*)zIn, nIn) ) return;
zOut = sqlite3_malloc64( nIn/2 );
if( zOut==0 ){
sqlite3_result_error_nomem(context);
return;
}
decode16(zIn, zOut, nIn);
sqlite3_result_blob(context, zOut, nIn/2, sqlite3_free);
}
/*
** Register the SQL functions that are useful both to the internal
** representation and to the "fossil sql" command.
*/
void db_add_aux_functions(sqlite3 *db){
sqlite3_create_function(db, "checkin_mtime", 2, SQLITE_UTF8, 0,
db_checkin_mtime_function, 0, 0);
|
| ︙ | ︙ |
Changes to src/email.c.
| ︙ | ︙ | |||
539 540 541 542 543 544 545 |
}
blob_zero(&hdr);
blob_zero(&body);
blob_zero(&prompt);
}
else if( strncmp(zCmd, "settings", nCmd)==0 ){
int isGlobal = find_option("global",0,0)!=0;
| < | 539 540 541 542 543 544 545 546 547 548 549 550 551 552 |
}
blob_zero(&hdr);
blob_zero(&body);
blob_zero(&prompt);
}
else if( strncmp(zCmd, "settings", nCmd)==0 ){
int isGlobal = find_option("global",0,0)!=0;
int nSetting;
const Setting *pSetting = setting_info(&nSetting);
db_open_config(1, 0);
verify_all_options();
if( g.argc!=3 && g.argc!=5 ) usage("setting [NAME VALUE]");
if( g.argc==5 ){
const char *zLabel = g.argv[3];
|
| ︙ | ︙ | |||
665 666 667 668 669 670 671 |
** Allow users to subscribe to email notifications, or to change or
** verify their subscription.
*/
void subscribe_page(void){
int needCaptcha;
unsigned int uSeed;
const char *zDecoded;
| | | 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 |
** Allow users to subscribe to email notifications, or to change or
** verify their subscription.
*/
void subscribe_page(void){
int needCaptcha;
unsigned int uSeed;
const char *zDecoded;
char *zCaptcha = 0;
char *zErr = 0;
int eErr = 0;
login_check_credentials();
if( !g.perm.EmailAlert ){
login_needed(g.anon.EmailAlert);
return;
|
| ︙ | ︙ | |||
838 839 840 841 842 843 844 |
void alerts_page(void){
const char *zName = P("name");
Stmt q;
int sa, sc, st, sw;
int sdigest, sdonotcall, sverified;
const char *ssub;
const char *semail;
| < < < | 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 |
void alerts_page(void){
const char *zName = P("name");
Stmt q;
int sa, sc, st, sw;
int sdigest, sdonotcall, sverified;
const char *ssub;
const char *semail;
const char *smip;
const char *suname;
int eErr = 0;
char *zErr = 0;
login_check_credentials();
if( !g.perm.EmailAlert ){
cgi_redirect("subscribe");
return;
|
| ︙ | ︙ | |||
915 916 917 918 919 920 921 |
db_prepare(&q,
"SELECT"
" semail,"
" sverified,"
" sdonotcall,"
" sdigest,"
" ssub,"
| < < < < | | | 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 |
db_prepare(&q,
"SELECT"
" semail,"
" sverified,"
" sdonotcall,"
" sdigest,"
" ssub,"
" smip,"
" suname"
" FROM subscriber WHERE subscriberCode=hextoblob(%Q)", zName);
if( db_step(&q)!=SQLITE_ROW ){
db_finalize(&q);
cgi_redirect("subscribe");
return;
}
style_header("Update Subscription");
semail = db_column_text(&q, 0);
sverified = db_column_int(&q, 1);
sdonotcall = db_column_int(&q, 2);
sdigest = db_column_int(&q, 3);
ssub = db_column_text(&q, 4);
sa = strchr(ssub,'a')!=0;
sc = strchr(ssub,'c')!=0;
st = strchr(ssub,'t')!=0;
sw = strchr(ssub,'w')!=0;
smip = db_column_text(&q, 5);
suname = db_column_text(&q, 6);
if( !g.perm.Admin && !sverified ){
db_multi_exec(
"UPDATE subscriber SET sverified=1 WHERE subscriberCode=hextoblob(%Q)",
zName);
@ <h1>Your email alert subscription has been verified!</h1>
@ <p>Use the form below to update your subscription information.</p>
@ <p>Hint: Bookmark this page so that you can more easily update
|
| ︙ | ︙ |
Changes to src/forum.c.
| ︙ | ︙ | |||
99 100 101 102 103 104 105 |
" ORDER BY xdepth DESC, xtime ASC"
") SELECT * FROM post;",
itemId
);
while( db_step(&q)==SQLITE_ROW ){
int id = db_column_int(&q, 0);
const char *zUser = db_column_text(&q, 1);
| < < | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
" ORDER BY xdepth DESC, xtime ASC"
") SELECT * FROM post;",
itemId
);
while( db_step(&q)==SQLITE_ROW ){
int id = db_column_int(&q, 0);
const char *zUser = db_column_text(&q, 1);
const char *zMime = db_column_text(&q, 3);
int iDepth = db_column_int(&q, 7);
double rMTime = db_column_double(&q, 8);
char *zAge = db_timespan_name(rNow - rMTime);
Blob body;
@ <!-- Forum post %d(id) -->
@ <table class="forum_post">
@ <tr>
|
| ︙ | ︙ | |||
255 256 257 258 259 260 261 |
** p Preview changes
*/
void forum_edit_page(void){
int itemId;
int parentId;
char *zErr = 0;
login_check_credentials();
| < | 253 254 255 256 257 258 259 260 261 262 263 264 265 266 |
** p Preview changes
*/
void forum_edit_page(void){
int itemId;
int parentId;
char *zErr = 0;
login_check_credentials();
const char *zMime;
const char *zSub;
if( !g.perm.WrForum ){ login_needed(g.anon.WrForum); return; }
forum_verify_schema();
itemId = atoi(PD("item","0"));
parentId = atoi(PD("replyto","0"));
if( P("cancel")!=0 ){
|
| ︙ | ︙ |