. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Repositories; use Espo\ORM\Entity; use Espo\Core\Utils\Util; use Espo\Core\Repositories\Database; /** * @extends Database<\Espo\Entities\Webhook> */ class Webhook extends Database { protected function beforeSave(Entity $entity, array $options = []) { if ($entity->isNew()) { $this->fillSecretKey($entity); } parent::beforeSave($entity); $this->processSettingAdditionalFields($entity); } protected function fillSecretKey(Entity $entity): void { $secretKey = Util::generateSecretKey(); $entity->set('secretKey', $secretKey); } protected function processSettingAdditionalFields(Entity $entity): void { $event = $entity->get('event'); if (!$event) { return; } $arr = explode('.', $event); if (count($arr) !== 2 && count($arr) !== 3) { return; } $entityType = $arr[0]; $type = $arr[1]; $entity->set('entityType', $entityType); $entity->set('type', $type); $field = null; if (!$entityType) { return; } if ($type === 'fieldUpdate') { if (count($arr) == 3) { $field = $arr[2]; } $entity->set('field', $field); } else { $entity->set('field', null); } } }