Seditio Source
Root |
./othercms/b2evolution_7.2.3/plugins/star_plugin/_star.plugin.php
<?php
/**
 * This file implements the Star renderer plugin for b2evolution
 *
 * Star formatting, like [stars:2.3/5]
 *
 * b2evolution - {@link http://b2evolution.net/}
 * Released under GNU GPL License - {@link http://b2evolution.net/about/gnu-gpl-license}
 * @copyright (c)2003-2020 by Francois Planque - {@link http://fplanque.com/}
 *
 * @package plugins
 *
 * @version $
 */
if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' );


/**
 * @package plugins
 */
class star_plugin extends Plugin
{
    var
$code = 'b2evStar';
    var
$name = 'Star renderer';
    var
$priority = 55;
    var
$version = '7.2.3';
    var
$group = 'rendering';
    var
$short_desc;
    var
$long_desc;
    var
$help_topic = 'star-plugin';
    var
$number_of_installs = 1;


   
/**
     * Init
     */
   
function PluginInit( & $params )
    {
       
$this->short_desc = T_('Star formatting e-g [stars:2.3/5]');
       
$this->long_desc = T_('This plugin allows to render star ratings inside blog posts and comments by using the syntax [stars:2.3/5] for example');
    }


   
/**
     * Define here default email settings that are to be made available in the backoffice.
     *
     * @param array Associative array of parameters.
     * @return array See {@link Plugin::GetDefaultSettings()}.
     */
   
function get_email_setting_definitions( & $params )
    {
       
// Set empty array to disable this plugin for Email Campaign:
       
return array();
    }


   
/**
     * Event handler: Called when ending the admin html head section.
     *
     * @param array Associative array of parameters
     * @return boolean did we do something?
     */
   
function AdminEndHtmlHead( & $params )
    {
       
$this->SkinBeginHtmlHead( $params );
    }


   
/**
     * Perform rendering
     *
     * @see Plugin::RenderItemAsHtml()
     */
   
function DisplayItemAsHtml( & $params )
    {
       
$params['data'] = $this->render_stars( $params['data'] );

        return
true;
    }


   
/**
     * Do the same as for HTML.
     *
     * @see RenderItemAsHtml()
     */
   
function DisplayItemAsXml( & $params )
    {
        return
$this->DisplayItemAsHtml( $params );
    }


   
/**
     * Render stars template from [[stars:3/7]
     *  to <span class="evo_stars_img" style="width:112px">
     *       <i>*</i>
     *       <i>*</i>
     *       <i class="evo_stars_img_empty"><i style="width:50%">%</i></i>
     *       <i class="evo_stars_img_empty">-</i>
     *       <i class="evo_stars_img_empty">-</i>
     *     </span>
     *
     * @param string Source content
     * @return string Rendered content
     */
   
function render_stars( $content )
    {
        return
replace_outside_code_tags( '#\[stars:([\d\.]+)(/\d+)?\]#', array( $this, 'get_stars_template' ), $content, 'replace_content_callback' );
    }


   
/**
     * Get HTML template for stars
     *
     * @param array Matches
     * @return string HTML stars
     */
   
function get_stars_template( $matches )
    {
        global
$b2evo_icons_type;

        if( empty(
$matches ) )
        {
// No stars found
           
return;
        }

       
$active_stars = $matches[1];

        if( ! empty(
$matches[2] ) )
        {
// Get a number of stars from content
           
$number_stars = intval( substr( $matches[2], 1 ) );
        }
        if( empty(
$number_stars ) )
        {
// Use 5 stars by default
           
$number_stars = 5;
        }

        return
get_star_rating( $active_stars, $number_stars );
    }
}

?>