verygoodplugins

Untitled

Jan 26th, 2021
710
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. if ( ! defined( 'ABSPATH' ) ) {
  4.     exit; // Exit if accessed directly
  5. }
  6.  
  7. class WPF_CoursePress extends WPF_Integrations_Base {
  8.  
  9.     /**
  10.      * Gets things started.
  11.      *
  12.      * @since 3.23.1
  13.      */
  14.  
  15.     public function init() {
  16.  
  17.         $this->slug = 'coursepress';
  18.  
  19.         add_action( 'coursepress_student_unit_completed', array( $this, 'unit_completed' ), 10, 4 );
  20.  
  21.         add_action( 'coursepress_student_course_completed', array( $this, 'course_completed' ), 10, 3 );
  22.  
  23.         add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ), 20 );
  24.  
  25.         add_action( 'wp_ajax_wpf_coursepress_save', array( $this, 'save_meta_box_data' ) );
  26.  
  27.     }
  28.  
  29.     /**
  30.      * Apply tags on unit completion.
  31.      *
  32.      * @since 3.23.1
  33.      *
  34.      * @param int    $user_id    The user ID.
  35.      * @param int    $unit_id    The unit ID.
  36.      * @param string $unit_title The unit title.
  37.      * @param int    $course_id  The course ID.
  38.      */
  39.     public function unit_completed( $user_id, $unit_id, $unit_title, $course_id ) {
  40.  
  41.         $settings = get_post_meta( $unit_id, 'wpf_settings_coursepress', true );
  42.  
  43.         if ( ! empty( $settings ) && ! empty( $settings['apply_tags_complete'] ) ) {
  44.  
  45.             wp_fusion()->user->apply_tags( $settings['apply_tags_complete'], $user_id );
  46.  
  47.         }
  48.  
  49.     }
  50.  
  51.  
  52.     /**
  53.      * Apply tags on course completion.
  54.      *
  55.      * @since 3.23.1
  56.      *
  57.      * @param int    $user_id    The user ID.
  58.      * @param int    $course_id  The course ID.
  59.      * @param string $unit_title The course title.
  60.      */
  61.  
  62.     public function course_completed( $user_id, $course_id, $course_title ) {
  63.  
  64.         $settings = get_post_meta( $course_id, 'wpf_settings_coursepress', true );
  65.  
  66.         if ( ! empty( $settings ) && ! empty( $settings['apply_tags_complete'] ) ) {
  67.  
  68.             wp_fusion()->user->apply_tags( $settings['apply_tags_complete'], $user_id );
  69.  
  70.         }
  71.  
  72.     }
  73.  
  74.  
  75.     /**
  76.      * Adds meta box to Course post type.
  77.      *
  78.      * @since 3.23.1
  79.      */
  80.  
  81.     /**
  82.      * Adds meta box to Course post type.
  83.      *
  84.      * @since 3.23.1
  85.      *
  86.      * @param int $post_id The post ID.
  87.      */
  88.     public function add_meta_box( $post_id ) {
  89.  
  90.         add_meta_box( 'wpf-coursepress-meta', 'WP Fusion - Course Settings', array( $this, 'meta_box_callback' ), 'course' );
  91.  
  92.     }
  93.  
  94.  
  95.     /**
  96.      * Displays meta box content.
  97.      *
  98.      * @since 3.23.1
  99.      *
  100.      * @param WP_Post $post   The post object.
  101.      * @return mixed HTML settings output.
  102.      */
  103.     public function meta_box_callback( $post ) {
  104.  
  105.         wp_nonce_field( 'wpf_meta_box_coursepress', 'wpf_meta_box_coursepress_nonce' );
  106.  
  107.         $settings = array(
  108.             'apply_tags_complete' => array(),
  109.         );
  110.  
  111.         if ( get_post_meta( $post->ID, 'wpf_settings_coursepress', true ) ) {
  112.             $settings = array_merge( $settings, get_post_meta( $post->ID, 'wpf_settings_coursepress', true ) );
  113.         }
  114.  
  115.         echo '<h3>Course settings:</h3>';
  116.  
  117.         echo '<table class="form-table"><tbody>';
  118.  
  119.         echo '<tr>';
  120.  
  121.         echo '<th scope="row"><label for="apply_tags_complete">Apply tags:</label></th>';
  122.         echo '<td>';
  123.  
  124.         $args = array(
  125.             'setting'   => $settings['apply_tags_complete'],
  126.             'meta_name' => 'wpf_settings_coursepress',
  127.             'field_id'  => 'apply_tags_complete',
  128.         );
  129.  
  130.         wpf_render_tag_multiselect( $args );
  131.  
  132.         echo '<span class="description">These tags will be applied when the course is marked complete.</span>';
  133.         echo '</td>';
  134.  
  135.         echo '</tr>';
  136.  
  137.         echo '</tbody></table>';
  138.  
  139.         echo '<hr />';
  140.  
  141.         echo '<h3>Unit Settings:</h3>';
  142.  
  143.         $units = get_post_meta( $post->ID, 'cp_structure_visible_units', true );
  144.  
  145.         if ( ! empty( $units ) ) {
  146.  
  147.             echo '<table class="form-table"><tbody>';
  148.  
  149.             foreach ( $units as $unit_id => $visible ) {
  150.  
  151.                 $title = get_the_title( $unit_id );
  152.  
  153.                 if ( empty( $title ) ) {
  154.                     continue;
  155.                 }
  156.  
  157.                 $settings = get_post_meta( $unit_id, 'wpf_settings_coursepress', true );
  158.  
  159.                 if ( empty( $settings ) ) {
  160.                     $settings = array();
  161.                 }
  162.  
  163.                 if ( ! isset( $settings['apply_tags_complete'] ) ) {
  164.                     $settings['apply_tags_complete'] = array();
  165.                 }
  166.  
  167.                 echo '<tr>';
  168.  
  169.                 echo '<th scope="row"><label for="apply_tags_complete">' . $title . ':</label></th>';
  170.                 echo '<td>';
  171.  
  172.                 $args = array(
  173.                     'setting'   => $settings['apply_tags_complete'],
  174.                     'meta_name' => 'wpf_settings_coursepress',
  175.                     'field_id'  => 'apply_tags_unit_' . $unit_id,
  176.                 );
  177.  
  178.                 wpf_render_tag_multiselect( $args );
  179.  
  180.                 echo '<span class="description">These tags will be applied when the unit <strong>' . $title . '</strong> is marked complete.</span>';
  181.                 echo '</td>';
  182.  
  183.                 echo '</tr>';
  184.  
  185.             }
  186.  
  187.             echo '</tbody></table>';
  188.  
  189.         } else {
  190.  
  191.             echo '<br/><br/>Create some units to configure unit tagging.';
  192.  
  193.         }
  194.  
  195.         echo '<table class="form-table"><tbody>';
  196.  
  197.         echo '<tr>';
  198.  
  199.         echo '<th scope="row"></th>';
  200.         echo '<td>';
  201.  
  202.             echo '<input type="hidden" id="wpf-coursepress-postid" value="' . $post->ID . '">';
  203.  
  204.             echo '<a href="#" id="wpf-coursepress-update" class="button">Update</a>';
  205.  
  206.         echo '</td>';
  207.  
  208.         echo '</tr>';
  209.  
  210.         echo '</tbody></table>';
  211.  
  212.     }
  213.  
  214.  
  215.     /**
  216.      * Save the settings to the course.
  217.      *
  218.      * @since 3.23.1
  219.      */
  220.  
  221.     public function save_meta_box_data() {
  222.  
  223.         $post_id = $_POST['id'];
  224.  
  225.         $update_values = array();
  226.  
  227.         foreach ( $_POST['data'] as $setting ) {
  228.  
  229.             if ( 'wpf_settings_coursepress[apply_tags_complete][]' == $setting['name'] ) {
  230.  
  231.                 if ( ! isset( $update_values[ $post_id ] ) ) {
  232.                     $update_values[ $post_id ] = array();
  233.                 }
  234.  
  235.                 $update_values[ $post_id ][] = $setting['value'];
  236.  
  237.             } else {
  238.  
  239.                 $unit_id = str_replace( 'wpf_settings_coursepress[apply_tags_unit_', '', $setting['name'] );
  240.  
  241.                 $unit_id = str_replace( '][]', '', $unit_id );
  242.  
  243.                 if ( ! isset( $update_values[ $unit_id ] ) ) {
  244.                     $update_values[ $unit_id ] = array();
  245.                 }
  246.  
  247.                 $update_values[ $unit_id ][] = $setting['value'];
  248.  
  249.             }
  250.         }
  251.  
  252.         foreach ( $update_values as $post_id => $tags ) {
  253.  
  254.             // Update the meta fields in the database.
  255.             update_post_meta( $post_id, 'wpf_settings_coursepress', array( 'apply_tags_complete' => $tags ) );
  256.  
  257.         }
  258.  
  259.     }
  260.  
  261.  
  262. }
  263.  
  264. new WPF_CoursePress;
  265.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×