?? GreyFile — Mystic File Browser

Current path: home/webdevt/www/demo2/wp-content/plugins/divi-contact-form-helper/d4/app/Admin/Controllers/



?? Go up: /home/webdevt/www/demo2/wp-content/plugins/divi-contact-form-helper/d4/app/Admin

?? Viewing: Logger.php

<?php

namespace KS_PAC_DCFH\Admin\Controllers;

use WP_Query;

if (!defined('ABSPATH')) {
    exit;
}

class Logger
{
    private static $_instance;

    private $_post_type = 'pwh_dcfh_log';

    private $_taxonomy_type = 'pwh_dcfh_log_taxonomies';

    public static function instance(): self
    {
        if (self::$_instance === null) {
            self::$_instance = new self();
        }

        return self::$_instance;
    }

    public function init(): void
    {
        // Create the log post type
        add_action('init', [$this, 'register_post_type'], 1);
        // Create type taxonomy and default types
        add_action('init', [$this, 'register_taxonomy'], 1);
    }

    public function register_post_type(): void
    {
        /* Logs post type */
        $log_args = [
            'labels' => 'Logs',
            'public' => false,
            'exclude_from_search' => true,
            'publicly_queryable' => false,
            'show_ui' => false,
            'query_var' => false,
            'rewrite' => false,
            'capability_type' => 'post',
            'supports' => ['title', 'editor'],
            'can_export' => false,
        ];
        register_post_type($this->_post_type, $log_args);
    }

    public function register_taxonomy(): void
    {
        register_taxonomy($this->_taxonomy_type, $this->_post_type, ['public' => false]);
    }

    public function add_log($title, $message, $log_term, $parent = 0)
    {
        $log_data = [
            'post_title' => $title,
            'post_content' => $message,
            'post_parent' => $parent,
            'log_type' => $log_term,
        ];

        return $this->save_log($log_data);
    }

    public function save_log($log_data = [], $log_meta = [])
    {
        $defaults = [
            'post_type' => $this->_post_type,
            'post_status' => 'private',
            'post_parent' => 0,
            'post_content' => '',
            'post_author' => get_current_user_id(),
            'log_type' => false,
        ];
        $args = wp_parse_args($log_data, $defaults);
        $log_id = wp_insert_post($args);
        if ($log_data['log_type']) {
            wp_set_object_terms($log_id, $log_data['log_type'], $this->_taxonomy_type);
        }
        if ($log_id && !empty($log_meta)) {
            foreach ($log_meta as $key => $meta) {
                update_post_meta($log_id, '_pwh_dcfh_log_'.sanitize_key($key), $meta);
            }
        }

        return $log_id;
    }

    public function update_log($log_data = [], $log_meta = []): void
    {
        $defaults = [
            'post_type' => $this->_post_type,
            'post_status' => 'private',
            'post_parent' => 0,
            'post_author' => get_current_user_id(),
        ];
        $args = wp_parse_args($log_data, $defaults);
        $log_id = wp_update_post($args);
        if ($log_id && !empty($log_meta)) {
            foreach ($log_meta as $key => $meta) {
                if (!empty($meta)) {
                    update_post_meta($log_id, '_pwh_dcfh_log_'.sanitize_key($key), $meta);
                }
            }
        }
    }

    public function get_logs($log_term, $parent = 0, $paged = null)
    {
        return $this->get_connected_logs(['post_parent' => $parent, 'paged' => $paged, 'log_type' => $log_term]);
    }

    public function get_connected_logs($args = [])
    {
        $defaults = [
            'post_type' => $this->_post_type,
            'posts_per_page' => 20,
            'post_status' => 'private',
            'paged' => get_query_var('paged'),
            'log_type' => false,
        ];
        $query_args = wp_parse_args($args, $defaults);
        if ($query_args['log_type']) {
            // phpcs:disable
            $query_args['tax_query'] = [
                [
                    'taxonomy' => $this->_taxonomy_type,
                    'field' => 'slug',
                    'terms' => $query_args['log_type'],
                ]
            ];
            // phpcs:enable
        }
        $logs = get_posts($query_args);
        if ($logs) {
            return $logs;
        }

        return false;
    }

    public function get_log_count($log_term, $parent = 0, $meta_query = null, $date_query = null): int
    {
        $query_args = $this->getArr($parent, $log_term, $meta_query);
        if (!empty($date_query)) {
            $query_args['date_query'] = $date_query;
        }

        // phpcs:enable
        return (new WP_Query($query_args))->post_count;
    }

    public function delete_logs($log_term, $parent = 0, $meta_query = null): void
    {
        $query_args = $this->getArr($parent, $log_term, $meta_query);
        // phpcs:enable
        $logs = get_posts($query_args);
        if ($logs) {
            foreach ($logs as $log) {
                wp_delete_post($log, true);
            }
        }
    }

    /**
     * @param $parent
     * @param $log_term
     * @param $meta_query
     *
     * @return array
     */
    private function getArr($parent, $log_term, $meta_query): array
    {
        $query_args = [
            'post_parent' => $parent,
            'post_type' => $this->_post_type,
            'posts_per_page' => -1,
            'post_status' => 'private',
            'fields' => 'ids',
        ];
        if (!empty($log_term)) {
            // phpcs:disable
            $query_args['tax_query'] = [
                [
                    'taxonomy' => $this->_taxonomy_type,
                    'field' => 'slug',
                    'terms' => $log_term,
                ]
            ];
        }
        if (!empty($meta_query)) {
            $query_args['meta_query'] = $meta_query;
        }

        return $query_args;
    }
}


??

??