Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Settings/src/Model/Table/LanguagesTable.php
<?php

namespace Croogo\Settings\Model\Table;

use
Cake\ORM\Query;
use
Cake\ORM\RulesChecker;
use
Cake\Validation\Validator;
use
Croogo\Core\Model\Table\CroogoTable;

/**
 * Language
 *
 * @category Model
 * @package  Croogo.Settings.Model
 * @version  1.0
 * @author   Fahad Ibnay Heylaal <contact@fahad19.com>
 * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link     http://www.croogo.org
 */
class LanguagesTable extends CroogoTable
{

   
/**
     * Initialize
     */
   
public function initialize(array $config)
    {
       
$this->addBehavior('Croogo/Core.Trackable');
       
$this->addBehavior('ADmad/Sequence.Sequence', [
           
'order' => 'weight',
        ]);
       
$this->addBehavior('Search.Search');
       
$this->addBehavior('Timestamp');

       
$likeOptions = [
           
'before' => true,
           
'after' => true,
        ];
       
$this->searchManager()
            ->
add('title', 'Search.Like', $likeOptions)
            ->
add('alias', 'Search.Like', $likeOptions)
            ->
add('locale', 'Search.Like', $likeOptions);
    }

    public function
validationDefault(Validator $validator)
    {
       
$validator
           
->notBlank('title', __d('croogo', 'Title cannot be empty.'))
            ->
notBlank('native', __d('croogo', 'Native cannot be empty.'))
            ->
notBlank('alias', __d('croogo', 'Alias cannot be empty.'))
            ->
notBlank('locale', __d('croogo', 'Locale cannot be empty.'));

        return
$validator;
    }

    public function
buildRules(RulesChecker $rules)
    {
       
$rules
           
->add($rules->isUnique(
                [
'locale'],
               
__d('croogo', 'That locale is already taken')
            ))
            ->
add($rules->isUnique(
                [
'alias'],
               
__d('croogo', 'That alias is already taken')
            ));

        return
$rules;
    }

    public function
findActive(Query $query)
    {
       
$query
           
->select(['id', 'alias', 'locale'])
            ->
where(['status' => true])
            ->
formatResults(function ($results) {
               
$formatted = [];
                foreach (
$results as $row) {
                   
$formatted[$row->alias] = ['locale' => $row->locale];
                }

                return
$formatted;
            });

        return
$query;
    }
}