Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Core/src/Model/Behavior/AliasableBehavior.php
<?php

namespace Croogo\Core\Model\Behavior;

use
Cake\ORM\Behavior;

/**
 * Aliasable Behavior
 *
 * Utility behavior to allow easy retrieval of records by id or its alias
 *
 * @package  Croogo.Croogo.Model.Behavior
 * @since    1.4
 * @author   Rachman Chavik <rchavik@xintesa.com>
 * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link     http://www.croogo.org
 */
class AliasableBehavior extends Behavior
{

    protected
$_defaultConfig = [
       
'id' => 'id',
       
'alias' => 'alias',
    ];

   
/**
     * _byIds
     *
     * @var array
     */
   
protected $_byIds = [];

   
/**
     * _byAlias
     *
     * @var array
     */
   
protected $_byAlias = [];

    public function
initialize(array $config)
    {
       
$this->reload();
    }

   
/**
     * reload
     *
     * @return void
     */
   
public function reload()
    {
       
$this->_byIds = $this->_table
           
->find('list', [
               
'keyField' => $this->getConfig('id'),
               
'valueField' => $this->getConfig('alias'),
            ])
            ->
where([
               
$this->_table->aliasField($this->getConfig('alias')) . ' !=' => '',
            ])
            ->
toArray();
       
$this->_byAlias = array_flip($this->_byIds);
    }

   
/**
     * byId
     *
     * @param int $id
     * @return bool
     */
   
public function byId($id)
    {
        if (!empty(
$this->_byIds[$id])) {
            return
$this->_byIds[$id];
        }

        return
false;
    }

   
/**
     * byAlias
     *
     * @param string $alias
     * @return bool
     */
   
public function byAlias($alias)
    {
        if (!empty(
$this->_byAlias[$alias])) {
            return
$this->_byAlias[$alias];
        }

        return
false;
    }

   
/**
     * listById
     *
     * @return string
     */
   
public function listById()
    {
        return
$this->_byIds;
    }

   
/**
     * listByAlias
     *
     * @return array
     */
   
public function listByAlias()
    {
        return
$this->_byAlias;
    }
}