uawdijnntqw1x1x1
IP : 18.116.82.179
Hostname : c17w.hoster.ru
Kernel : Linux c17w.hoster.ru 3.10.0 #1 SMP Tue Jan 25 12:49:12 MSK 2022 x86_64
Disable Function : dl,shell_exec,exec,system,passthru,popen,proc_open,proc_nice,proc_get_status,proc_close,proc_terminate,posix_mkfifo,chown,chgrp,show_source,opcache_reset,opcache_get_configuration,opcache_get_status
OS : Linux
PATH:
/
home
/
srv221441
/
kso-don.ru
/
wp-content
/
plugins
/
presto-player
/
inc
/
Support
/
BlockFinder.php
/
/
<?php namespace PrestoPlayer\Support; class BlockFinder { protected $namespace; public function __construct( $namespace = 'presto-player' ) { $this->namespace = $namespace; } public function find() { $blocks = array(); /** * Get an array of all of our post types, then we will * remove any unwanted post types */ $post_types = get_post_types( array( 'public' => true, 'show_ui' => true, ) ); array_push( $post_types, 'wp_block' ); unset( $post_types['attachment'] ); /** * Get a list of all post ids */ $post_ids = array(); foreach ( $post_types as $key => $post_type ) { $posts = get_posts( array( 'posts_per_page' => -1, 'post_type' => $post_type, 'fields' => 'ids', ) ); foreach ( $posts as $id ) { array_push( $post_ids, $id ); } } /** * Loop through post IDs and get the blocks that are used. */ foreach ( $post_ids as $post_ID ) { $post = get_post( $post_ID ); if ( ! has_blocks( $post->post_content ) ) { continue; } $post_blocks = parse_blocks( $post->post_content ); foreach ( $post_blocks as $block ) { $this->findBlocks( $block, $blocks, $post ); } } $data = array( 'blocks' => $blocks, ); return $data; } /** * Searches an array for a value. * * @param array $array - Array to search through. * @param string $field - Key to search. * @param string $value - Value to search in key. * * @return array/boolean */ function searchForBlockKey( $array, $field, $value ) { foreach ( $array as $key => $val ) { if ( $val[ $field ] === $value ) { return $key; } } return false; } public function findBlocks( $block, &$blocks, &$post, $nested_block_name = null ) { /** * If the block name is blank, skip */ if ( strlen( $block['blockName'] ) === 0 ) { return; } /** * If the block is reusable, skip */ if ( 'core/block' === $block['blockName'] ) { return; } foreach ( $block['innerBlocks'] as $inner_block ) { $this->findBlocks( $inner_block, $blocks, $post, $block['blockName'] ); } /** * If block is not in blocks array, push the * blockName into the array. */ if ( ! in_array( $block['blockName'], array_column( $blocks, 'name' ), true ) ) { $block_array = array( 'name' => $block['blockName'], 'posts' => array(), ); array_push( $blocks, $block_array ); } $block_key = $this->searchForBlockKey( $blocks, 'name', $block['blockName'] ); if ( ! in_array( $post->ID, array_column( $blocks[ $block_key ]['posts'], 'id' ), true ) ) { $blocks[ $block_key ]['posts'][] = array( 'id' => $post->ID, 'title' => $post->post_title, 'count' => 1, 'isReusable' => 'wp_block' === $post->post_type, 'isNested' => $nested_block_name !== null, 'nestedBlockType' => $nested_block_name, 'postType' => $post->post_type, 'post_url' => get_permalink( $post->ID ), 'edit_url' => home_url( '/wp-admin/post.php?post=' . $post->ID . '&action=edit' ), ); } else { $post_key = $this->searchForBlockKey( $blocks[ $block_key ]['posts'], 'id', $post->ID ); ++$blocks[ $block_key ]['posts'][ $post_key ]['count']; } } }
/home/srv221441/kso-don.ru/wp-content/plugins/presto-player/inc/Support/BlockFinder.php