CGI-OptimalQuery
view release on metacpan or search on metacpan
lib/CGI/OptimalQuery/SaveSearchTool.pm view on Meta::CPAN
$rec{id} ||= $$o{dbh}->last_insert_id("","","","");
}
$$o{output_handler}->($$o{httpHeader}->('application/json').encode_json({ status => "ok", msg => "search saved successfully", id => $rec{id} }));
}; if ($@) {
my $err = $@;
$err =~ s/\ at\ .*//;
if ($err =~ /unique\ constraint/i ||
$err =~ /are not unique/ ||
$err =~ /duplicate\ entry/i ||
$err =~ /unique\_violation/i ||
$err =~ /unique\ key/i ||
$err =~ /duplicate\ key/i ||
$err =~ /constraint\_unique/i) {
$err = 'Another record with this name already exists.';
}
else {
$$o{error_handler}->("err", $err);
}
$$o{output_handler}->($$o{httpHeader}->('application/json').encode_json({ status => "error", msg => $err }));
}
return undef;
}
}
sub on_open {
my ($o) = @_;
my $buf;
# if saved search alerts are enabled
if ($$o{schema}{savedSearchAlerts}) {
my $rec;
if ($$o{q}->param('OQss') ne '') {
$rec = $$o{dbh}->selectrow_hashref("SELECT USER_TITLE,ALERT_MASK,ALERT_INTERVAL_MIN,ALERT_DOW,ALERT_START_HOUR,ALERT_END_HOUR FROM oq_saved_search WHERE id=? AND user_id=?", undef, scalar($$o{q}->param('OQss')), $$o{schema}{savedSearchUserID});
}
$rec ||= {};
my $alerts_enabled = ($$rec{ALERT_MASK} > 0) ? 1 : 0;
$$rec{ALERT_MASK} ||= 1;
$$rec{ALERT_INTERVAL_MIN} ||= 1440;
$$rec{ALERT_DOW} ||= '12345';
$$rec{ALERT_START_HOUR} ||= 8;
$$rec{ALERT_END_HOUR} ||= 17;
if ($$rec{ALERT_START_HOUR} > 12) {
$$rec{ALERT_START_HOUR} = ($$rec{ALERT_START_HOUR} - 12).'PM';
} else {
$$rec{ALERT_START_HOUR} .= 'AM';
}
if ($$rec{ALERT_END_HOUR} > 12) {
$$rec{ALERT_END_HOUR} = ($$rec{ALERT_END_HOUR} - 12).'PM';
} else {
$$rec{ALERT_END_HOUR} .= 'AM';
}
$buf .= "
<label>name <input type=text id=OQsaveSearchTitle value='".$o->escape_html($$rec{USER_TITLE})."'></label>
<fieldset id=OQSaveReportEmailAlertOpts".($alerts_enabled?' class=opened':'').">
<legend><label class='OQEmailAlertCkBox ckbox'><input type=checkbox id=OQalertenabled".($alerts_enabled?' checked':'')."> send email alert</label></legend>
<p>
<label>when records are:</label>
<label><input type=checkbox name=OQalert_mask value=1".(($$rec{ALERT_MASK} & 1)?' checked':'')."> added</label>
<label><input type=checkbox name=OQalert_mask value=2".(($$rec{ALERT_MASK} & 2)?' checked':'')."> removed</label>
<label><input type=checkbox name=OQalert_mask value=4".(($$rec{ALERT_MASK} & 4)?' checked':'')."> present</label>
<p>
<label>check every: <input type=text id=OQalert_interval_min size=4 maxlength=6 value='".$o->escape_html($$rec{ALERT_INTERVAL_MIN})."'> minutes</label>
<small>(1440 min per day)</small>
<p>
<label title='Specify which days to send the alert.'>on days:</label>
<label class=ckbox title=Sunday><input type=checkbox class=OQalert_dow value=0". ($$rec{ALERT_DOW}=~/0/?' checked':'').">S</label>
<label class=ckbox title=Monday><input type=checkbox class=OQalert_dow value=1". ($$rec{ALERT_DOW}=~/1/?' checked':'').">M</label>
<label class=ckbox title=Tuesday><input type=checkbox class=OQalert_dow value=2". ($$rec{ALERT_DOW}=~/2/?' checked':'').">T</label>
<label class=ckbox title=Wednesday><input type=checkbox class=OQalert_dow value=3".($$rec{ALERT_DOW}=~/3/?' checked':'').">W</label>
<label class=ckbox title=Thursday><input type=checkbox class=OQalert_dow value=4". ($$rec{ALERT_DOW}=~/4/?' checked':'').">T</label>
<label class=ckbox title=Friday><input type=checkbox class=OQalert_dow value=5". ($$rec{ALERT_DOW}=~/5/?' checked':'').">F</label>
<label class=ckbox title=Saturday><input type=checkbox class=OQalert_dow value=6". ($$rec{ALERT_DOW}=~/6/?' checked':'').">S</label>
<p>
<label title='Specify start hour to sent an alert.'>from: <input type=text value='".$o->escape_html($$rec{ALERT_START_HOUR})."' size=4 maxlength=4 id=OQalert_start_hour placeholder=8AM></label> <label>to: <input type=text value='".$o->escape_html($...
<p><strong>Notice:</strong> This tool sends automatic alerts over insecure email. By creating an alert you acknowledge that the fields in the report will never contain sensitive data. Alerts are automatically disabled when the count exceeds $$o{sch...
</fieldset>";
}
else {
my $rec;
if ($$o{q}->param('OQss') ne '') {
$rec = $$o{dbh}->selectrow_hashref("SELECT USER_TITLE FROM oq_saved_search WHERE id=? AND user_id=?", undef, scalar($$o{q}->param('OQss')), $$o{schema}{savedSearchUserID});
}
$rec ||= {};
$buf .= "
<label>name <input type=text id=OQsaveSearchTitle value='".$o->escape_html($$rec{USER_TITLE})."'></label>";
}
# include checkbox to allow user to set saved search as the default settings
if($$o{schema}{canSaveDefaultSearches}) {
my ($is_default_ss) = $$o{dbh}->selectrow_array("SELECT is_default FROM oq_saved_search WHERE id=? AND user_id=?", undef, scalar($$o{q}->param('OQss')), $$o{schema}{savedSearchUserID});
$buf .= "<br><label class='ckbox OQSavedSearchCkBox'><input title='Set the filter, sort, and shown columns in this reports as the system default for all users' type=checkbox value=1 id=OQsave_search_default".($is_default_ss ? ' checked' : '').">s...
}
$buf .= "<p>";
$buf .= "<button type=button class=OQSaveNewReportBut>save as new</button>" if $$o{q}->param('OQss') ne '';
$buf .= "<button type=button class=OQSaveReportBut>save</button>";
return $buf;
}
sub activate {
my ($o) = @_;
$$o{schema}{tools}{savereport} ||= {
title => "Save Report",
on_init => \&on_init,
on_open => \&on_open
};
}
# this function is called from a cron to help execute saved searches that have alerts that need to be checked
( run in 0.583 second using v1.01-cache-2.11-cpan-df04353d9ac )