includes/notifications/views/class.llms.notification.view.achievement.earned.php
<?php
/**
* Notification View: Achievement Earned
*
* @package LifterLMS/Notifications/Views/Classes
*
* @since 3.8.0
* @version 6.0.0
*/
defined( 'ABSPATH' ) || exit;
/**
* Notification View: Achievement Earned
*
* @since 3.8.0
* @since 3.17.6 Unknown.
* @since 3.30.3 Fixed spelling errors.
*/
class LLMS_Notification_View_Achievement_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 = 'achievement_earned';
/**
* Setup body content for output
*
* @since 3.8.0
*
* @return string
*/
protected function set_body() {
ob_start();
?>
<p style="text-align: center;">{{ACHIEVEMENT_IMAGE}}</p>
<h2 style="text-align: center;"><strong>{{ACHIEVEMENT_TITLE}}</strong></h2>
<p style="text-align: center;">{{ACHIEVEMENT_CONTENT}}</p>
<?php
return ob_get_clean();
}
/**
* Setup footer content for output
*
* @since 3.8.0
*
* @return string
*/
protected function set_footer() {
return '';
}
/**
* Setup notification icon for output
*
* @since 3.8.0
*
* @return string
*/
protected function set_icon() {
return '';
}
/**
* Setup merge codes that can be used with the notification
*
* @since 3.8.0
* @since 3.30.3 Fixed spelling errors.
*
* @return array
*/
protected function set_merge_codes() {
return array(
'{{ACHIEVEMENT_CONTENT}}' => __( 'Achievement Content', 'lifterlms' ),
'{{ACHIEVEMENT_IMAGE}}' => __( 'Achievement Image', 'lifterlms' ),
'{{ACHIEVEMENT_IMAGE_URL}}' => __( 'Achievement Image URL', 'lifterlms' ),
'{{ACHIEVEMENT_TITLE}}' => __( 'Achievement Title', 'lifterlms' ),
'{{STUDENT_NAME}}' => __( 'Student Name', 'lifterlms' ),
);
}
/**
* Replace merge codes with actual values
*
* @since 3.8.0
* @since 3.8.2 Unknown.
* @since 4.7.0 Use `achievement_title` in favor of `title` for the {{ACHIEVEMENT_TITLE}} merge code.
* @since 6.0.0 Use `title` in favor of deprecated `achievement_title` meta key for the {{ACHIEVEMENT_TITLE}} merge code.
*
* @param string $code The merge code to get merged data for.
* @return string
*/
protected function set_merge_data( $code ) {
$achievement = new LLMS_User_Achievement( $this->post );
switch ( $code ) {
case '{{ACHIEVEMENT_CONTENT}}':
$code = $achievement->get( 'content' );
break;
case '{{ACHIEVEMENT_IMAGE}}':
$title = $this->set_merge_data( '{{ACHIEVEMENT_TITLE}}' );
$url = $this->set_merge_data( '{{ACHIEVEMENT_IMAGE_URL}}' );
$code = '<img alt="' . sprintf( _x( '%s Icon', 'Achievement icon alt text', 'lifterlms' ), $title ) . '" src="' . $url . '">';
break;
case '{{ACHIEVEMENT_IMAGE_URL}}':
$code = $achievement->get_image( 'medium', 'achievement_image' );
if ( ! $code ) {
$code = apply_filters( 'lifterlms_placeholder_img_src', llms()->plugin_url() . '/assets/images/optional_achievement.png' );
}
break;
case '{{ACHIEVEMENT_TITLE}}':
$code = $achievement->get( 'title' );
break;
case '{{STUDENT_NAME}}':
$code = $this->is_for_self() ? __( 'you', 'lifterlms' ) : $this->user->get_name();
break;
}
return $code;
}
/**
* 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 been awarded an achievement!', 'lifterlms' );
}
/**
* Define 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' => false,
),
);
}
}