Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Config/DatabaseLoader.php
Строк: 130
<?php
namespace ConcreteCoreConfig;

use 
ConcreteCoreDatabaseDriverPDOStatement;
use 
Database;

class 
DatabaseLoader implements LoaderInterface
{

    
/**
     * Load the given configuration group. Because it's the database, we ignore the environment.
     *
     * @param  string $environment
     * @param  string $group
     * @param  string $namespace
     * @return array
     */
    
public function load($environment$group$namespace null)
    {
        
$result = array();

        
$db Database::getActiveConnection();
        
$query $db->createQueryBuilder();

        
$query
            
->select('configValue''configItem')
            ->
from('Config''c')
            ->
where('configGroup = ?')
            ->
setParameter(0$group);

        if (
$namespace) {
            
$query->andWhere('configNamespace = ?')->setParameter(1$namespace);
        } else {
            
$query->andWhere('configNamespace = ? OR configNamespace IS NULL')->setParameter(1'');
        }

        
$results $query->execute();

        while (
$row $results->fetch()) {
            
array_set($result$row['configItem'], $row['configValue']);
        }

        return 
$result;
    }

    
/**
     * Determine if the given configuration group exists.
     *
     * @param  string $group
     * @param  string $namespace
     * @return bool
     */
    
public function exists($group$namespace null)
    {
        
$db Database::getActiveConnection();
        
$query $db->createQueryBuilder();

        
$query
            
->select('count(configGroup)')
            ->
from('Config''c')
            ->
where('configGroup = ?')
            ->
setParameter(0$group)
            ->
setMaxResults(1);

        if (
$namespace) {
            
$query->andWhere('configNamespace = ?')->setParameter(1$namespace);
        } else {
            
$query->andWhere('configNamespace = ? OR configNamespace IS NULL')->setParameter(1'');
        }
        
$row $query->execute()->fetch();
        
$count array_shift($row);
        return !!
$count;
    }

    
/**
     * Add a new namespace to the loader.
     *
     * @param  string $namespace
     * @param  string $hint
     * @return void
     */
    
public function addNamespace($namespace$hint)
    {
        
// This is unused.
    
}

    
/**
     * Returns all registered namespaces with the config
     * loader.
     *
     * @return array
     */
    
public function getNamespaces()
    {
        
$db Database::getActiveConnection();

        
/** @var PDOStatement $results */
        
$results $db->createQueryBuilder()
            ->
select('configNamespace')
            ->
from('Config''c')
            ->
where('configNamespace != ""')
            ->
groupBy('configNamespace')
            ->
execute();

        return 
array_map('array_shift'$results->fetchAll());
    }

    
/**
     * Apply any cascades to an array of package options.
     *
     * @param  string $environment
     * @param  string $package
     * @param  string $group
     * @param  array  $items
     * @return array
     */
    
public function cascadePackage($environment$package$group$items)
    {
        return 
$items;
    }

    public function 
clearNamespace($namespace)
    {
        if (
$namespace) {
            
$db Database::getActiveConnection();

            
$query $db->createQueryBuilder();
            
$query
                
->delete('Config''c')
                ->
where($query->expr()->comparison('configNamespace''='$query->expr()->literal($namespace)));

        }
    }

}
Онлайн: 0
Реклама