protected function createInnerJoinFromProps(&$props, &$joins, &$iJoined, &$vars, $sourceTable = null, $alternateTableName = "") { //add LEFT JOIN if (isset($props["innerJoinFieldLeft"]) && isset($props["innerJoinTableRight"]) && isset($props["innerJoinFieldRight"])) { $innerJoinTableLeft = $sourceTable == null ? $props["innerJoinTableLeft"] : $sourceTable; $innerJoinFieldLeft = $props["innerJoinFieldLeft"]; $innerJoinTableRight = $props["innerJoinTableRight"]; $innerJoinFieldRight = $props["innerJoinFieldRight"]; //only do duplicate tables if an alternate table join //name was specified in the config file if (!in_array($innerJoinTableLeft, $iJoined) || strlen($alternateTableName) > 0) { //replace the source table name with an alias if specified in config file //with the "alternateTableName" property $ijl = strlen($alternateTableName) > 0 ? $alternateTableName : $innerJoinTableLeft; $joinSql = "LEFT JOIN {$innerJoinTableLeft} "; if (strlen($alternateTableName) > 0) { $joinSql .= "AS {$alternateTableName} "; } $joinSql .= "ON {$ijl}.{$innerJoinFieldLeft}=" . "{$innerJoinTableRight}.{$innerJoinFieldRight}"; if (isset($props["extraJoinSQL"])) { $ejsql = FQLUtils::replaceVariables($props["extraJoinSQL"], $vars); //parse join sql for variables $joinSql .= " {$ejsql} "; } $joins[] = $joinSql; $iJoined[] = $innerJoinTableLeft; } } }
public function testReplaceVariables() { $vars = array("var1" => "val1", "var2" => "val2"); $str = "This is var1: {var1}, this is var2: {var2}"; $nstr = FQLUtils::replaceVariables($str, $vars); $this->assertEquals("This is var1: val1, this is var2: val2", $nstr); }