CasperSecurity

Current Path : /usr/share/phpmyadmin/libraries/classes/Navigation/Nodes/
Upload File :
Current File : //usr/share/phpmyadmin/libraries/classes/Navigation/Nodes/NodeColumn.php

<?php
/**
 * Functionality for the navigation tree
 */

declare(strict_types=1);

namespace PhpMyAdmin\Navigation\Nodes;

use PhpMyAdmin\Html\Generator;
use PhpMyAdmin\Url;
use function strlen;
use function substr;

/**
 * Represents a columns node in the navigation tree
 */
class NodeColumn extends Node
{
    /**
     * Initialises the class
     *
     * @param array $item    array to identify the column node
     * @param int   $type    Type of node, may be one of CONTAINER or OBJECT
     * @param bool  $isGroup Whether this object has been created
     *                       while grouping nodes
     */
    public function __construct($item, $type = Node::OBJECT, $isGroup = false)
    {
        $this->displayName = $this->getDisplayName($item);

        parent::__construct($item['name'], $type, $isGroup);
        $this->icon = Generator::getImage($this->getColumnIcon($item['key']), __('Column'));
        $this->links = [
            'text' => Url::getFromRoute('/table/structure/change', [
                'server' => $GLOBALS['server'],
                'change_column' => 1,
            ]) . '&amp;db=%3$s&amp;table=%2$s&amp;field=%1$s',
            'icon' => Url::getFromRoute('/table/structure/change', [
                'server' => $GLOBALS['server'],
                'change_column' => 1,
            ]) . '&amp;db=%3$s&amp;table=%2$s&amp;field=%1$s',
            'title' => __('Structure'),
        ];
    }

    /**
     * Get customized Icon for columns in navigation tree
     *
     * @param string $key The key type - (primary, foreign etc.)
     *
     * @return string Icon name for required key.
     */
    private function getColumnIcon($key)
    {
        switch ($key) {
            case 'PRI':
                $retval = 'b_primary';
                break;
            case 'UNI':
                $retval = 'bd_primary';
                break;
            default:
                $retval = 'pause';
                break;
        }

        return $retval;
    }

    /**
     * Get displayable name for navigation tree (key_type, data_type, default)
     *
     * @param array<string, mixed> $item Item is array containing required info
     *
     * @return string Display name for navigation tree
     */
    private function getDisplayName($item)
    {
        $retval = $item['name'];
        $flag = 0;
        foreach ($item as $key => $value) {
            if (empty($value) || $key === 'name') {
                continue;
            }

            $flag == 0 ? $retval .= ' (' : $retval .= ', ';
            $flag = 1;
            $retval .= $this->getTruncateValue($key, $value);
        }

        return $retval . ')';
    }

    /**
     * Get truncated value for display in node column view
     *
     * @param string $key   key to identify default,datatype etc
     * @param string $value value corresponding to key
     *
     * @return string truncated value
     */
    public function getTruncateValue($key, $value)
    {
        $retval = '';

        switch ($key) {
            case 'default':
                strlen($value) > 6 ?
                    $retval .= substr($value, 0, 6) . '...' :
                    $retval = $value;
                break;
            default:
                $retval = $value;
                break;
        }

        return $retval;
    }
}
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY