0
0
mirror of https://github.com/salesagility/SuiteCRM.git synced 2024-11-24 08:36:48 +00:00
salesagility_SuiteCRM/Api/V8/JsonApi/Helper/AttributeObjectHelper.php
2023-07-18 15:53:08 +01:00

69 lines
1.7 KiB
PHP

<?php
namespace Api\V8\JsonApi\Helper;
use Api\V8\BeanDecorator\BeanManager;
use Api\V8\JsonApi\Response\AttributeResponse;
#[\AllowDynamicProperties]
class AttributeObjectHelper
{
/**
* @var BeanManager
*/
protected $beanManager;
/**
* @param BeanManager $beanManager
*/
public function __construct(BeanManager $beanManager)
{
$this->beanManager = $beanManager;
}
/**
* @param \SugarBean $bean
* @param array|null $fields
*
* @return AttributeResponse
*/
public function getAttributes(\SugarBean $bean, $fields = null)
{
$bean->fixUpFormatting();
$allowedField = [];
$fieldsToParse = $fields;
if (empty($fields)) {
$fieldsToParse = array_keys($bean->field_defs);
}
foreach ($fieldsToParse ?? [] as $index => $field) {
$isSensitive = isTrue($bean->field_defs[$field]['sensitive'] ?? false);
$notApiVisible = isFalse($bean->field_defs[$field]['api-visible'] ?? true);
if ($isSensitive || $notApiVisible){
continue;
}
$allowedField[$index] = $field;
}
// using the ISO 8601 format for dates
$attributes = array_map(function ($value) {
return is_string($value)
? (\DateTime::createFromFormat('Y-m-d H:i:s', $value)
? date(\DateTime::ATOM, strtotime($value))
: $value)
: $value;
}, $bean->toArray());
if ($allowedField !== null) {
$attributes = array_intersect_key($attributes, array_flip($allowedField));
}
unset($attributes['id']);
return new AttributeResponse($attributes);
}
}