Passed
Push — master ( b847d6...d6d54c )
by Michael
09:34 queued 05:00
created

class/Breadcrumb.php (1 issue)

Labels
Severity
1
<?php namespace XoopsModules\Pedigree;
2
3
/*
4
 You may not change or alter any portion of this comment or credits
5
 of supporting developers from this source code or any supporting source code
6
 which is considered copyrighted (c) material of the original comment or credit authors.
7
8
 This program is distributed in the hope that it will be useful,
9
 but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
 */
12
/**
13
 * Pedigree\Breadcrumb Class
14
 *
15
 * @copyright   {@link https://xoops.org/ XOOPS Project}
16
 * @license     {@link http://www.fsf.org/copyleft/gpl.html GNU public license}
17
 * @author      lucio <[email protected]>
18
 * @package     Pedigree
19
 * @since       3.23
20
 *
21
 * Example:
22
 * $breadcrumb = new Pedigree\Breadcrumb();
23
 * $breadcrumb->addLink( 'bread 1', 'index1.php' );
24
 * $breadcrumb->addLink( 'bread 2', '' );
25
 * $breadcrumb->addLink( 'bread 3', 'index3.php' );
26
 * echo $breadcrumb->render();
27
 */
28
29
use XoopsModules\Pedigree;
0 ignored issues
show
This use statement conflicts with another class in this namespace, XoopsModules\Pedigree\Pedigree. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
30
31
defined('XOOPS_ROOT_PATH') || die('Restricted access');
32
33
/**
34
 * Class Pedigree\Breadcrumb
35
 */
36
class Breadcrumb
37
{
38
    public $dirname;
39
    private $bread = [];
40
41
    /**
42
     *
43
     */
44
    public function __construct()
45
    {
46
        $this->dirname = basename(dirname(__DIR__));
47
    }
48
49
    /**
50
     * Add link to breadcrumb
51
     *
52
     * @param string $title
53
     * @param string $link
54
     */
55
    public function addLink($title = '', $link = '')
56
    {
57
        if ('' !== $title && '' !== $link) {
58
            $this->bread[] = [
59
                'link'  => $link,
60
                'title' => $title
61
            ];
62
        }
63
64
    }
65
66
    /**
67
     * Render Pedigree BreadCrumb
68
     *
69
     */
70
    public function render()
71
    {
72
        if (!isset($GLOBALS['xoTheme']) || !is_object($GLOBALS['xoTheme'])) {
73
            require_once $GLOBALS['xoops']->path('class/theme.php');
74
            $GLOBALS['xoTheme'] = new \xos_opal_Theme();
75
        }
76
77
        require_once $GLOBALS['xoops']->path('class/template.php');
78
        $breadcrumbTpl = new \XoopsTpl();
79
        $breadcrumbTpl->assign('breadcrumb', $this->bread);
80
        $html = $breadcrumbTpl->fetch('db:' . $this->dirname . '_common_breadcrumb.tpl');
81
        unset($breadcrumbTpl);
82
83
        return $html;
84
    }
85
}
86