Completed
Push — master ( 8d6c09...33443d )
by Sam
05:30 queued 40s
created

UserQuery::filterByName()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 13
Code Lines 8

Duplication

Lines 13
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 13
loc 13
rs 9.2
cc 4
eloc 8
nc 4
nop 2
1
<?php
2
3
namespace Jalle19\StatusManager\Database\Base;
4
5
use \Exception;
6
use \PDO;
7
use Jalle19\StatusManager\Database\User as ChildUser;
8
use Jalle19\StatusManager\Database\UserQuery as ChildUserQuery;
9
use Jalle19\StatusManager\Database\Map\UserTableMap;
10
use Propel\Runtime\Propel;
11
use Propel\Runtime\ActiveQuery\Criteria;
12
use Propel\Runtime\ActiveQuery\ModelCriteria;
13
use Propel\Runtime\ActiveQuery\ModelJoin;
14
use Propel\Runtime\Collection\ObjectCollection;
15
use Propel\Runtime\Connection\ConnectionInterface;
16
use Propel\Runtime\Exception\PropelException;
17
18
/**
19
 * Base class that represents a query for the 'user' table.
20
 *
21
 *
22
 *
23
 * @method     ChildUserQuery orderById($order = Criteria::ASC) Order by the id column
24
 * @method     ChildUserQuery orderByInstanceName($order = Criteria::ASC) Order by the instance_name column
25
 * @method     ChildUserQuery orderByName($order = Criteria::ASC) Order by the name column
26
 *
27
 * @method     ChildUserQuery groupById() Group by the id column
28
 * @method     ChildUserQuery groupByInstanceName() Group by the instance_name column
29
 * @method     ChildUserQuery groupByName() Group by the name column
30
 *
31
 * @method     ChildUserQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
32
 * @method     ChildUserQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
33
 * @method     ChildUserQuery innerJoin($relation) Adds a INNER JOIN clause to the query
34
 *
35
 * @method     ChildUserQuery leftJoinWith($relation) Adds a LEFT JOIN clause and with to the query
36
 * @method     ChildUserQuery rightJoinWith($relation) Adds a RIGHT JOIN clause and with to the query
37
 * @method     ChildUserQuery innerJoinWith($relation) Adds a INNER JOIN clause and with to the query
38
 *
39
 * @method     ChildUserQuery leftJoinInstance($relationAlias = null) Adds a LEFT JOIN clause to the query using the Instance relation
40
 * @method     ChildUserQuery rightJoinInstance($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Instance relation
41
 * @method     ChildUserQuery innerJoinInstance($relationAlias = null) Adds a INNER JOIN clause to the query using the Instance relation
42
 *
43
 * @method     ChildUserQuery joinWithInstance($joinType = Criteria::INNER_JOIN) Adds a join clause and with to the query using the Instance relation
44
 *
45
 * @method     ChildUserQuery leftJoinWithInstance() Adds a LEFT JOIN clause and with to the query using the Instance relation
46
 * @method     ChildUserQuery rightJoinWithInstance() Adds a RIGHT JOIN clause and with to the query using the Instance relation
47
 * @method     ChildUserQuery innerJoinWithInstance() Adds a INNER JOIN clause and with to the query using the Instance relation
48
 *
49
 * @method     ChildUserQuery leftJoinConnection($relationAlias = null) Adds a LEFT JOIN clause to the query using the Connection relation
50
 * @method     ChildUserQuery rightJoinConnection($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Connection relation
51
 * @method     ChildUserQuery innerJoinConnection($relationAlias = null) Adds a INNER JOIN clause to the query using the Connection relation
52
 *
53
 * @method     ChildUserQuery joinWithConnection($joinType = Criteria::INNER_JOIN) Adds a join clause and with to the query using the Connection relation
54
 *
55
 * @method     ChildUserQuery leftJoinWithConnection() Adds a LEFT JOIN clause and with to the query using the Connection relation
56
 * @method     ChildUserQuery rightJoinWithConnection() Adds a RIGHT JOIN clause and with to the query using the Connection relation
57
 * @method     ChildUserQuery innerJoinWithConnection() Adds a INNER JOIN clause and with to the query using the Connection relation
58
 *
59
 * @method     ChildUserQuery leftJoinSubscription($relationAlias = null) Adds a LEFT JOIN clause to the query using the Subscription relation
60
 * @method     ChildUserQuery rightJoinSubscription($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Subscription relation
61
 * @method     ChildUserQuery innerJoinSubscription($relationAlias = null) Adds a INNER JOIN clause to the query using the Subscription relation
62
 *
63
 * @method     ChildUserQuery joinWithSubscription($joinType = Criteria::INNER_JOIN) Adds a join clause and with to the query using the Subscription relation
64
 *
65
 * @method     ChildUserQuery leftJoinWithSubscription() Adds a LEFT JOIN clause and with to the query using the Subscription relation
66
 * @method     ChildUserQuery rightJoinWithSubscription() Adds a RIGHT JOIN clause and with to the query using the Subscription relation
67
 * @method     ChildUserQuery innerJoinWithSubscription() Adds a INNER JOIN clause and with to the query using the Subscription relation
68
 *
69
 * @method     \Jalle19\StatusManager\Database\InstanceQuery|\Jalle19\StatusManager\Database\ConnectionQuery|\Jalle19\StatusManager\Database\SubscriptionQuery endUse() Finalizes a secondary criteria and merges it with its primary Criteria
70
 *
71
 * @method     ChildUser findOne(ConnectionInterface $con = null) Return the first ChildUser matching the query
72
 * @method     ChildUser findOneOrCreate(ConnectionInterface $con = null) Return the first ChildUser matching the query, or a new ChildUser object populated from the query conditions when no match is found
73
 *
74
 * @method     ChildUser findOneById(int $id) Return the first ChildUser filtered by the id column
75
 * @method     ChildUser findOneByInstanceName(string $instance_name) Return the first ChildUser filtered by the instance_name column
76
 * @method     ChildUser findOneByName(string $name) Return the first ChildUser filtered by the name column *
77
78
 * @method     ChildUser requirePk($key, ConnectionInterface $con = null) Return the ChildUser by primary key and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
79
 * @method     ChildUser requireOne(ConnectionInterface $con = null) Return the first ChildUser matching the query and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
80
 *
81
 * @method     ChildUser requireOneById(int $id) Return the first ChildUser filtered by the id column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
82
 * @method     ChildUser requireOneByInstanceName(string $instance_name) Return the first ChildUser filtered by the instance_name column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
83
 * @method     ChildUser requireOneByName(string $name) Return the first ChildUser filtered by the name column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
84
 *
85
 * @method     ChildUser[]|ObjectCollection find(ConnectionInterface $con = null) Return ChildUser objects based on current ModelCriteria
86
 * @method     ChildUser[]|ObjectCollection findById(int $id) Return ChildUser objects filtered by the id column
87
 * @method     ChildUser[]|ObjectCollection findByInstanceName(string $instance_name) Return ChildUser objects filtered by the instance_name column
88
 * @method     ChildUser[]|ObjectCollection findByName(string $name) Return ChildUser objects filtered by the name column
89
 * @method     ChildUser[]|\Propel\Runtime\Util\PropelModelPager paginate($page = 1, $maxPerPage = 10, ConnectionInterface $con = null) Issue a SELECT query based on the current ModelCriteria and uses a page and a maximum number of results per page to compute an offset and a limit
90
 *
91
 */
92
abstract class UserQuery extends ModelCriteria
93
{
94
    protected $entityNotFoundExceptionClass = '\\Propel\\Runtime\\Exception\\EntityNotFoundException';
95
96
    /**
97
     * Initializes internal state of \Jalle19\StatusManager\Database\Base\UserQuery object.
98
     *
99
     * @param     string $dbName The database name
100
     * @param     string $modelName The phpName of a model, e.g. 'Book'
101
     * @param     string $modelAlias The alias for the model in this query, e.g. 'b'
102
     */
103
    public function __construct($dbName = 'tvheadend_status_manager', $modelName = '\\Jalle19\\StatusManager\\Database\\User', $modelAlias = null)
104
    {
105
        parent::__construct($dbName, $modelName, $modelAlias);
106
    }
107
108
    /**
109
     * Returns a new ChildUserQuery object.
110
     *
111
     * @param     string $modelAlias The alias of a model in the query
112
     * @param     Criteria $criteria Optional Criteria to build the query from
113
     *
114
     * @return ChildUserQuery
115
     */
116 View Code Duplication
    public static function create($modelAlias = null, Criteria $criteria = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
117
    {
118
        if ($criteria instanceof ChildUserQuery) {
119
            return $criteria;
120
        }
121
        $query = new ChildUserQuery();
122
        if (null !== $modelAlias) {
123
            $query->setModelAlias($modelAlias);
124
        }
125
        if ($criteria instanceof Criteria) {
126
            $query->mergeWith($criteria);
127
        }
128
129
        return $query;
130
    }
131
132
    /**
133
     * Find object by primary key.
134
     * Propel uses the instance pool to skip the database if the object exists.
135
     * Go fast if the query is untouched.
136
     *
137
     * <code>
138
     * $obj  = $c->findPk(12, $con);
139
     * </code>
140
     *
141
     * @param mixed $key Primary key to use for the query
142
     * @param ConnectionInterface $con an optional connection object
143
     *
144
     * @return ChildUser|array|mixed the result, formatted by the current formatter
145
     */
146 View Code Duplication
    public function findPk($key, ConnectionInterface $con = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
147
    {
148
        if ($key === null) {
149
            return null;
150
        }
151
        if ((null !== ($obj = UserTableMap::getInstanceFromPool(null === $key || is_scalar($key) || is_callable([$key, '__toString']) ? (string) $key : $key))) && !$this->formatter) {
152
            // the object is already in the instance pool
153
            return $obj;
154
        }
155
        if ($con === null) {
156
            $con = Propel::getServiceContainer()->getReadConnection(UserTableMap::DATABASE_NAME);
157
        }
158
        $this->basePreSelect($con);
159
        if ($this->formatter || $this->modelAlias || $this->with || $this->select
0 ignored issues
show
Bug Best Practice introduced by
The expression $this->modelAlias of type string|null is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
Bug Best Practice introduced by
The expression $this->with of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
160
         || $this->selectColumns || $this->asColumns || $this->selectModifiers
0 ignored issues
show
Bug Best Practice introduced by
The expression $this->selectColumns of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
Bug Best Practice introduced by
The expression $this->asColumns of type string[] is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
Bug Best Practice introduced by
The expression $this->selectModifiers of type string[] is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
161
         || $this->map || $this->having || $this->joins) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $this->map of type Propel\Runtime\ActiveQue...ion\AbstractCriterion[] is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
Bug Best Practice introduced by
The expression $this->joins of type Propel\Runtime\ActiveQuery\Join[] is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
162
            return $this->findPkComplex($key, $con);
163
        } else {
164
            return $this->findPkSimple($key, $con);
165
        }
166
    }
167
168
    /**
169
     * Find object by primary key using raw SQL to go fast.
170
     * Bypass doSelect() and the object formatter by using generated code.
171
     *
172
     * @param     mixed $key Primary key to use for the query
173
     * @param     ConnectionInterface $con A connection object
174
     *
175
     * @throws \Propel\Runtime\Exception\PropelException
176
     *
177
     * @return ChildUser A model object, or null if the key is not found
178
     */
179 View Code Duplication
    protected function findPkSimple($key, ConnectionInterface $con)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
180
    {
181
        $sql = 'SELECT id, instance_name, name FROM user WHERE id = :p0';
182
        try {
183
            $stmt = $con->prepare($sql);
184
            $stmt->bindValue(':p0', $key, PDO::PARAM_INT);
185
            $stmt->execute();
186
        } catch (Exception $e) {
187
            Propel::log($e->getMessage(), Propel::LOG_ERR);
188
            throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
189
        }
190
        $obj = null;
191
        if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
192
            /** @var ChildUser $obj */
193
            $obj = new ChildUser();
194
            $obj->hydrate($row);
195
            UserTableMap::addInstanceToPool($obj, null === $key || is_scalar($key) || is_callable([$key, '__toString']) ? (string) $key : $key);
196
        }
197
        $stmt->closeCursor();
198
199
        return $obj;
200
    }
201
202
    /**
203
     * Find object by primary key.
204
     *
205
     * @param     mixed $key Primary key to use for the query
206
     * @param     ConnectionInterface $con A connection object
207
     *
208
     * @return ChildUser|array|mixed the result, formatted by the current formatter
209
     */
210 View Code Duplication
    protected function findPkComplex($key, ConnectionInterface $con)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
211
    {
212
        // As the query uses a PK condition, no limit(1) is necessary.
213
        $criteria = $this->isKeepQuery() ? clone $this : $this;
214
        $dataFetcher = $criteria
215
            ->filterByPrimaryKey($key)
216
            ->doSelect($con);
217
218
        return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
219
    }
220
221
    /**
222
     * Find objects by primary key
223
     * <code>
224
     * $objs = $c->findPks(array(12, 56, 832), $con);
225
     * </code>
226
     * @param     array $keys Primary keys to use for the query
227
     * @param     ConnectionInterface $con an optional connection object
228
     *
229
     * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
230
     */
231 View Code Duplication
    public function findPks($keys, ConnectionInterface $con = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
232
    {
233
        if (null === $con) {
234
            $con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
235
        }
236
        $this->basePreSelect($con);
237
        $criteria = $this->isKeepQuery() ? clone $this : $this;
238
        $dataFetcher = $criteria
239
            ->filterByPrimaryKeys($keys)
240
            ->doSelect($con);
241
242
        return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
243
    }
244
245
    /**
246
     * Filter the query by primary key
247
     *
248
     * @param     mixed $key Primary key to use for the query
249
     *
250
     * @return $this|ChildUserQuery The current query, for fluid interface
251
     */
252
    public function filterByPrimaryKey($key)
253
    {
254
255
        return $this->addUsingAlias(UserTableMap::COL_ID, $key, Criteria::EQUAL);
256
    }
257
258
    /**
259
     * Filter the query by a list of primary keys
260
     *
261
     * @param     array $keys The list of primary key to use for the query
262
     *
263
     * @return $this|ChildUserQuery The current query, for fluid interface
264
     */
265
    public function filterByPrimaryKeys($keys)
266
    {
267
268
        return $this->addUsingAlias(UserTableMap::COL_ID, $keys, Criteria::IN);
269
    }
270
271
    /**
272
     * Filter the query on the id column
273
     *
274
     * Example usage:
275
     * <code>
276
     * $query->filterById(1234); // WHERE id = 1234
277
     * $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
278
     * $query->filterById(array('min' => 12)); // WHERE id > 12
279
     * </code>
280
     *
281
     * @param     mixed $id The value to use as filter.
282
     *              Use scalar values for equality.
283
     *              Use array values for in_array() equivalent.
284
     *              Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
285
     * @param     string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
286
     *
287
     * @return $this|ChildUserQuery The current query, for fluid interface
288
     */
289 View Code Duplication
    public function filterById($id = null, $comparison = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
290
    {
291
        if (is_array($id)) {
292
            $useMinMax = false;
293
            if (isset($id['min'])) {
294
                $this->addUsingAlias(UserTableMap::COL_ID, $id['min'], Criteria::GREATER_EQUAL);
295
                $useMinMax = true;
296
            }
297
            if (isset($id['max'])) {
298
                $this->addUsingAlias(UserTableMap::COL_ID, $id['max'], Criteria::LESS_EQUAL);
299
                $useMinMax = true;
300
            }
301
            if ($useMinMax) {
302
                return $this;
303
            }
304
            if (null === $comparison) {
305
                $comparison = Criteria::IN;
306
            }
307
        }
308
309
        return $this->addUsingAlias(UserTableMap::COL_ID, $id, $comparison);
310
    }
311
312
    /**
313
     * Filter the query on the instance_name column
314
     *
315
     * Example usage:
316
     * <code>
317
     * $query->filterByInstanceName('fooValue');   // WHERE instance_name = 'fooValue'
318
     * $query->filterByInstanceName('%fooValue%'); // WHERE instance_name LIKE '%fooValue%'
319
     * </code>
320
     *
321
     * @param     string $instanceName The value to use as filter.
322
     *              Accepts wildcards (* and % trigger a LIKE)
323
     * @param     string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
324
     *
325
     * @return $this|ChildUserQuery The current query, for fluid interface
326
     */
327 View Code Duplication
    public function filterByInstanceName($instanceName = null, $comparison = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
328
    {
329
        if (null === $comparison) {
330
            if (is_array($instanceName)) {
331
                $comparison = Criteria::IN;
332
            } elseif (preg_match('/[\%\*]/', $instanceName)) {
333
                $instanceName = str_replace('*', '%', $instanceName);
334
                $comparison = Criteria::LIKE;
335
            }
336
        }
337
338
        return $this->addUsingAlias(UserTableMap::COL_INSTANCE_NAME, $instanceName, $comparison);
339
    }
340
341
    /**
342
     * Filter the query on the name column
343
     *
344
     * Example usage:
345
     * <code>
346
     * $query->filterByName('fooValue');   // WHERE name = 'fooValue'
347
     * $query->filterByName('%fooValue%'); // WHERE name LIKE '%fooValue%'
348
     * </code>
349
     *
350
     * @param     string $name The value to use as filter.
351
     *              Accepts wildcards (* and % trigger a LIKE)
352
     * @param     string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
353
     *
354
     * @return $this|ChildUserQuery The current query, for fluid interface
355
     */
356 View Code Duplication
    public function filterByName($name = null, $comparison = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
357
    {
358
        if (null === $comparison) {
359
            if (is_array($name)) {
360
                $comparison = Criteria::IN;
361
            } elseif (preg_match('/[\%\*]/', $name)) {
362
                $name = str_replace('*', '%', $name);
363
                $comparison = Criteria::LIKE;
364
            }
365
        }
366
367
        return $this->addUsingAlias(UserTableMap::COL_NAME, $name, $comparison);
368
    }
369
370
    /**
371
     * Filter the query by a related \Jalle19\StatusManager\Database\Instance object
372
     *
373
     * @param \Jalle19\StatusManager\Database\Instance|ObjectCollection $instance The related object(s) to use as filter
374
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
375
     *
376
     * @throws \Propel\Runtime\Exception\PropelException
377
     *
378
     * @return ChildUserQuery The current query, for fluid interface
379
     */
380 View Code Duplication
    public function filterByInstance($instance, $comparison = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
381
    {
382
        if ($instance instanceof \Jalle19\StatusManager\Database\Instance) {
383
            return $this
384
                ->addUsingAlias(UserTableMap::COL_INSTANCE_NAME, $instance->getName(), $comparison);
385
        } elseif ($instance instanceof ObjectCollection) {
386
            if (null === $comparison) {
387
                $comparison = Criteria::IN;
388
            }
389
390
            return $this
391
                ->addUsingAlias(UserTableMap::COL_INSTANCE_NAME, $instance->toKeyValue('PrimaryKey', 'Name'), $comparison);
392
        } else {
393
            throw new PropelException('filterByInstance() only accepts arguments of type \Jalle19\StatusManager\Database\Instance or Collection');
394
        }
395
    }
396
397
    /**
398
     * Adds a JOIN clause to the query using the Instance relation
399
     *
400
     * @param     string $relationAlias optional alias for the relation
401
     * @param     string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
402
     *
403
     * @return $this|ChildUserQuery The current query, for fluid interface
404
     */
405 View Code Duplication
    public function joinInstance($relationAlias = null, $joinType = Criteria::INNER_JOIN)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
406
    {
407
        $tableMap = $this->getTableMap();
408
        $relationMap = $tableMap->getRelation('Instance');
409
410
        // create a ModelJoin object for this join
411
        $join = new ModelJoin();
412
        $join->setJoinType($joinType);
413
        $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
414
        if ($previousJoin = $this->getPreviousJoin()) {
415
            $join->setPreviousJoin($previousJoin);
0 ignored issues
show
Compatibility introduced by
$previousJoin of type object<Propel\Runtime\ActiveQuery\Join> is not a sub-type of object<Propel\Runtime\ActiveQuery\ModelJoin>. It seems like you assume a child class of the class Propel\Runtime\ActiveQuery\Join to be always present.

This check looks for parameters that are defined as one type in their type hint or doc comment but seem to be used as a narrower type, i.e an implementation of an interface or a subclass.

Consider changing the type of the parameter or doing an instanceof check before assuming your parameter is of the expected type.

Loading history...
416
        }
417
418
        // add the ModelJoin to the current object
419
        if ($relationAlias) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $relationAlias of type string|null is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
420
            $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
421
            $this->addJoinObject($join, $relationAlias);
422
        } else {
423
            $this->addJoinObject($join, 'Instance');
424
        }
425
426
        return $this;
427
    }
428
429
    /**
430
     * Use the Instance relation Instance object
431
     *
432
     * @see useQuery()
433
     *
434
     * @param     string $relationAlias optional alias for the relation,
435
     *                                   to be used as main alias in the secondary query
436
     * @param     string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
437
     *
438
     * @return \Jalle19\StatusManager\Database\InstanceQuery A secondary query class using the current class as primary query
439
     */
440
    public function useInstanceQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
441
    {
442
        return $this
443
            ->joinInstance($relationAlias, $joinType)
444
            ->useQuery($relationAlias ? $relationAlias : 'Instance', '\Jalle19\StatusManager\Database\InstanceQuery');
445
    }
446
447
    /**
448
     * Filter the query by a related \Jalle19\StatusManager\Database\Connection object
449
     *
450
     * @param \Jalle19\StatusManager\Database\Connection|ObjectCollection $connection the related object to use as filter
451
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
452
     *
453
     * @return ChildUserQuery The current query, for fluid interface
454
     */
455 View Code Duplication
    public function filterByConnection($connection, $comparison = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
456
    {
457
        if ($connection instanceof \Jalle19\StatusManager\Database\Connection) {
458
            return $this
459
                ->addUsingAlias(UserTableMap::COL_ID, $connection->getUserId(), $comparison);
460
        } elseif ($connection instanceof ObjectCollection) {
461
            return $this
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->useConnectionQuer...imaryKeys())->endUse(); of type Jalle19\StatusManager\Da...ager\Database\UserQuery adds the type Jalle19\StatusManager\Database\InstanceQuery to the return on line 461 which is incompatible with the return type documented by Jalle19\StatusManager\Da...ery::filterByConnection of type Jalle19\StatusManager\Database\UserQuery.
Loading history...
462
                ->useConnectionQuery()
463
                ->filterByPrimaryKeys($connection->getPrimaryKeys())
464
                ->endUse();
465
        } else {
466
            throw new PropelException('filterByConnection() only accepts arguments of type \Jalle19\StatusManager\Database\Connection or Collection');
467
        }
468
    }
469
470
    /**
471
     * Adds a JOIN clause to the query using the Connection relation
472
     *
473
     * @param     string $relationAlias optional alias for the relation
474
     * @param     string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
475
     *
476
     * @return $this|ChildUserQuery The current query, for fluid interface
477
     */
478 View Code Duplication
    public function joinConnection($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
479
    {
480
        $tableMap = $this->getTableMap();
481
        $relationMap = $tableMap->getRelation('Connection');
482
483
        // create a ModelJoin object for this join
484
        $join = new ModelJoin();
485
        $join->setJoinType($joinType);
486
        $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
487
        if ($previousJoin = $this->getPreviousJoin()) {
488
            $join->setPreviousJoin($previousJoin);
0 ignored issues
show
Compatibility introduced by
$previousJoin of type object<Propel\Runtime\ActiveQuery\Join> is not a sub-type of object<Propel\Runtime\ActiveQuery\ModelJoin>. It seems like you assume a child class of the class Propel\Runtime\ActiveQuery\Join to be always present.

This check looks for parameters that are defined as one type in their type hint or doc comment but seem to be used as a narrower type, i.e an implementation of an interface or a subclass.

Consider changing the type of the parameter or doing an instanceof check before assuming your parameter is of the expected type.

Loading history...
489
        }
490
491
        // add the ModelJoin to the current object
492
        if ($relationAlias) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $relationAlias of type string|null is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
493
            $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
494
            $this->addJoinObject($join, $relationAlias);
495
        } else {
496
            $this->addJoinObject($join, 'Connection');
497
        }
498
499
        return $this;
500
    }
501
502
    /**
503
     * Use the Connection relation Connection object
504
     *
505
     * @see useQuery()
506
     *
507
     * @param     string $relationAlias optional alias for the relation,
508
     *                                   to be used as main alias in the secondary query
509
     * @param     string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
510
     *
511
     * @return \Jalle19\StatusManager\Database\ConnectionQuery A secondary query class using the current class as primary query
512
     */
513
    public function useConnectionQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
514
    {
515
        return $this
516
            ->joinConnection($relationAlias, $joinType)
517
            ->useQuery($relationAlias ? $relationAlias : 'Connection', '\Jalle19\StatusManager\Database\ConnectionQuery');
518
    }
519
520
    /**
521
     * Filter the query by a related \Jalle19\StatusManager\Database\Subscription object
522
     *
523
     * @param \Jalle19\StatusManager\Database\Subscription|ObjectCollection $subscription the related object to use as filter
524
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
525
     *
526
     * @return ChildUserQuery The current query, for fluid interface
527
     */
528 View Code Duplication
    public function filterBySubscription($subscription, $comparison = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
529
    {
530
        if ($subscription instanceof \Jalle19\StatusManager\Database\Subscription) {
531
            return $this
532
                ->addUsingAlias(UserTableMap::COL_ID, $subscription->getUserId(), $comparison);
533
        } elseif ($subscription instanceof ObjectCollection) {
534
            return $this
0 ignored issues
show
Bug Best Practice introduced by
The return type of return $this->useSubscri...imaryKeys())->endUse(); (Jalle19\StatusManager\Da...r\Database\ChannelQuery) is incompatible with the return type documented by Jalle19\StatusManager\Da...y::filterBySubscription of type Jalle19\StatusManager\Database\UserQuery.

If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design.

Let’s take a look at an example:

class Author {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

abstract class Post {
    public function getAuthor() {
        return 'Johannes';
    }
}

class BlogPost extends Post {
    public function getAuthor() {
        return new Author('Johannes');
    }
}

class ForumPost extends Post { /* ... */ }

function my_function(Post $post) {
    echo strtoupper($post->getAuthor());
}

Our function my_function expects a Post object, and outputs the author of the post. The base class Post returns a simple string and outputting a simple string will work just fine. However, the child class BlogPost which is a sub-type of Post instead decided to return an object, and is therefore violating the SOLID principles. If a BlogPost were passed to my_function, PHP would not complain, but ultimately fail when executing the strtoupper call in its body.

Loading history...
535
                ->useSubscriptionQuery()
536
                ->filterByPrimaryKeys($subscription->getPrimaryKeys())
537
                ->endUse();
538
        } else {
539
            throw new PropelException('filterBySubscription() only accepts arguments of type \Jalle19\StatusManager\Database\Subscription or Collection');
540
        }
541
    }
542
543
    /**
544
     * Adds a JOIN clause to the query using the Subscription relation
545
     *
546
     * @param     string $relationAlias optional alias for the relation
547
     * @param     string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
548
     *
549
     * @return $this|ChildUserQuery The current query, for fluid interface
550
     */
551 View Code Duplication
    public function joinSubscription($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
552
    {
553
        $tableMap = $this->getTableMap();
554
        $relationMap = $tableMap->getRelation('Subscription');
555
556
        // create a ModelJoin object for this join
557
        $join = new ModelJoin();
558
        $join->setJoinType($joinType);
559
        $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
560
        if ($previousJoin = $this->getPreviousJoin()) {
561
            $join->setPreviousJoin($previousJoin);
0 ignored issues
show
Compatibility introduced by
$previousJoin of type object<Propel\Runtime\ActiveQuery\Join> is not a sub-type of object<Propel\Runtime\ActiveQuery\ModelJoin>. It seems like you assume a child class of the class Propel\Runtime\ActiveQuery\Join to be always present.

This check looks for parameters that are defined as one type in their type hint or doc comment but seem to be used as a narrower type, i.e an implementation of an interface or a subclass.

Consider changing the type of the parameter or doing an instanceof check before assuming your parameter is of the expected type.

Loading history...
562
        }
563
564
        // add the ModelJoin to the current object
565
        if ($relationAlias) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $relationAlias of type string|null is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
566
            $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
567
            $this->addJoinObject($join, $relationAlias);
568
        } else {
569
            $this->addJoinObject($join, 'Subscription');
570
        }
571
572
        return $this;
573
    }
574
575
    /**
576
     * Use the Subscription relation Subscription object
577
     *
578
     * @see useQuery()
579
     *
580
     * @param     string $relationAlias optional alias for the relation,
581
     *                                   to be used as main alias in the secondary query
582
     * @param     string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
583
     *
584
     * @return \Jalle19\StatusManager\Database\SubscriptionQuery A secondary query class using the current class as primary query
585
     */
586
    public function useSubscriptionQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
587
    {
588
        return $this
589
            ->joinSubscription($relationAlias, $joinType)
590
            ->useQuery($relationAlias ? $relationAlias : 'Subscription', '\Jalle19\StatusManager\Database\SubscriptionQuery');
591
    }
592
593
    /**
594
     * Exclude object from result
595
     *
596
     * @param   ChildUser $user Object to remove from the list of results
597
     *
598
     * @return $this|ChildUserQuery The current query, for fluid interface
599
     */
600
    public function prune($user = null)
601
    {
602
        if ($user) {
603
            $this->addUsingAlias(UserTableMap::COL_ID, $user->getId(), Criteria::NOT_EQUAL);
604
        }
605
606
        return $this;
607
    }
608
609
    /**
610
     * Deletes all rows from the user table.
611
     *
612
     * @param ConnectionInterface $con the connection to use
613
     * @return int The number of affected rows (if supported by underlying database driver).
614
     */
615 View Code Duplication
    public function doDeleteAll(ConnectionInterface $con = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
616
    {
617
        if (null === $con) {
618
            $con = Propel::getServiceContainer()->getWriteConnection(UserTableMap::DATABASE_NAME);
619
        }
620
621
        // use transaction because $criteria could contain info
622
        // for more than one table or we could emulating ON DELETE CASCADE, etc.
623
        return $con->transaction(function () use ($con) {
624
            $affectedRows = 0; // initialize var to track total num of affected rows
625
            $affectedRows += parent::doDeleteAll($con);
626
            // Because this db requires some delete cascade/set null emulation, we have to
627
            // clear the cached instance *after* the emulation has happened (since
628
            // instances get re-added by the select statement contained therein).
629
            UserTableMap::clearInstancePool();
630
            UserTableMap::clearRelatedInstancePool();
631
632
            return $affectedRows;
633
        });
634
    }
635
636
    /**
637
     * Performs a DELETE on the database based on the current ModelCriteria
638
     *
639
     * @param ConnectionInterface $con the connection to use
640
     * @return int             The number of affected rows (if supported by underlying database driver).  This includes CASCADE-related rows
641
     *                         if supported by native driver or if emulated using Propel.
642
     * @throws PropelException Any exceptions caught during processing will be
643
     *                         rethrown wrapped into a PropelException.
644
     */
645 View Code Duplication
    public function delete(ConnectionInterface $con = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
646
    {
647
        if (null === $con) {
648
            $con = Propel::getServiceContainer()->getWriteConnection(UserTableMap::DATABASE_NAME);
649
        }
650
651
        $criteria = $this;
652
653
        // Set the correct dbName
654
        $criteria->setDbName(UserTableMap::DATABASE_NAME);
655
656
        // use transaction because $criteria could contain info
657
        // for more than one table or we could emulating ON DELETE CASCADE, etc.
658
        return $con->transaction(function () use ($con, $criteria) {
659
            $affectedRows = 0; // initialize var to track total num of affected rows
660
661
            UserTableMap::removeInstanceFromPool($criteria);
662
663
            $affectedRows += ModelCriteria::delete($con);
664
            UserTableMap::clearRelatedInstancePool();
665
666
            return $affectedRows;
667
        });
668
    }
669
670
} // UserQuery
671