use DateTime;
use DateTime::Format::SQLite;
+use DateTime::Format::Strptime;
use DateTime::Duration;
use Date::Language;
use Date::Parse;
use Time::localtime;
use Regexp::Common qw /URI/;
use JSON;
+use IO::Compress::Gzip qw(gzip $GzipError);
+use Compress::Zlib;
+
#DEFAULT SETTINGS HERE!
our $REC_LIMIT = 25;
my $session =
new CGI::Session( "driver:File", $cgi, { Directory => $LOG_PATH } );
my $sid = $session->id();
-my $dbname = "";#$session->param('database');
+my $dbname = $session->param('database');
my $userid = $session->param('alias');
my $password = $session->param('passw');
my $action = $cgi->param('action');
my $lid = $cgi->param('id');
my $doc = $cgi->param('doc');
+my $error = "";
if ($AUTHORITY) {
$userid = $password = $AUTHORITY;
$dbname = 'data_' . $userid . '_log.db';
}
elsif ( !$userid || !$dbname ) {
- # print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
- # exit;
+ print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
+ exit;
}
my $database = '../../dbLifeLog/' . $dbname;
my $dsn = "DBI:SQLite:dbname=$database";
-my $db;
-#$db = DBI->connect( $dsn, $userid, $password, { RaiseError => 1 } );
+my $db = DBI->connect( $dsn, $userid, $password, { RaiseError => 1 } );
### Authenticate session to alias password
#&authenticate;
my $today = DateTime->now;
$today->set_time_zone($TIME_ZONE);
+my $strp = DateTime::Format::Strptime->new(
+ pattern => '%F %T',
+ locale => 'en_AU',
+ time_zone => $TIME_ZONE,
+ on_error => 'croak',
+);
+my ($response, $json) = 'Feature Under Development!';
###############
-#&processSubmit;
+&processSubmit;
###############
-my $json = JSON->new->utf8->space_after->pretty->allow_blessed->encode
- ({date => DateTime::Format::SQLite->format_datetime($today),
- response_origin => "LifeLog.".$RELEASE_VER,
- response => "Feature Under Development!",
- alias => $userid,
- log_id => $lid,
- received => $doc
- });
+if($action eq 'load' && !$error){
+ $json = $response;
+}
+else{
+ &defaultJSON;
+}
print $cgi->header( -expires => "+0s", -charset => "UTF-8" );
exit;
+sub defaultJSON{
+ $json = JSON->new->utf8->space_after->pretty->allow_blessed->encode
+ ({date => $strp->format_datetime($today),
+ response_origin => "LifeLog.".$RELEASE_VER,
+ response => $response,
+ alias => $userid,
+ log_id => $lid,
+ database=>$database, action => $action, error=>$error
+ #received => $doc
+ });
+}
+
sub processSubmit {
# my $date = $cgi->param('date');
-
+ my $st;
+
try {
+ if($action eq 'store'){
+
+ my $zip = compress($doc,Z_BEST_COMPRESSION);
+ $st = $db->prepare("SELECT LID FROM NOTES WHERE LID = '$lid';");
+ $st -> execute();
+ if($st->fetchrow_array() eq undef) {
+ $st = $db->prepare("INSERT INTO NOTES(LID, DOC) VALUES (?, ?);");
+ $st->execute($lid, $zip);
+ $response = "Stored Document (id:$lid)!";
+ }
+ else{
+ $st = $db->prepare("UPDATE NOTES SET DOC = ? WHERE LID = '$lid';");
+ $st->execute($zip);
+ $response = "Updated Document (id:$lid)!";
+ }
+
+ }
+ elsif($action eq 'load'){
+ $st = $db->prepare("SELECT DOC FROM NOTES WHERE LID = '$lid';");
+ $st -> execute();
+ $doc = ($st->fetchrow_array())[0];
+ $response = uncompress($doc);
+ }
+ else{
+ $error = "Your action ($action) sux's a lot!";
+ }
+
}
catch {
- print "ERROR:" . $_;
+ $error = ":LID[$lid]-> ".$_;
}
}
$st = $db->prepare(selSQLTbl('NOTES'));
$st->execute();
if(!$st->fetchrow_array()) {
-my $stmt = qq(
- CREATE VIRTUAL TABLE NOTES USING fts4(
- ID INT PRIMARY KEY NOT NULL,
- ID_LOG INT,
- AUTHOR,
- CONTENT TEXT NOT NULL,
- compress=zip, uncompress=unzip
- );
-);
+ my $stmt = qq(
+ CREATE TABLE NOTES (LID PRIMARY KEY NOT NULL, DOC TEXT);
+ );
$rv = $db->do($stmt);
if($rv < 0){print "<p>Error->"& $DBI::errstri &"</p>"};
- $st = $db->prepare("SELECT * FROM AUTH WHERE alias='$alias' AND passw='$passw';");
- $st->execute();
- if(!$st->fetchrow_array()) {
- $st = $db->prepare('INSERT INTO AUTH VALUES (?,?)');
- $st->execute($alias, $passw);
- }
}
+ $st = $db->prepare("SELECT * FROM AUTH WHERE alias='$alias' AND passw='$passw';");
+ $st->execute();
+ if(!$st->fetchrow_array()) {
+ $st = $db->prepare('INSERT INTO AUTH VALUES (?,?)');
+ $st->execute($alias, $passw);
+ }
$st = $db->prepare(selSQLTbl('CONFIG'));
$st->execute();
- if(!$st->fetchrow_array()) {
+ if(!$st->fetchrow_array()) {
#v.1.3 -> v.1.4
#alter table CONFIG add DESCRIPTION VCHAR(128);
my $stmt = qq(
- CREATE TABLE CONFIG(
- ID TINY PRIMARY KEY NOT NULL,
- NAME VCHAR(16),
- VALUE VCHAR(28),
- DESCRIPTION VCHAR(128)
- );
- CREATE INDEX idx_config_name ON CONFIG (NAME);
+ CREATE TABLE CONFIG(
+ ID TINY PRIMARY KEY NOT NULL,
+ NAME VCHAR(16),
+ VALUE VCHAR(28),
+ DESCRIPTION VCHAR(128)
+ );
+ CREATE INDEX idx_config_name ON CONFIG (NAME);
);
$rv = $db->do($stmt);
$st->finish();
function setNow() {
- var date = $("#frm_entry").date;
+ var date = document.getElementById("frm_entry").date;
var dt = new Date();
var mm = fix0(dt.getMonth() + 1);
var dd = fix0(dt.getDate());
// alert(JSON.stringify(QUILL.getContents()));
//Disabled on new log entry. Save and edit, obtains id. For now. @2019-07-20
//if (id > 0) {
- $.post('json.cgi?action=' + action + '&id=' + id, { doc: JSON.stringify(QUILL.getContents()) }, saveRTFResult);
+ $.post('json.cgi', {action:action, id:id, doc: JSON.stringify(QUILL.getContents()) }, saveRTFResult);
//}
}
function saveRTFResult(result) {
- alert("Result->" + result);
- console.log(result);
+ //alert("Result->" + result);
+ console.log("Result->" + result);
+ var obj = JSON.parse(result);
+ alert(obj.response);
}
\ No newline at end of file