Skip to content

Instantly share code, notes, and snippets.

@wpmudev-sls
Last active February 22, 2018 22:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wpmudev-sls/6b4bc9ddcdb6a45262a23e92e32c66bc to your computer and use it in GitHub Desktop.
Save wpmudev-sls/6b4bc9ddcdb6a45262a23e92e32c66bc to your computer and use it in GitHub Desktop.
<?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