Advertisement
arie_cristianD

replaced_publisher_migrate

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