Your IP : 216.73.217.80


Current Path : /home/jlgagfroyt/www/administrator/components/com_vitabook/helpers/
Upload File :
Current File : /home/jlgagfroyt/www/administrator/components/com_vitabook/helpers/avatar.php

<?php
/**
 * @version     2.2.3
 * @package     com_vitabook
 * @copyright   Copyright (C) 2012. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @author      JoomVita - http://www.joomvita.com
 */

// No direct access
defined('_JEXEC') or die;

//Import filesystem libraries and component helper.
jimport('joomla.filesystem.file');
jimport('joomla.application.component.helper');

/**
 * Avatar helper.
 */
abstract class VitabookHelperAvatar
{
    public static $avatarSystems = array("COM_VITABOOK_CONFIG_AVATAR_OPTION_NO_AVATARS",
                                        "COM_VITABOOK_CONFIG_AVATAR_OPTION_VITABOOK_AVATARS",
                                        "COM_VITABOOK_CONFIG_AVATAR_OPTION_COMMUNITYBUILDER_AVATARS",
                                        "COM_VITABOOK_CONFIG_AVATAR_OPTION_KUNENA_AVATARS",
                                        "COM_VITABOOK_CONFIG_AVATAR_OPTION_JOMSOCIAL_AVATARS",
                                        "COM_VITABOOK_CONFIG_AVATAR_OPTION_GRAVATAR_AVATARS");


    /**
    * Method to get the avatar link for a message
    *   executes database query if necessary for avatar source, then proxies to getAvatarUrl method
    * @return link to avatar
    */
    public static function messageAvatar($message) {
        // Get avatar parameters
        $source = JComponentHelper::getParams('com_vitabook')->get('vbAvatar');
        // Get info from database
        if(!empty($message->jid))
        {
            switch ($source)
            {
                case 2:
                    //-- Community Builder's avatar system is used
                    $db = JFactory::getDBO();
                    $query = $db->getQuery(true);
                    $query->select('avatar');
                    $query->from('#__comprofiler');
                    $query->where('user_id = '.$message->jid);
                    $db->setQuery((string)$query);
                    $message->avatar = $db->loadResult();
                    break;
                case 3:
                    //-- Kunena's avatar system is used
                    $db = JFactory::getDBO();
                    $query = $db->getQuery(true);
                    $query->select('avatar');
                    $query->from('#__kunena_users');
                    $query->where('userid = '.$message->jid);
                    $db->setQuery((string)$query);
                    $message->avatar = $db->loadResult();
                    break;
                case 4:
                    //-- Jomsocial's avatar system is used
                    $db = JFactory::getDBO();
                    $query = $db->getQuery(true);
                    $query->select('avatar');
                    $query->from('#__community_users');
                    $query->where('userid = '.$message->jid);
                    $db->setQuery((string)$query);
                    $message->avatar = $db->loadResult();
                    break;
                default:
            }
        }
        // return img url
        return VitabookHelperAvatar::getAvatarUrl($message);
    }

    /**
     * Method to set the avatar join query (if necessary for an avatar source)
     * @param   object $query   JDatabase query object
     * @return  void
     */
    public static function setAvatarQuery(&$query)
    {
        $source = JComponentHelper::getParams('com_vitabook')->get('vbAvatar');

        if($source == 2)
        {
            $query->select('cb.avatar');
            $query->leftjoin('#__comprofiler AS cb ON m.jid = cb.user_id');
        }
        elseif($source == 3)
        {
            $query->select('k.avatar');
            $query->leftjoin('#__kunena_users AS k ON m.jid = k.userid');
        }
        elseif($source == 4)
        {
            $query->select('js.avatar');
            $query->leftjoin('#__community_users AS js ON m.jid = js.userid');
        }
    }


   /**
    * Method to get the avatar src url for a message
    * @param    object  $message    VitaBook message object
    * @return   string  avatar img src url
    */
    public static function getAvatarUrl($message)
    {
        $source = JComponentHelper::getParams('com_vitabook')->get('vbAvatar');
        
        // Default avatar
        $defaultAvatar = JComponentHelper::getParams('com_vitabook')->get('defaultAvatar', 'default1.png');      

        // no avatar
        if(empty($source))
            return false;

        // return default avatar for guests unless gravatar is enabled
        if(($message->jid == 0) && ($source != 5)){
            return JUri::root().'media/com_vitabook/images/avatars/default/'.$defaultAvatar;
        }

        // determine links for supported avatar systems
        switch ($source)
        {
            case 1:
                // Vitabook built-in avatar system
                $path = JPATH_SITE.'/media/com_vitabook/images/avatars/'.$message->jid.'.png';
                if(JFile::exists($path)) {
                    //-- ?filemtime() is workaround for browser-cache
                    return JUri::root().'media/com_vitabook/images/avatars/'.$message->jid.'.png?'.filemtime($path);
                }
                break;
            case 2:
                // Community Builder's avatar system
                if(!empty($message->avatar)){
                    return JUri::root().'images/comprofiler/'.$message->avatar;
                }
                break;
            case 3:
                // Kunena's avatar system
                if(!empty($message->avatar)){
                    return JUri::root().'media/kunena/avatars/'.$message->avatar;
                }
                break;
        case 4:
                // jomsocial avatar service
                if(!empty($message->avatar)){
                    return JUri::root().$message->avatar;
                }
        break;
        case 5:
                // gravatar avatar service
                return 'http://www.gravatar.com/avatar/'.md5(strtolower(trim($message->email))).'?d='.urlencode( JUri::root().'media/com_vitabook/images/avatars/default/'.$defaultAvatar );
                break;
            default:
                return false;
        }
        // return default avatar when no avatar was found
        return JUri::root().'media/com_vitabook/images/avatars/default/'.$defaultAvatar;
    }

   /**
    * Method to check if the avatar source is available
    * @source   avatar source
    * @return   boolean
    */    
    public static function checkAvatarSystem($source)
    {
        switch ($source)
        {
            case 0:
            case 1:
            case 5:
                return true;
            case 2:
                return self::checkDbForAvatarSystem('comprofiler');
            case 3:
                return self::checkDbForAvatarSystem('com_kunena');
            case 4:
                return self::checkDbForAvatarSystem('com_community');
            default:
        }
        return false;
    }

    public static function checkDbForAvatarSystem($name)
    {
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('enabled');
        $query->from('#__extensions');
        $query->where($db->quoteName('name') . ' = ' . $db->quote($name));
        $db->setQuery($query);
        $installed = $db->loadResult();

        if($installed && $installed == 1)
        {
            return true;
        }
        return false;
    }


    public static function getAvailableAvatarSystems()
    {
        $availableAvatarSystems = array();
        foreach (self::$avatarSystems as $nr => $name) {
            if(self::checkAvatarSystem($nr)){
                $availableAvatarSystems[$nr] = $name;
            }
        }
        return $availableAvatarSystems;
    }
}