Skip to content
Snippets Groups Projects
Select Git revision
  • 73815a4224dfb8ecf7a10db694cabdc9ef79c6fe
  • master default protected
  • ll-workflow
  • alc-scindage-donnees-pj
  • b24
  • FJ_LL_Tbl_Contrat
  • alc-docker-node
  • ll-apiplatform
  • php84
  • ll-rgpd
  • b23
  • alc-filtre-type-intervenant
  • ll-sans-mdb5
  • formules-ancienne-infra
  • ll-formules
  • alc-intervenant-dmep
  • ll-suppr-v_vol-s
  • b20
  • ll-postgresql
  • b23.0.1
  • b22
  • 24.8
  • 24.7
  • 24.6
  • 24.5
  • 24.4
  • 24.3
  • 24.2
  • 24.1
  • 24.0
  • 23.15
  • 24.0-beta19
  • 24.0-beta18
  • 24.0-beta17
  • 24.0-beta16
  • 24.0-beta15
  • 24.0-beta14
  • 24.0-beta13
  • 23.14
  • 24.0-beta12
  • 24.0-beta11
41 results

ServiceAwareTrait.php

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    PasHistorise.php 1.92 KiB
    <?php
    
    namespace UnicaenOracle\ORM\Query\Functions;
    
    use Doctrine\ORM\Query\AST\Functions\FunctionNode;
    use Doctrine\ORM\Query\Lexer;
    use Doctrine\ORM\Query\Parser;
    use Doctrine\ORM\Query\SqlWalker;
    
    /**
     * Fonction DQL maison "pasHistorise()".
     * 
     * NB: le format DQL attendu est "pasHistorise(EntityExpression)". 
     * Exemples :
     * <pre>
     * $qb->andWhere("1 = pasHistorise(sr)")
     * $qb->andWhere("1 = pasHistorise(int.serviceReferentiel)")
     * </pre>
     * 
     * Fait appel à la fonction Oracle UNICAEN_ORACLE.COMPRISE_ENTRE().
     */
    class PasHistorise extends FunctionNode
    {
        public $alias;
        public $dateObservation;
    
        /**
         * Parsing.
         * 
         * NB: le format DQL attendu est "pasHistorise(EntityExpression)".
         * Exemple :
         *  pasHistorise(s)
         *  pasHistorise(int.serviceReferentiel)
         * 
         * @param Parser $parser
         */
        public function parse(Parser $parser)
        {
            $lexer = $parser->getLexer();
            $parser->match(Lexer::T_IDENTIFIER);
            $parser->match(Lexer::T_OPEN_PARENTHESIS);
            $this->alias = $parser->EntityExpression();
            if(Lexer::T_COMMA === $lexer->lookahead['type']){
                $parser->match(Lexer::T_COMMA);
                $this->dateObservation = $parser->ArithmeticPrimary();
            }
            $parser->match(Lexer::T_CLOSE_PARENTHESIS);
        }
    
        /**
         * Génère le code SQL.
         * 
         * @param SqlWalker $sqlWalker
         * @return string
         */
        public function getSql(SqlWalker $sqlWalker)
        {
            $expr1 = clone($this->alias);
            $expr2 = clone($this->alias);
            
            $expr1->field = 'histoCreation';
            $expr2->field = 'histoDestruction';
            
            $sql = sprintf('UNICAEN_ORACLE.COMPRISE_ENTRE(%s, %s, %s)',
                    $expr1->dispatch($sqlWalker),
                    $expr2->dispatch($sqlWalker),
                    $this->dateObservation ? $this->dateObservation->dispatch($sqlWalker) : 'null');
            
            return $sql;
        }
    }