. * * 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\Tools\Stream; use Espo\Core\Utils\Config\ApplicationConfig; use Espo\Entities\Note; /** * @internal */ class NoteUtil { public function __construct(private ApplicationConfig $applicationConfig) {} public function handlePostText(Note $entity): void { $post = $entity->getPost(); if (!$post) { return; } $siteUrl = $this->applicationConfig->getSiteUrl(); // PhpStorm inspection highlights RegExpRedundantEscape by a mistake. /** @noinspection RegExpRedundantEscape */ $regexp = '/(\s|^)' . preg_quote($siteUrl, '/') . '(\/portal|\/portal\/[a-zA-Z0-9]*)?\/#([A-Z][a-zA-Z0-9]*)\/view\/([a-zA-Z0-9-]*)/'; $post = preg_replace($regexp, '\1[\3/\4](#\3/view/\4)', $post); $entity->setPost($post); } }