CommonQuery::createUndefinedJoins PHP Method

createUndefinedJoins() private method

Create undefined joins from statement with column with referenced tables
private createUndefinedJoins ( string $statement ) : string
$statement string
return string rewrited $statement (e.g. tab1.tab2:col => tab2.col)
    private function createUndefinedJoins($statement)
    {
        if (!$this->isSmartJoinEnabled) {
            return $statement;
        }
        preg_match_all('/\\b([a-z_][a-z0-9_.:]*[.:])[a-z_]*/i', $statement, $matches);
        foreach ($matches[1] as $join) {
            if (!in_array(substr($join, 0, -1), $this->joins)) {
                $this->addJoinStatements('LEFT JOIN', $join);
            }
        }
        // don't rewrite table from other databases
        foreach ($this->joins as $join) {
            if (strpos($join, '.') !== false && strpos($statement, $join) === 0) {
                return $statement;
            }
        }
        // remove extra referenced tables (rewrite tab1.tab2:col => tab2.col)
        $statement = preg_replace('/(?:\\b[a-z_][a-z0-9_.:]*[.:])?([a-z_][a-z0-9_]*)[.:]([a-z_*])/i', '\\1.\\2', $statement);
        return $statement;
    }