FOF30\Model\DataModel\Behaviour\Assets::onAfterBind PHP Метод

onAfterBind() публичный Метод

public onAfterBind ( DataModel &$model, &$src )
$model FOF30\Model\DataModel
    public function onAfterBind(DataModel &$model, &$src)
    {
        if (!$model->isAssetsTracked()) {
            return true;
        }
        // Bind the rules.
        if (isset($src['rules']) && is_array($src['rules'])) {
            // We have to manually remove any empty value, since they will be converted to int,
            // and "Inherited" values will become "Denied". Joomla is doing this manually, too.
            $rules = array();
            foreach ($src['rules'] as $action => $ids) {
                // Build the rules array.
                $rules[$action] = array();
                foreach ($ids as $id => $p) {
                    if ($p !== '') {
                        $rules[$action][$id] = $p == '1' || $p == 'true' ? true : false;
                    }
                }
            }
            $model->setRules($rules);
        }
        return true;
    }

Usage Example

Пример #1
0
 /**
  * @group           Behaviour
  * @group           AssetsOnAfterBind
  * @covers          FOF30\Model\DataModel\Behaviour\Assets::onAfterBind
  * @dataProvider    AssetsDataprovider::getTestOnAfterBind
  */
 public function testOnAfterBind($test, $check)
 {
     $msg = 'Own::onAfterBuildQuery %s - Case: ' . $check['case'];
     $config = array('idFieldName' => $test['tableid'], 'tableName' => $test['table']);
     $model = new DataModelStub(static::$container, $config);
     $dispatcher = $model->getBehavioursDispatcher();
     $behavior = new Assets($dispatcher);
     $model->setAssetsTracked($test['track']);
     if ($test['load']) {
         $model->find($test['load']);
     }
     $return = $behavior->onAfterBind($model, $test['bind']);
     $rules = $model->getRules();
     $this->assertTrue($return, sprintf($msg, 'Returned a wrong value'));
     $this->assertJsonStringEqualsJsonString($check['rules'], (string) $rules, sprintf($msg, 'Set rules wrong'));
 }