This file is indexed.

/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;
    }
}