[SELFTAGS] Add Profile::{set,get}SelfTags
This commit is contained in:
parent
1e911f1ba4
commit
207eeb39ca
|
@ -19,9 +19,11 @@
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity;
|
||||||
|
|
||||||
|
use App\Core\DB\DB;
|
||||||
use App\Core\UserRoles;
|
use App\Core\UserRoles;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use DateTimeInterface;
|
use DateTimeInterface;
|
||||||
|
use Functional as F;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entity for user profiles
|
* Entity for user profiles
|
||||||
|
@ -228,4 +230,27 @@ class Profile
|
||||||
|
|
||||||
return $def;
|
return $def;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getSelfTags(): array
|
||||||
|
{
|
||||||
|
return DB::findBy('profile_tag', ['tagger' => $this->id, 'tagged' => $this->id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSelfTags(array $tags, array $pt_existing, bool $flush = true): void
|
||||||
|
{
|
||||||
|
$tag_existing = F\map($pt_existing, function ($pt) { return $pt->getTag(); });
|
||||||
|
$tag_to_add = array_diff($tags, $tag_existing);
|
||||||
|
$tag_to_remove = array_diff($tag_existing, $tags);
|
||||||
|
$pt_to_remove = F\filter($pt_existing, function ($pt) use ($tag_to_remove) { return in_array($pt->getTag(), $tag_to_remove); });
|
||||||
|
foreach ($tag_to_add as $tag) {
|
||||||
|
$pt = new ProfileTag($this->id, $this->id, $tag);
|
||||||
|
DB::persist($pt);
|
||||||
|
}
|
||||||
|
foreach ($pt_to_remove as $pt) {
|
||||||
|
DB::remove($pt);
|
||||||
|
}
|
||||||
|
if ($flush) {
|
||||||
|
DB::flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
use DateTimeInterface;
|
use DateTimeInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -86,6 +87,14 @@ class ProfileTag
|
||||||
|
|
||||||
// }}} Autocode
|
// }}} Autocode
|
||||||
|
|
||||||
|
public function __construct(int $tagger, int $tagged, string $tag)
|
||||||
|
{
|
||||||
|
$this->tagger = $tagger;
|
||||||
|
$this->tagged = $tagged;
|
||||||
|
$this->tag = preg_replace('/ /', '_', trim($tag));
|
||||||
|
$this->modified = new DateTime();
|
||||||
|
}
|
||||||
|
|
||||||
public static function schemaDef(): array
|
public static function schemaDef(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
@ -108,4 +117,9 @@ class ProfileTag
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function __toString()
|
||||||
|
{
|
||||||
|
return $this->tag;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user