| | @@ -360,19 +360,25 @@ |
| 360 | 360 | }else if( (zTitle = trim_string(zTitle))[0]==0 ){ |
| 361 | 361 | zErr = "Please supply a title"; |
| 362 | 362 | }else{ |
| 363 | 363 | zErr = verify_sql_statement(zSQL); |
| 364 | 364 | } |
| 365 | + if( zErr==0 |
| 366 | + && db_exists("SELECT 1 FROM reportfmt WHERE title=%Q and rn<>%d", |
| 367 | + zTitle, rn) |
| 368 | + ){ |
| 369 | + zErr = mprintf("There is already another report named \"%h\"", zTitle); |
| 370 | + } |
| 365 | 371 | if( zErr==0 ){ |
| 366 | 372 | login_verify_csrf_secret(); |
| 367 | 373 | if( rn>0 ){ |
| 368 | 374 | db_multi_exec("UPDATE reportfmt SET title=%Q, sqlcode=%Q," |
| 369 | | - " owner=%Q, cols=%Q WHERE rn=%d", |
| 375 | + " owner=%Q, cols=%Q, mtime=now() WHERE rn=%d", |
| 370 | 376 | zTitle, zSQL, zOwner, zClrKey, rn); |
| 371 | 377 | }else{ |
| 372 | | - db_multi_exec("INSERT INTO reportfmt(title,sqlcode,owner,cols) " |
| 373 | | - "VALUES(%Q,%Q,%Q,%Q)", |
| 378 | + db_multi_exec("INSERT INTO reportfmt(title,sqlcode,owner,cols,mtime) " |
| 379 | + "VALUES(%Q,%Q,%Q,%Q,now())", |
| 374 | 380 | zTitle, zSQL, zOwner, zClrKey); |
| 375 | 381 | rn = db_last_insert_rowid(); |
| 376 | 382 | } |
| 377 | 383 | cgi_redirect(mprintf("rptview?rn=%d", rn)); |
| 378 | 384 | return; |
| 379 | 385 | |