Advertisement
arie_cristianD

replace janah migration

Sep 26th, 2023 (edited)
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.82 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_Jannah' ) ) {
  11.     class JNews_Migration_Jannah {
  12.  
  13.         /**
  14.          * @var JNews_Migration_Jannah
  15.          */
  16.         private static $instance;
  17.  
  18.         /**
  19.          * @var array
  20.          */
  21.         private $rating;
  22.  
  23.         /**
  24.          * @return JNews_Migration_Jannah
  25.          */
  26.         public static function getInstance() {
  27.             if ( null === static::$instance ) {
  28.                 static::$instance = new static();
  29.             }
  30.             return static::$instance;
  31.         }
  32.  
  33.         /**
  34.          * JNews_Migration_Jannah constructor
  35.          */
  36.         private function __construct() {
  37.             add_action( 'wp_ajax_jnews_content_migration_jannah', array( $this, 'content_migration' ) );
  38.             add_action( 'wp_ajax_nopriv_jnews_content_migration_jannah', array( $this, 'content_migration' ) );
  39.  
  40.             add_filter( 'jnews_get_total_view', array( $this, 'get_total_view' ), 99, 2 );
  41.         }
  42.  
  43.         public function get_total_view( $total, $post_id ) {
  44.             $data = get_post_meta( $post_id, 'tie_views', true );
  45.  
  46.             if ( ! empty( $data ) ) {
  47.                 $total = $total + (int) $data;
  48.             }
  49.  
  50.             return $total;
  51.         }
  52.  
  53.         /**
  54.          * Main function for content migration
  55.          *
  56.          * @param bool $count ( set true if you want to return the number of post only ).
  57.          * @param bool $raw Raw mode.
  58.          *
  59.          * @return null|array
  60.          */
  61.         public function content_migration( $count = false, $raw = false ) {
  62.             $posts               = get_posts( $this->build_args( $count ) );
  63.             $check_admin_referer = false;
  64.  
  65.             if ( $count ) {
  66.                 return count( $posts );
  67.             }
  68.  
  69.             if ( ! $raw ) {
  70.                 $check_admin_referer = check_admin_referer( 'jnews_migration_jannah', 'nonce' );
  71.             } else {
  72.                 $check_admin_referer = true;
  73.             }
  74.  
  75.             if ( ! empty( $posts ) && is_array( $posts ) && $check_admin_referer ) {
  76.                 foreach ( $posts as $post ) {
  77.                     $review   = get_post_meta( $post->ID, 'taq_review_position', true );
  78.                     $featured = get_post_meta( $post->ID, 'tie_post_head', true );
  79.                     $subtitle = get_post_meta( $post->ID, 'tie_post_sub_title', true );
  80.  
  81.                     if ( ! empty( $review ) ) {
  82.                         $this->review_migration_handler( $post->ID );
  83.                     }
  84.  
  85.                     if ( 'video' === $featured ) {
  86.                         $this->video_migration_handler( $post->ID );
  87.                     }
  88.  
  89.                     if ( ! empty( $subtitle ) ) {
  90.                         update_post_meta( $post->ID, 'post_subtitle', $subtitle );
  91.                     }
  92.  
  93.                     if ( $raw ) {
  94.                         return $this->after_migration( $post, $raw );
  95.                     } else {
  96.                         $this->after_migration( $post, $raw );
  97.                     }
  98.                 }
  99.             }
  100.             if ( $raw ) {
  101.                 return array();
  102.             }
  103.         }
  104.  
  105.         /**
  106.          * Handler function for video featured post migration
  107.          *
  108.          * @param  int $post_id
  109.          */
  110.         public function video_migration_handler( $post_id ) {
  111.             $embed  = get_post_meta( $post_id, 'tie_embed_code', true );
  112.             $url    = get_post_meta( $post_id, 'tie_video_url', true );
  113.             $hosted = get_post_meta( $post_id, 'tie_video_self', true );
  114.  
  115.             set_post_format( $post_id, 'video' );
  116.  
  117.             if ( ! empty( $embed ) ) {
  118.                 update_post_meta( $post_id, '_format_video_embed', $embed );
  119.             }
  120.  
  121.             if ( ! empty( $url ) ) {
  122.                 update_post_meta( $post_id, '_format_video_embed', $url );
  123.             }
  124.  
  125.             if ( ! empty( $hosted ) ) {
  126.                 update_post_meta( $post_id, '_format_video_embed', $hosted );
  127.             }
  128.         }
  129.  
  130.         /**
  131.          * Handler function for review post migration
  132.          *
  133.          * @param  int $post_id
  134.          */
  135.         public function review_migration_handler( $post_id ) {
  136.             update_post_meta( $post_id, 'enable_review', true );
  137.  
  138.             update_post_meta( $post_id, 'name', $this->get_name( $post_id ) );
  139.  
  140.             update_post_meta( $post_id, 'type', $this->get_type( $post_id ) );
  141.  
  142.             update_post_meta( $post_id, 'rating', $this->get_rating( $post_id ) );
  143.  
  144.             update_post_meta( $post_id, 'jnew_rating_mean', $this->get_mean( $post_id ) );
  145.  
  146.             update_post_meta( $post_id, 'summary', $this->get_summary( $post_id ) );
  147.  
  148.             update_post_meta( $post_id, 'jnews_review_fields', array( 'enable_review', 'name', 'type', 'summary', 'rating' ) );
  149.         }
  150.  
  151.         /**
  152.          * Get review name
  153.          *
  154.          * @param  int $post_id
  155.          *
  156.          * @return string
  157.          */
  158.         public function get_name( $post_id ) {
  159.             return get_post_meta( $post_id, 'taq_review_title', true );
  160.         }
  161.  
  162.         /**
  163.          * Get review summary
  164.          *
  165.          * @param  int $post_id
  166.          *
  167.          * @return string
  168.          */
  169.         public function get_summary( $post_id ) {
  170.             return get_post_meta( $post_id, 'taq_review_summary', true );
  171.         }
  172.  
  173.         /**
  174.          * Get review type
  175.          *
  176.          * @param  int $post_id
  177.          *
  178.          * @return string
  179.          */
  180.         public function get_type( $post_id ) {
  181.             $type = get_post_meta( $post_id, 'taq_review_style', true );
  182.  
  183.             if ( ! empty( $type ) ) {
  184.                 switch ( $type ) {
  185.                     case 'points':
  186.                         $type = 'point';
  187.                         break;
  188.  
  189.                     case 'stars':
  190.                         $type = 'star';
  191.                         break;
  192.  
  193.                     case 'percentage':
  194.                         $type = 'percentage';
  195.                         break;
  196.                 }
  197.             }
  198.  
  199.             return $type;
  200.         }
  201.  
  202.         /**
  203.          * Get review rating
  204.          *
  205.          * @param  int $post_id
  206.          *
  207.          * @return array
  208.          */
  209.         public function get_rating( $post_id ) {
  210.             $result  = array();
  211.             $ratings = get_post_meta( $post_id, 'taq_review_criteria', true );
  212.  
  213.             if ( is_array( $ratings ) ) {
  214.                 foreach ( $ratings as $rating ) {
  215.                     $result[] = array(
  216.                         'rating_text'   => $rating['name'],
  217.                         'rating_number' => (int) round( $rating['score'] / 10 ),
  218.                     );
  219.                 }
  220.             }
  221.  
  222.             $this->rating = $result;
  223.  
  224.             return $result;
  225.         }
  226.  
  227.         /**
  228.          * Get review mean
  229.          *
  230.          * @param  int $post_id
  231.          *
  232.          * @return float ( default null )
  233.          */
  234.         public function get_mean( $post_id ) {
  235.             $ratings = $this->rating;
  236.  
  237.             $total = $numberofrating = 0;
  238.  
  239.             if ( is_array( $ratings ) ) {
  240.                 foreach ( $ratings as $rating ) {
  241.                     if ( $rating['rating_number'] != 0 && ! empty( $rating['rating_text'] ) ) {
  242.                         $total += $rating['rating_number'];
  243.                         ++$numberofrating;
  244.                     }
  245.                 }
  246.  
  247.                 if ( $numberofrating > 0 ) {
  248.                     $mean = $total / $numberofrating;
  249.                     $mean = round( $mean, 1 );
  250.                     return $mean;
  251.                 }
  252.             }
  253.  
  254.             return null;
  255.         }
  256.  
  257.         /**
  258.          * Build query argument
  259.          *
  260.          * @param  boolean $count
  261.          *
  262.          * @return array
  263.          */
  264.         public function build_args( $count ) {
  265.             $args = array(
  266.                 'post_type'      => 'post',
  267.                 'meta_query'     => array(
  268.                     array(
  269.                         'key'     => 'JNews_Migration_Jannah_status',
  270.                         'compare' => 'NOT EXISTS',
  271.                     ),
  272.                     array(
  273.                         'relation' => 'OR',
  274.                         array(
  275.                             'key'     => 'taq_review_position',
  276.                             'value'   => false,
  277.                             'compare' => '!=',
  278.                         ),
  279.                         array(
  280.                             'key'     => 'tie_post_head',
  281.                             'value'   => 'video',
  282.                             'compare' => '=',
  283.                         ),
  284.                         array(
  285.                             'key'     => 'tie_post_sub_title',
  286.                             'compare' => 'EXISTS',
  287.                         ),
  288.                     ),
  289.                 ),
  290.                 'posts_per_page' => 500,
  291.             );
  292.  
  293.             return $args;
  294.         }
  295.  
  296.         /**
  297.          * End migration action
  298.          *
  299.          * @param WP_Post $post Post Data.
  300.          * @param boolean $raw Raw mode.
  301.          *
  302.          * @return null|array
  303.          */
  304.         public function after_migration( $post, $raw = false ) {
  305.             update_post_meta( $post->ID, 'JNews_Migration_Jannah_status', true );
  306.  
  307.             if ( $raw ) {
  308.                 return $this->get_migration_response( $post, $raw );
  309.             } else {
  310.                 $this->get_migration_response( $post, $raw );
  311.             }
  312.         }
  313.  
  314.         /**
  315.          * Get migration response message.
  316.          *
  317.          * @param WP_Post $post Post Data.
  318.          * @param boolean $raw Raw mode.
  319.          *
  320.          * @return null|array
  321.          */
  322.         public function get_migration_response( $post, $raw = false ) {
  323.             if ( $raw ) {
  324.                 return array(
  325.                     'title' => $post->post_title,
  326.                     'url'   => esc_url( get_permalink( $post->ID ) ),
  327.                 );
  328.             } else {
  329.                 wp_send_json(
  330.                     array(
  331.                         'status'  => 'success',
  332.                         'message' => sprintf( __( 'Migration successful <strong>%1$s</strong> <a href="%2$s" target="_blank">view post</a>.', 'jnews-migration-jannah' ), $post->post_title, esc_url( get_permalink( $post->ID ) ) ),
  333.                     )
  334.                 );
  335.             }
  336.         }
  337.  
  338.         /**
  339.          * Check JNews Review Plugin status
  340.          *
  341.          * @return false | string
  342.          */
  343.         public function review_plugin_check() {
  344.             $content_has_review = $this->content_has_review();
  345.  
  346.             if ( empty( $content_has_review ) ) {
  347.                 return false;
  348.             }
  349.  
  350.             if ( ! function_exists( 'get_plugins' ) ) {
  351.                 require_once ABSPATH . '/wp-admin/includes/plugin.php';
  352.             }
  353.  
  354.             if ( get_plugins( '/jnews-review' ) ) {
  355.                 if ( ! is_plugin_active( 'jnews-review/jnews-review.php' ) ) {
  356.                     return 'activate';
  357.                 }
  358.             } else {
  359.                 return 'install';
  360.             }
  361.  
  362.             return false;
  363.         }
  364.  
  365.         /**
  366.          * Check if content has review post
  367.          *
  368.          * @return array
  369.          */
  370.         public function content_has_review() {
  371.             $args = array(
  372.                 'post_type'      => 'post',
  373.                 'meta_query'     => array(
  374.                     array(
  375.                         'key'     => 'taq_review_position',
  376.                         'value'   => false,
  377.                         'compare' => '!=',
  378.                     ),
  379.                 ),
  380.                 'posts_per_page' => -1,
  381.             );
  382.  
  383.             $posts = get_posts( $args );
  384.  
  385.             return $posts;
  386.         }
  387.     }
  388. }
  389.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement