Update database.php
This commit is contained in:
parent
80c0d01b81
commit
81b05fe550
|
@ -440,8 +440,15 @@ if(!is_fn("get_bind_to_sql_where")) {
|
||||||
$s1a = get_bind_to_sql_fields($setfields);
|
$s1a = get_bind_to_sql_fields($setfields);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!array_keys_empty(array("settimefield", "setminutes"), $options)) {
|
// set time range
|
||||||
$s3 .= get_bind_to_sql_past_minutes($options['settimefield'], $options['setminutes']);
|
if(!array_key_empty("settimefield", $options)) {
|
||||||
|
if(!array_key_empty("setpast", $options)) {
|
||||||
|
$s3 .= get_bind_to_sql_past($options['settimefield'], $options['setpast']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!array_key_empty("setlast", $options)) {
|
||||||
|
$s3 .= get_bind_to_sql_last($options['settimefield'], $options['setlast']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!array_key_empty("setwheres", $options)) {
|
if(!array_key_empty("setwheres", $options)) {
|
||||||
|
@ -831,13 +838,45 @@ if(!is_fn("get_bind_to_sql_delete")) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!is_fn("get_bind_to_sql_past_minutes")) {
|
if(!is_fn("get_bind_to_sql_past")) {
|
||||||
function get_bind_to_sql_past_minutes($fieldname, $minutes=5) {
|
function get_bind_to_sql_past($fieldname, $interval) {
|
||||||
$sql_past_minutes = "";
|
$sql_past = "";
|
||||||
if($minutes > 0) {
|
|
||||||
$sql_past_minutes = sprintf(" and %s > DATE_SUB(now(), INTERVAL %d MINUTE)", $fieldname, $minutes);
|
$time = 0;
|
||||||
|
|
||||||
|
$_U = array("s" => 1, "m" => 60, "h" => 3600, "d" => 86400);
|
||||||
|
$_L = intval(substr($interval, 0, -1));
|
||||||
|
$_R = substr($interval, -1);
|
||||||
|
if(array_key_exists($_R, $_U)) {
|
||||||
|
$time = $_L * $_U[$_R];
|
||||||
}
|
}
|
||||||
return $sql_past_minutes;
|
|
||||||
|
if($time > 0) {
|
||||||
|
$sql_past = sprintf(" and `%s` < DATE_SUB(NOW(), INTERVAL %d SECOND)", $fieldname, $time);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $sql_past;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!is_fn("get_bind_to_sql_last")) {
|
||||||
|
function get_bind_to_sql_last($fieldname, $interval) {
|
||||||
|
$sql_last = "";
|
||||||
|
|
||||||
|
$time = 0;
|
||||||
|
|
||||||
|
$_U = array("s" => 1, "m" => 60, "h" => 3600, "d" => 86400);
|
||||||
|
$_L = intval(substr($interval, 0, -1));
|
||||||
|
$_R = substr($interval, -1);
|
||||||
|
if(array_key_exists($_R, $_U)) {
|
||||||
|
$time = $_L * $_U[$_R];
|
||||||
|
}
|
||||||
|
|
||||||
|
if($time > 0) {
|
||||||
|
$sql_last = sprintf(" and `%s` >= DATE_SUB(NOW(), INTERVAL %d SECOND)", $fieldname, $time);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $sql_last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -943,6 +982,7 @@ if(!is_fn("exec_db_table_create")) {
|
||||||
$setspatial = get_value_in_array("setspatial", $options, false);
|
$setspatial = get_value_in_array("setspatial", $options, false);
|
||||||
|
|
||||||
// get event options
|
// get event options
|
||||||
|
$settimefield = get_value_in_array("settimefield", $options, false);
|
||||||
$setevent = get_value_in_array("setevent", $options, false);
|
$setevent = get_value_in_array("setevent", $options, false);
|
||||||
|
|
||||||
// check if exists table
|
// check if exists table
|
||||||
|
@ -1016,10 +1056,35 @@ if(!is_fn("exec_db_table_create")) {
|
||||||
|
|
||||||
// create event
|
// create event
|
||||||
foreach($setevent as $event) {
|
foreach($setevent as $event) {
|
||||||
$sql = sprintf("create event event_%s on schedule at CURRENT_TIMESTAMP + INTERVAL %s MINUTES DO (%s)", make_random_id(), $event['interval'], $event['query']);
|
if(check_array_length($event, 3) == 0) {
|
||||||
|
$mode = $event[0];
|
||||||
|
$interval = $event[1];
|
||||||
|
$query = "";
|
||||||
|
|
||||||
|
// bind(array) or query(string)
|
||||||
|
$_arg3 = $event[2];
|
||||||
|
|
||||||
|
if(is_array($_arg3)) {
|
||||||
|
if($mode == "expire") {
|
||||||
|
$bind = $_arg3;
|
||||||
|
$query = get_bind_to_sql_delete($_tablename, $bind, array(
|
||||||
|
"settimefield" => $settimefield,
|
||||||
|
"setpast" => $interval
|
||||||
|
));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if($mode == "query") {
|
||||||
|
$query = $_arg3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($query)) {
|
||||||
|
$sql = sprintf("create event `scheduled_%s` on schedule at CURRENT_TIMESTAMP + INTERVAL %s MINUTES DO (%s)", make_random_id(), $interval, $query);
|
||||||
exec_db_query($sql);
|
exec_db_query($sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $_tablename;
|
return $_tablename;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user