Advertisement
arie_cristianD

override_publisher_migration

Aug 15th, 2023
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 11.04 KB | None | 0 0
  1. <?php
  2. /**
  3.  * @author Jegtheme
  4.  */
  5.  
  6. if ( ! defined( 'ABSPATH' ) ) {
  7.     exit;
  8. }
  9.  
  10. if ( ! class_exists( 'JNews_Migration_Publisher' ) ) {
  11.     class JNews_Migration_Publisher {
  12.  
  13.         /**
  14.          * @var JNews_Migration_Publisher
  15.          */
  16.         private static $instance;
  17.  
  18.         /**
  19.          * @return JNews_Migration_Publisher
  20.          */
  21.         public static function getInstance() {
  22.             if ( null === static::$instance ) {
  23.                 static::$instance = new static();
  24.             }
  25.             return static::$instance;
  26.         }
  27.  
  28.         /**
  29.          * JNews_Migration_Publisher constructor
  30.          */
  31.         private function __construct() {
  32.             add_action( 'wp_ajax_jnews_content_migration_publisher', array( $this, 'content_migration' ) );
  33.             add_action( 'wp_ajax_nopriv_jnews_content_migration_publisher', array( $this, 'content_migration' ) );
  34.  
  35.             add_filter( 'jnews_get_total_view', array( $this, 'get_total_view' ), 99, 2 );
  36.         }
  37.  
  38.         /**
  39.          * Main function for content migration
  40.          *
  41.          * @param bool $count ( set true if you want to return the number of post only ).
  42.          * @param bool $raw Raw mode.
  43.          *
  44.          * @return null|array
  45.          */
  46.         public function content_migration( $count = false, $raw = false ) {
  47.             $posts               = get_posts( $this->build_args( $count ) );
  48.             $check_admin_referer = false;
  49.  
  50.             if ( $count ) {
  51.                 return count( $posts );
  52.             }
  53.  
  54.             if ( ! $raw ) {
  55.                 $check_admin_referer = check_admin_referer( 'jnews_migration_publisher', 'nonce' );
  56.             } else {
  57.                 $check_admin_referer = true;
  58.             }
  59.  
  60.             error_log( print_r( $posts, true ) );
  61.  
  62.             if ( ! empty( $posts ) && is_array( $posts ) && $check_admin_referer ) {
  63.                 foreach ( $posts as $post ) {
  64.                     $post_review = get_post_meta( $post->ID, '_bs_review_enabled', true );
  65.                     $post_video  = get_post_meta( $post->ID, '_featured_embed_code', true );
  66.  
  67.                     if ( ! empty( $post_review ) ) {
  68.                         $this->review_migration_handler( $post->ID );
  69.                     }
  70.  
  71.                     if ( ! empty( $post_video ) ) {
  72.                         set_post_format( $post->ID, 'video' );
  73.                         update_post_meta( $post->ID, '_format_video_embed', $post_video );
  74.                     }
  75.  
  76.                     $this->post_layout_handler( $post );
  77.                     $this->post_category_handler( $post );
  78.  
  79.                     if ( $raw ) {
  80.                         return $this->after_migration( $post, $raw );
  81.                     } else {
  82.                         $this->after_migration( $post, $raw );
  83.                     }
  84.                 }
  85.             }
  86.             if ( $raw ) {
  87.                 return array();
  88.             }
  89.         }
  90.  
  91.         public function post_category_handler( $post ) {
  92.             $primary_category = get_post_meta( $post->ID, '_bs_primary_category', true );
  93.  
  94.             update_post_meta( $post->ID, 'jnews_primary_category', array( $primary_category ) );
  95.         }
  96.  
  97.         public function post_layout_handler( $post ) {
  98.             $options       = get_option( 'bs_publisher_theme_options' );
  99.             $post_layout   = get_post_meta( $post->ID, 'page_layout', true );
  100.             $post_template = get_post_meta( $post->ID, 'post_template', true );
  101.  
  102.             $author_box = isset( $options['post_author_box'] ) ? $options['post_author_box'] : 'show';
  103.             $prev_next  = isset( $options['post_next_prev'] ) ? $options['post_next_prev'] : 'style-1';
  104.  
  105.             $post_settings = isset( $options['post-page-settings'] ) ? $options['post-page-settings'] : '';
  106.             $show_featured = ! empty( $post_settings ) && isset( $post_settings['featured'] ) ? $post_settings['featured'] : true;
  107.             $show_category = ! empty( $post_settings ) && isset( $post_settings['term'] ) ? $post_settings['term'] : true;
  108.             $show_tag      = ! empty( $post_settings ) && isset( $post_settings['term-tax'] ) ? $post_settings['term-tax'] : true;
  109.  
  110.             $post_meta        = ! empty( $post_settings ) && isset( $post_settings['meta'] ) ? $post_settings['meta'] : '';
  111.             $show_post_meta   = ! empty( $post_meta ) && isset( $post_meta['show'] ) ? $post_meta['show'] : true;
  112.             $show_meta_author = ! empty( $post_meta ) && isset( $post_meta['author'] ) ? $post_meta['author'] : true;
  113.             $show_post_avatar = ! empty( $post_meta ) && isset( $post_meta['author_avatar'] ) ? $post_meta['author_avatar'] : true;
  114.             $show_meta_date   = ! empty( $post_meta ) && isset( $post_meta['date'] ) ? $post_meta['date'] : true;
  115.  
  116.             switch ( $post_layout ) {
  117.                 case '1-col':
  118.                     $post_layout = 'no-sidebar-narrow';
  119.                     break;
  120.  
  121.                 case 'default':
  122.                 case '2-col-right':
  123.                     $post_layout = 'right-sidebar';
  124.                     break;
  125.  
  126.                 case '2-col-left':
  127.                     $post_layout = 'left-sidebar';
  128.                     break;
  129.             }
  130.  
  131.             switch ( $post_template ) {
  132.                 case 'style-9':
  133.                     $show_featured = false;
  134.                     break;
  135.             }
  136.  
  137.             switch ( $author_box ) {
  138.                 case 'hide':
  139.                     $author_box = false;
  140.                     break;
  141.                 default:
  142.                     $author_box = true;
  143.                     break;
  144.             }
  145.  
  146.             switch ( $prev_next ) {
  147.                 case 'hide':
  148.                     $prev_next = false;
  149.                     break;
  150.                 default:
  151.                     $prev_next = true;
  152.                     break;
  153.             }
  154.  
  155.             $post_related = get_post_meta( $post->ID, 'post_related', true );
  156.  
  157.             $post_setting = array(
  158.                 'override_template' => true,
  159.                 'override'          => array(
  160.                     array(
  161.                         'layout'                 => $post_layout,
  162.                         'paralax'                => true,
  163.                         'sidebar'                => 'default-sidebar',
  164.                         'show_featured'          => $show_featured,
  165.                         'show_share_counter'     => true,
  166.                         'show_view_counter'      => true,
  167.                         'show_post_meta'         => $show_post_meta,
  168.                         'show_post_author'       => $show_meta_author,
  169.                         'show_post_author_image' => $show_post_avatar,
  170.                         'show_post_date'         => $show_meta_date,
  171.                         'show_post_category'     => $show_category,
  172.                         'show_post_tag'          => $show_tag,
  173.                         'show_prev_next_post'    => $prev_next,
  174.                         'show_popup_post'        => true,
  175.                         'show_author_box'        => $author_box,
  176.                         'show_post_related'      => ( $post_related == 'show' ) ? true : false,
  177.                     ),
  178.                 ),
  179.             );
  180.  
  181.             update_post_meta( $post->ID, 'jnews_single_post', $post_setting );
  182.         }
  183.  
  184.         /**
  185.          * Handler function for review post migration
  186.          *
  187.          * @param  int   $post_id
  188.          * @param  array $post_setting
  189.          */
  190.         public function review_migration_handler( $post_id ) {
  191.             update_post_meta( $post_id, 'enable_review', true );
  192.  
  193.             $review_type = get_post_meta( $post_id, '_bs_review_rating_type', true );
  194.             $review_type = $this->get_type( $review_type );
  195.             update_post_meta( $post_id, 'type', $review_type );
  196.  
  197.             update_post_meta( $post_id, 'name', get_post_meta( $post_id, '_bs_review_heading', true ) );
  198.  
  199.             $review_value = get_post_meta( $post_id, '_bs_review_criteria', true );
  200.             $review_value = $this->get_rating( $review_value );
  201.             update_post_meta( $post_id, 'rating', $review_value );
  202.  
  203.             $review_mean = $this->get_mean( $review_value );
  204.             update_post_meta( $post_id, 'jnew_rating_mean', $review_mean );
  205.  
  206.             $review_summary = get_post_meta( $post_id, '_bs_review_verdict_summary', true );
  207.             update_post_meta( $post_id, 'summary', $review_summary );
  208.  
  209.             update_post_meta( $post_id, 'jnews_review_fields', array( 'enable_review', 'type', 'name', 'summary', 'rating' ) );
  210.         }
  211.  
  212.         /**
  213.          * Get review type
  214.          *
  215.          * @param  array $data
  216.          *
  217.          * @return string
  218.          */
  219.         public function get_type( $data ) {
  220.             $type = '';
  221.  
  222.             switch ( $data ) {
  223.                 case 'points':
  224.                     $type = 'point';
  225.                     break;
  226.  
  227.                 case 'stars':
  228.                     $type = 'star';
  229.                     break;
  230.  
  231.                 case 'percentage':
  232.                     $type = 'percentage';
  233.                     break;
  234.             }
  235.  
  236.             return $type;
  237.         }
  238.  
  239.         /**
  240.          * Get review rating
  241.          *
  242.          * @param  array $data
  243.          *
  244.          * @return array
  245.          */
  246.         public function get_rating( $review_value ) {
  247.             $rating = array();
  248.  
  249.             if ( is_array( $review_value ) ) {
  250.                 foreach ( $review_value as $point ) {
  251.                     $rating[] = array(
  252.                         'rating_text'   => $point['label'],
  253.                         'rating_number' => $point['rate'],
  254.                     );
  255.                 }
  256.             }
  257.  
  258.             return $rating;
  259.         }
  260.  
  261.         /**
  262.          * Get review mean
  263.          *
  264.          * @param  array $data
  265.          *
  266.          * @return float ( default null )
  267.          */
  268.         public function get_mean( $review_value ) {
  269.             $total = $numberofrating = 0;
  270.  
  271.             if ( is_array( $review_value ) ) {
  272.                 foreach ( $review_value as $rating ) {
  273.                     if ( $rating['rating_number'] != 0 && ! empty( $rating['rating_text'] ) ) {
  274.                         $total += $rating['rating_number'];
  275.                         $numberofrating++;
  276.                     }
  277.                 }
  278.  
  279.                 if ( $numberofrating > 0 ) {
  280.                     $mean = $total / $numberofrating;
  281.                     $mean = round( $mean, 1 );
  282.                     return $mean;
  283.                 }
  284.             }
  285.  
  286.             return null;
  287.         }
  288.  
  289.         /**
  290.          * Build query argument
  291.          *
  292.          * @param  boolean $count
  293.          *
  294.          * @return array
  295.          */
  296.         public function build_args( $count ) {
  297.             $args = array(
  298.                 'post_type'      => 'post',
  299.                 'meta_query'     => array(
  300.                     array(
  301.                         'key'     => 'jnews_migration_publisher_status',
  302.                         'compare' => 'NOT EXISTS',
  303.                     ),
  304.                     array(
  305.                         'key'     => '_featured_embed_code',
  306.                         'value'   => false,
  307.                         'compare' => '!=',
  308.                     ),
  309.                     array(
  310.                         'key' => '_bs_primary_category',
  311.                     ),
  312.                 ),
  313.                 'posts_per_page' => 10000,
  314.             );
  315.  
  316.             return $args;
  317.         }
  318.  
  319.         /**
  320.          * End migration action
  321.          *
  322.          * @param WP_Post $post Post Data.
  323.          * @param boolean $raw Raw mode.
  324.          *
  325.          * @return null|array
  326.          */
  327.         public function after_migration( $post, $raw = false ) {
  328.             update_post_meta( $post->ID, 'jnews_migration_publisher_status', true );
  329.  
  330.             if ( $raw ) {
  331.                 return $this->get_migration_response( $post, $raw );
  332.             } else {
  333.                 $this->get_migration_response( $post, $raw );
  334.             }
  335.         }
  336.  
  337.         /**
  338.          * Get migration response message.
  339.          *
  340.          * @param WP_Post $post Post Data.
  341.          * @param boolean $raw Raw mode.
  342.          *
  343.          * @return null|array
  344.          */
  345.         public function get_migration_response( $post, $raw = false ) {
  346.             if ( $raw ) {
  347.                 return array(
  348.                     'title' => $post->post_title,
  349.                     'url'   => esc_url( get_permalink( $post->ID ) ),
  350.                 );
  351.             } else {
  352.                 wp_send_json(
  353.                     array(
  354.                         'status'  => 'success',
  355.                         'message' => sprintf( __( 'Migration successful <strong>%1$s</strong> <a href="%2$s" target="_blank">view post</a>.', 'jnews-migration-publisher' ), $post->post_title, esc_url( get_permalink( $post->ID ) ) ),
  356.                     )
  357.                 );
  358.             }
  359.         }
  360.  
  361.         /**
  362.          * Check JNews Review Plugin status
  363.          *
  364.          * @return false | string
  365.          */
  366.         public function review_plugin_check() {
  367.             if ( empty( $this->content_has_review() ) ) {
  368.                  return false;
  369.             }
  370.  
  371.             if ( ! function_exists( 'get_plugins' ) ) {
  372.                 require_once ABSPATH . '/wp-admin/includes/plugin.php';
  373.             }
  374.  
  375.             if ( get_plugins( '/jnews-review' ) ) {
  376.                 if ( ! is_plugin_active( 'jnews-review/jnews-review.php' ) ) {
  377.                     return 'activate';
  378.                 }
  379.             } else {
  380.                 return 'install';
  381.             }
  382.  
  383.             return false;
  384.         }
  385.  
  386.         /**
  387.          * Check if content has review post
  388.          *
  389.          * @return array
  390.          */
  391.         public function content_has_review() {
  392.             $args = array(
  393.                 'post_type'      => 'post',
  394.                 'meta_query'     => array(
  395.                     array(
  396.                         'key'     => '_bs_review_enabled',
  397.                         'value'   => true,
  398.                         'compare' => '==',
  399.                     ),
  400.                 ),
  401.                 'posts_per_page' => -1,
  402.             );
  403.  
  404.             $posts = get_posts( $args );
  405.  
  406.             return $posts;
  407.         }
  408.  
  409.         public function get_total_view( $total, $post_id ) {
  410.             $data = get_post_meta( $post_id, 'better-views-count', true );
  411.  
  412.             if ( ! empty( $data ) ) {
  413.                 $total = $total + (int) $data;
  414.             }
  415.  
  416.             return $total;
  417.         }
  418.     }
  419. }
  420.  
  421.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement