f7cloud_client/apps/related_resources/lib/LinkWeightCalculators/TimeWeightCalculator.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

75 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2022 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\RelatedResources\LinkWeightCalculators;
use OCA\RelatedResources\ILinkWeightCalculator;
use OCA\RelatedResources\IRelatedResource;
use OCA\RelatedResources\Model\RelatedResource;
use OCA\RelatedResources\Tools\Traits\TArrayTools;
class TimeWeightCalculator implements ILinkWeightCalculator {
use TArrayTools;
private const DELAY_1 = 120;
private const DELAY_2 = 900;
private const DELAY_3 = 7200;
/**
* @inheritDoc
*/
public function weight(IRelatedResource $current, array &$result): void {
if (!$current->hasMeta(RelatedResource::LINK_CREATION)
|| !$current->hasMeta(RelatedResource::LINK_CREATOR)
|| !$current->hasMeta(RelatedResource::LINK_RECIPIENT)) {
return;
}
foreach ($result as $entry) {
if (!$entry->hasMeta(RelatedResource::LINK_CREATION)
|| !$entry->hasMeta(RelatedResource::LINK_CREATOR)
|| !$entry->hasMeta(RelatedResource::LINK_RECIPIENT)) {
continue;
}
// check if link is initiated from same entity
if ($entry->getMeta(RelatedResource::LINK_CREATOR)
!== $current->getMeta(RelatedResource::LINK_CREATOR)) {
continue;
}
if ($entry->getMetaInt(RelatedResource::LINK_CREATION)
< $current->getMetaInt(RelatedResource::LINK_CREATION) + self::DELAY_1
&& $entry->getMetaInt(RelatedResource::LINK_CREATION)
> $current->getMetaInt(RelatedResource::LINK_CREATION) - self::DELAY_1) {
$entry->improve(RelatedResource::$IMPROVE_HIGH_LINK, 'time_delay_1');
continue;
}
if ($entry->getMetaInt(RelatedResource::LINK_CREATION)
< $current->getMetaInt(RelatedResource::LINK_CREATION) + self::DELAY_2
&& $entry->getMetaInt(RelatedResource::LINK_CREATION)
> $current->getMetaInt(RelatedResource::LINK_CREATION) - self::DELAY_2) {
$entry->improve(RelatedResource::$IMPROVE_MEDIUM_LINK, 'time_delay_2');
continue;
}
if ($entry->getMetaInt(RelatedResource::LINK_CREATION)
< $current->getMetaInt(RelatedResource::LINK_CREATION) + self::DELAY_3
&& $entry->getMetaInt(RelatedResource::LINK_CREATION)
> $current->getMetaInt(RelatedResource::LINK_CREATION) - self::DELAY_3) {
$entry->improve(RelatedResource::$IMPROVE_LOW_LINK, 'time_delay_3');
continue;
}
}
}
}