Source of file HasOneEdit.php
Size: 2,184 Bytes - Last Modified: 2021-12-23T10:38:16+00:00
/var/www/docs.ssmods.com/process/src/src/HasOneEdit.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | <?php namespace SGN\HasOneEdit; use SilverStripe\ORM\DataObject; /** * Class HasOneEdit * @package SGN\HasOneEdit */ class HasOneEdit { /** * */ const FIELD_SEPARATOR = '-_1_-'; /** * */ const SUPPORTED_SEPARATORS = [ self::FIELD_SEPARATOR, ':', '/', ]; /** * @param \SilverStripe\Forms\FormField|string $field * @return string[] Array of [relation name, field on relation] */ public static function getRelationNameAndField($field) { if (!is_string($field)) { $field = $field->getName(); } return explode(static::FIELD_SEPARATOR, $field, 2); } /** * @param \SilverStripe\ORM\DataObject $parent * @param string $relationName * @return \SilverStripe\ORM\DataObject|null */ public static function getRelationRecord(DataObject $parent, $relationName) { return array_key_exists($relationName, $parent->hasOne()) || array_key_exists($relationName, $parent->belongsTo(false)) ? $parent->getComponent($relationName) : null; } /** * @param \SilverStripe\Forms\FormField|string $field * @return bool */ public static function isHasOneEditField($field) { if (!is_string($field)) { $field = $field->getName(); } return boolval(strpos($field, static::FIELD_SEPARATOR)); } /** * @param string $fieldName * @return string */ public static function normaliseSeparator($fieldName) { return str_replace(static::SUPPORTED_SEPARATORS, static::FIELD_SEPARATOR, $fieldName); } /** * @param \SilverStripe\ORM\DataObject $parent * @param string $relation * @return \SilverStripe\Forms\FieldList|\SilverStripe\Forms\FormField[] */ public static function getInlineFields(DataObject $parent, $relation) { /** @var \SilverStripe\ORM\DataObject|\SGN\HasOneEdit\ProvidesHasOneInlineFields $relatedObject */ $relatedObject = static::getRelationRecord($parent, $relation); return $relatedObject->provideHasOneInlineFields($relation); } } |