Last active
January 30, 2016 15:25
-
-
Save gabrielmerovingi/da8262f79c08e43ef07b to your computer and use it in GitHub Desktop.
Custom myCRED Hook for WP Courseware. Points can be awarded or deducted for users completing units, modules and courses. Requires myCRED 1.6 or higher.
This file contains hidden or 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
/** | |
* WP Courseware Hook | |
* @version 1.0.2 | |
*/ | |
add_filter( 'mycred_setup_hooks', 'mycred_register_courseware_hook' ); | |
function mycred_register_courseware_hook( $installed ) { | |
$installed['courseware'] = array( | |
'title' => 'WP Courseware', | |
'description' => 'Award or deduct %plural% for users completing WP Courseware courses, modules or units.', | |
'callback' => array( 'myCRED_Hook_CourseWare' ) | |
); | |
return $installed; | |
} | |
if ( class_exists( 'myCRED_Hook' ) ) : | |
class myCRED_Hook_CourseWare extends myCRED_Hook { | |
/** | |
* Construct | |
*/ | |
function __construct( $hook_prefs, $type = 'mycred_default' ) { | |
parent::__construct( array( | |
'id' => 'courseware', | |
'defaults' => array( | |
'unit' => array( | |
'creds' => 1, | |
'log' => '%plural% for completing unit' | |
), | |
'module' => array( | |
'creds' => 1, | |
'log' => '%plural% for completing module' | |
), | |
'course' => array( | |
'creds' => 1, | |
'log' => '%plural% for completing course' | |
) | |
) | |
), $hook_prefs, $type ); | |
} | |
/** | |
* Run | |
* @since 1.0 | |
* @version 1.0 | |
*/ | |
public function run() { | |
if ( $this->prefs['unit']['creds'] != 0 ) | |
add_action( 'wpcw_user_completed_unit', array( $this, 'completed_unit' ), 10, 3 ); | |
if ( $this->prefs['module']['creds'] != 0 ) | |
add_action( 'wpcw_user_completed_module', array( $this, 'completed_module' ), 10, 3 ); | |
if ( $this->prefs['course']['creds'] != 0 ) | |
add_action( 'wpcw_user_completed_course', array( $this, 'completed_course' ), 10, 3 ); | |
} | |
/** | |
* Unit Hook | |
* @since 1.0 | |
* @version 1.0.1 | |
*/ | |
public function completed_unit( $user_id, $unit_id, $parent = '' ) { | |
// Check for exclusion | |
if ( $this->core->exclude_user( $user_id ) ) return; | |
$data = array( 'module' => $parent->parent_module_id, 'course' => $parent->parent_course_id ); | |
// Prevent duplicates | |
if ( $this->has_entry( 'completing_unit', $unit_id, $user_id, $data, $this->mycred_type ) ) return; | |
// Execute | |
$this->core->add_creds( | |
'completing_unit', | |
$user_id, | |
$this->prefs['unit']['creds'], | |
$this->prefs['unit']['log'], | |
$unit_id, | |
$data, | |
$this->mycred_type | |
); | |
} | |
/** | |
* Module Hook | |
* @since 1.0 | |
* @version 1.0.2 | |
*/ | |
public function completed_module( $user_id, $module_id, $unitParentData = '' ) { | |
// Check for exclusion | |
if ( $this->core->exclude_user( $user_id ) ) return; | |
// Prevent duplicates | |
if ( $this->has_entry( 'completing_module', $module_id, $user_id, '', $this->mycred_type ) ) return; | |
// Execute | |
$this->core->add_creds( | |
'completing_module', | |
$user_id, | |
$this->prefs['module']['creds'], | |
$this->prefs['module']['log'], | |
$module_id, | |
'', | |
$this->mycred_type | |
); | |
} | |
/** | |
* Course Hook | |
* @since 1.0 | |
* @version 1.0 | |
*/ | |
public function completed_course( $user_id, $course_id, $unitParentData = '' ) { | |
// Check for exclusion | |
if ( $this->core->exclude_user( $user_id ) === true ) return; | |
// Prevent duplicates | |
if ( $this->has_entry( 'completing_course', $course_id, $user_id ) ) return; | |
// Execute | |
$this->core->add_creds( | |
'completing_course', | |
$user_id, | |
$this->prefs['course']['creds'], | |
$this->prefs['course']['log'], | |
$course_id | |
); | |
} | |
/** | |
* Preference for Coursewave Hook | |
* @since 1.0 | |
* @version 1.0 | |
*/ | |
public function preferences() { | |
$prefs = $this->prefs; | |
?> | |
<label class="subheader"><?php _e( 'Units', 'textdomain' ); ?></label> | |
<ol> | |
<li> | |
<div class="h2"><input type="text" name="<?php echo $this->field_name( array( 'unit' => 'creds' ) ); ?>" id="<?php echo $this->field_id( array( 'unit' => 'creds' ) ); ?>" value="<?php echo $this->core->number( $prefs['unit']['creds'] ); ?>" size="8" /></div> | |
</li> | |
<li class="empty"></li> | |
<li> | |
<label for="<?php echo $this->field_id( array( 'unit' => 'log' ) ); ?>"><?php _e( 'Log template', 'textdomain' ); ?></label> | |
<div class="h2"><input type="text" name="<?php echo $this->field_name( array( 'unit' => 'log' ) ); ?>" id="<?php echo $this->field_id( array( 'unit' => 'log' ) ); ?>" value="<?php echo esc_attr( $prefs['unit']['log'] ); ?>" class="long" /></div> | |
<span class="description"><?php echo $this->available_template_tags( array( 'general' ) ); ?></span> | |
</li> | |
</ol> | |
<label class="subheader"><?php _e( 'Modules', 'textdomain' ); ?></label> | |
<ol> | |
<li> | |
<div class="h2"><input type="text" name="<?php echo $this->field_name( array( 'module' => 'creds' ) ); ?>" id="<?php echo $this->field_id( array( 'module' => 'creds' ) ); ?>" value="<?php echo $this->core->number( $prefs['module']['creds'] ); ?>" size="8" /></div> | |
</li> | |
<li class="empty"></li> | |
<li> | |
<label for="<?php echo $this->field_id( array( 'module' => 'log' ) ); ?>"><?php _e( 'Log template', 'textdomain' ); ?></label> | |
<div class="h2"><input type="text" name="<?php echo $this->field_name( array( 'module' => 'log' ) ); ?>" id="<?php echo $this->field_id( array( 'module' => 'log' ) ); ?>" value="<?php echo esc_attr( $prefs['module']['log'] ); ?>" class="long" /></div> | |
<span class="description"><?php echo $this->available_template_tags( array( 'general' ) ); ?></span> | |
</li> | |
</ol> | |
<label class="subheader"><?php _e( 'Courses', 'textdomain' ); ?></label> | |
<ol> | |
<li> | |
<div class="h2"><input type="text" name="<?php echo $this->field_name( array( 'course' => 'creds' ) ); ?>" id="<?php echo $this->field_id( array( 'course' => 'creds' ) ); ?>" value="<?php echo $this->core->number( $prefs['course']['creds'] ); ?>" size="8" /></div> | |
</li> | |
<li class="empty"></li> | |
<li> | |
<label for="<?php echo $this->field_id( array( 'course' => 'log' ) ); ?>"><?php _e( 'Log template', 'textdomain' ); ?></label> | |
<div class="h2"><input type="text" name="<?php echo $this->field_name( array( 'course' => 'log' ) ); ?>" id="<?php echo $this->field_id( array( 'course' => 'log' ) ); ?>" value="<?php echo esc_attr( $prefs['course']['log'] ); ?>" class="long" /></div> | |
<span class="description"><?php echo $this->available_template_tags( array( 'general' ) ); ?></span> | |
</li> | |
</ol> | |
<?php | |
} | |
} | |
endif; |
pls reply me
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
how to use this file