Пример #1
0
 /**
  * @param $string
  * @param $idSites
  * @throws Exception
  */
 protected function initializeSegment($string, $idSites)
 {
     // As a preventive measure, we restrict the filter size to a safe limit
     $string = substr($string, 0, self::SEGMENT_TRUNCATE_LIMIT);
     $this->string = $string;
     $this->idSites = $idSites;
     $segment = new SegmentExpression($string);
     $this->segmentExpression = $segment;
     // parse segments
     $expressions = $segment->parseSubExpressions();
     // convert segments name to sql segment
     // check that user is allowed to view this segment
     // and apply a filter to the value to match if necessary (to map DB fields format)
     $cleanedExpressions = array();
     foreach ($expressions as $expression) {
         $operand = $expression[SegmentExpression::INDEX_OPERAND];
         $cleanedExpression = $this->getCleanedExpression($operand);
         $expression[SegmentExpression::INDEX_OPERAND] = $cleanedExpression;
         $cleanedExpressions[] = $expression;
     }
     $segment->setSubExpressionsAfterCleanup($cleanedExpressions);
 }