@@ -83,14 +83,32 @@ def audit_log
8383 @page = helpers . safe_page ( params )
8484 @per_page = helpers . safe_per_page ( params )
8585
86+ @log_types = AuditLog . unscoped . select ( :log_type ) . distinct . map ( &:log_type ) - [ 'user_annotation' , 'user_history' ]
87+ @event_types = AuditLog . unscoped . select ( :event_type ) . distinct . map ( &:event_type )
88+
8689 @logs = if current_user . is_global_admin
8790 AuditLog . unscoped . where . not ( log_type : [ 'user_annotation' , 'user_history' ] )
8891 else
8992 AuditLog . where . not ( log_type : [ 'block_log' , 'user_annotation' , 'user_history' ] )
90- end . user_sort ( { term : params [ :sort ] , default : :created_at } ,
91- age : :created_at , type : :log_type , event : :event_type ,
92- related : Arel . sql ( 'related_type DESC, related_id DESC' ) , user : :user_id )
93- . paginate ( page : @page , per_page : @per_page )
93+ end
94+
95+ [ :log_type , :event_type ] . each do |key |
96+ if params [ key ] . present?
97+ @logs = @logs . where ( key => params [ key ] )
98+ end
99+ end
100+
101+ if params [ :from ] . present? || params [ :to ] . present?
102+ from = params [ :from ] || params [ :to ]
103+ to = params [ :to ] || params [ :from ] # these lines are deliberate so that if only one is set it's an exact date query
104+ @logs = @logs . where ( 'date(created_at) >= ?' , from )
105+ . where ( 'date(created_at) <= ?' , to )
106+ end
107+
108+ @logs = @logs . user_sort ( { term : params [ :sort ] , default : :created_at } ,
109+ age : :created_at , type : :log_type , event : :event_type ,
110+ related : Arel . sql ( 'related_type DESC, related_id DESC' ) , user : :user_id )
111+ . paginate ( page : @page , per_page : @per_page )
94112
95113 render layout : 'without_sidebar'
96114 end
0 commit comments