Piwik\Segment::getCleanedExpression PHP Method

getCleanedExpression() protected method

protected getCleanedExpression ( $expression )
    protected function getCleanedExpression($expression)
    {
        $name = $expression[SegmentExpression::INDEX_OPERAND_NAME];
        $matchType = $expression[SegmentExpression::INDEX_OPERAND_OPERATOR];
        $value = $expression[SegmentExpression::INDEX_OPERAND_VALUE];
        $segment = $this->getSegmentByName($name);
        $sqlName = $segment['sqlSegment'];
        if ($matchType != SegmentExpression::MATCH_IS_NOT_NULL_NOR_EMPTY && $matchType != SegmentExpression::MATCH_IS_NULL_OR_EMPTY) {
            if (isset($segment['sqlFilterValue'])) {
                $value = call_user_func($segment['sqlFilterValue'], $value);
            }
            // apply presentation filter
            if (isset($segment['sqlFilter'])) {
                $value = call_user_func($segment['sqlFilter'], $value, $segment['sqlSegment'], $matchType, $name);
                if (is_null($value)) {
                    // null is returned in TableLogAction::getIdActionFromSegment()
                    return array(null, $matchType, null);
                }
                // sqlFilter-callbacks might return arrays for more complex cases
                // e.g. see TableLogAction::getIdActionFromSegment()
                if (is_array($value) && isset($value['SQL'])) {
                    // Special case: returned value is a sub sql expression!
                    $matchType = SegmentExpression::MATCH_ACTIONS_CONTAINS;
                }
            }
        }
        return array($sqlName, $matchType, $value);
    }