/** * Alters the module descriptor. * * @param array $descriptor Descriptor of the module to index. * * @return array The altered descriptor. */ protected function alter_descriptor(array $descriptor) { $id = $descriptor[Descriptor::ID]; $namespace = $descriptor[Descriptor::NS]; # models and active records foreach ($descriptor[Descriptor::MODELS] as $model_id => &$definition) { if (!is_array($definition)) { throw new \InvalidArgumentException(\ICanBoogie\format('Model definition must be array, given: %value.', ['value' => $definition])); } $basename = $id; $separator_position = strrpos($basename, '.'); if ($separator_position) { $basename = substr($basename, $separator_position + 1); } if (empty($definition[Model::NAME])) { $definition[Model::NAME] = self::format_model_name($id, $model_id); } if (empty($definition[Model::ACTIVERECORD_CLASS])) { $definition[Model::ACTIVERECORD_CLASS] = $namespace . '\\' . \ICanBoogie\camelize(\ICanBoogie\singularize($model_id == 'primary' ? $basename : $model_id)); } if (empty($definition[Model::CLASSNAME])) { $definition[Model::CLASSNAME] = $definition[Model::ACTIVERECORD_CLASS] . 'Model'; } } return $descriptor; }
/** * @inheritdoc */ protected function resolve_property_name($related) { return \ICanBoogie\singularize(parent::resolve_property_name($related)); }
/** * Ensures the table has an alias, make one otherwise. */ protected function ensure_has_alias() { if ($this->alias) { return; } $alias = $this->unprefixed_name; $pos = strrpos($alias, '_'); if ($pos !== false) { $alias = substr($alias, $pos + 1); } $this->alias = \ICanBoogie\singularize($alias); }