REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 4.53 KB
Close
//proc/thread-self/cwd/wp/wp-content/plugins/auto-post-thumbnail/src/Repository/Posts.php
Text
Base64
<?php /** * Posts repository. * * @package AutoPostThumbnail\Repository */ namespace AutoPostThumbnail\Repository; use AutoPostThumbnail\Logger; use AutoPostThumbnail\Services\Apt; use WP_Query; /** * Posts repository class. */ class Posts { /** * Return sql query, which allows to receive all the posts without thumbnails. * * @param array $params Query parameters. * * @return \WP_Query */ public function get_posts_query( $params ) { $default_params = [ 'has_thumb' => false, 'type' => 'post', 'status' => 'publish', 'category' => 0, 'date_start' => 0, 'date_end' => 0, 'is_log' => true, 'count' => 0, 'apt_set_only' => false, ]; $params = wp_parse_args( $params, $default_params ); // phpcs:disable WordPress.PHP.DevelopmentFunctions if ( $params['is_log'] ) { Logger::instance()->info( 'Posts query: ' . var_export( [ 'has_thumb' => $params['has_thumb'], 'post_type' => $params['type'], 'status' => $params['status'], 'category' => $params['category'], 'date_start' => $params['date_start'], 'date_end' => $params['date_end'], ], true ) ); } // phpcs:enable $q_status = $params['status'] ? $params['status'] : 'any'; $q_type = $params['type'] ? $params['type'] : 'any'; $q_has_thumb = $params['has_thumb'] ? 'EXISTS' : 'NOT EXISTS'; $args = [ 'posts_per_page' => $params['count'] ? $params['count'] : - 1, 'post_status' => $q_status, 'post_type' => $q_type, 'suppress_filters' => true, 'fields' => 'ids', 'meta_query' => [ 'relation' => ' and ', [ 'key' => '_thumbnail_id', 'compare' => $q_has_thumb, ], [ 'key' => 'skip_post_thumb', 'compare' => 'NOT EXISTS', ], ], ]; if ( $params['apt_set_only'] ) { $args['meta_query'][] = [ 'key' => Apt::PLUGIN_SET_META_KEY, 'compare' => 'EXISTS', ]; } if ( $params['category'] ) { $args['cat'] = $params['category']; } if ( $params['date_start'] || $params['date_end'] ) { $date_query = [ 'inclusive' => true, ]; if ( $params['date_start'] ) { $date_query['after'] = $params['date_start']; } if ( $params['date_end'] ) { $date_query['before'] = $params['date_end']; } $args['date_query'][] = $date_query; } $query = new WP_Query( $args ); return $query; } /** * Return count of the posts. * * @param bool $has_thumb Whether to count posts with thumbnails. * @param string $type Post type. * * @return int */ public function get_posts_count( $has_thumb = false, $type = 'post' ) { $query = $this->get_posts_query( [ 'is_log' => false, 'has_thumb' => $has_thumb, 'type' => $type, ] ); return $query->post_count; } /** * Get posts ids by params. * * @param array $params Params. * - withThumb: bool * - postType: string * - postStatus: string * - category: int * - dateStart: string * - dateEnd: string. * * @return array */ public function get_posts_ids( $params ) { $has_thumb = sanitize_text_field( wp_unslash( $params['withThumb'] ?? false ) ); $type = sanitize_text_field( wp_unslash( $params['postType'] ?? 'post' ) ); $status = isset( $params['postStatus'] ) ? sanitize_text_field( wp_unslash( $params['postStatus'] ) ) : 'any'; $category = sanitize_text_field( wp_unslash( $params['category'] ?? 0 ) ); $date_start = sanitize_text_field( wp_unslash( $params['dateStart'] ?? 0 ) ); $date_end = sanitize_text_field( wp_unslash( $params['dateEnd'] ?? 0 ) ); $apt_set_only = ! empty( $params['aptSetOnly'] ); $date_start = $date_start ? \DateTime::createFromFormat( 'Y-m-d', $date_start )->format( 'd.m.Y' ) : 0; $date_end = $date_end ? \DateTime::createFromFormat( 'Y-m-d', $date_end )->setTime( 23, 59 )->format( 'd.m.Y H:i' ) : 0; $params = [ 'has_thumb' => $has_thumb, 'type' => $type, 'status' => $status, 'apt_set_only' => $apt_set_only, ]; if ( $category ) { $params['category'] = $category; } if ( $date_start ) { $params['date_start'] = $date_start; } if ( $date_end ) { $params['date_end'] = $date_end; } $query = $this->get_posts_query( $params ); $ids = []; if ( ! empty( $query->posts ) ) { foreach ( $query->posts as $post ) { $ids[] = (string) $post; } } $ids_str = implode( ',', $ids ); Logger::instance()->info( "Queried posts IDs: {$ids_str}" ); return $ids; } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
Posts.php
4.53 KB
lrw-r--r--
2026-04-02 07:27:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).