|
|
@@ -590,9 +590,9 @@ class tools {
|
|
|
case when COALESCE(ni.frequency_type,'') = 'Daily'
|
|
|
then to_char(timezone(ni.daily_time_zone, ni.insert_date),'Mon DD, YYYY')
|
|
|
when COALESCE(ni.frequency_type,'') = 'Weekly'
|
|
|
- then to_char(ni.insert_date::date - (((EXTRACT(dow FROM ni.insert_date)::integer - ni.weekly_week::integer + 7) % 7) ||' days')::INTERVAL,'Mon DD, YYYY')
|
|
|
+ then to_char(timezone(ni.weekly_time_zone,ni.insert_date)::date - (((EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer - ni.weekly_week::integer + 7) % 7) ||' days')::INTERVAL,'Mon DD, YYYY')
|
|
|
|| ' - ' ||
|
|
|
- to_char(ni.insert_date::date + (((ni.weekly_week::integer - EXTRACT(dow FROM ni.insert_date)::integer + 7) % 7)-1 + CASE WHEN EXTRACT(DOW FROM ni.insert_date)::integer=ni.weekly_week::integer THEN 7 ELSE 0 END ||' days')::INTERVAL,'Mon DD, YYYY')
|
|
|
+ to_char(timezone(ni.weekly_time_zone,ni.insert_date)::date + (((ni.weekly_week::integer - EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer + 7) % 7)-1 + CASE WHEN EXTRACT(DOW FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer=ni.weekly_week::integer THEN 7 ELSE 0 END ||' days')::INTERVAL,'Mon DD, YYYY')
|
|
|
else ''
|
|
|
end as insert_date_format
|
|
|
from public.kln_notifiation_info ni
|
|
|
@@ -600,11 +600,17 @@ class tools {
|
|
|
and ni.notifications_method = 'true' and ni.is_send_message is null
|
|
|
and lower(ni.user_login) = '".strtolower(_getLoginName())."'
|
|
|
and ((ni.frequency_type = 'Daily'
|
|
|
- and timezone(ni.daily_time_zone, NOW()::time) > ni.daily_time::time
|
|
|
- and ni.insert_date::timestamp <= CURRENT_DATE + ni.daily_time::time)
|
|
|
- or (ni.frequency_type = 'Weekly' and timezone(ni.weekly_time_zone, NOW()::time) > ni.weekly_time::time
|
|
|
- and ni.weekly_week ilike '%'|| EXTRACT(dow FROM timezone(ni.weekly_time_zone, NOW())) ||'%'
|
|
|
- and ni.insert_date::timestamp <= CURRENT_DATE + ni.weekly_time::time))
|
|
|
+ and (case when (timezone(ni.daily_time_zone, NOW())::time > ni.daily_time::time)
|
|
|
+ then timezone(ni.daily_time_zone,ni.insert_date)::date < timezone(ni.daily_time_zone, NOW())::date
|
|
|
+ else
|
|
|
+ timezone(ni.daily_time_zone,ni.insert_date)::date < timezone(ni.daily_time_zone, NOW())::date - '1 days'::INTERVAL
|
|
|
+ end))
|
|
|
+ or (ni.frequency_type = 'Weekly'
|
|
|
+ and (case when (timezone(ni.weekly_time_zone, NOW())::time > ni.weekly_time::time)
|
|
|
+ then timezone(ni.weekly_time_zone,ni.insert_date)::date <= (timezone(ni.weekly_time_zone,ni.insert_date)::date + (((ni.weekly_week::integer - EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer + 7) % 7)-1 + CASE WHEN EXTRACT(DOW FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer=ni.weekly_week::integer THEN 7 ELSE 0 END ||' days')::INTERVAL)::date
|
|
|
+ else
|
|
|
+ timezone(ni.weekly_time_zone,ni.insert_date)::date < (timezone(ni.weekly_time_zone,ni.insert_date)::date - (((EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer - ni.weekly_week::integer + 7) % 7) ||' days')::INTERVAL)::date
|
|
|
+ end)))
|
|
|
group by ni.notifiation_type,insert_date_format
|
|
|
union all
|
|
|
select ni.notifiation_type, '' as insert_date_format
|
|
|
@@ -705,11 +711,18 @@ class tools {
|
|
|
from public.kln_notifiation_info ni
|
|
|
where lower(ni.user_login) in ('".strtolower(_getLoginName())."','all_user')
|
|
|
and (ni.frequency_type = 'Instant'
|
|
|
- or (ni.frequency_type = 'Daily' and timezone(ni.daily_time_zone, NOW()::time) > ni.daily_time::time
|
|
|
- and ni.insert_date::timestamp <= CURRENT_DATE + ni.daily_time::time)
|
|
|
- or (ni.frequency_type = 'Weekly' and timezone(ni.weekly_time_zone, NOW()::time) > ni.weekly_time::time
|
|
|
- and ni.weekly_week ilike '%'|| EXTRACT(dow FROM timezone(ni.weekly_time_zone, NOW())) ||'%'
|
|
|
- and ni.insert_date::timestamp <= CURRENT_DATE + ni.weekly_time::time))
|
|
|
+ or (ni.frequency_type = 'Daily'
|
|
|
+ and (case when (timezone(ni.daily_time_zone, NOW())::time > ni.daily_time::time)
|
|
|
+ then timezone(ni.daily_time_zone,ni.insert_date)::date < timezone(ni.daily_time_zone, NOW())::date
|
|
|
+ else
|
|
|
+ timezone(ni.daily_time_zone,ni.insert_date)::date < timezone(ni.daily_time_zone, NOW())::date - '1 days'::INTERVAL
|
|
|
+ end))
|
|
|
+ or (ni.frequency_type = 'Weekly'
|
|
|
+ and (case when (timezone(ni.weekly_time_zone, NOW())::time > ni.weekly_time::time)
|
|
|
+ then timezone(ni.weekly_time_zone,ni.insert_date)::date <= (timezone(ni.weekly_time_zone,ni.insert_date)::date + (((ni.weekly_week::integer - EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer + 7) % 7)-1 + CASE WHEN EXTRACT(DOW FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer=ni.weekly_week::integer THEN 7 ELSE 0 END ||' days')::INTERVAL)::date
|
|
|
+ else
|
|
|
+ timezone(ni.weekly_time_zone,ni.insert_date)::date < (timezone(ni.weekly_time_zone,ni.insert_date)::date - (((EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer - ni.weekly_week::integer + 7) % 7) ||' days')::INTERVAL)::date
|
|
|
+ end)))
|
|
|
and ni.notifications_method = true and is_send_message is null limit 1";
|
|
|
$unread = common::excuteObjectSql($checkUnread);
|
|
|
$returnData = array("has_message" =>!empty($unread));
|
|
|
@@ -1265,28 +1278,43 @@ class tools {
|
|
|
|
|
|
public function getNotifications($notifiation_type,$frequency_type,$insert_date_format = null){
|
|
|
if ($frequency_type == "all"){
|
|
|
+ //Daily 频率:超过昨天的数据,不在限制提醒的daily_time,全部应该查出来
|
|
|
+ //比如今天周四 17号, 上第一周截止是10号, 10号以后的数据,不在做weekly_time和weekly_week 的限制,直接查出来
|
|
|
$sql_where = " and (ni.frequency_type = 'Instant'
|
|
|
or (ni.frequency_type = 'Daily'
|
|
|
- and timezone(ni.daily_time_zone, NOW()::time) > ni.daily_time::time
|
|
|
- and ni.insert_date::timestamp <= CURRENT_DATE + ni.daily_time::time)
|
|
|
- or (ni.frequency_type = 'Weekly' and timezone(ni.weekly_time_zone, NOW()::time) > ni.weekly_time::time
|
|
|
- and ni.weekly_week ilike '%'|| EXTRACT(dow FROM timezone(ni.weekly_time_zone, NOW())) ||'%'
|
|
|
- and ni.insert_date::timestamp <= CURRENT_DATE + ni.weekly_time::time))";
|
|
|
+ and (case when (timezone(ni.daily_time_zone, NOW())::time > ni.daily_time::time)
|
|
|
+ then timezone(ni.daily_time_zone,ni.insert_date)::date < timezone(ni.daily_time_zone, NOW())::date
|
|
|
+ else
|
|
|
+ timezone(ni.daily_time_zone,ni.insert_date)::date < timezone(ni.daily_time_zone, NOW())::date - '1 days'::INTERVAL
|
|
|
+ end))
|
|
|
+
|
|
|
+ or (ni.frequency_type = 'Weekly'
|
|
|
+ and (case when (timezone(ni.weekly_time_zone, NOW())::time > ni.weekly_time::time)
|
|
|
+ then timezone(ni.weekly_time_zone,ni.insert_date)::date <= (timezone(ni.weekly_time_zone,ni.insert_date)::date + (((ni.weekly_week::integer - EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer + 7) % 7)-1 + CASE WHEN EXTRACT(DOW FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer=ni.weekly_week::integer THEN 7 ELSE 0 END ||' days')::INTERVAL)::date
|
|
|
+ else
|
|
|
+ timezone(ni.weekly_time_zone,ni.insert_date)::date < (timezone(ni.weekly_time_zone,ni.insert_date)::date - (((EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer - ni.weekly_week::integer + 7) % 7) ||' days')::INTERVAL)::date
|
|
|
+ end)))";
|
|
|
} elseif($frequency_type == "Daily"){
|
|
|
$sql_where = " and (ni.frequency_type = 'Daily'
|
|
|
- and timezone(ni.daily_time_zone, NOW()::time) >= ni.daily_time::time
|
|
|
- and ni.insert_date::timestamp <= CURRENT_DATE + ni.daily_time::time)";
|
|
|
+ and (case when (timezone(ni.daily_time_zone, NOW())::time > ni.daily_time::time)
|
|
|
+ then timezone(ni.daily_time_zone,ni.insert_date)::date < timezone(ni.daily_time_zone, NOW())::date
|
|
|
+ else
|
|
|
+ timezone(ni.daily_time_zone,ni.insert_date)::date < timezone(ni.daily_time_zone, NOW())::date - '1 days'::INTERVAL
|
|
|
+ end))";
|
|
|
+
|
|
|
} elseif($frequency_type == "Weekly"){
|
|
|
- $sql_where = " and (ni.frequency_type = 'Weekly' and timezone(ni.weekly_time_zone, NOW()::time) > ni.weekly_time::time
|
|
|
- and ni.weekly_week ilike '%'|| EXTRACT(dow FROM timezone(ni.weekly_time_zone, NOW())) ||'%'
|
|
|
- and ni.insert_date::timestamp <= CURRENT_DATE + ni.weekly_time::time)";
|
|
|
+ $sql_where = " and (ni.frequency_type = 'Weekly'
|
|
|
+ and (case when (timezone(ni.weekly_time_zone, NOW())::time > ni.weekly_time::time)
|
|
|
+ then timezone(ni.weekly_time_zone,ni.insert_date)::date <= (timezone(ni.weekly_time_zone,ni.insert_date)::date + (((ni.weekly_week::integer - EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer + 7) % 7)-1 + CASE WHEN EXTRACT(DOW FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer=ni.weekly_week::integer THEN 7 ELSE 0 END ||' days')::INTERVAL)::date
|
|
|
+ else
|
|
|
+ timezone(ni.weekly_time_zone,ni.insert_date)::date < (timezone(ni.weekly_time_zone,ni.insert_date)::date - (((EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer - ni.weekly_week::integer + 7) % 7) ||' days')::INTERVAL)::date
|
|
|
+ end))";
|
|
|
}
|
|
|
if (!empty($_REQUEST['current_time'])){
|
|
|
// $sql_where .= " and ni.insert_date >= TO_TIMESTAMP('".$_REQUEST['current_time']."', 'MM/DD/YYYY HH24:MI:SS') - interval '5 minutes'
|
|
|
// and ni.is_send_message is null";
|
|
|
//这里都以服务器时间,检查标准
|
|
|
- $sql_where .= " and ni.insert_date >= now() - interval '5 minutes'
|
|
|
- and ni.is_send_message is null";
|
|
|
+ $sql_where .= " and ni.is_send_message is null";
|
|
|
}
|
|
|
if (!empty($_REQUEST['info_type']) && $_REQUEST['info_type'] == 'true'){
|
|
|
$sql_where .= " and ni.is_send_message is null";
|
|
|
@@ -1311,9 +1339,9 @@ class tools {
|
|
|
case when COALESCE(ni.frequency_type,'') = 'Daily'
|
|
|
then to_char(timezone(ni.daily_time_zone, ni.insert_date),'Mon DD, YYYY')
|
|
|
when COALESCE(ni.frequency_type,'') = 'Weekly'
|
|
|
- then to_char(ni.insert_date::date - (((EXTRACT(dow FROM ni.insert_date)::integer - ni.weekly_week::integer + 7) % 7) ||' days')::INTERVAL,'Mon DD, YYYY')
|
|
|
+ then to_char(timezone(ni.weekly_time_zone,ni.insert_date)::date - (((EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer - ni.weekly_week::integer + 7) % 7) ||' days')::INTERVAL,'Mon DD, YYYY')
|
|
|
|| ' - ' ||
|
|
|
- to_char(ni.insert_date::date + (((ni.weekly_week::integer - EXTRACT(dow FROM ni.insert_date)::integer + 7) % 7)-1 + CASE WHEN EXTRACT(DOW FROM ni.insert_date)::integer=ni.weekly_week::integer THEN 7 ELSE 0 END ||' days')::INTERVAL,'Mon DD, YYYY')
|
|
|
+ to_char(timezone(ni.weekly_time_zone,ni.insert_date)::date + (((ni.weekly_week::integer - EXTRACT(dow FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer + 7) % 7)-1 + CASE WHEN EXTRACT(DOW FROM timezone(ni.weekly_time_zone,ni.insert_date)::date)::integer=ni.weekly_week::integer THEN 7 ELSE 0 END ||' days')::INTERVAL,'Mon DD, YYYY')
|
|
|
else ''
|
|
|
end as insert_date_format,
|
|
|
|
|
|
@@ -1339,6 +1367,7 @@ class tools {
|
|
|
from public.kln_ocean oo
|
|
|
where oo.serial_no = ni.serial_no limit 1) ccc on true
|
|
|
where lower(ni.user_login) in ('".strtolower(_getLoginName())."','all_user')
|
|
|
+ and ni.insert_date > NOW() - INTERVAL '1 year'
|
|
|
and lower(ni.notifiation_type) in ($more_param)
|
|
|
".$sql_where." and ni.notifications_method = true order by ni.insert_date desc) aa $aa_where";
|
|
|
error_log($sql);
|