/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * REST API: WP_REST_Post_Format_Search_Handler class * * @package WordPress * @subpackage REST_API * @since 5.6.0 */ /** * Core class representing a search handler for post formats in the REST API. * * @since 5.6.0 * * @see WP_REST_Search_Handler */ class WP_REST_Post_Format_Search_Handler extends WP_REST_Search_Handler { /** * Constructor. * * @since 5.6.0 */ public function __construct() { $this->type = 'post-format'; } /** * Searches the post formats for a given search request. * * @since 5.6.0 * * @param WP_REST_Request $request Full REST request. * @return array { * Associative array containing found IDs and total count for the matching search results. * * @type string[] $ids Array containing slugs for the matching post formats. * @type int $total Total count for the matching search results. * } */ public function search_items( WP_REST_Request $request ) { $format_strings = get_post_format_strings(); $format_slugs = array_keys( $format_strings ); $query_args = array(); if ( ! empty( $request['search'] ) ) { $query_args['search'] = $request['search']; } /** * Filters the query arguments for a REST API post format search request. * * Enables adding extra arguments or setting defaults for a post format search request. * * @since 5.6.0 * * @param array $query_args Key value array of query var to query value. * @param WP_REST_Request $request The request used. */ $query_args = apply_filters( 'rest_post_format_search_query', $query_args, $request ); $found_ids = array(); foreach ( $format_slugs as $format_slug ) { if ( ! empty( $query_args['search'] ) ) { $format_string = get_post_format_string( $format_slug ); $format_slug_match = stripos( $format_slug, $query_args['search'] ) !== false; $format_string_match = stripos( $format_string, $query_args['search'] ) !== false; if ( ! $format_slug_match && ! $format_string_match ) { continue; } } $format_link = get_post_format_link( $format_slug ); if ( $format_link ) { $found_ids[] = $format_slug; } } $page = (int) $request['page']; $per_page = (int) $request['per_page']; return array( self::RESULT_IDS => array_slice( $found_ids, ( $page - 1 ) * $per_page, $per_page ), self::RESULT_TOTAL => count( $found_ids ), ); } /** * Prepares the search result for a given post format. * * @since 5.6.0 * * @param string $id Item ID, the post format slug. * @param array $fields Fields to include for the item. * @return array { * Associative array containing fields for the post format based on the `$fields` parameter. * * @type string $id Optional. Post format slug. * @type string $title Optional. Post format name. * @type string $url Optional. Post format permalink URL. * @type string $type Optional. String 'post-format'. *} */ public function prepare_item( $id, array $fields ) { $data = array(); if ( in_array( WP_REST_Search_Controller::PROP_ID, $fields, true ) ) { $data[ WP_REST_Search_Controller::PROP_ID ] = $id; } if ( in_array( WP_REST_Search_Controller::PROP_TITLE, $fields, true ) ) { $data[ WP_REST_Search_Controller::PROP_TITLE ] = get_post_format_string( $id ); } if ( in_array( WP_REST_Search_Controller::PROP_URL, $fields, true ) ) { $data[ WP_REST_Search_Controller::PROP_URL ] = get_post_format_link( $id ); } if ( in_array( WP_REST_Search_Controller::PROP_TYPE, $fields, true ) ) { $data[ WP_REST_Search_Controller::PROP_TYPE ] = $this->type; } return $data; } /** * Prepares links for the search result. * * @since 5.6.0 * * @param string $id Item ID, the post format slug. * @return array Links for the given item. */ public function prepare_item_links( $id ) { return array(); } } /** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * Class MC4WP_Form_Output_Manager * * @ignore * @access private */ class MC4WP_Form_Output_Manager { /** * @var int The # of forms outputted */ public $count = 0; /** * @const string */ const SHORTCODE = 'mc4wp_form'; /** * Add hooks */ public function add_hooks() { // enable shortcodes in form content add_filter( 'mc4wp_form_content', 'do_shortcode' ); add_action( 'init', array( $this, 'register_shortcode' ) ); } /** * Registers the [mc4wp_form] shortcode */ public function register_shortcode() { add_shortcode( self::SHORTCODE, array( $this, 'shortcode' ) ); } /** * @param array $attributes * @param string $content * @return string */ public function shortcode( $attributes = array(), $content = '' ) { $default_attributes = array( 'id' => '', 'lists' => '', 'email_type' => '', 'element_id' => '', 'element_class' => '', ); $attributes = shortcode_atts( $default_attributes, $attributes, self::SHORTCODE ); $config = array( 'element_id' => $attributes['element_id'], 'lists' => $attributes['lists'], 'email_type' => $attributes['email_type'], 'element_class' => $attributes['element_class'], ); return $this->output_form( $attributes['id'], $config, false ); } /** * @param int $id * @param array $config * @param bool $echo * * @return string */ public function output_form( $id = 0, $config = array(), $echo = true ) { try { $form = mc4wp_get_form( $id ); } catch ( Exception $e ) { if ( current_user_can( 'manage_options' ) ) { return sprintf( 'Mailchimp for WordPress error: %s', $e->getMessage() ); } return ''; } ++$this->count; // set a default element_id if none is given if ( empty( $config['element_id'] ) ) { $config['element_id'] = 'mc4wp-form-' . $this->count; } $form_html = $form->get_html( $config['element_id'], $config ); try { // start new output buffer ob_start(); /** * Runs just before a form element is outputted. * * @since 3.0 * * @param MC4WP_Form $form */ do_action( 'mc4wp_output_form', $form ); // output the form (in output buffer) echo $form_html; // grab all contents in current output buffer & then clean + end it. $html = ob_get_clean(); } catch ( Error $e ) { $html = $form_html; } // echo content if necessary if ( $echo ) { echo $html; } return $html; } }