LLMS_Notification_View_Certificate_Earned
Notification View: Certificate Earned
Source Source
File: includes/notifications/views/class.llms.notification.view.certificate.earned.php
class LLMS_Notification_View_Certificate_Earned extends LLMS_Abstract_Notification_View {
/**
* Settings for basic notifications
*
* @var array
*/
protected $basic_options = array(
/**
* Time in milliseconds to show a notification
* before automatically dismissing it
*/
'auto_dismiss' => 10000,
/**
* Enables manual dismissal of notifications
*/
'dismissible' => true,
);
/**
* Notification Trigger ID
*
* @var string
*/
public $trigger_id = 'certificate_earned';
/**
* Get the HTML for the mini certificate preview.
*
* @since Unknown
* @since 6.0.0 Removed `$content` parameter & updated HTML to display a placeholder.
*
* @param string $title The (merged) certificate title.
* @return string
*/
private function get_mini_html( $title ) {
ob_start();
?>
<div class="llms-mini-cert">
<h2 class="llms-mini-cert-title"><?php echo $title; ?></h2>
<div class="llms-mini-cert--body ">
<div class="llms-mini-cert--mock-line"></div>
<div class="llms-mini-cert--mock-line"></div>
<div class="llms-mini-cert--mock-line"></div>
<div class="llms-mini-cert--mock-line"></div>
<div class="llms-mini-cert--mock-line"></div>
<div class="llms-mini-cert--mock-dot"></div>
<div class="llms-mini-cert--mock-line"></div>
</div>
</div>
<?php
return ob_get_clean();
}
/**
* Setup body content for output.
*
* @since 3.8.0
*
* @return string
*/
protected function set_body() {
return '{{MINI_CERTIFICATE}}';
}
/**
* Setup footer content for output.
*
* @since 3.8.0
*
* @return string
*/
protected function set_footer() {
$url = $this->set_merge_data( '{{CERTIFICATE_URL}}' );
return '<a href="' . esc_url( $url ) . '">' . __( 'View Full Certificate', 'lifterlms' ) . '</a>';
}
/**
* Setup notification icon for output.
*
* @since 3.8.0
*
* @return string
*/
protected function set_icon() {
return $this->get_icon_default( 'positive' );
}
/**
* Setup merge codes that can be used with the notification.
*
* @since 3.8.0
*
* @return array
*/
protected function set_merge_codes() {
return array(
'{{CERTIFICATE_CONTENT}}' => __( 'Certificate Content', 'lifterlms' ),
'{{CERTIFICATE_TITLE}}' => __( 'Certificate Title', 'lifterlms' ),
'{{CERTIFICATE_URL}}' => __( 'Certificate URL', 'lifterlms' ),
'{{STUDENT_NAME}}' => __( 'Student Name', 'lifterlms' ),
'{{MINI_CERTIFICATE}}' => __( 'Mini Certificate', 'lifterlms' ),
);
}
/**
* Replace merge codes with actual values.
*
* @since 3.8.0
* @since 3.16.6 Unknown.
* @since 6.0.0 Refactor to give each merge code it's own method.
*
* @param string $code The merge code to get merged data for.
* @return string The merged string or the original code for invalid merge codes.
*/
protected function set_merge_data( $code ) {
if ( in_array( $code, array_keys( $this->set_merge_codes() ), true ) ) {
$method = 'set_merge_data_' . strtolower( str_replace( array( '{{', '}}' ), '', $code ) );
$code = method_exists( $this, $method ) ? $this->$method( new LLMS_User_Certificate( $this->notification->post_id ) ) : $code;
}
return $code;
}
/**
* Get merge data for the {{CERTIFICATE_CONTENT}} merge code.
*
* @since 6.0.0
*
* @param LLMS_User_Certificate $cert Earned certificate object.
* @return string
*/
private function set_merge_data_certificate_content( $cert ) {
return $cert->get( 'content' );
}
/**
* Get merge data for the {{CERTIFICATE_TITLE}} merge code.
*
* @since 6.0.0
*
* @param LLMS_User_Certificate $cert Earned certificate object.
* @return string
*/
private function set_merge_data_certificate_title( $cert ) {
return $cert->get( 'title' );
}
/**
* Get merge data for the {{CERTIFICATE_URL}} merge code.
*
* @since 6.0.0
*
* @param LLMS_User_Certificate $cert Earned certificate object.
* @return string
*/
private function set_merge_data_certificate_url( $cert ) {
return get_permalink( $cert->get( 'id' ) );
}
/**
* Get merge data for the {{MINI_CERTIFICATE}} merge code.
*
* @since 6.0.0
*
* @param LLMS_User_Certificate $cert Earned certificate object.
* @return string
*/
private function set_merge_data_mini_certificate( $cert ) {
return $this->get_mini_html( $this->set_merge_data( '{{CERTIFICATE_TITLE}}' ) );
}
/**
* Get merge data for the {{STUDENT_NAME}} merge code.
*
* @since 6.0.0
*
* @param LLMS_User_Certificate $cert Earned certificate object.
* @return string
*/
private function set_merge_data_student_name( $cert ) {
return $this->is_for_self() ? __( 'you', 'lifterlms' ) : $this->user->get_name();
}
/**
* Setup notification subject for output.
*
* @since 3.8.0
*
* @return string
*/
protected function set_subject() {
return '';
}
/**
* Setup notification title for output.
*
* @since 3.8.0
*
* @return string
*/
protected function set_title() {
return __( 'You\'ve earned a certificate!', 'lifterlms' );
}
/**
* Defines field support for the view.
*
* @since 3.8.0
*
* @return array
*/
protected function set_supported_fields() {
return array(
'basic' => array(
'body' => true,
'title' => true,
'icon' => true,
),
);
}
}
Expand full source code Collapse full source code View on GitHub
Methods Methods
- get_mini_html — Get the HTML for the mini certificate preview.
- set_body — Setup body content for output.
- set_footer — Setup footer content for output.
- set_icon — Setup notification icon for output.
- set_merge_codes — Setup merge codes that can be used with the notification.
- set_merge_data — Replace merge codes with actual values.
- set_merge_data_certificate_content — Get merge data for the {{CERTIFICATE_CONTENT}} merge code.
- set_merge_data_certificate_title — Get merge data for the {{CERTIFICATE_TITLE}} merge code.
- set_merge_data_certificate_url — Get merge data for the {{CERTIFICATE_URL}} merge code.
- set_merge_data_mini_certificate — Get merge data for the {{MINI_CERTIFICATE}} merge code.
- set_merge_data_student_name — Get merge data for the {{STUDENT_NAME}} merge code.
- set_subject — Setup notification subject for output.
- set_supported_fields — Defines field support for the view.
- set_title — Setup notification title for output.
Changelog Changelog
| Version | Description |
|---|---|
| 3.8.0 | Introduced. |