diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1432af75bbb224b56f0dd396091815b31cf90fd1..75c56652058a7033cd5808c5db8e6109ddd06789 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,4 +19,5 @@ cache: update-satis: stage: publish script: - - update-satis + - curl https://gest.unicaen.fr/packagist/update + diff --git a/config/module.config.php b/config/module.config.php index 1847f0a2a79b721b04281c658e787314de1ec38f..44c707f89a9496a9fcbb094a7a8c215a88bebef5 100755 --- a/config/module.config.php +++ b/config/module.config.php @@ -3,13 +3,14 @@ namespace UnicaenOracle; use Doctrine\DBAL\Driver\OCI8\Driver as OCI8; -use UnicaenOracle\ORM\Query\Functions\PasHistorise; use UnicaenOracle\Controller\Factory\IndexControllerFactory; use UnicaenOracle\Controller\IndexController; use UnicaenOracle\DBAL\Event\Listeners\OracleSessionInit; use UnicaenOracle\ORM\Query\Functions\Chr; use UnicaenOracle\ORM\Query\Functions\CompriseEntre; use UnicaenOracle\ORM\Query\Functions\Convert; +use UnicaenOracle\ORM\Query\Functions\PasHistorise; +use UnicaenOracle\ORM\Query\Functions\RegexpCount; use UnicaenOracle\ORM\Query\Functions\Replace; use UnicaenOracle\Service\DataService; use UnicaenOracle\Service\SchemaService; @@ -27,6 +28,7 @@ return [ 'CHR' => Chr::class, 'CONVERT' => Convert::class, 'REPLACE' => Replace::class, + 'REGEXP_COUNT' => RegexpCount::class, // fonctions du package PL/SQL "UNICAEN_ORACLE" (cf. "../data/package.sql") 'compriseEntre' => CompriseEntre::class, diff --git a/src/UnicaenOracle/ORM/Query/Functions/RegexpCount.php b/src/UnicaenOracle/ORM/Query/Functions/RegexpCount.php new file mode 100644 index 0000000000000000000000000000000000000000..f97f1487aaf66d25bda8cc96a106906268a82cde --- /dev/null +++ b/src/UnicaenOracle/ORM/Query/Functions/RegexpCount.php @@ -0,0 +1,35 @@ +<?php + +namespace UnicaenOracle\ORM\Query\Functions; + +use Doctrine\ORM\Query\Lexer; +use Doctrine\ORM\Query\AST\Functions\FunctionNode; +use Doctrine\ORM\Query\Parser; +use Doctrine\ORM\Query\SqlWalker; + +/** + * Class RegexpCount + * @see https://stackoverflow.com/questions/32052563/doctrine-and-oracle-regexp-like + */ +class RegexpCount extends FunctionNode +{ + public $field; + public $posixPattern; + + public function parse(Parser $parser) + { + $parser->match(Lexer::T_IDENTIFIER); + $parser->match(Lexer::T_OPEN_PARENTHESIS); + $this->field = $parser->StringPrimary(); + $parser->match(Lexer::T_COMMA); + $this->posixPattern = $parser->StringPrimary(); + $parser->match(Lexer::T_CLOSE_PARENTHESIS); + } + + public function getSql(SqlWalker $sqlWalker) + { + return sprintf('REGEXP_COUNT(%s, %s)', + $this->field->dispatch($sqlWalker), + $this->posixPattern->dispatch($sqlWalker)); + } +} \ No newline at end of file