/**
* Returns a list of models related to `Model`, or a list of models related
* to this model, but of a certain type. Overwritten to return all/original/alternate relations
*
* @param string $name A type of model relation.
* @param string $type Specify all, original, alternate
* @return array An array of relation types.
*/
public static function relations($name = null, $type = 'original')
{
if ($type == 'all' || $type == 'alternate') {
$self = static::_object();
if ($type == 'all') {
$relations = array_merge($self->_relations, $self->_alternateRelations);
} else {
$relations = $self->_alternateRelations;
}
if (!$name) {
return $relations;
}
if (isset($relations[$name])) {
return $relations[$name];
}
if (isset($self->_relationTypes[$name])) {
return array_keys(array_filter($relations, function ($i) use($name) {
return $i->data('type') == $name;
}));
}
}
return parent::relations($name);
}