Пример #1
0
 /**
  * Get list of entities for autopopulate fields.
  *
  * @param $type
  * @param $filter
  * @param $limit
  * @param $start
  *
  * @return array
  */
 public function getLookupResults($type, $filter = '', $limit = 10, $start = 0)
 {
     $results = [];
     switch ($type) {
         case 'companyfield':
         case 'lead.company':
             $expr = null;
             if ('lead.company' === $type) {
                 $column = 'companyname';
                 $filterVal = $filter;
             } else {
                 if (is_array($filter)) {
                     $column = $filter[0];
                     $filterVal = $filter[1];
                 } else {
                     $column = $filter;
                 }
             }
             $expr = new ExpressionBuilder($this->em->getConnection());
             $composite = $expr->andX();
             $composite->add($expr->like("comp.{$column}", ':filterVar'));
             // Validate owner permissions
             if (!$this->security->isGranted('lead:leads:viewother')) {
                 $composite->add($expr->orX($expr->andX($expr->isNull('comp.owner_id'), $expr->eq('comp.created_by', (int) $this->userHelper->getUser()->getId())), $expr->eq('comp.owner_id', (int) $this->userHelper->getUser()->getId())));
             }
             $results = $this->em->getRepository('MauticLeadBundle:Company')->getSimpleList($composite, ['filterVar' => $filterVal . '%'], $column);
             break;
     }
     return $results;
 }
Пример #2
0
 /**
  * The default handler is the last to be run and handler simple value parsing.
  *
  * @param string            $key
  * @param string            $value
  * @param ExpressionBuilder $expr
  *
  * @return Filter
  */
 public function defaultFilterHandler($key, $value, $expr)
 {
     $val = $this->parseValue($value);
     $placeholder = $key . '_1';
     $exprMethod = $val['operator'];
     $filter = new Filter();
     $filter->setKey($key);
     $filter->setExpression($expr->andX($expr->{$exprMethod}($this->alias . $key, ":{$placeholder}")));
     $filter->setParameters([$placeholder => $val['value']]);
     return $filter;
 }
 /**
  * @param $queryBuilder
  * @param $expressionBuilder
  */
 protected function addFilteredGroups(QueryBuilder &$queryBuilder, ExpressionBuilder $expressionBuilder)
 {
     if (!count($this->filteredGroups)) {
         return;
     }
     foreach ($this->filteredGroups as $index => $filteredGroup) {
         $condition = $filteredGroup['membersGroupFilter_condition'];
         $group = $filteredGroup['membersGroupFilter_group'];
         switch ($condition) {
             case 'in':
                 $where = $expressionBuilder->orX();
                 $where->add('m.groups REGEXP :groupPattern_' . $index);
                 break;
             case 'not in':
                 $where = $expressionBuilder->andX();
                 $where->add('m.groups NOT REGEXP :groupPattern_' . $index);
                 break;
             default:
                 continue 2;
         }
         $queryBuilder->andWhere($where)->setParameter('groupPattern_' . $index, strtr('^a:[[:digit:]]+:\\{([is]:[[:digit:]]+(:"[[:alnum:]]+")?;' . '[is]:[[:digit:]]+(:"[[:alnum:]]+")?;)*[is]:[[:digit:]]+(:"[[:alnum:]]+")?;' . '(s:%length%:"%id%"|i:%id%);', array('%length%' => strlen($group), '%id%' => $group)));
     }
 }