e107inc/e107

View on GitHub
e107_plugins/siteinfo/e_shortcode.php

Summary

Maintainability
A
0 mins
Test Coverage
C
77%
<?php
/*
* Copyright (C) 2008-2013 e107 Inc (e107.org), Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt)
*
* Siteinfo shortcode batch
*/
if (!defined('e107_INIT')) { exit; }

class siteinfo_shortcodes // must match the folder name of the plugin. 
{
    function sc_sitebutton($parm=null)
    {
        
        if(!empty($_POST['sitebutton']) && !empty($_POST['ajax_used']))
        {
            $path = e107::getParser()->replaceConstants($_POST['sitebutton']);
        }
        else 
        {
            $path = (strpos(SITEBUTTON, 'http:') !== false ? SITEBUTTON : e_IMAGE.SITEBUTTON);
        }

        if(varset($parm['type']) == 'email' || $parm == 'email') // (retain {}  constants )
        {
            $h = !empty($parm['h']) ? $parm['h'] : 100;

            $path = e107::getConfig()->get('sitebutton');

            if(empty($path))
            {
                return false;
            }

            $realPath = e107::getParser()->replaceConstants($path);

            if(defined('e_MEDIA') && is_writable(e_MEDIA."temp/") && ($resized = e107::getMedia()->resizeImage($path, e_MEDIA."temp/".basename($realPath),'h='.$h)))
            {
                $path = e107::getParser()->createConstants($resized);
            }
        }

        if(!empty($path))
        {
            return '<a href="'.SITEURL.'" class="sitebutton"><img src="'.$path.'" alt="'.SITENAME.'" /></a>';
        }
    }

    /**
     * YYYY is automatically replaced with the current year.
     * @param array $parm 'class' to set the class of links.
     * @return string
     */
    function sc_sitedisclaimer($parm=array())
    {
        $class = !empty($parm['class']) ? " class='".$parm['class']."'" : '';

        $default = "Proudly powered by <a".$class." href='https://e107.org'>e107 Bootstrap CMS</a> which is <a".$class." href='".e_HTTP."credits.php'>released</a> under the terms of the GNU GPL License.";

        $text = deftrue('SITEDISCLAIMER',$default);

        $text = str_replace("YYYY", date('Y'), $text);

        return e107::getParser()->toHTML($text, true, 'SUMMARY');
    }

    
    function sc_siteurl($parm='')
    {
        if(strlen(deftrue('SITEURL')) < 3 ) //fixes CLI/cron
        {
            return e107::getPref('siteurl');
        }

        return SITEURL;    
    }
    

    function sc_sitename($parm='')
    {
        return ($parm == 'link') ? "<a href='".SITEURL."' title='".SITENAME."'>".SITENAME."</a>" : SITENAME;
    }

    function sc_sitedescription()
    {
        global $pref;
        return SITEDESCRIPTION.(defined('THEME_DESCRIPTION') && $pref['displaythemeinfo'] ? THEME_DESCRIPTION : '');
    }

    function sc_sitetag()
    {
        return SITETAG;
    }
    
    function sc_sitelogo($parm=null)
    {
        return $this->sc_logo($parm);    
    }

    function sc_logo($parm = array())
    {
        if(is_string($parm))
        {
            parse_str(vartrue($parm),$parm);        // Optional {LOGO=file=file_name} or {LOGO=link=url} or {LOGO=file=file_name&link=url}
        }
        // Paths to image file, link are relative to site base
        $tp = e107::getParser();

        $logopref = e107::getConfig()->get('sitelogo');
        $logop = $tp->replaceConstants($logopref);

        if(isset($parm['login'])) // Login Page. BC fix.
        {

            if(!empty($logopref) && is_readable($logop))
            {

                $logo = $tp->replaceConstants($logopref,'abs');
                $path = $tp->replaceConstants($logopref);
            }
            elseif(is_readable(THEME."images/login_logo.png"))
            {

                $logo = THEME_ABS."images/login_logo.png";    
                $path = THEME."images/login_logo.png";    
            }
            else
            {


                $logo = "{e_IMAGE}logoHD.png";
                $path = e_IMAGE."logoHD.png";
                if(empty($parm['w']))
                {
                    $parm['w'] = 330;
                }
            }    
        }
        else 
        {
            
            if(!empty($logopref) && is_readable($logop))
            {
                $logo = $logopref; 
                $path = $tp->replaceConstants($logopref);
            }
            elseif (isset($file) && $file && is_readable($file))
            {
                $logo = e_HTTP.$file;                        // HTML path
                $path = e_BASE.$file;                        // PHP path
            }
            else if (is_readable(THEME.'images/e_logo.png'))
            {
                $logo = THEME_ABS.'images/e_logo.png';        // HTML path
                $path = THEME.'images/e_logo.png';            // PHP path
            }
            elseif(varset($parm['fallback']) == 'sitename') // fallback to 
            {
                return $this->sc_sitename($parm);     
            }
            else
            {
                $logo = '{e_IMAGE}logoHD.png';                // HTML path
                $path = e_IMAGE.'logoHD.png';                    // PHP path
            }
            
        }

        $dimensions = array();
        
        if((isset($parm['w']) || isset($parm['h'])))
        {

            $dimensions[0] = $parm['w'] ?? 0;
            $dimensions[1] = !empty($parm['h']) ? $parm['h'] : 0;

            if(empty($parm['noresize']) && !empty($logopref)) // resize by default - avoiding large files.
            {
                 $logo = $logopref;
            }
        }
        elseif(!deftrue('BOOTSTRAP'))
        {
            $dimensions = getimagesize($path);
        }

        $opts = array('alt'=>SITENAME, 'class'=>'logo img-responsive img-fluid');

        if(!empty($dimensions[0]))
        {
            $opts['w'] = $dimensions[0];

        }

        if(!empty($dimensions[1]))
        {
            $opts['h'] = $dimensions[1];
        }

    //    $imageStyle = (empty($dimensions)) ? '' : " style='width: ".$dimensions[0]."px; height: ".$dimensions[1]."px' ";
    //    $image = "<img class='logo img-responsive' src='".$logo."' ".$imageStyle." alt='".SITENAME."' />\n";

        $image = $tp->toImage($logo,$opts);

        if (isset($link) && $link)
        {
            if ($link == 'index')
            {
                $image = "<a href='".e_HTTP."index.php'>".$image."</a>";
            }
            else
            {
                $image = "<a href='".e_HTTP.$link."'>".$image."</a>";
            }
        }

        return $image;
    }

    function sc_theme_disclaimer($parm=null)
    {
        $pref = e107::getPref();
        return (defined('THEME_DISCLAIMER') && $pref['displaythemeinfo'] ? THEME_DISCLAIMER : '');
    }

}