*/ abstract class Data { use Date; public $notifications = array(); /** * Get Notifications * * @param [type] $instance_key . * * @author Jewel Theme */ public function get_notification( $instance_key ) { if ( array_key_exists( $instance_key, $this->notifications ) ) { return $this->notifications[ $instance_key ]; } return null; } /** * Get Notificaiton * * @param [type] $type . * * @author Jewel Theme */ public function get_notifications( $type = null ) { $notifications = $this->notifications; if ( $type ) { $notifications = wp_list_filter( $notifications, array( 'type' => $type ) ); } return $notifications; } /** * Get Active notifications * * @param [type] $type . * * @author Jewel Theme */ public function get_active_notifications( $type = null ) { $notifications = wp_list_filter( $this->get_notifications( $type ), array( 'is_active' => true ) ); return wp_list_sort( $notifications, 'next_exec_time' ); } /** * Get executable notifications * * @param [type] $date . * @param [type] $type . * * @author Jewel Theme */ public function get_exec_notifications( $date = null, $type = null ) { if ( ! $date ) { $date = $this->current_time(); } $notifications = $this->get_active_notifications( $type ); $_notifications = array(); foreach ( $notifications as $notification ) { if ( empty( $notification->next_exec_time ) ) { continue; } if ( $this->date_is_current_or_prev( $notification->next_exec_time, $date ) ) { $_notifications[] = $notification; } } return $_notifications; } /** * Get Upcoming Notificaitons * * @param [type] $date . * @param [type] $type . * * @author Jewel Theme */ public function get_upcoming_notifications( $date = null, $type = null ) { if ( ! $date ) { $date = $this->current_time(); } $notifications = $this->get_active_notifications( $type ); $_notifications = array(); foreach ( $notifications as $notification ) { if ( empty( $notification->next_exec_time ) ) { continue; } if ( $this->date_is_next( $notification->next_exec_time, $date ) ) { $_notifications[] = $notification; } } return $_notifications; } /** * Register Instance * * @param [type] $instance . * * @author Jewel Theme */ public function register( $instance ) { if ( ! array_key_exists( $instance->get_id(), $this->notifications ) ) { $this->notifications[ $instance->get_id() ] = $instance; } } }