Last active
February 22, 2018 22:45
-
-
Save wpmudev-sls/6b4bc9ddcdb6a45262a23e92e32c66bc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Plugin Name: CoursePress Certificate with BuddyPress Fields | |
* Plugin URI: https://premium.wpmudev.org/ | |
* Description: Display additional fields in CoursePress Certificate from BuddyPress Fields | |
* Author: Ariful Islam @ WPMUDEV | |
* Author URI: https://premium.wpmudev.org/profile/itsarifulislam | |
* License: GPLv2 or later | |
*/ | |
if ( ! defined( 'ABSPATH' ) ) { | |
exit; | |
} | |
if ( ! class_exists( 'CPCertificateWithBDPFields' ) ) { | |
class CPCertificateWithBDPFields { | |
private static $_instance = null; | |
private $fields = array(); | |
private $variables = array(); | |
public static function get_instance() { | |
if ( is_null( self::$_instance ) ) { | |
self::$_instance = new CPCertificateWithBDPFields(); | |
} | |
return self::$_instance; | |
} | |
private function __construct() { | |
if ( !class_exists('CoursePress_Data_Certificate') || !class_exists('BuddyPress') || !is_user_logged_in() ) return; | |
add_filter('coursepress_basic_certificate_vars', array( $this, 'coursepress_basic_certificate_vars' ), 10, 1); | |
} | |
public function set_fields() { | |
return $this->fields = array( | |
array( | |
'field_id' => 12, // BuddyPress field ID | |
'var_name' => 'FIELD_1' // CoursePress Certificate Variables | |
), | |
array( | |
'field_id' => 13, // BuddyPress field ID | |
'var_name' => 'FIELD_2' // CoursePress Certificate Variables | |
) | |
); | |
} | |
public function get_bdp_data() { | |
global $wpdb; | |
$table = $wpdb->prefix . 'bp_xprofile_data'; | |
$user_id = get_current_user_id(); | |
// Set all fields & valiables | |
$this->set_fields(); | |
if ( empty($this->fields) ) return; | |
return $wpdb->get_results(" | |
SELECT * FROM $table | |
WHERE field_id IN (" . implode( ', ', wp_list_pluck( $this->fields, 'field_id' ) ) . ") | |
AND user_id = $user_id | |
", 'ARRAY_A'); | |
} | |
public function generate_coursePress_variables() { | |
// Get BuddyPress fields data | |
$data = $this->get_bdp_data(); | |
if ( empty($data) ) return; | |
foreach ( $this->fields as $field ) { | |
$key = array_search($field['field_id'], array_column($data, 'field_id')); | |
if ( is_numeric($key) ) $this->variables[$field['var_name']] = $data[$key]['value']; | |
} | |
} | |
public function coursepress_basic_certificate_vars( $variables ) { | |
// Generate CoursePress variables with value | |
$this->generate_coursePress_variables(); | |
foreach ( $this->variables as $variable => $value ) { | |
$variables[$variable] = $value; | |
} | |
return $variables; | |
} | |
} | |
function render_coursePress_certificate_with_buddyPress_fields(){ | |
$GLOBALS['CPCertificateWithBDPFields'] = CPCertificateWithBDPFields::get_instance(); | |
} | |
add_action( 'plugins_loaded', 'render_coursePress_certificate_with_buddyPress_fields', 9999999 ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment