/usr/share/php/propel/query/ModelJoin.php is in php-propel-runtime 1.6.9-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | <?php
/**
* This file is part of the Propel package.
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @license MIT License
*/
/**
* A ModelJoin is a Join object tied to a RelationMap object
*
* @author Francois Zaninotto (Propel)
* @package propel.runtime.query
*/
class ModelJoin extends Join
{
protected $relationMap;
protected $tableMap;
protected $previousJoin;
public function setRelationMap(RelationMap $relationMap, $leftTableAlias = null, $relationAlias = null)
{
$leftCols = $relationMap->getLeftColumns();
$rightCols = $relationMap->getRightColumns();
$nbColumns = $relationMap->countColumnMappings();
for ($i=0; $i < $nbColumns; $i++) {
$this->addExplicitCondition(
$leftCols[$i]->getTableName(), $leftCols[$i]->getName(), $leftTableAlias,
$rightCols[$i]->getTableName(), $rightCols[$i]->getName(), $relationAlias,
Criteria::EQUAL);
}
$this->relationMap = $relationMap;
return $this;
}
public function getRelationMap()
{
return $this->relationMap;
}
/**
* Sets the right tableMap for this join
*
* @param TableMap $tableMap The table map to use
*
* @return ModelJoin The current join object, for fluid interface
*/
public function setTableMap(TableMap $tableMap)
{
$this->tableMap = $tableMap;
return $this;
}
/**
* Gets the right tableMap for this join
*
* @return TableMap The table map
*/
public function getTableMap()
{
if (null === $this->tableMap && null !== $this->relationMap) {
$this->tableMap = $this->relationMap->getRightTable();
}
return $this->tableMap;
}
/**
* @param ModelJoin $join
* @return ModelJoin
*/
public function setPreviousJoin(ModelJoin $join)
{
$this->previousJoin = $join;
return $this;
}
/**
* @return ModelJoin
*/
public function getPreviousJoin()
{
return $this->previousJoin;
}
/**
* @return bool
*/
public function isPrimary()
{
return null === $this->previousJoin;
}
public function setRelationAlias($relationAlias)
{
return $this->setRightTableAlias($relationAlias);
}
public function getRelationAlias()
{
return $this->getRightTableAlias();
}
public function hasRelationAlias()
{
return $this->hasRightTableAlias();
}
/**
* This method returns the last related, but already hydrated object up until this join
* Starting from $startObject and continuously calling the getters to get
* to the base object for the current join.
*
* This method only works if PreviousJoin has been defined,
* which only happens when you provide dotted relations when calling join
*
* @param Object $startObject the start object all joins originate from and which has already hydrated
* @return Object the base Object of this join
*/
public function getObjectToRelate($startObject)
{
if ($this->isPrimary()) {
return $startObject;
} else {
$previousJoin = $this->getPreviousJoin();
$previousObject = $previousJoin->getObjectToRelate($startObject);
$method = 'get' . $previousJoin->getRelationMap()->getName();
return $previousObject->$method();
}
}
/**
* @param ModelJoin $join
* @return bool
*/
public function equals($join)
{
return parent::equals($join)
&& $this->relationMap == $join->getRelationMap()
&& $this->previousJoin == $join->getPreviousJoin()
&& $this->rightTableAlias == $join->getRightTableAlias();
}
public function __toString()
{
return parent::toString()
. ' tableMap: ' . ($this->tableMap ? get_class($this->tableMap) : 'null')
. ' relationMap: ' . $this->relationMap->getName()
. ' previousJoin: ' . ($this->previousJoin ? '(' . $this->previousJoin . ')' : 'null')
. ' relationAlias: ' . $this->rightTableAlias;
}
}
|