mirror of
https://github.com/friendica/friendica
synced 2024-11-10 06:22:53 +00:00
Move FSuggest to depository
This commit is contained in:
parent
4a50a83437
commit
82a6c78033
13 changed files with 236 additions and 464 deletions
|
@ -1,251 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright (C) 2010-2021, 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;
|
|
||||||
|
|
||||||
use Friendica\Database\Database;
|
|
||||||
use Friendica\Database\DBA;
|
|
||||||
use Friendica\Network\HTTPException;
|
|
||||||
use Psr\Log\LoggerInterface;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Repositories are Factories linked to one or more database tables.
|
|
||||||
*
|
|
||||||
* @see BaseModel
|
|
||||||
* @see BaseCollection
|
|
||||||
*/
|
|
||||||
abstract class BaseRepository extends BaseFactory
|
|
||||||
{
|
|
||||||
const LIMIT = 30;
|
|
||||||
|
|
||||||
/** @var Database */
|
|
||||||
protected $dba;
|
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
protected static $table_name;
|
|
||||||
|
|
||||||
/** @var BaseModel */
|
|
||||||
protected static $model_class;
|
|
||||||
|
|
||||||
/** @var BaseCollection */
|
|
||||||
protected static $collection_class;
|
|
||||||
|
|
||||||
public function __construct(Database $dba, LoggerInterface $logger)
|
|
||||||
{
|
|
||||||
parent::__construct($logger);
|
|
||||||
|
|
||||||
$this->dba = $dba;
|
|
||||||
$this->logger = $logger;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetches a single model record. The condition array is expected to contain a unique index (primary or otherwise).
|
|
||||||
*
|
|
||||||
* Chainable.
|
|
||||||
*
|
|
||||||
* @param array $condition
|
|
||||||
* @return BaseModel
|
|
||||||
* @throws HTTPException\NotFoundException
|
|
||||||
*/
|
|
||||||
public function selectFirst(array $condition)
|
|
||||||
{
|
|
||||||
$data = $this->dba->selectFirst(static::$table_name, [], $condition);
|
|
||||||
|
|
||||||
if (!$data) {
|
|
||||||
throw new HTTPException\NotFoundException(static::class . ' record not found.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->create($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Populates a Collection according to the condition.
|
|
||||||
*
|
|
||||||
* Chainable.
|
|
||||||
*
|
|
||||||
* @param array $condition
|
|
||||||
* @param array $params
|
|
||||||
* @return BaseCollection
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public function select(array $condition = [], array $params = [])
|
|
||||||
{
|
|
||||||
$models = $this->selectModels($condition, $params);
|
|
||||||
|
|
||||||
return new static::$collection_class($models);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Populates the collection according to the condition. Retrieves a limited subset of models depending on the boundaries
|
|
||||||
* and the limit. The total count of rows matching the condition is stored in the collection.
|
|
||||||
*
|
|
||||||
* max_id and min_id are susceptible to the query order:
|
|
||||||
* - min_id alone only reliably works with ASC order
|
|
||||||
* - max_id alone only reliably works with DESC order
|
|
||||||
* If the wrong order is detected in either case, we inverse the query order and we reverse the model array after the query
|
|
||||||
*
|
|
||||||
* Chainable.
|
|
||||||
*
|
|
||||||
* @param array $condition
|
|
||||||
* @param array $params
|
|
||||||
* @param int? $min_id Retrieve models with an id no fewer than this, as close to it as possible
|
|
||||||
* @param int? $max_id Retrieve models with an id no greater than this, as close to it as possible
|
|
||||||
* @param int $limit
|
|
||||||
* @return BaseCollection
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public function selectByBoundaries(array $condition = [], array $params = [], int $min_id = null, int $max_id = null, int $limit = self::LIMIT)
|
|
||||||
{
|
|
||||||
$totalCount = DBA::count(static::$table_name, $condition);
|
|
||||||
|
|
||||||
$boundCondition = $condition;
|
|
||||||
|
|
||||||
$reverseModels = false;
|
|
||||||
|
|
||||||
if (isset($min_id)) {
|
|
||||||
$boundCondition = DBA::mergeConditions($boundCondition, ['`id` > ?', $min_id]);
|
|
||||||
if (!isset($max_id) && isset($params['order']['id']) && ($params['order']['id'] === true || $params['order']['id'] === 'DESC')) {
|
|
||||||
$reverseModels = true;
|
|
||||||
$params['order']['id'] = 'ASC';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($max_id)) {
|
|
||||||
$boundCondition = DBA::mergeConditions($boundCondition, ['`id` < ?', $max_id]);
|
|
||||||
if (!isset($min_id) && (!isset($params['order']['id']) || $params['order']['id'] === false || $params['order']['id'] === 'ASC')) {
|
|
||||||
$reverseModels = true;
|
|
||||||
$params['order']['id'] = 'DESC';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$params['limit'] = $limit;
|
|
||||||
|
|
||||||
$models = $this->selectModels($boundCondition, $params);
|
|
||||||
|
|
||||||
if ($reverseModels) {
|
|
||||||
$models = array_reverse($models);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new static::$collection_class($models, $totalCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method updates the database row from the model.
|
|
||||||
*
|
|
||||||
* @param BaseModel $model
|
|
||||||
* @return bool
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public function update(BaseModel $model)
|
|
||||||
{
|
|
||||||
if ($this->dba->update(static::$table_name, $model->toArray(), ['id' => $model->id], $model->getOriginalData())) {
|
|
||||||
$model->resetOriginalData();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method creates a new database row and returns a model if it was successful.
|
|
||||||
*
|
|
||||||
* @param array $fields
|
|
||||||
* @return BaseModel|bool
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public function insert(array $fields)
|
|
||||||
{
|
|
||||||
$return = $this->dba->insert(static::$table_name, $fields);
|
|
||||||
|
|
||||||
if (!$return) {
|
|
||||||
throw new HTTPException\InternalServerErrorException('Unable to insert new row in table "' . static::$table_name . '"');
|
|
||||||
}
|
|
||||||
|
|
||||||
$fields['id'] = $this->dba->lastInsertId();
|
|
||||||
$return = $this->create($fields);
|
|
||||||
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deletes the model record from the database.
|
|
||||||
*
|
|
||||||
* @param BaseModel $model
|
|
||||||
* @return bool
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public function delete(BaseModel &$model)
|
|
||||||
{
|
|
||||||
if ($success = $this->dba->delete(static::$table_name, ['id' => $model->id])) {
|
|
||||||
$model = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $success;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base instantiation method, can be overriden to add specific dependencies
|
|
||||||
*
|
|
||||||
* @param array $data
|
|
||||||
* @return BaseModel
|
|
||||||
*/
|
|
||||||
protected function create(array $data)
|
|
||||||
{
|
|
||||||
return new static::$model_class($this->dba, $this->logger, $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $condition Query condition
|
|
||||||
* @param array $params Additional query parameters
|
|
||||||
* @return BaseModel[]
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
protected function selectModels(array $condition, array $params = [])
|
|
||||||
{
|
|
||||||
$result = $this->dba->select(static::$table_name, [], $condition, $params);
|
|
||||||
|
|
||||||
/** @var BaseModel $prototype */
|
|
||||||
$prototype = null;
|
|
||||||
|
|
||||||
$models = [];
|
|
||||||
|
|
||||||
while ($record = $this->dba->fetch($result)) {
|
|
||||||
if ($prototype === null) {
|
|
||||||
$prototype = $this->create($record);
|
|
||||||
$models[] = $prototype;
|
|
||||||
} else {
|
|
||||||
$models[] = static::$model_class::createFromPrototype($prototype, $record);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->dba->close($result);
|
|
||||||
|
|
||||||
return $models;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param BaseCollection $collection
|
|
||||||
*/
|
|
||||||
public function saveCollection(BaseCollection $collection)
|
|
||||||
{
|
|
||||||
$collection->map([$this, 'update']);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright (C) 2010-2021, 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\Collection;
|
|
||||||
|
|
||||||
use Friendica\BaseCollection;
|
|
||||||
|
|
||||||
class FSuggests extends BaseCollection
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright (C) 2010-2021, 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\Collection;
|
|
||||||
|
|
||||||
use Friendica\BaseCollection;
|
|
||||||
use Friendica\Model;
|
|
||||||
|
|
||||||
class Notifications extends BaseCollection
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @return Model\Notification
|
|
||||||
*/
|
|
||||||
public function current()
|
|
||||||
{
|
|
||||||
return parent::current();
|
|
||||||
}
|
|
||||||
}
|
|
72
src/Contact/FriendSuggest/Depository/FriendSuggest.php
Normal file
72
src/Contact/FriendSuggest/Depository/FriendSuggest.php
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Contact\FriendSuggest\Depository;
|
||||||
|
|
||||||
|
use Friendica\BaseDepository;
|
||||||
|
use Friendica\Contact\FriendSuggest\Exception\FriendSuggestPersistenceException;
|
||||||
|
use Friendica\Contact\FriendSuggest\Factory;
|
||||||
|
use Friendica\Contact\FriendSuggest\Entity;
|
||||||
|
use Friendica\Database\Database;
|
||||||
|
use Friendica\Network\HTTPException\NotFoundException;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
|
class FriendSuggest extends BaseDepository
|
||||||
|
{
|
||||||
|
/** @var Factory\FriendSuggest */
|
||||||
|
protected $factory;
|
||||||
|
|
||||||
|
protected static $table_name = 'fsuggest';
|
||||||
|
|
||||||
|
public function __construct(Database $database, LoggerInterface $logger, Factory\FriendSuggest $factory)
|
||||||
|
{
|
||||||
|
parent::__construct($database, $logger, $factory);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function convertToTableRow(Entity\FriendSuggest $fsuggest): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'uid' => $fsuggest->uid,
|
||||||
|
'cid' => $fsuggest->cid,
|
||||||
|
'name' => $fsuggest->name,
|
||||||
|
'url' => $fsuggest->url,
|
||||||
|
'request' => $fsuggest->request,
|
||||||
|
'photo' => $fsuggest->photo,
|
||||||
|
'note' => $fsuggest->note,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $condition
|
||||||
|
* @param array $params
|
||||||
|
*
|
||||||
|
* @return Entity\FriendSuggest
|
||||||
|
*
|
||||||
|
* @throws NotFoundException The underlying exception if there's no FriendSuggest with the given conditions
|
||||||
|
*/
|
||||||
|
private function selectOne(array $condition, array $params = []): Entity\FriendSuggest
|
||||||
|
{
|
||||||
|
return parent::_selectOne($condition, $params);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function selectOneById(int $id): Entity\FriendSuggest
|
||||||
|
{
|
||||||
|
return $this->selectOne(['id' => $id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function save(Entity\FriendSuggest $fsuggest): Entity\FriendSuggest
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$fields = $this->convertToTableRow($fsuggest);
|
||||||
|
|
||||||
|
if ($fsuggest->id) {
|
||||||
|
$this->db->update(self::$table_name, $fields, ['id' => $fsuggest->id]);
|
||||||
|
return $this->factory->createFromTableRow($fields);
|
||||||
|
} else {
|
||||||
|
$this->db->insert(self::$table_name, $fields);
|
||||||
|
return $this->selectOneById($this->db->lastInsertId());
|
||||||
|
}
|
||||||
|
} catch (\Exception $exception) {
|
||||||
|
throw new FriendSuggestPersistenceException(sprintf('Cannot insert/update the FriendSuggestion %d for user %d', $fsuggest->id, $fsuggest->uid), $exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
83
src/Contact/FriendSuggest/Entity/FriendSuggest.php
Normal file
83
src/Contact/FriendSuggest/Entity/FriendSuggest.php
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @copyright Copyright (C) 2010-2021, 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\Contact\FriendSuggest\Entity;
|
||||||
|
|
||||||
|
use Friendica\BaseEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Model for interacting with a friend suggestion
|
||||||
|
*
|
||||||
|
* @property-read int $uid
|
||||||
|
* @property-read int $cid
|
||||||
|
* @property-read string $name
|
||||||
|
* @property-read string $url
|
||||||
|
* @property-read string $request
|
||||||
|
* @property-read string $photo
|
||||||
|
* @property-read string $note
|
||||||
|
* @property-read \DateTime created
|
||||||
|
* @property-read int|null $id
|
||||||
|
*/
|
||||||
|
class FriendSuggest extends BaseEntity
|
||||||
|
{
|
||||||
|
/** @var int */
|
||||||
|
protected $uid;
|
||||||
|
/** @var int */
|
||||||
|
protected $cid;
|
||||||
|
/** @var string */
|
||||||
|
protected $name;
|
||||||
|
/** @var string */
|
||||||
|
protected $url;
|
||||||
|
/** @var string */
|
||||||
|
protected $request;
|
||||||
|
/** @var string */
|
||||||
|
protected $photo;
|
||||||
|
/** @var string */
|
||||||
|
protected $note;
|
||||||
|
/** @var \DateTime */
|
||||||
|
protected $created;
|
||||||
|
/** @var int|null */
|
||||||
|
protected $id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $uid
|
||||||
|
* @param int $cid
|
||||||
|
* @param string $name
|
||||||
|
* @param string $url
|
||||||
|
* @param string $request
|
||||||
|
* @param string $photo
|
||||||
|
* @param string $note
|
||||||
|
* @param \DateTime $created
|
||||||
|
* @param int|null $id
|
||||||
|
*/
|
||||||
|
public function __construct(int $uid, int $cid, string $name, string $url, string $request, string $photo, string $note, \DateTime $created, ?int $id = null)
|
||||||
|
{
|
||||||
|
$this->uid = $uid;
|
||||||
|
$this->cid = $cid;
|
||||||
|
$this->name = $name;
|
||||||
|
$this->url = $url;
|
||||||
|
$this->request = $request;
|
||||||
|
$this->photo = $photo;
|
||||||
|
$this->note = $note;
|
||||||
|
$this->created = $created;
|
||||||
|
$this->id = $id;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Contact\FriendSuggest\Exception;
|
||||||
|
|
||||||
|
class FriendSuggestPersistenceException extends \RuntimeException
|
||||||
|
{
|
||||||
|
public function __construct($message = "", \Throwable $previous = null)
|
||||||
|
{
|
||||||
|
parent::__construct($message, 500, $previous);
|
||||||
|
}
|
||||||
|
}
|
49
src/Contact/FriendSuggest/Factory/FriendSuggest.php
Normal file
49
src/Contact/FriendSuggest/Factory/FriendSuggest.php
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Contact\FriendSuggest\Factory;
|
||||||
|
|
||||||
|
use Friendica\BaseFactory;
|
||||||
|
use Friendica\Capabilities\ICanCreateFromTableRow;
|
||||||
|
use Friendica\Contact\FriendSuggest\Entity;
|
||||||
|
|
||||||
|
class FriendSuggest extends BaseFactory implements ICanCreateFromTableRow
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function createFromTableRow(array $row): Entity\FriendSuggest
|
||||||
|
{
|
||||||
|
return new Entity\FriendSuggest(
|
||||||
|
$row['uid'] ?? 0,
|
||||||
|
$row['cid'] ?? 0,
|
||||||
|
$row['name'] ?? '',
|
||||||
|
$row['url'] ?? '',
|
||||||
|
$row['request'] ?? '',
|
||||||
|
$row['photo'] ?? '',
|
||||||
|
$row['note'] ?? '',
|
||||||
|
new \DateTime($row['created'] ?? 'now', new \DateTimeZone('UTC')),
|
||||||
|
$row['id'] ?? null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createNew(
|
||||||
|
int $uid,
|
||||||
|
int $cid,
|
||||||
|
string $name = '',
|
||||||
|
string $url = '',
|
||||||
|
string $request = '',
|
||||||
|
string $photo = '',
|
||||||
|
string $note = ''
|
||||||
|
): Entity\FriendSuggest
|
||||||
|
{
|
||||||
|
return $this->createFromTableRow([
|
||||||
|
'uid' => $uid,
|
||||||
|
'cid' => $cid,
|
||||||
|
'name' => $name,
|
||||||
|
'url' => $url,
|
||||||
|
'request' => $request,
|
||||||
|
'photo' => $photo,
|
||||||
|
'note' => $note,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
12
src/DI.php
12
src/DI.php
|
@ -427,11 +427,19 @@ abstract class DI
|
||||||
//
|
//
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Repository\FSuggest;
|
* @return Contact\FriendSuggest\Depository\FriendSuggest;
|
||||||
*/
|
*/
|
||||||
public static function fsuggest()
|
public static function fsuggest()
|
||||||
{
|
{
|
||||||
return self::$dice->create(Repository\FSuggest::class);
|
return self::$dice->create(Contact\FriendSuggest\Depository\FriendSuggest::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Contact\FriendSuggest\Factory\FriendSuggest;
|
||||||
|
*/
|
||||||
|
public static function fsuggestFactory()
|
||||||
|
{
|
||||||
|
return self::$dice->create(Contact\FriendSuggest\Factory\FriendSuggest::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright (C) 2010-2021, 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\Model;
|
|
||||||
|
|
||||||
use Friendica\BaseModel;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Model for interacting with a friend suggestion
|
|
||||||
*
|
|
||||||
* @property int uid
|
|
||||||
* @property int cid
|
|
||||||
* @property string name
|
|
||||||
* @property string url
|
|
||||||
* @property string request
|
|
||||||
* @property string photo
|
|
||||||
* @property string note
|
|
||||||
* @property string created
|
|
||||||
*/
|
|
||||||
class FSuggest extends BaseModel
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -68,16 +68,15 @@ class FriendSuggest extends BaseModule
|
||||||
|
|
||||||
$note = Strings::escapeHtml(trim($_POST['note'] ?? ''));
|
$note = Strings::escapeHtml(trim($_POST['note'] ?? ''));
|
||||||
|
|
||||||
$suggest = DI::fsuggest()->insert([
|
$suggest = DI::fsuggest()->save(DI::fsuggestFactory()->createNew(
|
||||||
'uid' => local_user(),
|
local_user(),
|
||||||
'cid' => $cid,
|
$cid,
|
||||||
'name' => $contact['name'],
|
$contact['name'],
|
||||||
'url' => $contact['url'],
|
$contact['url'],
|
||||||
'request' => $contact['request'],
|
$contact['request'],
|
||||||
'photo' => $contact['avatar'],
|
$contact['avatar'],
|
||||||
'note' => $note,
|
$note
|
||||||
'created' => DateTimeFormat::utcNow()
|
));
|
||||||
]);
|
|
||||||
|
|
||||||
Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::SUGGESTION, $suggest->id);
|
Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::SUGGESTION, $suggest->id);
|
||||||
|
|
||||||
|
|
|
@ -1782,7 +1782,7 @@ class Transmitter
|
||||||
{
|
{
|
||||||
$owner = User::getOwnerDataById($uid);
|
$owner = User::getOwnerDataById($uid);
|
||||||
|
|
||||||
$suggestion = DI::fsuggest()->getById($suggestion_id);
|
$suggestion = DI::fsuggest()->selectOneById($suggestion_id);
|
||||||
|
|
||||||
$data = ['@context' => ActivityPub::CONTEXT,
|
$data = ['@context' => ActivityPub::CONTEXT,
|
||||||
'id' => DI::baseUrl() . '/activity/' . System::createGUID(),
|
'id' => DI::baseUrl() . '/activity/' . System::createGUID(),
|
||||||
|
|
|
@ -1,93 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright (C) 2010-2021, 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\Repository;
|
|
||||||
|
|
||||||
use Friendica\BaseRepository;
|
|
||||||
use Friendica\Collection;
|
|
||||||
use Friendica\Model;
|
|
||||||
|
|
||||||
class FSuggest extends BaseRepository
|
|
||||||
{
|
|
||||||
protected static $table_name = 'fsuggest';
|
|
||||||
|
|
||||||
protected static $model_class = Model\FSuggest::class;
|
|
||||||
|
|
||||||
protected static $collection_class = Collection\FSuggests::class;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $data
|
|
||||||
* @return Model\FSuggest
|
|
||||||
*/
|
|
||||||
protected function create(array $data)
|
|
||||||
{
|
|
||||||
return new Model\FSuggest($this->dba, $this->logger, $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the Friend Suggest based on it's ID
|
|
||||||
*
|
|
||||||
* @param int $id The id of the fsuggest
|
|
||||||
*
|
|
||||||
* @return Model\FSuggest
|
|
||||||
*
|
|
||||||
* @throws \Friendica\Network\HTTPException\NotFoundException
|
|
||||||
*/
|
|
||||||
public function getById(int $id)
|
|
||||||
{
|
|
||||||
return $this->selectFirst(['id' => $id]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $condition
|
|
||||||
* @return Model\FSuggest
|
|
||||||
* @throws \Friendica\Network\HTTPException\NotFoundException
|
|
||||||
*/
|
|
||||||
public function selectFirst(array $condition)
|
|
||||||
{
|
|
||||||
return parent::selectFirst($condition);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $condition
|
|
||||||
* @param array $params
|
|
||||||
* @return Collection\FSuggests
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public function select(array $condition = [], array $params = [])
|
|
||||||
{
|
|
||||||
return parent::select($condition, $params);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $condition
|
|
||||||
* @param array $params
|
|
||||||
* @param int|null $min_id
|
|
||||||
* @param int|null $max_id
|
|
||||||
* @param int $limit
|
|
||||||
* @return Collection\FSuggests
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public function selectByBoundaries(array $condition = [], array $params = [], int $min_id = null, int $max_id = null, int $limit = self::LIMIT)
|
|
||||||
{
|
|
||||||
return parent::selectByBoundaries($condition, $params, $min_id, $max_id, $limit);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -90,7 +90,7 @@ class Notifier
|
||||||
'APDelivery', $cmd, $target_id, $inbox, $uid, $receivers, $post_uriid);
|
'APDelivery', $cmd, $target_id, $inbox, $uid, $receivers, $post_uriid);
|
||||||
}
|
}
|
||||||
} elseif ($cmd == Delivery::SUGGESTION) {
|
} elseif ($cmd == Delivery::SUGGESTION) {
|
||||||
$suggest = DI::fsuggest()->getById($target_id);
|
$suggest = DI::fsuggest()->selectOneById($target_id);
|
||||||
$uid = $suggest->uid;
|
$uid = $suggest->uid;
|
||||||
$recipients[] = $suggest->cid;
|
$recipients[] = $suggest->cid;
|
||||||
} elseif ($cmd == Delivery::REMOVAL) {
|
} elseif ($cmd == Delivery::REMOVAL) {
|
||||||
|
|
Loading…
Reference in a new issue