ay_value( $input, self::RECIPIENTS ); $sanitized_recipients = \smartcrawl_sanitize_recipients( $email_recipients ); $result[ self::RECIPIENTS ] = $sanitized_recipients; if ( empty( $sanitized_recipients ) ) { $result[ self::RECIPIENTS ] = array( self::get_email_recipient() ); } if ( empty( $input[ self::CRON_ENABLE ] ) || empty( $sanitized_recipients ) ) { $result[ self::CRON_ENABLE ] = false; } else { $result[ self::CRON_ENABLE ] = true; } $frequency = ! empty( $input[ self::REPORTING_FREQUENCY ] ) ? Cron::get()->get_valid_frequency( $input[ self::REPORTING_FREQUENCY ] ) : Cron::get()->get_default_frequency(); $result[ self::REPORTING_FREQUENCY ] = $frequency; $result[ self::REPORTING_DOW ] = self::validate_dow( (int) \smartcrawl_get_array_value( $input, self::REPORTING_DOW ) ); $result[ self::REPORTING_DOM ] = self::validate_dom( (int) \smartcrawl_get_array_value( $input, self::REPORTING_DOM ) ); $tod = isset( $input[ self::REPORTING_TOD ] ) && is_numeric( $input[ self::REPORTING_TOD ] ) ? (int) $input[ self::REPORTING_TOD ] : 0; $result[ self::REPORTING_TOD ] = in_array( $tod, range( 0, 23 ), true ) ? $tod : 0; $result[ self::REPORTING_CONDITION_ENABLED ] = ! empty( $input[ self::REPORTING_CONDITION_ENABLED ] ); $result[ self::REPORTING_CONDITION ] = (int) \smartcrawl_get_array_value( $input, self::REPORTING_CONDITION ); $result[ self::REPORTING_DEVICE ] = sanitize_text_field( (string) \smartcrawl_get_array_value( $input, self::REPORTING_DEVICE ) ); $result[ self::DASHBOARD_WIDGET_DEVICE ] = empty( $input[ self::DASHBOARD_WIDGET_DEVICE ] ) ? 'desktop' : sanitize_text_field( $input[ self::DASHBOARD_WIDGET_DEVICE ] ); Settings::update_specific_options( self::OPTION_ID, $result ); } /** * Validate day of week. * * @param string $dow Day of week. * * @return int|mixed */ private static function validate_dow( $dow ) { return in_array( $dow, range( 0, 6 ), true ) ? $dow : 0; } /** * Validate date of month. * * @param string $dom Date of month. * * @return int|mixed */ private static function validate_dom( $dom ) { return in_array( $dom, range( 1, 28 ), true ) ? $dom : 1; } /** * Get lighthouse options. * * @return array */ public static function get_options() { $options = Settings::get_specific_options( self::OPTION_ID ); return array_merge( self::get_defaults(), empty( $options ) ? array() : $options ); } /** * Get default options. * * @return array */ private static function get_defaults() { return array( self::DASHBOARD_WIDGET_DEVICE => 'desktop', self::CRON_ENABLE => false, self::REPORTING_FREQUENCY => 'weekly', self::REPORTING_DOM => 1, self::REPORTING_DOW => 0, self::REPORTING_TOD => 0, self::RECIPIENTS => array(), self::REPORTING_CONDITION_ENABLED => false, self::REPORTING_CONDITION => 90, self::REPORTING_DEVICE => 'both', ); } /** * Get email recipients. * * @return array */ private static function get_email_recipient() { $user = \SmartCrawl\Models\User::owner(); return array( 'name' => $user->get_display_name(), 'email' => $user->get_email(), ); } }