friendica/src/Protocol/Diaspora/Factory/DiasporaContact.php

103 lines
3.7 KiB
PHP

<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Friendica\Protocol\Diaspora\Factory;
use Friendica\Capabilities\ICanCreateFromTableRow;
use Friendica\Database\DBA;
use GuzzleHttp\Psr7\Uri;
class DiasporaContact extends \Friendica\BaseFactory implements ICanCreateFromTableRow
{
public function createFromTableRow(array $row): \Friendica\Protocol\Diaspora\Entity\DiasporaContact
{
return new \Friendica\Protocol\Diaspora\Entity\DiasporaContact(
new Uri($row['url']),
new \DateTime($row['created'], new \DateTimeZone('UTC')),
$row['guid'],
$row['addr'],
$row['alias'] ? new Uri($row['alias']) : null,
$row['nick'],
$row['name'],
$row['given-name'],
$row['family-name'],
$row['photo'] ? new Uri($row['photo']) : null,
$row['photo-medium'] ? new Uri($row['photo-medium']) : null,
$row['photo-small'] ? new Uri($row['photo-small']) : null,
$row['batch'] ? new Uri($row['batch']) : null,
$row['notify'] ? new Uri($row['notify']) : null,
$row['poll'] ? new Uri($row['poll']) : null,
$row['subscribe'] ? new Uri($row['subscribe']) : null,
$row['searchable'],
$row['pubkey'],
$row['baseurl'] ? new Uri($row['baseurl']) : null,
$row['gsid'],
$row['updated'] !== DBA::NULL_DATETIME ? new \DateTime($row['updated'], new \DateTimeZone('UTC')) : null,
$row['interacting_count'],
$row['interacted_count'],
$row['post_count'],
$row['uri-id'],
);
}
/**
* @param array $data Data returned by \Friendica\Network\Probe::uri()
* @param int $uriId The URI ID of the Diaspora contact URL + GUID
* @param \DateTime $created
* @param int $interacting_count
* @param int $interacted_count
* @param int $post_count
* @return \Friendica\Protocol\Diaspora\Entity\DiasporaContact
*/
public function createfromProbeData(array $data, int $uriId, \DateTime $created, int $interacting_count = 0, int $interacted_count = 0, int $post_count = 0): \Friendica\Protocol\Diaspora\Entity\DiasporaContact
{
$alias = $data['alias'] != $data['url'] ? $data['alias'] : null;
return new \Friendica\Protocol\Diaspora\Entity\DiasporaContact(
new Uri($data['url']),
$created,
$data['guid'],
$data['addr'],
$alias ? new Uri($alias) : null,
$data['nick'],
$data['name'],
$data['given-name'] ?? '',
$data['family-name'] ?? '',
$data['photo'] ? new Uri($data['photo']) : null,
!empty($data['photo_medium']) ? new Uri($data['photo_medium']) : null,
!empty($data['photo_small']) ? new Uri($data['photo_small']) : null,
$data['batch'] ? new Uri($data['batch']) : null,
$data['notify'] ? new Uri($data['notify']) : null,
$data['poll'] ? new Uri($data['poll']) : null,
$data['subscribe'] ? new Uri($data['subscribe']) : null,
!$data['hide'],
$data['pubkey'],
$data['baseurl'] ? new Uri($data['baseurl']) : null,
$data['gsid'],
null,
$interacting_count,
$interacted_count,
$post_count,
$uriId,
);
}
}