composer update + SQL Compare refactored
This commit is contained in:
		
							parent
							
								
									b1c4c9e976
								
							
						
					
					
						commit
						3b2b5984d6
					
				| @ -15,10 +15,10 @@ namespace Core\API { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $res = $sql->select($sql->count()) |       $res = $sql->select($sql->count()) | ||||||
|         ->from("ApiKey") |         ->from("ApiKey") | ||||||
|         ->where(new Compare("id", $id)) |         ->whereEq("id", $id) | ||||||
|         ->where(new Compare("user_id", $this->context->getUser()->getId())) |         ->whereEq("user_id", $this->context->getUser()->getId()) | ||||||
|         ->where(new Compare("valid_until", $sql->currentTimestamp(), ">")) |         ->whereGt("valid_until", $sql->currentTimestamp()) | ||||||
|         ->where(new Compare("active", 1)) |         ->whereEq("active", 1) | ||||||
|         ->execute(); |         ->execute(); | ||||||
| 
 | 
 | ||||||
|       $this->success = ($res !== FALSE); |       $this->success = ($res !== FALSE); | ||||||
| @ -120,12 +120,12 @@ namespace Core\API\ApiKey { | |||||||
|         return false; |         return false; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       $validUntil = (new \DateTime)->modify("+30 DAY"); |       $validUntil = (new \DateTime())->modify("+30 DAY"); | ||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $this->success = $sql->update("ApiKey") |       $this->success = $sql->update("ApiKey") | ||||||
|         ->set("valid_until", $validUntil) |         ->set("valid_until", $validUntil) | ||||||
|         ->where(new Compare("id", $id)) |         ->whereEq("id", $id) | ||||||
|         ->where(new Compare("user_id", $this->context->getUser()->getId())) |         ->whereEq("user_id", $this->context->getUser()->getId()) | ||||||
|         ->execute(); |         ->execute(); | ||||||
|       $this->lastError = $sql->getLastError(); |       $this->lastError = $sql->getLastError(); | ||||||
| 
 | 
 | ||||||
| @ -155,8 +155,8 @@ namespace Core\API\ApiKey { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $this->success = $sql->update("ApiKey") |       $this->success = $sql->update("ApiKey") | ||||||
|         ->set("active", false) |         ->set("active", false) | ||||||
|         ->where(new Compare("id", $id)) |         ->whereEq("id", $id) | ||||||
|         ->where(new Compare("user_id", $this->context->getUser()->getId())) |         ->whereEq("user_id", $this->context->getUser()->getId()) | ||||||
|         ->execute(); |         ->execute(); | ||||||
|       $this->lastError = $sql->getLastError(); |       $this->lastError = $sql->getLastError(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ namespace Core\API { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $res = $sql->select($sql->count()) |       $res = $sql->select($sql->count()) | ||||||
|         ->from("Group") |         ->from("Group") | ||||||
|         ->where(new Compare("name", $name)) |         ->whereEq("name", $name) | ||||||
|         ->execute(); |         ->execute(); | ||||||
| 
 | 
 | ||||||
|       $this->success = ($res !== FALSE); |       $this->success = ($res !== FALSE); | ||||||
|  | |||||||
| @ -94,7 +94,7 @@ namespace Core\API\Language { | |||||||
| 
 | 
 | ||||||
|       $this->success = $sql->update("User") |       $this->success = $sql->update("User") | ||||||
|         ->set("language_id", $languageId) |         ->set("language_id", $languageId) | ||||||
|         ->where(new Compare("id", $userId)) |         ->whereEq("id", $userId) | ||||||
|         ->execute(); |         ->execute(); | ||||||
| 
 | 
 | ||||||
|       $this->lastError = $sql->getLastError(); |       $this->lastError = $sql->getLastError(); | ||||||
|  | |||||||
| @ -223,8 +223,8 @@ namespace Core\API\Mail { | |||||||
| 
 | 
 | ||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $mailQueueItems = MailQueueItem::findBy(MailQueueItem::createBuilder($sql, false) |       $mailQueueItems = MailQueueItem::findBy(MailQueueItem::createBuilder($sql, false) | ||||||
|         ->where(new Compare("retryCount", 0, ">")) |         ->whereGt("retryCount", 0) | ||||||
|         ->where(new Compare("status", "waiting")) |         ->whereEq("status", "waiting") | ||||||
|         ->where(new Compare("nextTry", $sql->now(), "<="))); |         ->where(new Compare("nextTry", $sql->now(), "<="))); | ||||||
| 
 | 
 | ||||||
|       $this->success = ($mailQueueItems !== false); |       $this->success = ($mailQueueItems !== false); | ||||||
|  | |||||||
| @ -183,7 +183,7 @@ namespace Core\API\Permission { | |||||||
| 
 | 
 | ||||||
|       if ($this->success) { |       if ($this->success) { | ||||||
|         $res = $sql->delete("ApiPermission") |         $res = $sql->delete("ApiPermission") | ||||||
|           ->where(new Compare("description", "")) // only delete non default permissions
 |           ->whereEq("description", "") // only delete non default permissions
 | ||||||
|           ->where(new CondNot(new CondIn(new Column("method"), $insertedMethods))) |           ->where(new CondNot(new CondIn(new Column("method"), $insertedMethods))) | ||||||
|           ->execute(); |           ->execute(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -22,7 +22,7 @@ namespace Core\API { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $res = $sql->select($sql->count()) |       $res = $sql->select($sql->count()) | ||||||
|         ->from("Route") |         ->from("Route") | ||||||
|         ->where(new Compare("id", $uid)) |         ->whereEq("id", $uid) | ||||||
|         ->execute(); |         ->execute(); | ||||||
| 
 | 
 | ||||||
|       $this->success = ($res !== false); |       $this->success = ($res !== false); | ||||||
| @ -44,7 +44,7 @@ namespace Core\API { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $this->success = $sql->update("Route") |       $this->success = $sql->update("Route") | ||||||
|         ->set("active", $active) |         ->set("active", $active) | ||||||
|         ->where(new Compare("id", $uid)) |         ->whereEq("id", $uid) | ||||||
|         ->execute(); |         ->execute(); | ||||||
| 
 | 
 | ||||||
|       $this->lastError = $sql->getLastError(); |       $this->lastError = $sql->getLastError(); | ||||||
| @ -275,7 +275,7 @@ namespace Core\API\Routes { | |||||||
|         ->set("action", $action) |         ->set("action", $action) | ||||||
|         ->set("target", $target) |         ->set("target", $target) | ||||||
|         ->set("extra", $extra) |         ->set("extra", $extra) | ||||||
|         ->where(new Compare("id", $id)) |         ->whereEq("id", $id) | ||||||
|         ->execute(); |         ->execute(); | ||||||
| 
 | 
 | ||||||
|       $this->lastError = $sql->getLastError(); |       $this->lastError = $sql->getLastError(); | ||||||
| @ -294,14 +294,14 @@ namespace Core\API\Routes { | |||||||
| 
 | 
 | ||||||
|     public function _execute(): bool { |     public function _execute(): bool { | ||||||
| 
 | 
 | ||||||
|       $uid = $this->getParam("id"); |       $id = $this->getParam("id"); | ||||||
|       if (!$this->routeExists($uid)) { |       if (!$this->routeExists($id)) { | ||||||
|         return false; |         return false; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $this->success = $sql->delete("Route") |       $this->success = $sql->delete("Route") | ||||||
|         ->where(new Compare("id", $uid)) |         ->where("id", $id) | ||||||
|         ->execute(); |         ->execute(); | ||||||
| 
 | 
 | ||||||
|       $this->lastError = $sql->getLastError(); |       $this->lastError = $sql->getLastError(); | ||||||
|  | |||||||
| @ -86,7 +86,7 @@ namespace Core\API\TFA { | |||||||
|       if ($password) { |       if ($password) { | ||||||
|         $res = $sql->select("password") |         $res = $sql->select("password") | ||||||
|           ->from("User") |           ->from("User") | ||||||
|           ->where(new Compare("id", $currentUser->getId())) |           ->whereEq("id", $currentUser->getId()) | ||||||
|           ->execute(); |           ->execute(); | ||||||
|         $this->success = !empty($res); |         $this->success = !empty($res); | ||||||
|         $this->lastError = $sql->getLastError(); |         $this->lastError = $sql->getLastError(); | ||||||
| @ -101,7 +101,7 @@ namespace Core\API\TFA { | |||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       $res = $sql->delete("2FA") |       $res = $sql->delete("2FA") | ||||||
|         ->where(new Compare("id", $token->getId())) |         ->whereEq("id", $token->getId()) | ||||||
|         ->execute(); |         ->execute(); | ||||||
| 
 | 
 | ||||||
|       $this->success = $res !== false; |       $this->success = $res !== false; | ||||||
| @ -164,7 +164,8 @@ namespace Core\API\TFA { | |||||||
|         $this->lastError = $sql->getLastError(); |         $this->lastError = $sql->getLastError(); | ||||||
|         if ($this->success) { |         if ($this->success) { | ||||||
|           $this->success = $sql->update("User") |           $this->success = $sql->update("User") | ||||||
|               ->set("2fa_id", $sql->getLastInsertId())->where(new Compare("id", $currentUser->getId())) |               ->set("2fa_id", $sql->getLastInsertId()) | ||||||
|  |               ->whereEq("id", $currentUser->getId()) | ||||||
|               ->execute() !== false; |               ->execute() !== false; | ||||||
|           $this->lastError = $sql->getLastError(); |           $this->lastError = $sql->getLastError(); | ||||||
|         } |         } | ||||||
| @ -196,7 +197,7 @@ namespace Core\API\TFA { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $this->success = $sql->update("2FA") |       $this->success = $sql->update("2FA") | ||||||
|         ->set("confirmed", true) |         ->set("confirmed", true) | ||||||
|         ->where(new Compare("id", $twoFactorToken->getId())) |         ->whereEq("id", $twoFactorToken->getId()) | ||||||
|         ->execute() !== false; |         ->execute() !== false; | ||||||
|       $this->lastError = $sql->getLastError(); |       $this->lastError = $sql->getLastError(); | ||||||
|       return $this->success; |       return $this->success; | ||||||
| @ -282,7 +283,7 @@ namespace Core\API\TFA { | |||||||
| 
 | 
 | ||||||
|           $this->success = $sql->update("User") |           $this->success = $sql->update("User") | ||||||
|             ->set("2fa_id", $sql->getLastInsertId()) |             ->set("2fa_id", $sql->getLastInsertId()) | ||||||
|             ->where(new Compare("id", $currentUser->getId())) |             ->whereEq("id", $currentUser->getId()) | ||||||
|             ->execute() !== false; |             ->execute() !== false; | ||||||
|           $this->lastError = $sql->getLastError(); |           $this->lastError = $sql->getLastError(); | ||||||
|           if (!$this->success) { |           if (!$this->success) { | ||||||
| @ -328,7 +329,7 @@ namespace Core\API\TFA { | |||||||
|         $this->success = $sql->update("2FA") |         $this->success = $sql->update("2FA") | ||||||
|             ->set("data", json_encode($data)) |             ->set("data", json_encode($data)) | ||||||
|             ->set("confirmed", true) |             ->set("confirmed", true) | ||||||
|             ->where(new Compare("id", $twoFactorToken->getId())) |             ->whereEq("id", $twoFactorToken->getId()) | ||||||
|             ->execute() !== false; |             ->execute() !== false; | ||||||
|         $this->lastError = $sql->getLastError(); |         $this->lastError = $sql->getLastError(); | ||||||
|       } |       } | ||||||
|  | |||||||
| @ -109,9 +109,9 @@ namespace Core\API { | |||||||
|     protected function checkToken(string $token) : UserToken|bool { |     protected function checkToken(string $token) : UserToken|bool { | ||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $userToken = UserToken::findBy(UserToken::createBuilder($sql, true) |       $userToken = UserToken::findBy(UserToken::createBuilder($sql, true) | ||||||
|         ->where(new Compare("UserToken.token", $token)) |         ->whereEq("UserToken.token", $token) | ||||||
|         ->where(new Compare("UserToken.valid_until", $sql->now(), ">")) |         ->whereGt("UserToken.valid_until", $sql->now()) | ||||||
|         ->where(new Compare("UserToken.used", 0)) |         ->whereFalse("UserToken.used") | ||||||
|         ->fetchEntities()); |         ->fetchEntities()); | ||||||
| 
 | 
 | ||||||
|       if ($userToken === false) { |       if ($userToken === false) { | ||||||
| @ -841,7 +841,7 @@ namespace Core\API\User { | |||||||
| 
 | 
 | ||||||
|         if ($user->save($sql)) { |         if ($user->save($sql)) { | ||||||
| 
 | 
 | ||||||
|           $deleteQuery = $sql->delete("UserGroup")->where(new Compare("user_id", $id)); |           $deleteQuery = $sql->delete("UserGroup")->whereEq("user_id", $id); | ||||||
|           $insertQuery = $sql->insert("UserGroup", array("user_id", "group_id")); |           $insertQuery = $sql->insert("UserGroup", array("user_id", "group_id")); | ||||||
| 
 | 
 | ||||||
|           foreach ($groupIds as $groupId) { |           foreach ($groupIds as $groupId) { | ||||||
| @ -928,7 +928,7 @@ namespace Core\API\User { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $email = $this->getParam("email"); |       $email = $this->getParam("email"); | ||||||
|       $user = User::findBy(User::createBuilder($sql, true) |       $user = User::findBy(User::createBuilder($sql, true) | ||||||
|         ->where(new Compare("email", $email)) |         ->whereEq("email", $email) | ||||||
|         ->fetchEntities()); |         ->fetchEntities()); | ||||||
|       if ($user === false) { |       if ($user === false) { | ||||||
|         return $this->createError("Could not fetch user details: " . $sql->getLastError()); |         return $this->createError("Could not fetch user details: " . $sql->getLastError()); | ||||||
| @ -1009,8 +1009,8 @@ namespace Core\API\User { | |||||||
|       $email = $this->getParam("email"); |       $email = $this->getParam("email"); | ||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $user = User::findBy(User::createBuilder($sql, true) |       $user = User::findBy(User::createBuilder($sql, true) | ||||||
|         ->where(new Compare("User.email", $email)) |         ->whereEq("User.email", $email) | ||||||
|         ->where(new Compare("User.confirmed", false))); |         ->whereFalse("User.confirmed")); | ||||||
| 
 | 
 | ||||||
|       if ($user === false) { |       if ($user === false) { | ||||||
|         return $this->createError("Error retrieving user details: " . $sql->getLastError()); |         return $this->createError("Error retrieving user details: " . $sql->getLastError()); | ||||||
| @ -1020,9 +1020,9 @@ namespace Core\API\User { | |||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       $userToken = UserToken::findBy(UserToken::createBuilder($sql, true) |       $userToken = UserToken::findBy(UserToken::createBuilder($sql, true) | ||||||
|         ->where(new Compare("used", false)) |         ->whereFalse("used") | ||||||
|         ->where(new Compare("tokenType", UserToken::TYPE_EMAIL_CONFIRM)) |         ->whereEq("tokenType", UserToken::TYPE_EMAIL_CONFIRM) | ||||||
|         ->where(new Compare("user_id", $user->getId()))); |         ->whereEq("user_id", $user->getId())); | ||||||
| 
 | 
 | ||||||
|       $validHours = 48; |       $validHours = 48; | ||||||
|       if ($userToken === false) { |       if ($userToken === false) { | ||||||
| @ -1333,10 +1333,10 @@ namespace Core\API\User { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
| 
 | 
 | ||||||
|       $userToken = UserToken::findBy(UserToken::createBuilder($sql, true) |       $userToken = UserToken::findBy(UserToken::createBuilder($sql, true) | ||||||
|         ->where(new Compare("token", $token)) |         ->whereEq("token", $token) | ||||||
|         ->where(new Compare("valid_until", $sql->now(), ">=")) |         ->where(new Compare("valid_until", $sql->now(), ">=")) | ||||||
|         ->where(new Compare("user_id", $currentUser->getId())) |         ->whereEq("user_id", $currentUser->getId()) | ||||||
|         ->where(new Compare("token_type", UserToken::TYPE_GPG_CONFIRM))); |         ->whereEq("token_type", UserToken::TYPE_GPG_CONFIRM)); | ||||||
| 
 | 
 | ||||||
|       if ($userToken !== false) { |       if ($userToken !== false) { | ||||||
|         if ($userToken === null) { |         if ($userToken === null) { | ||||||
|  | |||||||
| @ -84,7 +84,7 @@ namespace Core\API\Visitors { | |||||||
|       $sql = $this->context->getSQL(); |       $sql = $this->context->getSQL(); | ||||||
|       $query = $sql->select($sql->count(), "day") |       $query = $sql->select($sql->count(), "day") | ||||||
|         ->from("Visitor") |         ->from("Visitor") | ||||||
|         ->where(new Compare("count", 1, ">")) |         ->whereGt("count", 1) | ||||||
|         ->groupBy("day") |         ->groupBy("day") | ||||||
|         ->orderBy("day") |         ->orderBy("day") | ||||||
|         ->ascending(); |         ->ascending(); | ||||||
|  | |||||||
| @ -39,8 +39,8 @@ class EntityLog_2021_04_08 extends DatabaseScript { | |||||||
|       ->exec(array( |       ->exec(array( | ||||||
|         $sql->update("EntityLog") |         $sql->update("EntityLog") | ||||||
|           ->set("modified", $sql->now()) |           ->set("modified", $sql->now()) | ||||||
|           ->where(new Compare("entityId", new CurrentColumn("id"))) |           ->whereEq("entityId", new CurrentColumn("id")) | ||||||
|           ->where(new Compare("tableName", new CurrentTable())) |           ->whereEq("tableName", new CurrentTable()) | ||||||
|       )); |       )); | ||||||
| 
 | 
 | ||||||
|     $deleteProcedure = $sql->createProcedure("DeleteEntityLog") |     $deleteProcedure = $sql->createProcedure("DeleteEntityLog") | ||||||
| @ -49,8 +49,8 @@ class EntityLog_2021_04_08 extends DatabaseScript { | |||||||
|       ->returns(new Trigger()) |       ->returns(new Trigger()) | ||||||
|       ->exec(array( |       ->exec(array( | ||||||
|         $sql->delete("EntityLog") |         $sql->delete("EntityLog") | ||||||
|           ->where(new Compare("entityId", new CurrentColumn("id"))) |           ->whereEq("entityId", new CurrentColumn("id")) | ||||||
|           ->where(new Compare("tableName", new CurrentTable())) |           ->whereEq("tableName", new CurrentTable()) | ||||||
|       )); |       )); | ||||||
| 
 | 
 | ||||||
|     $queries[] = $insertProcedure; |     $queries[] = $insertProcedure; | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								Core/Driver/SQL/Join/InnerJoin.class.php
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										9
									
								
								Core/Driver/SQL/Join/InnerJoin.class.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | namespace Core\Driver\SQL\Join; | ||||||
|  | 
 | ||||||
|  | class InnerJoin extends Join { | ||||||
|  |   public function __construct(string $table, string $columnA, string $columnB, ?string $tableAlias = null, array $conditions = []) { | ||||||
|  |     parent::__construct("INNER", $table, $columnA, $columnB, $tableAlias, $conditions); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,6 +1,6 @@ | |||||||
| <?php | <?php | ||||||
| 
 | 
 | ||||||
| namespace Core\Driver\SQL; | namespace Core\Driver\SQL\Join; | ||||||
| 
 | 
 | ||||||
| use Core\Driver\SQL\Column\Column; | use Core\Driver\SQL\Column\Column; | ||||||
| use Core\Driver\SQL\Condition\Compare; | use Core\Driver\SQL\Condition\Compare; | ||||||
							
								
								
									
										9
									
								
								Core/Driver/SQL/Join/LeftJoin.class.php
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										9
									
								
								Core/Driver/SQL/Join/LeftJoin.class.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | namespace Core\Driver\SQL\Join; | ||||||
|  | 
 | ||||||
|  | class LeftJoin extends Join { | ||||||
|  |   public function __construct(string $table, string $columnA, string $columnB, ?string $tableAlias = null, array $conditions = []) { | ||||||
|  |     parent::__construct("LEFT", $table, $columnA, $columnB, $tableAlias, $conditions); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										63
									
								
								Core/Driver/SQL/Query/ConditionalQuery.class.php
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										63
									
								
								Core/Driver/SQL/Query/ConditionalQuery.class.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | |||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | namespace Core\Driver\SQL\Query; | ||||||
|  | 
 | ||||||
|  | use Core\Driver\SQL\Condition\Compare; | ||||||
|  | use Core\Driver\SQL\Condition\CondBool; | ||||||
|  | use Core\Driver\SQL\Condition\CondNot; | ||||||
|  | use Core\Driver\SQL\Condition\CondOr; | ||||||
|  | use Core\Driver\SQL\SQL; | ||||||
|  | 
 | ||||||
|  | abstract class ConditionalQuery extends Query { | ||||||
|  | 
 | ||||||
|  |   private array $conditions; | ||||||
|  | 
 | ||||||
|  |   public function __construct(SQL $sql) { | ||||||
|  |     parent::__construct($sql); | ||||||
|  |     $this->conditions = []; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public function getWhereClause(array &$params): string { | ||||||
|  |     return $this->sql->getWhereClause($this->getConditions(), $params); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public function getConditions(): array { | ||||||
|  |     return $this->conditions; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   public function where(...$conditions): static { | ||||||
|  |     $this->conditions[] = (count($conditions) === 1 ? $conditions : new CondOr($conditions)); | ||||||
|  |     return $this; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public function whereEq(string $col, mixed $val): static { | ||||||
|  |     $this->conditions[] = new Compare($col, $val, "="); | ||||||
|  |     return $this; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public function whereNeq(string $col, mixed $val): static { | ||||||
|  |     $this->conditions[] = new Compare($col, $val, "!="); | ||||||
|  |     return $this; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public function whereGt(string $col, mixed $val): static { | ||||||
|  |     $this->conditions[] = new Compare($col, $val, ">"); | ||||||
|  |     return $this; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public function whereLt(string $col, mixed $val): static { | ||||||
|  |     $this->conditions[] = new Compare($col, $val, "<"); | ||||||
|  |     return $this; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public function whereTrue(string $col): static { | ||||||
|  |     $this->conditions[] = new CondBool($col); | ||||||
|  |     return $this; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   public function whereFalse(string $col): static { | ||||||
|  |     $this->conditions[] = new CondNot(new CondBool($col)); | ||||||
|  |     return $this; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -5,28 +5,20 @@ namespace Core\Driver\SQL\Query; | |||||||
| use Core\Driver\SQL\Condition\CondOr; | use Core\Driver\SQL\Condition\CondOr; | ||||||
| use Core\Driver\SQL\SQL; | use Core\Driver\SQL\SQL; | ||||||
| 
 | 
 | ||||||
| class Delete extends Query { | class Delete extends ConditionalQuery { | ||||||
| 
 | 
 | ||||||
|   private string $table; |   private string $table; | ||||||
|   private array $conditions; |  | ||||||
| 
 | 
 | ||||||
|   public function __construct(SQL $sql, string $table) { |   public function __construct(SQL $sql, string $table) { | ||||||
|     parent::__construct($sql); |     parent::__construct($sql); | ||||||
|     $this->table = $table; |     $this->table = $table; | ||||||
|     $this->conditions = array(); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function where(...$conditions): Delete { |  | ||||||
|     $this->conditions[] = (count($conditions) === 1 ? $conditions : new CondOr($conditions)); |  | ||||||
|     return $this; |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public function getTable(): string { return $this->table; } |   public function getTable(): string { return $this->table; } | ||||||
|   public function getConditions(): array { return $this->conditions; } |  | ||||||
| 
 | 
 | ||||||
|   public function build(array &$params): ?string { |   public function build(array &$params): ?string { | ||||||
|     $table = $this->sql->tableName($this->getTable()); |     $table = $this->sql->tableName($this->getTable()); | ||||||
|     $where = $this->sql->getWhereClause($this->getConditions(), $params); |     $where = $this->getWhereClause($params); | ||||||
|     return "DELETE FROM $table$where"; |     return "DELETE FROM $table$where"; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -4,14 +4,15 @@ namespace Core\Driver\SQL\Query; | |||||||
| 
 | 
 | ||||||
| use Core\Driver\SQL\Condition\CondOr; | use Core\Driver\SQL\Condition\CondOr; | ||||||
| use Core\Driver\SQL\Expression\JsonArrayAgg; | use Core\Driver\SQL\Expression\JsonArrayAgg; | ||||||
| use Core\Driver\SQL\Join; | use Core\Driver\SQL\Join\InnerJoin; | ||||||
|  | use Core\Driver\SQL\Join\Join; | ||||||
|  | use Core\Driver\SQL\Join\LeftJoin; | ||||||
| use Core\Driver\SQL\SQL; | use Core\Driver\SQL\SQL; | ||||||
| 
 | 
 | ||||||
| class Select extends Query { | class Select extends ConditionalQuery { | ||||||
| 
 | 
 | ||||||
|   private array $selectValues; |   private array $selectValues; | ||||||
|   private array $tables; |   private array $tables; | ||||||
|   private array $conditions; |  | ||||||
|   private array $joins; |   private array $joins; | ||||||
|   private array $orderColumns; |   private array $orderColumns; | ||||||
|   private array $groupColumns; |   private array $groupColumns; | ||||||
| @ -26,7 +27,6 @@ class Select extends Query { | |||||||
|     parent::__construct($sql); |     parent::__construct($sql); | ||||||
|     $this->selectValues = (!empty($selectValues) && is_array($selectValues[0])) ? $selectValues[0] : $selectValues; |     $this->selectValues = (!empty($selectValues) && is_array($selectValues[0])) ? $selectValues[0] : $selectValues; | ||||||
|     $this->tables = array(); |     $this->tables = array(); | ||||||
|     $this->conditions = array(); |  | ||||||
|     $this->havings = array(); |     $this->havings = array(); | ||||||
|     $this->joins = array(); |     $this->joins = array(); | ||||||
|     $this->orderColumns = array(); |     $this->orderColumns = array(); | ||||||
| @ -53,23 +53,18 @@ class Select extends Query { | |||||||
|     return $this; |     return $this; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public function where(...$conditions): Select { |  | ||||||
|     $this->conditions[] = (count($conditions) === 1 ? $conditions : new CondOr($conditions)); |  | ||||||
|     return $this; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function having(...$conditions): Select { |   public function having(...$conditions): Select { | ||||||
|     $this->havings[] = (count($conditions) === 1 ? $conditions : new CondOr($conditions)); |     $this->havings[] = (count($conditions) === 1 ? $conditions : new CondOr($conditions)); | ||||||
|     return $this; |     return $this; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public function innerJoin(string $table, string $columnA, string $columnB, ?string $tableAlias = null, array $conditions = []): Select { |   public function innerJoin(string $table, string $columnA, string $columnB, ?string $tableAlias = null, array $conditions = []): Select { | ||||||
|     $this->joins[] = new Join("INNER", $table, $columnA, $columnB, $tableAlias, $conditions); |     $this->joins[] = new InnerJoin($table, $columnA, $columnB, $tableAlias, $conditions); | ||||||
|     return $this; |     return $this; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public function leftJoin(string $table, string $columnA, string $columnB, ?string $tableAlias = null, array $conditions = []): Select { |   public function leftJoin(string $table, string $columnA, string $columnB, ?string $tableAlias = null, array $conditions = []): Select { | ||||||
|     $this->joins[] = new Join("LEFT", $table, $columnA, $columnB, $tableAlias, $conditions); |     $this->joins[] = new LeftJoin($table, $columnA, $columnB, $tableAlias, $conditions); | ||||||
|     return $this; |     return $this; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -133,7 +128,6 @@ class Select extends Query { | |||||||
| 
 | 
 | ||||||
|   public function getSelectValues(): array { return $this->selectValues; } |   public function getSelectValues(): array { return $this->selectValues; } | ||||||
|   public function getTables(): array { return $this->tables; } |   public function getTables(): array { return $this->tables; } | ||||||
|   public function getConditions(): array { return $this->conditions; } |  | ||||||
|   public function getJoins(): array { return $this->joins; } |   public function getJoins(): array { return $this->joins; } | ||||||
|   public function isOrderedAscending(): bool { return $this->sortAscending; } |   public function isOrderedAscending(): bool { return $this->sortAscending; } | ||||||
|   public function getOrderBy(): array { return $this->orderColumns; } |   public function getOrderBy(): array { return $this->orderColumns; } | ||||||
| @ -180,7 +174,7 @@ class Select extends Query { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     $tables = $this->sql->tableName($tables); |     $tables = $this->sql->tableName($tables); | ||||||
|     $where = $this->sql->getWhereClause($this->getConditions(), $params); |     $where = $this->getWhereClause($params); | ||||||
|     $havingClause = ""; |     $havingClause = ""; | ||||||
|     if (count($this->havings) > 0) { |     if (count($this->havings) > 0) { | ||||||
|       $havingClause  = " HAVING " . $this->sql->buildCondition($this->getHavings(), $params); |       $havingClause  = " HAVING " . $this->sql->buildCondition($this->getHavings(), $params); | ||||||
|  | |||||||
| @ -2,25 +2,17 @@ | |||||||
| 
 | 
 | ||||||
| namespace Core\Driver\SQL\Query; | namespace Core\Driver\SQL\Query; | ||||||
| 
 | 
 | ||||||
| use Core\Driver\SQL\Condition\CondOr; |  | ||||||
| use Core\Driver\SQL\SQL; | use Core\Driver\SQL\SQL; | ||||||
| 
 | 
 | ||||||
| class Update extends Query { | class Update extends ConditionalQuery { | ||||||
| 
 | 
 | ||||||
|   private array $values; |   private array $values; | ||||||
|   private string $table; |   private string $table; | ||||||
|   private array $conditions; |  | ||||||
| 
 | 
 | ||||||
|   public function __construct(SQL $sql, string $table) { |   public function __construct(SQL $sql, string $table) { | ||||||
|     parent::__construct($sql); |     parent::__construct($sql); | ||||||
|     $this->values = array(); |     $this->values = array(); | ||||||
|     $this->table = $table; |     $this->table = $table; | ||||||
|     $this->conditions = array(); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function where(...$conditions): Update { |  | ||||||
|     $this->conditions[] = (count($conditions) === 1 ? $conditions : new CondOr($conditions)); |  | ||||||
|     return $this; |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public function set(string $key, $val): Update { |   public function set(string $key, $val): Update { | ||||||
| @ -29,7 +21,6 @@ class Update extends Query { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public function getTable(): string { return $this->table; } |   public function getTable(): string { return $this->table; } | ||||||
|   public function getConditions(): array { return $this->conditions; } |  | ||||||
|   public function getValues(): array { return $this->values; } |   public function getValues(): array { return $this->values; } | ||||||
| 
 | 
 | ||||||
|   public function build(array &$params): ?string { |   public function build(array &$params): ?string { | ||||||
| @ -41,7 +32,7 @@ class Update extends Query { | |||||||
|     } |     } | ||||||
|     $valueStr = implode(",", $valueStr); |     $valueStr = implode(",", $valueStr); | ||||||
| 
 | 
 | ||||||
|     $where = $this->sql->getWhereClause($this->getConditions(), $params); |     $where = $this->getWhereClause($params); | ||||||
|     return "UPDATE $table SET $valueStr$where"; |     return "UPDATE $table SET $valueStr$where"; | ||||||
|   } |   } | ||||||
| } | } | ||||||
							
								
								
									
										548
									
								
								Core/External/composer.lock
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										548
									
								
								Core/External/composer.lock
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -4,7 +4,7 @@ | |||||||
|         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", |         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | ||||||
|         "This file is @generated automatically" |         "This file is @generated automatically" | ||||||
|     ], |     ], | ||||||
|     "content-hash": "af894b476b8bab945acf32399608ac5f", |     "content-hash": "dc183c367dc010feed9b7ddaa7d54559", | ||||||
|     "packages": [ |     "packages": [ | ||||||
|         { |         { | ||||||
|             "name": "beberlei/assert", |             "name": "beberlei/assert", | ||||||
| @ -135,20 +135,20 @@ | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "chillerlan/php-qrcode", |             "name": "chillerlan/php-qrcode", | ||||||
|             "version": "4.3.3", |             "version": "4.3.4", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/chillerlan/php-qrcode.git", |                 "url": "https://github.com/chillerlan/php-qrcode.git", | ||||||
|                 "reference": "6356b246948ac1025882b3f55e7c68ebd4515ae3" |                 "reference": "2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/6356b246948ac1025882b3f55e7c68ebd4515ae3", |                 "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d", | ||||||
|                 "reference": "6356b246948ac1025882b3f55e7c68ebd4515ae3", |                 "reference": "2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
|                 "chillerlan/php-settings-container": "^2.1", |                 "chillerlan/php-settings-container": "^2.1.4", | ||||||
|                 "ext-mbstring": "*", |                 "ext-mbstring": "*", | ||||||
|                 "php": "^7.4 || ^8.0" |                 "php": "^7.4 || ^8.0" | ||||||
|             }, |             }, | ||||||
| @ -197,7 +197,7 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/chillerlan/php-qrcode/issues", |                 "issues": "https://github.com/chillerlan/php-qrcode/issues", | ||||||
|                 "source": "https://github.com/chillerlan/php-qrcode/tree/4.3.3" |                 "source": "https://github.com/chillerlan/php-qrcode/tree/4.3.4" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -209,20 +209,20 @@ | |||||||
|                     "type": "ko_fi" |                     "type": "ko_fi" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2021-11-25T22:38:09+00:00" |             "time": "2022-07-25T09:12:45+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "chillerlan/php-settings-container", |             "name": "chillerlan/php-settings-container", | ||||||
|             "version": "2.1.3", |             "version": "2.1.4", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/chillerlan/php-settings-container.git", |                 "url": "https://github.com/chillerlan/php-settings-container.git", | ||||||
|                 "reference": "125dd573b45ffc7cabecf385986a356ba2c6f602" |                 "reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/125dd573b45ffc7cabecf385986a356ba2c6f602", |                 "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/1beb7df3c14346d4344b0b2e12f6f9a74feabd4a", | ||||||
|                 "reference": "125dd573b45ffc7cabecf385986a356ba2c6f602", |                 "reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -273,7 +273,7 @@ | |||||||
|                     "type": "ko_fi" |                     "type": "ko_fi" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2022-03-09T13:18:58+00:00" |             "time": "2022-07-05T22:32:14+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "christian-riesen/base32", |             "name": "christian-riesen/base32", | ||||||
| @ -411,16 +411,16 @@ | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "firebase/php-jwt", |             "name": "firebase/php-jwt", | ||||||
|             "version": "v6.2.0", |             "version": "v6.3.1", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/firebase/php-jwt.git", |                 "url": "https://github.com/firebase/php-jwt.git", | ||||||
|                 "reference": "d28e6df83830252650da4623c78aaaf98fb385f3" |                 "reference": "ddfaddcb520488b42bca3a75e17e9dd53c3667da" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d28e6df83830252650da4623c78aaaf98fb385f3", |                 "url": "https://api.github.com/repos/firebase/php-jwt/zipball/ddfaddcb520488b42bca3a75e17e9dd53c3667da", | ||||||
|                 "reference": "d28e6df83830252650da4623c78aaaf98fb385f3", |                 "reference": "ddfaddcb520488b42bca3a75e17e9dd53c3667da", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -467,22 +467,63 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/firebase/php-jwt/issues", |                 "issues": "https://github.com/firebase/php-jwt/issues", | ||||||
|                 "source": "https://github.com/firebase/php-jwt/tree/v6.2.0" |                 "source": "https://github.com/firebase/php-jwt/tree/v6.3.1" | ||||||
|             }, |             }, | ||||||
|             "time": "2022-05-13T20:54:50+00:00" |             "time": "2022-11-01T21:20:08+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "myclabs/php-enum", |             "name": "html2text/html2text", | ||||||
|             "version": "1.8.3", |             "version": "4.3.1", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/myclabs/php-enum.git", |                 "url": "https://github.com/mtibben/html2text.git", | ||||||
|                 "reference": "b942d263c641ddb5190929ff840c68f78713e937" |                 "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", |                 "url": "https://api.github.com/repos/mtibben/html2text/zipball/61ad68e934066a6f8df29a3d23a6460536d0855c", | ||||||
|                 "reference": "b942d263c641ddb5190929ff840c68f78713e937", |                 "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c", | ||||||
|  |                 "shasum": "" | ||||||
|  |             }, | ||||||
|  |             "require-dev": { | ||||||
|  |                 "phpunit/phpunit": "~4" | ||||||
|  |             }, | ||||||
|  |             "suggest": { | ||||||
|  |                 "ext-mbstring": "For best performance", | ||||||
|  |                 "symfony/polyfill-mbstring": "If you can't install ext-mbstring" | ||||||
|  |             }, | ||||||
|  |             "type": "library", | ||||||
|  |             "autoload": { | ||||||
|  |                 "psr-4": { | ||||||
|  |                     "Html2Text\\": [ | ||||||
|  |                         "src/", | ||||||
|  |                         "test/" | ||||||
|  |                     ] | ||||||
|  |                 } | ||||||
|  |             }, | ||||||
|  |             "notification-url": "https://packagist.org/downloads/", | ||||||
|  |             "license": [ | ||||||
|  |                 "GPL-2.0-or-later" | ||||||
|  |             ], | ||||||
|  |             "description": "Converts HTML to formatted plain text", | ||||||
|  |             "support": { | ||||||
|  |                 "issues": "https://github.com/mtibben/html2text/issues", | ||||||
|  |                 "source": "https://github.com/mtibben/html2text/tree/4.3.1" | ||||||
|  |             }, | ||||||
|  |             "time": "2020-04-16T23:44:31+00:00" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "name": "myclabs/php-enum", | ||||||
|  |             "version": "1.8.4", | ||||||
|  |             "source": { | ||||||
|  |                 "type": "git", | ||||||
|  |                 "url": "https://github.com/myclabs/php-enum.git", | ||||||
|  |                 "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" | ||||||
|  |             }, | ||||||
|  |             "dist": { | ||||||
|  |                 "type": "zip", | ||||||
|  |                 "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", | ||||||
|  |                 "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -498,7 +539,10 @@ | |||||||
|             "autoload": { |             "autoload": { | ||||||
|                 "psr-4": { |                 "psr-4": { | ||||||
|                     "MyCLabs\\Enum\\": "src/" |                     "MyCLabs\\Enum\\": "src/" | ||||||
|                 } |                 }, | ||||||
|  |                 "classmap": [ | ||||||
|  |                     "stubs/Stringable.php" | ||||||
|  |                 ] | ||||||
|             }, |             }, | ||||||
|             "notification-url": "https://packagist.org/downloads/", |             "notification-url": "https://packagist.org/downloads/", | ||||||
|             "license": [ |             "license": [ | ||||||
| @ -517,7 +561,7 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/myclabs/php-enum/issues", |                 "issues": "https://github.com/myclabs/php-enum/issues", | ||||||
|                 "source": "https://github.com/myclabs/php-enum/tree/1.8.3" |                 "source": "https://github.com/myclabs/php-enum/tree/1.8.4" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -529,20 +573,20 @@ | |||||||
|                     "type": "tidelift" |                     "type": "tidelift" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2021-07-05T08:18:36+00:00" |             "time": "2022-08-04T09:53:51+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "php-mqtt/client", |             "name": "php-mqtt/client", | ||||||
|             "version": "v1.4.0", |             "version": "v1.6.0", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/php-mqtt/client.git", |                 "url": "https://github.com/php-mqtt/client.git", | ||||||
|                 "reference": "d54381306e68baf7c2c089392c0c6d1d06e278c6" |                 "reference": "22a207edef01d5f0ed3a6a79565cc425b678d786" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/php-mqtt/client/zipball/d54381306e68baf7c2c089392c0c6d1d06e278c6", |                 "url": "https://api.github.com/repos/php-mqtt/client/zipball/22a207edef01d5f0ed3a6a79565cc425b678d786", | ||||||
|                 "reference": "d54381306e68baf7c2c089392c0c6d1d06e278c6", |                 "reference": "22a207edef01d5f0ed3a6a79565cc425b678d786", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -584,36 +628,36 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/php-mqtt/client/issues", |                 "issues": "https://github.com/php-mqtt/client/issues", | ||||||
|                 "source": "https://github.com/php-mqtt/client/tree/v1.4.0" |                 "source": "https://github.com/php-mqtt/client/tree/v1.6.0" | ||||||
|             }, |             }, | ||||||
|             "time": "2022-06-15T19:19:03+00:00" |             "time": "2022-11-01T20:00:19+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "psr/log", |             "name": "psr/log", | ||||||
|             "version": "1.1.4", |             "version": "3.0.0", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/php-fig/log.git", |                 "url": "https://github.com/php-fig/log.git", | ||||||
|                 "reference": "d49695b909c3b7628b6289db5479a1c204601f11" |                 "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", |                 "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", | ||||||
|                 "reference": "d49695b909c3b7628b6289db5479a1c204601f11", |                 "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
|                 "php": ">=5.3.0" |                 "php": ">=8.0.0" | ||||||
|             }, |             }, | ||||||
|             "type": "library", |             "type": "library", | ||||||
|             "extra": { |             "extra": { | ||||||
|                 "branch-alias": { |                 "branch-alias": { | ||||||
|                     "dev-master": "1.1.x-dev" |                     "dev-master": "3.x-dev" | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             "autoload": { |             "autoload": { | ||||||
|                 "psr-4": { |                 "psr-4": { | ||||||
|                     "Psr\\Log\\": "Psr/Log/" |                     "Psr\\Log\\": "src" | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             "notification-url": "https://packagist.org/downloads/", |             "notification-url": "https://packagist.org/downloads/", | ||||||
| @ -634,9 +678,9 @@ | |||||||
|                 "psr-3" |                 "psr-3" | ||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "source": "https://github.com/php-fig/log/tree/1.1.4" |                 "source": "https://github.com/php-fig/log/tree/3.0.0" | ||||||
|             }, |             }, | ||||||
|             "time": "2021-05-03T11:20:27+00:00" |             "time": "2021-07-14T16:46:02+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "spomky-labs/cbor-php", |             "name": "spomky-labs/cbor-php", | ||||||
| @ -720,16 +764,16 @@ | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "symfony/polyfill-ctype", |             "name": "symfony/polyfill-ctype", | ||||||
|             "version": "v1.26.0", |             "version": "v1.27.0", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/symfony/polyfill-ctype.git", |                 "url": "https://github.com/symfony/polyfill-ctype.git", | ||||||
|                 "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" |                 "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", |                 "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", | ||||||
|                 "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", |                 "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -744,7 +788,7 @@ | |||||||
|             "type": "library", |             "type": "library", | ||||||
|             "extra": { |             "extra": { | ||||||
|                 "branch-alias": { |                 "branch-alias": { | ||||||
|                     "dev-main": "1.26-dev" |                     "dev-main": "1.27-dev" | ||||||
|                 }, |                 }, | ||||||
|                 "thanks": { |                 "thanks": { | ||||||
|                     "name": "symfony/polyfill", |                     "name": "symfony/polyfill", | ||||||
| @ -782,7 +826,7 @@ | |||||||
|                 "portable" |                 "portable" | ||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" |                 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -798,20 +842,20 @@ | |||||||
|                     "type": "tidelift" |                     "type": "tidelift" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2022-05-24T11:49:31+00:00" |             "time": "2022-11-03T14:55:06+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "symfony/polyfill-mbstring", |             "name": "symfony/polyfill-mbstring", | ||||||
|             "version": "v1.26.0", |             "version": "v1.27.0", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/symfony/polyfill-mbstring.git", |                 "url": "https://github.com/symfony/polyfill-mbstring.git", | ||||||
|                 "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" |                 "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", |                 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", | ||||||
|                 "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", |                 "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -826,7 +870,7 @@ | |||||||
|             "type": "library", |             "type": "library", | ||||||
|             "extra": { |             "extra": { | ||||||
|                 "branch-alias": { |                 "branch-alias": { | ||||||
|                     "dev-main": "1.26-dev" |                     "dev-main": "1.27-dev" | ||||||
|                 }, |                 }, | ||||||
|                 "thanks": { |                 "thanks": { | ||||||
|                     "name": "symfony/polyfill", |                     "name": "symfony/polyfill", | ||||||
| @ -865,7 +909,7 @@ | |||||||
|                 "shim" |                 "shim" | ||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" |                 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -881,20 +925,20 @@ | |||||||
|                     "type": "tidelift" |                     "type": "tidelift" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2022-05-24T11:49:31+00:00" |             "time": "2022-11-03T14:55:06+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "twig/twig", |             "name": "twig/twig", | ||||||
|             "version": "v3.4.1", |             "version": "v3.4.3", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/twigphp/Twig.git", |                 "url": "https://github.com/twigphp/Twig.git", | ||||||
|                 "reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342" |                 "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/twigphp/Twig/zipball/e939eae92386b69b49cfa4599dd9bead6bf4a342", |                 "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58", | ||||||
|                 "reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342", |                 "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -945,7 +989,7 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/twigphp/Twig/issues", |                 "issues": "https://github.com/twigphp/Twig/issues", | ||||||
|                 "source": "https://github.com/twigphp/Twig/tree/v3.4.1" |                 "source": "https://github.com/twigphp/Twig/tree/v3.4.3" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -957,7 +1001,7 @@ | |||||||
|                     "type": "tidelift" |                     "type": "tidelift" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2022-05-17T05:48:52+00:00" |             "time": "2022-09-28T08:42:51+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "web-auth/cose-lib", |             "name": "web-auth/cose-lib", | ||||||
| @ -1155,16 +1199,16 @@ | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "nikic/php-parser", |             "name": "nikic/php-parser", | ||||||
|             "version": "v4.14.0", |             "version": "v4.15.2", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/nikic/PHP-Parser.git", |                 "url": "https://github.com/nikic/PHP-Parser.git", | ||||||
|                 "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" |                 "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", |                 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", | ||||||
|                 "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", |                 "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -1205,9 +1249,9 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/nikic/PHP-Parser/issues", |                 "issues": "https://github.com/nikic/PHP-Parser/issues", | ||||||
|                 "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" |                 "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" | ||||||
|             }, |             }, | ||||||
|             "time": "2022-05-31T20:59:12+00:00" |             "time": "2022-11-12T15:38:23+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "phar-io/manifest", |             "name": "phar-io/manifest", | ||||||
| @ -1320,252 +1364,25 @@ | |||||||
|             }, |             }, | ||||||
|             "time": "2022-02-21T01:04:05+00:00" |             "time": "2022-02-21T01:04:05+00:00" | ||||||
|         }, |         }, | ||||||
|         { |  | ||||||
|             "name": "phpdocumentor/reflection-common", |  | ||||||
|             "version": "2.2.0", |  | ||||||
|             "source": { |  | ||||||
|                 "type": "git", |  | ||||||
|                 "url": "https://github.com/phpDocumentor/ReflectionCommon.git", |  | ||||||
|                 "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" |  | ||||||
|             }, |  | ||||||
|             "dist": { |  | ||||||
|                 "type": "zip", |  | ||||||
|                 "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", |  | ||||||
|                 "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", |  | ||||||
|                 "shasum": "" |  | ||||||
|             }, |  | ||||||
|             "require": { |  | ||||||
|                 "php": "^7.2 || ^8.0" |  | ||||||
|             }, |  | ||||||
|             "type": "library", |  | ||||||
|             "extra": { |  | ||||||
|                 "branch-alias": { |  | ||||||
|                     "dev-2.x": "2.x-dev" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "autoload": { |  | ||||||
|                 "psr-4": { |  | ||||||
|                     "phpDocumentor\\Reflection\\": "src/" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "notification-url": "https://packagist.org/downloads/", |  | ||||||
|             "license": [ |  | ||||||
|                 "MIT" |  | ||||||
|             ], |  | ||||||
|             "authors": [ |  | ||||||
|                 { |  | ||||||
|                     "name": "Jaap van Otterdijk", |  | ||||||
|                     "email": "opensource@ijaap.nl" |  | ||||||
|                 } |  | ||||||
|             ], |  | ||||||
|             "description": "Common reflection classes used by phpdocumentor to reflect the code structure", |  | ||||||
|             "homepage": "http://www.phpdoc.org", |  | ||||||
|             "keywords": [ |  | ||||||
|                 "FQSEN", |  | ||||||
|                 "phpDocumentor", |  | ||||||
|                 "phpdoc", |  | ||||||
|                 "reflection", |  | ||||||
|                 "static analysis" |  | ||||||
|             ], |  | ||||||
|             "support": { |  | ||||||
|                 "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", |  | ||||||
|                 "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" |  | ||||||
|             }, |  | ||||||
|             "time": "2020-06-27T09:03:43+00:00" |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "name": "phpdocumentor/reflection-docblock", |  | ||||||
|             "version": "5.3.0", |  | ||||||
|             "source": { |  | ||||||
|                 "type": "git", |  | ||||||
|                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", |  | ||||||
|                 "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" |  | ||||||
|             }, |  | ||||||
|             "dist": { |  | ||||||
|                 "type": "zip", |  | ||||||
|                 "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", |  | ||||||
|                 "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", |  | ||||||
|                 "shasum": "" |  | ||||||
|             }, |  | ||||||
|             "require": { |  | ||||||
|                 "ext-filter": "*", |  | ||||||
|                 "php": "^7.2 || ^8.0", |  | ||||||
|                 "phpdocumentor/reflection-common": "^2.2", |  | ||||||
|                 "phpdocumentor/type-resolver": "^1.3", |  | ||||||
|                 "webmozart/assert": "^1.9.1" |  | ||||||
|             }, |  | ||||||
|             "require-dev": { |  | ||||||
|                 "mockery/mockery": "~1.3.2", |  | ||||||
|                 "psalm/phar": "^4.8" |  | ||||||
|             }, |  | ||||||
|             "type": "library", |  | ||||||
|             "extra": { |  | ||||||
|                 "branch-alias": { |  | ||||||
|                     "dev-master": "5.x-dev" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "autoload": { |  | ||||||
|                 "psr-4": { |  | ||||||
|                     "phpDocumentor\\Reflection\\": "src" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "notification-url": "https://packagist.org/downloads/", |  | ||||||
|             "license": [ |  | ||||||
|                 "MIT" |  | ||||||
|             ], |  | ||||||
|             "authors": [ |  | ||||||
|                 { |  | ||||||
|                     "name": "Mike van Riel", |  | ||||||
|                     "email": "me@mikevanriel.com" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Jaap van Otterdijk", |  | ||||||
|                     "email": "account@ijaap.nl" |  | ||||||
|                 } |  | ||||||
|             ], |  | ||||||
|             "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", |  | ||||||
|             "support": { |  | ||||||
|                 "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", |  | ||||||
|                 "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" |  | ||||||
|             }, |  | ||||||
|             "time": "2021-10-19T17:43:47+00:00" |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "name": "phpdocumentor/type-resolver", |  | ||||||
|             "version": "1.6.1", |  | ||||||
|             "source": { |  | ||||||
|                 "type": "git", |  | ||||||
|                 "url": "https://github.com/phpDocumentor/TypeResolver.git", |  | ||||||
|                 "reference": "77a32518733312af16a44300404e945338981de3" |  | ||||||
|             }, |  | ||||||
|             "dist": { |  | ||||||
|                 "type": "zip", |  | ||||||
|                 "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", |  | ||||||
|                 "reference": "77a32518733312af16a44300404e945338981de3", |  | ||||||
|                 "shasum": "" |  | ||||||
|             }, |  | ||||||
|             "require": { |  | ||||||
|                 "php": "^7.2 || ^8.0", |  | ||||||
|                 "phpdocumentor/reflection-common": "^2.0" |  | ||||||
|             }, |  | ||||||
|             "require-dev": { |  | ||||||
|                 "ext-tokenizer": "*", |  | ||||||
|                 "psalm/phar": "^4.8" |  | ||||||
|             }, |  | ||||||
|             "type": "library", |  | ||||||
|             "extra": { |  | ||||||
|                 "branch-alias": { |  | ||||||
|                     "dev-1.x": "1.x-dev" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "autoload": { |  | ||||||
|                 "psr-4": { |  | ||||||
|                     "phpDocumentor\\Reflection\\": "src" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "notification-url": "https://packagist.org/downloads/", |  | ||||||
|             "license": [ |  | ||||||
|                 "MIT" |  | ||||||
|             ], |  | ||||||
|             "authors": [ |  | ||||||
|                 { |  | ||||||
|                     "name": "Mike van Riel", |  | ||||||
|                     "email": "me@mikevanriel.com" |  | ||||||
|                 } |  | ||||||
|             ], |  | ||||||
|             "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", |  | ||||||
|             "support": { |  | ||||||
|                 "issues": "https://github.com/phpDocumentor/TypeResolver/issues", |  | ||||||
|                 "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" |  | ||||||
|             }, |  | ||||||
|             "time": "2022-03-15T21:29:03+00:00" |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "name": "phpspec/prophecy", |  | ||||||
|             "version": "v1.15.0", |  | ||||||
|             "source": { |  | ||||||
|                 "type": "git", |  | ||||||
|                 "url": "https://github.com/phpspec/prophecy.git", |  | ||||||
|                 "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" |  | ||||||
|             }, |  | ||||||
|             "dist": { |  | ||||||
|                 "type": "zip", |  | ||||||
|                 "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", |  | ||||||
|                 "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", |  | ||||||
|                 "shasum": "" |  | ||||||
|             }, |  | ||||||
|             "require": { |  | ||||||
|                 "doctrine/instantiator": "^1.2", |  | ||||||
|                 "php": "^7.2 || ~8.0, <8.2", |  | ||||||
|                 "phpdocumentor/reflection-docblock": "^5.2", |  | ||||||
|                 "sebastian/comparator": "^3.0 || ^4.0", |  | ||||||
|                 "sebastian/recursion-context": "^3.0 || ^4.0" |  | ||||||
|             }, |  | ||||||
|             "require-dev": { |  | ||||||
|                 "phpspec/phpspec": "^6.0 || ^7.0", |  | ||||||
|                 "phpunit/phpunit": "^8.0 || ^9.0" |  | ||||||
|             }, |  | ||||||
|             "type": "library", |  | ||||||
|             "extra": { |  | ||||||
|                 "branch-alias": { |  | ||||||
|                     "dev-master": "1.x-dev" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "autoload": { |  | ||||||
|                 "psr-4": { |  | ||||||
|                     "Prophecy\\": "src/Prophecy" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "notification-url": "https://packagist.org/downloads/", |  | ||||||
|             "license": [ |  | ||||||
|                 "MIT" |  | ||||||
|             ], |  | ||||||
|             "authors": [ |  | ||||||
|                 { |  | ||||||
|                     "name": "Konstantin Kudryashov", |  | ||||||
|                     "email": "ever.zet@gmail.com", |  | ||||||
|                     "homepage": "http://everzet.com" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Marcello Duarte", |  | ||||||
|                     "email": "marcello.duarte@gmail.com" |  | ||||||
|                 } |  | ||||||
|             ], |  | ||||||
|             "description": "Highly opinionated mocking framework for PHP 5.3+", |  | ||||||
|             "homepage": "https://github.com/phpspec/prophecy", |  | ||||||
|             "keywords": [ |  | ||||||
|                 "Double", |  | ||||||
|                 "Dummy", |  | ||||||
|                 "fake", |  | ||||||
|                 "mock", |  | ||||||
|                 "spy", |  | ||||||
|                 "stub" |  | ||||||
|             ], |  | ||||||
|             "support": { |  | ||||||
|                 "issues": "https://github.com/phpspec/prophecy/issues", |  | ||||||
|                 "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" |  | ||||||
|             }, |  | ||||||
|             "time": "2021-12-08T12:19:24+00:00" |  | ||||||
|         }, |  | ||||||
|         { |         { | ||||||
|             "name": "phpunit/php-code-coverage", |             "name": "phpunit/php-code-coverage", | ||||||
|             "version": "9.2.15", |             "version": "9.2.19", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git", |                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git", | ||||||
|                 "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" |                 "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", |                 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c77b56b63e3d2031bd8997fcec43c1925ae46559", | ||||||
|                 "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", |                 "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
|                 "ext-dom": "*", |                 "ext-dom": "*", | ||||||
|                 "ext-libxml": "*", |                 "ext-libxml": "*", | ||||||
|                 "ext-xmlwriter": "*", |                 "ext-xmlwriter": "*", | ||||||
|                 "nikic/php-parser": "^4.13.0", |                 "nikic/php-parser": "^4.14", | ||||||
|                 "php": ">=7.3", |                 "php": ">=7.3", | ||||||
|                 "phpunit/php-file-iterator": "^3.0.3", |                 "phpunit/php-file-iterator": "^3.0.3", | ||||||
|                 "phpunit/php-text-template": "^2.0.2", |                 "phpunit/php-text-template": "^2.0.2", | ||||||
| @ -1614,7 +1431,7 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", |                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", | ||||||
|                 "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" |                 "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.19" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -1622,7 +1439,7 @@ | |||||||
|                     "type": "github" |                     "type": "github" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2022-03-07T09:28:20+00:00" |             "time": "2022-11-18T07:47:47+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "phpunit/php-file-iterator", |             "name": "phpunit/php-file-iterator", | ||||||
| @ -1867,16 +1684,16 @@ | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "phpunit/phpunit", |             "name": "phpunit/phpunit", | ||||||
|             "version": "9.5.20", |             "version": "9.5.26", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/sebastianbergmann/phpunit.git", |                 "url": "https://github.com/sebastianbergmann/phpunit.git", | ||||||
|                 "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" |                 "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", |                 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/851867efcbb6a1b992ec515c71cdcf20d895e9d2", | ||||||
|                 "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", |                 "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -1891,7 +1708,6 @@ | |||||||
|                 "phar-io/manifest": "^2.0.3", |                 "phar-io/manifest": "^2.0.3", | ||||||
|                 "phar-io/version": "^3.0.2", |                 "phar-io/version": "^3.0.2", | ||||||
|                 "php": ">=7.3", |                 "php": ">=7.3", | ||||||
|                 "phpspec/prophecy": "^1.12.1", |  | ||||||
|                 "phpunit/php-code-coverage": "^9.2.13", |                 "phpunit/php-code-coverage": "^9.2.13", | ||||||
|                 "phpunit/php-file-iterator": "^3.0.5", |                 "phpunit/php-file-iterator": "^3.0.5", | ||||||
|                 "phpunit/php-invoker": "^3.1.1", |                 "phpunit/php-invoker": "^3.1.1", | ||||||
| @ -1899,20 +1715,16 @@ | |||||||
|                 "phpunit/php-timer": "^5.0.2", |                 "phpunit/php-timer": "^5.0.2", | ||||||
|                 "sebastian/cli-parser": "^1.0.1", |                 "sebastian/cli-parser": "^1.0.1", | ||||||
|                 "sebastian/code-unit": "^1.0.6", |                 "sebastian/code-unit": "^1.0.6", | ||||||
|                 "sebastian/comparator": "^4.0.5", |                 "sebastian/comparator": "^4.0.8", | ||||||
|                 "sebastian/diff": "^4.0.3", |                 "sebastian/diff": "^4.0.3", | ||||||
|                 "sebastian/environment": "^5.1.3", |                 "sebastian/environment": "^5.1.3", | ||||||
|                 "sebastian/exporter": "^4.0.3", |                 "sebastian/exporter": "^4.0.5", | ||||||
|                 "sebastian/global-state": "^5.0.1", |                 "sebastian/global-state": "^5.0.1", | ||||||
|                 "sebastian/object-enumerator": "^4.0.3", |                 "sebastian/object-enumerator": "^4.0.3", | ||||||
|                 "sebastian/resource-operations": "^3.0.3", |                 "sebastian/resource-operations": "^3.0.3", | ||||||
|                 "sebastian/type": "^3.0", |                 "sebastian/type": "^3.2", | ||||||
|                 "sebastian/version": "^3.0.2" |                 "sebastian/version": "^3.0.2" | ||||||
|             }, |             }, | ||||||
|             "require-dev": { |  | ||||||
|                 "ext-pdo": "*", |  | ||||||
|                 "phpspec/prophecy-phpunit": "^2.0.1" |  | ||||||
|             }, |  | ||||||
|             "suggest": { |             "suggest": { | ||||||
|                 "ext-soap": "*", |                 "ext-soap": "*", | ||||||
|                 "ext-xdebug": "*" |                 "ext-xdebug": "*" | ||||||
| @ -1954,7 +1766,7 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/sebastianbergmann/phpunit/issues", |                 "issues": "https://github.com/sebastianbergmann/phpunit/issues", | ||||||
|                 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" |                 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.26" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -1964,9 +1776,13 @@ | |||||||
|                 { |                 { | ||||||
|                     "url": "https://github.com/sebastianbergmann", |                     "url": "https://github.com/sebastianbergmann", | ||||||
|                     "type": "github" |                     "type": "github" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", | ||||||
|  |                     "type": "tidelift" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2022-04-01T12:37:26+00:00" |             "time": "2022-10-28T06:00:21+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "sebastian/cli-parser", |             "name": "sebastian/cli-parser", | ||||||
| @ -2137,16 +1953,16 @@ | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "sebastian/comparator", |             "name": "sebastian/comparator", | ||||||
|             "version": "4.0.6", |             "version": "4.0.8", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/sebastianbergmann/comparator.git", |                 "url": "https://github.com/sebastianbergmann/comparator.git", | ||||||
|                 "reference": "55f4261989e546dc112258c7a75935a81a7ce382" |                 "reference": "fa0f136dd2334583309d32b62544682ee972b51a" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", |                 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", | ||||||
|                 "reference": "55f4261989e546dc112258c7a75935a81a7ce382", |                 "reference": "fa0f136dd2334583309d32b62544682ee972b51a", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -2199,7 +2015,7 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/sebastianbergmann/comparator/issues", |                 "issues": "https://github.com/sebastianbergmann/comparator/issues", | ||||||
|                 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" |                 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -2207,7 +2023,7 @@ | |||||||
|                     "type": "github" |                     "type": "github" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2020-10-26T15:49:45+00:00" |             "time": "2022-09-14T12:41:17+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "sebastian/complexity", |             "name": "sebastian/complexity", | ||||||
| @ -2397,16 +2213,16 @@ | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "sebastian/exporter", |             "name": "sebastian/exporter", | ||||||
|             "version": "4.0.4", |             "version": "4.0.5", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/sebastianbergmann/exporter.git", |                 "url": "https://github.com/sebastianbergmann/exporter.git", | ||||||
|                 "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" |                 "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", |                 "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", | ||||||
|                 "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", |                 "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -2462,7 +2278,7 @@ | |||||||
|             ], |             ], | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/sebastianbergmann/exporter/issues", |                 "issues": "https://github.com/sebastianbergmann/exporter/issues", | ||||||
|                 "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" |                 "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -2470,7 +2286,7 @@ | |||||||
|                     "type": "github" |                     "type": "github" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2021-11-11T14:18:36+00:00" |             "time": "2022-09-14T06:03:37+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "sebastian/global-state", |             "name": "sebastian/global-state", | ||||||
| @ -2825,16 +2641,16 @@ | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "sebastian/type", |             "name": "sebastian/type", | ||||||
|             "version": "3.0.0", |             "version": "3.2.0", | ||||||
|             "source": { |             "source": { | ||||||
|                 "type": "git", |                 "type": "git", | ||||||
|                 "url": "https://github.com/sebastianbergmann/type.git", |                 "url": "https://github.com/sebastianbergmann/type.git", | ||||||
|                 "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" |                 "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" | ||||||
|             }, |             }, | ||||||
|             "dist": { |             "dist": { | ||||||
|                 "type": "zip", |                 "type": "zip", | ||||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", |                 "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", | ||||||
|                 "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", |                 "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", | ||||||
|                 "shasum": "" |                 "shasum": "" | ||||||
|             }, |             }, | ||||||
|             "require": { |             "require": { | ||||||
| @ -2846,7 +2662,7 @@ | |||||||
|             "type": "library", |             "type": "library", | ||||||
|             "extra": { |             "extra": { | ||||||
|                 "branch-alias": { |                 "branch-alias": { | ||||||
|                     "dev-master": "3.0-dev" |                     "dev-master": "3.2-dev" | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             "autoload": { |             "autoload": { | ||||||
| @ -2869,7 +2685,7 @@ | |||||||
|             "homepage": "https://github.com/sebastianbergmann/type", |             "homepage": "https://github.com/sebastianbergmann/type", | ||||||
|             "support": { |             "support": { | ||||||
|                 "issues": "https://github.com/sebastianbergmann/type/issues", |                 "issues": "https://github.com/sebastianbergmann/type/issues", | ||||||
|                 "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" |                 "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" | ||||||
|             }, |             }, | ||||||
|             "funding": [ |             "funding": [ | ||||||
|                 { |                 { | ||||||
| @ -2877,7 +2693,7 @@ | |||||||
|                     "type": "github" |                     "type": "github" | ||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2022-03-15T09:54:48+00:00" |             "time": "2022-09-12T14:47:03+00:00" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "name": "sebastian/version", |             "name": "sebastian/version", | ||||||
| @ -2981,64 +2797,6 @@ | |||||||
|                 } |                 } | ||||||
|             ], |             ], | ||||||
|             "time": "2021-07-28T10:34:58+00:00" |             "time": "2021-07-28T10:34:58+00:00" | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "name": "webmozart/assert", |  | ||||||
|             "version": "1.11.0", |  | ||||||
|             "source": { |  | ||||||
|                 "type": "git", |  | ||||||
|                 "url": "https://github.com/webmozarts/assert.git", |  | ||||||
|                 "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" |  | ||||||
|             }, |  | ||||||
|             "dist": { |  | ||||||
|                 "type": "zip", |  | ||||||
|                 "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", |  | ||||||
|                 "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", |  | ||||||
|                 "shasum": "" |  | ||||||
|             }, |  | ||||||
|             "require": { |  | ||||||
|                 "ext-ctype": "*", |  | ||||||
|                 "php": "^7.2 || ^8.0" |  | ||||||
|             }, |  | ||||||
|             "conflict": { |  | ||||||
|                 "phpstan/phpstan": "<0.12.20", |  | ||||||
|                 "vimeo/psalm": "<4.6.1 || 4.6.2" |  | ||||||
|             }, |  | ||||||
|             "require-dev": { |  | ||||||
|                 "phpunit/phpunit": "^8.5.13" |  | ||||||
|             }, |  | ||||||
|             "type": "library", |  | ||||||
|             "extra": { |  | ||||||
|                 "branch-alias": { |  | ||||||
|                     "dev-master": "1.10-dev" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "autoload": { |  | ||||||
|                 "psr-4": { |  | ||||||
|                     "Webmozart\\Assert\\": "src/" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "notification-url": "https://packagist.org/downloads/", |  | ||||||
|             "license": [ |  | ||||||
|                 "MIT" |  | ||||||
|             ], |  | ||||||
|             "authors": [ |  | ||||||
|                 { |  | ||||||
|                     "name": "Bernhard Schussek", |  | ||||||
|                     "email": "bschussek@gmail.com" |  | ||||||
|                 } |  | ||||||
|             ], |  | ||||||
|             "description": "Assertions to validate method input/output with nice error messages.", |  | ||||||
|             "keywords": [ |  | ||||||
|                 "assert", |  | ||||||
|                 "check", |  | ||||||
|                 "validate" |  | ||||||
|             ], |  | ||||||
|             "support": { |  | ||||||
|                 "issues": "https://github.com/webmozarts/assert/issues", |  | ||||||
|                 "source": "https://github.com/webmozarts/assert/tree/1.11.0" |  | ||||||
|             }, |  | ||||||
|             "time": "2022-06-03T18:03:27+00:00" |  | ||||||
|         } |         } | ||||||
|     ], |     ], | ||||||
|     "aliases": [], |     "aliases": [], | ||||||
| @ -3048,5 +2806,5 @@ | |||||||
|     "prefer-lowest": false, |     "prefer-lowest": false, | ||||||
|     "platform": [], |     "platform": [], | ||||||
|     "platform-dev": [], |     "platform-dev": [], | ||||||
|     "plugin-api-version": "2.2.0" |     "plugin-api-version": "2.3.0" | ||||||
| } | } | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ use Core\Configuration\Settings; | |||||||
| use Core\Driver\SQL\Condition\Compare; | use Core\Driver\SQL\Condition\Compare; | ||||||
| use Core\Driver\SQL\Condition\CondLike; | use Core\Driver\SQL\Condition\CondLike; | ||||||
| use Core\Driver\SQL\Condition\CondOr; | use Core\Driver\SQL\Condition\CondOr; | ||||||
| use Core\Driver\SQL\Join; | use Core\Driver\SQL\Join\InnerJoin; | ||||||
| use Core\Driver\SQL\SQL; | use Core\Driver\SQL\SQL; | ||||||
| use Firebase\JWT\JWT; | use Firebase\JWT\JWT; | ||||||
| use Core\Objects\DatabaseEntity\Language; | use Core\Objects\DatabaseEntity\Language; | ||||||
| @ -179,11 +179,11 @@ class Context { | |||||||
| 
 | 
 | ||||||
|   public function loadApiKey(string $apiKey): bool { |   public function loadApiKey(string $apiKey): bool { | ||||||
|     $this->user = User::findBy(User::createBuilder($this->sql, true) |     $this->user = User::findBy(User::createBuilder($this->sql, true) | ||||||
|       ->addJoin(new Join("INNER","ApiKey", "ApiKey.user_id", "User.id")) |       ->addJoin(new InnerJoin("ApiKey", "ApiKey.user_id", "User.id")) | ||||||
|       ->where(new Compare("ApiKey.api_key", $apiKey)) |       ->whereEq("ApiKey.api_key", $apiKey) | ||||||
|       ->where(new Compare("valid_until", $this->sql->currentTimestamp(), ">")) |       ->whereGt("valid_until", $this->sql->currentTimestamp()) | ||||||
|       ->where(new Compare("ApiKey.active", true)) |       ->whereTrue("ApiKey.active", true) | ||||||
|       ->where(new Compare("User.confirmed", true)) |       ->whereTrue("User.confirmed", true) | ||||||
|       ->fetchEntities()); |       ->fetchEntities()); | ||||||
| 
 | 
 | ||||||
|     return $this->user !== null; |     return $this->user !== null; | ||||||
|  | |||||||
| @ -40,7 +40,7 @@ abstract class DatabaseEntity { | |||||||
|     $handler = self::getHandler($sql); |     $handler = self::getHandler($sql); | ||||||
|     if ($fetchEntities) { |     if ($fetchEntities) { | ||||||
|       return DatabaseEntityQuery::fetchOne(self::getHandler($sql)) |       return DatabaseEntityQuery::fetchOne(self::getHandler($sql)) | ||||||
|         ->where(new Compare($handler->getTableName() . ".id", $id)) |         ->whereEq($handler->getTableName() . ".id", $id) | ||||||
|         ->fetchEntities($fetchRecursive) |         ->fetchEntities($fetchRecursive) | ||||||
|         ->execute(); |         ->execute(); | ||||||
|     } else { |     } else { | ||||||
| @ -52,7 +52,7 @@ abstract class DatabaseEntity { | |||||||
|     $handler = self::getHandler($sql); |     $handler = self::getHandler($sql); | ||||||
|     $res = $sql->select($sql->count()) |     $res = $sql->select($sql->count()) | ||||||
|       ->from($handler->getTableName()) |       ->from($handler->getTableName()) | ||||||
|       ->where(new Compare($handler->getTableName() . ".id", $id)) |       ->whereEq($handler->getTableName() . ".id", $id) | ||||||
|       ->execute(); |       ->execute(); | ||||||
| 
 | 
 | ||||||
|     return $res !== false && $res[0]["count"] !== 0; |     return $res !== false && $res[0]["count"] !== 0; | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ use Core\Driver\SQL\Column\FloatColumn; | |||||||
| use Core\Driver\SQL\Condition\CondNot; | use Core\Driver\SQL\Condition\CondNot; | ||||||
| use Core\Driver\SQL\Condition\CondOr; | use Core\Driver\SQL\Condition\CondOr; | ||||||
| use Core\Driver\SQL\Constraint\ForeignKey; | use Core\Driver\SQL\Constraint\ForeignKey; | ||||||
| use Core\Driver\SQL\Join; | use Core\Driver\SQL\Join\InnerJoin; | ||||||
| use Core\Driver\SQL\Query\CreateProcedure; | use Core\Driver\SQL\Query\CreateProcedure; | ||||||
| use Core\Driver\SQL\Query\CreateTable; | use Core\Driver\SQL\Query\CreateTable; | ||||||
| use Core\Driver\SQL\Query\Insert; | use Core\Driver\SQL\Query\Insert; | ||||||
| @ -323,7 +323,7 @@ class DatabaseEntityHandler implements Persistable { | |||||||
| 
 | 
 | ||||||
|       // delete from n:m table if no longer exists
 |       // delete from n:m table if no longer exists
 | ||||||
|       $deleteStatement = $this->sql->delete($nmTable) |       $deleteStatement = $this->sql->delete($nmTable) | ||||||
|         ->where(new Compare($thisIdColumn, $entity->getId())); |         ->whereEq($thisIdColumn, $entity->getId()); | ||||||
| 
 | 
 | ||||||
|       if (!empty($dataColumns)) { |       if (!empty($dataColumns)) { | ||||||
|         $conditions = []; |         $conditions = []; | ||||||
| @ -439,9 +439,8 @@ class DatabaseEntityHandler implements Persistable { | |||||||
|       $dataColumns = $nmRelation->getDataColumns(); |       $dataColumns = $nmRelation->getDataColumns(); | ||||||
| 
 | 
 | ||||||
|       $relEntityQuery = DatabaseEntityQuery::fetchAll($otherHandler) |       $relEntityQuery = DatabaseEntityQuery::fetchAll($otherHandler) | ||||||
|         ->addJoin(new Join("INNER", $nmTable, "$nmTable.$refIdColumn", "$refTableName.id")) |         ->addJoin(new InnerJoin($nmTable, "$nmTable.$refIdColumn", "$refTableName.id")) | ||||||
|         ->where(new CondIn(new Column($thisIdColumn), $entityIds)) |         ->where(new CondIn(new Column($thisIdColumn), $entityIds)); | ||||||
|         ->getQuery(); |  | ||||||
| 
 | 
 | ||||||
|       $relEntityQuery->addColumn($thisIdColumn); |       $relEntityQuery->addColumn($thisIdColumn); | ||||||
|       foreach ($dataColumns as $tableDataColumns) { |       foreach ($dataColumns as $tableDataColumns) { | ||||||
| @ -498,7 +497,7 @@ class DatabaseEntityHandler implements Persistable { | |||||||
| 
 | 
 | ||||||
|   public function fetchOne(int $id): DatabaseEntity|bool|null { |   public function fetchOne(int $id): DatabaseEntity|bool|null { | ||||||
|     $res = $this->getSelectQuery() |     $res = $this->getSelectQuery() | ||||||
|       ->where(new Compare($this->tableName . ".id", $id)) |       ->whereEq($this->tableName . ".id", $id) | ||||||
|       ->first() |       ->first() | ||||||
|       ->execute(); |       ->execute(); | ||||||
| 
 | 
 | ||||||
| @ -637,7 +636,7 @@ class DatabaseEntityHandler implements Persistable { | |||||||
| 
 | 
 | ||||||
|     $entity->preInsert($row); |     $entity->preInsert($row); | ||||||
|     $query = $this->sql->update($this->tableName) |     $query = $this->sql->update($this->tableName) | ||||||
|       ->where(new Compare($this->tableName . ".id", $entity->getId())); |       ->whereEq($this->tableName . ".id", $entity->getId()); | ||||||
| 
 | 
 | ||||||
|     foreach ($row as $columnName => $value) { |     foreach ($row as $columnName => $value) { | ||||||
|       $query->set($columnName, $value); |       $query->set($columnName, $value); | ||||||
| @ -693,7 +692,7 @@ class DatabaseEntityHandler implements Persistable { | |||||||
|   public function delete(int $id) { |   public function delete(int $id) { | ||||||
|     return $this->sql |     return $this->sql | ||||||
|       ->delete($this->tableName) |       ->delete($this->tableName) | ||||||
|       ->where(new Compare($this->tableName . ".id", $id)) |       ->whereEq($this->tableName . ".id", $id) | ||||||
|       ->execute(); |       ->execute(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ use Core\Driver\SQL\SQL; | |||||||
|  * this class is similar to \Driver\SQL\Query\Select but with reduced functionality |  * this class is similar to \Driver\SQL\Query\Select but with reduced functionality | ||||||
|  * and more adapted to entities. |  * and more adapted to entities. | ||||||
| */ | */ | ||||||
| class DatabaseEntityQuery { | class DatabaseEntityQuery extends Select { | ||||||
| 
 | 
 | ||||||
|   const FETCH_NONE = 0; |   const FETCH_NONE = 0; | ||||||
|   const FETCH_DIRECT = 1; |   const FETCH_DIRECT = 1; | ||||||
| @ -20,22 +20,22 @@ class DatabaseEntityQuery { | |||||||
| 
 | 
 | ||||||
|   private Logger $logger; |   private Logger $logger; | ||||||
|   private DatabaseEntityHandler $handler; |   private DatabaseEntityHandler $handler; | ||||||
|   private Select $selectQuery; |  | ||||||
|   private int $resultType; |   private int $resultType; | ||||||
|   private bool $logVerbose; |   private bool $logVerbose; | ||||||
| 
 | 
 | ||||||
|   private int $fetchSubEntities; |   private int $fetchSubEntities; | ||||||
| 
 | 
 | ||||||
|   private function __construct(DatabaseEntityHandler $handler, int $resultType) { |   private function __construct(DatabaseEntityHandler $handler, int $resultType) { | ||||||
|  |     parent::__construct($handler->getSQL(), ...$handler->getColumnNames()); | ||||||
|     $this->handler = $handler; |     $this->handler = $handler; | ||||||
|     $this->selectQuery = $handler->getSelectQuery(); |  | ||||||
|     $this->logger = new Logger("DB-EntityQuery", $handler->getSQL()); |     $this->logger = new Logger("DB-EntityQuery", $handler->getSQL()); | ||||||
|     $this->resultType = $resultType; |     $this->resultType = $resultType; | ||||||
|     $this->logVerbose = false; |     $this->logVerbose = false; | ||||||
|     $this->fetchSubEntities = self::FETCH_NONE; |  | ||||||
| 
 | 
 | ||||||
|  |     $this->from($handler->getTableName()); | ||||||
|  |     $this->fetchSubEntities = self::FETCH_NONE; | ||||||
|     if ($this->resultType === SQL::FETCH_ONE) { |     if ($this->resultType === SQL::FETCH_ONE) { | ||||||
|       $this->selectQuery->first(); |       $this->first(); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -52,36 +52,6 @@ class DatabaseEntityQuery { | |||||||
|     return new DatabaseEntityQuery($handler, SQL::FETCH_ONE); |     return new DatabaseEntityQuery($handler, SQL::FETCH_ONE); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public function limit(int $limit): DatabaseEntityQuery { |  | ||||||
|     $this->selectQuery->limit($limit); |  | ||||||
|     return $this; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function offset(int $offset): static { |  | ||||||
|     $this->selectQuery->offset($offset); |  | ||||||
|     return $this; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function where(Condition ...$condition): DatabaseEntityQuery { |  | ||||||
|     $this->selectQuery->where(...$condition); |  | ||||||
|     return $this; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function orderBy(string ...$column): DatabaseEntityQuery { |  | ||||||
|     $this->selectQuery->orderBy(...$column); |  | ||||||
|     return $this; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function ascending(): DatabaseEntityQuery { |  | ||||||
|     $this->selectQuery->ascending(); |  | ||||||
|     return $this; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function descending(): DatabaseEntityQuery { |  | ||||||
|     $this->selectQuery->descending(); |  | ||||||
|     return $this; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   // TODO: clean this up
 |   // TODO: clean this up
 | ||||||
|   public function fetchEntities(bool $recursive = false): DatabaseEntityQuery { |   public function fetchEntities(bool $recursive = false): DatabaseEntityQuery { | ||||||
| 
 | 
 | ||||||
| @ -110,9 +80,9 @@ class DatabaseEntityQuery { | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     if ($isNullable) { |     if ($isNullable) { | ||||||
|       $this->selectQuery->leftJoin($referencedTable, "$tableName.$foreignColumnName", "$alias.id", $alias); |       $this->leftJoin($referencedTable, "$tableName.$foreignColumnName", "$alias.id", $alias); | ||||||
|     } else { |     } else { | ||||||
|       $this->selectQuery->innerJoin($referencedTable, "$tableName.$foreignColumnName", "$alias.id", $alias); |       $this->innerJoin($referencedTable, "$tableName.$foreignColumnName", "$alias.id", $alias); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     $relationColumnPrefix .= DatabaseEntityHandler::getColumnName($propertyName) . "_"; |     $relationColumnPrefix .= DatabaseEntityHandler::getColumnName($propertyName) . "_"; | ||||||
| @ -120,7 +90,7 @@ class DatabaseEntityQuery { | |||||||
|     foreach ($relationHandler->getColumns() as $relPropertyName => $relColumn) { |     foreach ($relationHandler->getColumns() as $relPropertyName => $relColumn) { | ||||||
|       $relColumnName = $relColumn->getName(); |       $relColumnName = $relColumn->getName(); | ||||||
|       if (!isset($recursiveRelations[$relPropertyName]) || $recursive) { |       if (!isset($recursiveRelations[$relPropertyName]) || $recursive) { | ||||||
|         $this->selectQuery->addValue("$alias.$relColumnName as $relationColumnPrefix$relColumnName"); |         $this->addValue("$alias.$relColumnName as $relationColumnPrefix$relColumnName"); | ||||||
|         if (isset($recursiveRelations[$relPropertyName]) && $recursive) { |         if (isset($recursiveRelations[$relPropertyName]) && $recursive) { | ||||||
|           $this->fetchRelation($relPropertyName, $alias, $relationHandler, $recursiveRelations[$relPropertyName], $relIndex, $recursive, $relationColumnPrefix); |           $this->fetchRelation($relPropertyName, $alias, $relationHandler, $recursiveRelations[$relPropertyName], $relIndex, $recursive, $relationColumnPrefix); | ||||||
|         } |         } | ||||||
| @ -132,11 +102,11 @@ class DatabaseEntityQuery { | |||||||
| 
 | 
 | ||||||
|     if ($this->logVerbose) { |     if ($this->logVerbose) { | ||||||
|       $params = []; |       $params = []; | ||||||
|       $query = $this->selectQuery->build($params); |       $query = $this->build($params); | ||||||
|       $this->logger->debug("QUERY: $query\nARGS: " . print_r($params, true)); |       $this->logger->debug("QUERY: $query\nARGS: " . print_r($params, true)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     $res = $this->selectQuery->execute(); |     $res = parent::execute(); | ||||||
|     if ($res === null || $res === false) { |     if ($res === null || $res === false) { | ||||||
|       return null; |       return null; | ||||||
|     } |     } | ||||||
| @ -167,13 +137,4 @@ class DatabaseEntityQuery { | |||||||
|       return null; |       return null; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   public function addJoin(Join $join): DatabaseEntityQuery { |  | ||||||
|     $this->selectQuery->addJoin($join); |  | ||||||
|     return $this; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   public function getQuery(): Select { |  | ||||||
|     return $this->selectQuery; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
							
								
								
									
										2
									
								
								cli.php
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								cli.php
									
									
									
									
									
								
							| @ -616,7 +616,7 @@ function onImpersonate($argv) { | |||||||
|   if (!is_numeric($userId)) { |   if (!is_numeric($userId)) { | ||||||
|     $res = $sql->select("id") |     $res = $sql->select("id") | ||||||
|       ->from("User") |       ->from("User") | ||||||
|       ->where(new Compare("name", $userId)) |       ->whereEq("name", $userId) | ||||||
|       ->execute(); |       ->execute(); | ||||||
|     if ($res === false) { |     if ($res === false) { | ||||||
|       _exit("SQL error: " . $sql->getLastError()); |       _exit("SQL error: " . $sql->getLastError()); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Roman Hergenreder
						Roman Hergenreder