Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Xentral\Modules\GoogleCalendar\Wrapper;
|
||||
|
||||
use Xentral\Components\Database\Database;
|
||||
|
||||
class UserAddressGatewayWrapper
|
||||
{
|
||||
/** @var Database $db */
|
||||
private $db;
|
||||
|
||||
/**
|
||||
* @param Database $database
|
||||
*/
|
||||
public function __construct(Database $database)
|
||||
{
|
||||
$this->db = $database;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds address id by user id.
|
||||
*
|
||||
* @param int $userId
|
||||
*
|
||||
* @return int address Id
|
||||
*/
|
||||
public function getAddressByUser(int $userId): int
|
||||
{
|
||||
if ($userId < 1) {
|
||||
return 0;
|
||||
}
|
||||
$entry = $this->db->fetchValue(
|
||||
'SELECT u.adresse FROM `user` AS `u` WHERE u.id = :userId',
|
||||
['userId' => (int)$userId]
|
||||
);
|
||||
|
||||
return (int)$entry;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $addressId
|
||||
*
|
||||
* @return int userId 0=address has no user
|
||||
*/
|
||||
public function getUserByAddress(int $addressId): int
|
||||
{
|
||||
if ($addressId < 1) {
|
||||
return 0;
|
||||
}
|
||||
$entry = $this->db->fetchValue(
|
||||
'SELECT u.id FROM `user` AS u WHERE u.adresse = :addressId',
|
||||
['addressId' => (int)$addressId]
|
||||
);
|
||||
|
||||
return (int)$entry;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $addressId
|
||||
*
|
||||
* @return string e-mail address
|
||||
*/
|
||||
public function getEmailByAddress(int $addressId): string
|
||||
{
|
||||
if ($addressId < 1) {
|
||||
return '';
|
||||
}
|
||||
$sql = "SELECT a.email AS `email`
|
||||
FROM `adresse` AS `a`
|
||||
WHERE a.id = :addressId AND a.email <> '' AND a.email IS NOT NULL
|
||||
UNION ALL
|
||||
SELECT k.kontakt AS `email`
|
||||
FROM `adresse_kontakte` AS `k`
|
||||
WHERE k.adresse = :addressId AND (k.bezeichnung LIKE 'e%mail' OR k.bezeichnung LIKE '%google%')
|
||||
LIMIT 1";
|
||||
$values = ['addressId' => $addressId];
|
||||
$result = $this->db->fetchRow($sql, $values);
|
||||
if (empty($result) || $result['email'] === '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $result['email'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds address Id by e-mail.
|
||||
*
|
||||
* @param string $email
|
||||
*
|
||||
* @return int address id
|
||||
*/
|
||||
public function findAddressByEmail(string $email): int
|
||||
{
|
||||
$values = ['email' => strtolower($email)];
|
||||
$address = $this->db->fetchValue(
|
||||
'SELECT u.adresse
|
||||
FROM `user` AS `u`
|
||||
JOIN `google_account` AS `gc` ON u.id = gc.user_id
|
||||
JOIN `google_account_property` AS `gp` ON gp.google_account_id = gc.id
|
||||
WHERE gp.value LIKE :email',
|
||||
$values
|
||||
);
|
||||
if ($address > 0) {
|
||||
return $address;
|
||||
}
|
||||
|
||||
$address = $this->db->fetchValue(
|
||||
'SELECT a.id
|
||||
FROM `adresse` AS `a`
|
||||
WHERE a.email LIKE :email AND a.geloescht = 0',
|
||||
$values
|
||||
);
|
||||
if ($address > 0) {
|
||||
return $address;
|
||||
}
|
||||
|
||||
$address = $this->db->fetchValue(
|
||||
"SELECT k.adresse
|
||||
FROM `adresse_kontakte` AS `k`
|
||||
WHERE (k.bezeichnung LIKE 'e%mail' OR k.bezeichnung LIKE '%google%') AND k.kontakt LIKE :email",
|
||||
$values
|
||||
);
|
||||
if ($address > 0) {
|
||||
return $address;
|
||||
}
|
||||
|
||||
$address = $this->db->fetchValue(
|
||||
"SELECT ap.adresse
|
||||
FROM `ansprechpartner` AS `ap`
|
||||
WHERE ap.email LIKE :email",
|
||||
$values
|
||||
);
|
||||
if ($address > 0) {
|
||||
return $address;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user