<?php
namespace App\Model;
class UserPref implements \JsonSerializable
{
private $username;
private $preference; // type - black, white, disabled, enabled
private $value;
private $prefid;
const DEFAULT_SPAM_SCORE = 4.0;
const DEFAULT_QUARANTINE_THRESHOLD = 6.0;
const DEFAULT_DELETE_THRESHOLD = 12.0;
const SA_MAX_SCORE = 50; // default
const SA_MAX_SCORE_LIMIT = 999; // maximum possible default
public function __construct()
{
$this->prefid = 0;
}
public function getUsername(): ?string
{
return $this->username;
}
public function setUsername(string $name): self
{
$this->username = $name;
return $this;
}
public function getPreference(): ?string
{
if(substr($this->preference, 0, 4) == "_NA_") {
return substr($this->preference, 4);
}
return $this->preference;
}
public function setPreference(string $preference): self
{
$this->preference = $preference;
return $this;
}
public function getValue(): ?string
{
return $this->value;
}
public function setValue(string $value): self
{
$this->value = $value;
return $this;
}
public function getPrefid(): ?int
{
return $this->prefid;
}
public function setPrefid(int $prefid): self
{
$this->prefid = $prefid;
return $this;
}
public function isEnabled() : bool
{
if(substr($this->preference, 0, 4) == "_NA_") {
return false;
}
return true;
}
public function jsonSerialize()
{
$vars = get_object_vars($this);
return $vars;
}
public static function cmpObjectsByVal($o1, $o2)
{
return strcasecmp($o1->getValue(), $o2->getValue());
}
public static function cmpObjectsByValDesc($o1, $o2)
{
return UserPref::cmpObjectsByVal($o2, $o1);
}
public static function cmpObjectsByPreference($o1, $o2)
{
return strcasecmp($o1->getPreference(), $o2->getPreference());
}
public static function cmpObjectsByPreferenceDesc($o1, $o2)
{
return UserPref::cmpObjectsByPreference($o2, $o1) ;
}
public static function cmpObjectsByEnableStatus($o1, $o2)
{
if($o1->isEnabled() && !$o2->isEnabled()) {
return 1;
}
if(!$o1->isEnabled() && $o2->isEnabled()) {
return -1;
}
return 0;
}
public static function cmpObjectsByEnableStatusDesc($o1, $o2)
{
return UserPref::cmpObjectsByEnableStatus($o2, $o1);
}
}