Seditio Source
Root |
./othercms/b2evolution_7.2.3/inc/widgets/widgets/_user_greetings.widget.php
<?php
/**
 * This file implements the user_greetings_Widget class.
 *
 * This file is part of the evoCore framework - {@link http://evocore.net/}
 * See also {@link https://github.com/b2evolution/b2evolution}.
 *
 * @license GNU GPL v2 - {@link http://b2evolution.net/about/gnu-gpl-license}
 *
 * @copyright (c)2003-2020 by Francois Planque - {@link http://fplanque.com/}
 *
 * @package evocore
 */
if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' );

load_class( 'widgets/model/_widget.class.php', 'ComponentWidget' );
load_class( '_core/model/dataobjects/_dataobjectlist2.class.php', 'DataObjectList2' );

/**
 * ComponentWidget Class
 *
 * A ComponentWidget is a displayable entity that can be placed into a Container on a web page.
 *
 * @package evocore
 */
class user_greetings_Widget extends ComponentWidget
{
    var
$icon = 'user';

   
/**
     * Constructor
     */
   
function __construct( $db_row = NULL )
    {
       
// Call parent constructor:
       
parent::__construct( $db_row, 'core', 'user_greetings' );
    }


   
/**
     * Get help URL
     *
     * @return string URL
     */
   
function get_help_url()
    {
        return
get_manual_url( 'user-greetings-widget' );
    }


   
/**
     * Get name of widget
     */
   
function get_name()
    {
        return
T_('User greetings');
    }


   
/**
     * Get a very short desc. Used in the widget list.
     */
   
function get_short_desc()
    {
        return
format_to_output( $this->disp_params['title'] );
    }


   
/**
     * Get short description
     */
   
function get_desc()
    {
        return
T_('Display user greetings.');
    }


   
/**
     * Get definitions for editable params
     *
     * @see Plugin::GetDefaultSettings()
     * @param local params like 'for_editing' => true
     */
   
function get_param_definitions( $params )
    {
       
load_funcs( 'files/model/_image.funcs.php' );

       
$r = array_merge( array(
               
'title' => array(
                   
'label' => T_('Block title'),
                   
'note' => T_('Title to display in your skin.'),
                   
'size' => 40,
                   
'defaultvalue' => '',
                ),
               
// Picture
               
'profile_picture_size' => array(
                   
'label' => T_('Profile picture'),
                   
'note' => '',
                   
'type' => 'select',
                   
'options' => get_available_thumb_sizes( T_('none') ),
                   
'defaultvalue' => 'crop-top-32x32',
                ),
               
// Group
               
'group_begin_line' => array(
                   
'type' => 'begin_line',
                   
'label' => T_('User group'),
                ),
               
'group_show' => array(
                   
'type' => 'checkbox',
                   
'defaultvalue' => 1,
                ),
               
'group_text' => array(
                   
'label' => T_('Show as:'),
                   
'size' => 25,
                   
'type' => 'text',
                   
'defaultvalue' => T_( 'Your group: $group$' ),
                ),
               
'group_end_line' => array(
                   
'type' => 'end_line',
                ),
               
// Level
               
'level_begin_line' => array(
                   
'type' => 'begin_line',
                   
'label' => T_('User level'),
                ),
               
'level_show' => array(
                   
'type' => 'checkbox',
                   
'defaultvalue' => 1,
                ),
               
'level_text' => array(
                   
'label' => T_('Show as:'),
                   
'size' => 25,
                   
'type' => 'text',
                   
'defaultvalue' => T_( 'Your level: $level$' ),
                ),
               
'level_end_line' => array(
                   
'type' => 'end_line',
                ),
               
// Greeting
               
'greeting_begin_line' => array(
                   
'type' => 'begin_line',
                   
'label' => T_('Greeting'),
                ),
               
'greeting_show' => array(
                   
'type' => 'checkbox',
                   
'defaultvalue' => 1,
                ),
               
'greeting_text' => array(
                   
'label' => T_('Show as:'),
                   
'size' => 25,
                   
'type' => 'text',
                   
'defaultvalue' => sprintf( T_( 'Hello %s!' ), '$login$' ),
                ),
               
'greeting_end_line' => array(
                   
'type' => 'end_line',
                ),
            ),
parent::get_param_definitions( $params ) );

        if( isset(
$r['allow_blockcache'] ) )
        {
// Set default blockcache to false and disable this setting because caching is never allowed for this widget
           
$r['allow_blockcache']['defaultvalue'] = false;
           
$r['allow_blockcache']['disabled'] = 'disabled';
           
$r['allow_blockcache']['note'] = T_('This widget cannot be cached in the block cache.');
        }

        return
$r;
    }


   
/**
     * Display the widget!
     *
     * @param array MUST contain at least the basic display params
     */
   
function display( $params )
    {
        if( !
is_logged_in() )
        {    
// Don't display because user is not logged in yet:
           
$this->display_debug_message( 'Widget "'.$this->get_name().'" is hidden because user is not logged in.' );
            return
false;
        }

        global
$current_User;

       
$this->init_display( $params );

        echo
$this->disp_params['block_start'];

       
$this->disp_title();

        echo
$this->disp_params['block_body_start'];

        if(
$this->get_param('profile_picture_size') != '' )
        {    
// Display profile picture
           
echo $current_User->get_avatar_imgtag( $this->disp_params['profile_picture_size'], 'avatar', 'middle' );
        }

        if(
$this->get_param('greeting_show') )
        {    
// Display greeting text
           
$user_login = $current_User->get_identity_link( array( 'link_text' => 'name', 'display_bubbletip' => false ) );
            echo
' <strong class="greeting">'.str_replace( '$login$', $user_login, $this->get_param('greeting_text') ).'</strong>';
        }

        if(
$this->get_param('group_show') )
        {    
// Display user group
           
$user_Group = $current_User->get_Group();
            echo
'<p class="user_group">'
               
.str_replace( '$group$', $user_Group->get( 'name' ), $this->get_param('group_text') )
                .
'</p>';
        }

        if(
$this->get_param('level_show') )
        {    
// Display user group
           
echo '<p class="user_level">'
               
.str_replace( '$level$', $current_User->get( 'level' ), $this->get_param('level_text') )
                .
'</p>';
        }

        echo
$this->disp_params['block_body_end'];

        echo
$this->disp_params['block_end'];

        return
true;
    }


   
/**
     * Maybe be overriden by some widgets, depending on what THEY depend on..
     *
     * @return array of keys this widget depends on
     */
   
function get_cache_keys()
    {
        global
$Collection, $Blog, $current_User;

       
$cache_keys = array(
               
'wi_ID'       => $this->ID, // Have the widget settings changed ?
               
'set_coll_ID' => $Blog->ID, // Have the settings of the blog changed ? (ex: new owner, new skin)
               
'user_ID'     => ( is_logged_in() ? $current_User->ID : 0 ), // Has the current User changed?
           
);

        return
$cache_keys;
    }
}

?>