|
|
|
<?php
|
|
|
|
|
|
|
|
class FreshRSS_Tag extends Minz_Model {
|
|
|
|
private $id = 0;
|
|
|
|
private $name;
|
Feature/new archiving (#2335)
* Change archiving config page layout
I've changed some wording and moved actions into a
maintenance section.
* Update purge action
Now we have more control on the purge action. The configuration allows
us to choose what to keep and what to discard in a more precise way.
At the moment, the configuration applies for all feeds.
* Add purge configuration on feed level
Now the extend purge configuration is available on feed level.
It is stored as attributes and will be used in the purge action.
* Update purge action
Now the purge action uses the feed configuration if it exists and
defaults on user configuration if not.
* Add empty option in period list
* Fix configuration warnings
* Add archiving configuration on categories
See #2369
* Add user info back
* Add explanations in UI
* Fixes for SQLite + error + misc.
* Fix invalid feed reference
* Short array syntax
Only for new code, so far
* Fix prefix error
* Query performance, default values
Work in progress
* Fix default values and confirm before leaving
Form cancel and confirm changes before leaving were broken.
And start taking advantage of the short echo syntax `<?= ?>` as we have
moved to PHP 5.4+
* More work
* Tuning SQL
* Fix MariaDB + performance issue
* SQL performance
* Fix SQLite bug
* Fix some attributes JSON encoding bugs
Especially for SQLite export/import
* More uniform, fix bugs
More uniform between global, category, feed settings
* Drop special cases for old articles during refresh
Instead will use lastSeen date with the new archiving logic.
This was generating problems anyway
https://github.com/FreshRSS/FreshRSS/issues/2154
* Draft drop index keep_history
Not needed anymore
* MySQL typo
Now properly tested with MySQL, PostgreSQL, SQLite
* More work for legacy values
Important to avoid overriding user's preference and risking deleting
data erroneously
* Fix PHP 7.3 / 7.4 warnings
@aledeg "Trying to use values of type null, bool, int, float or resource
as an array (such as $null["key"]) will now generate a notice. "
https://php.net/migration74.incompatible
* Reintroduce min articles and take care of legacy parameters
* A few changes forgotten
* Draft of migration + DROP of feed.keep_history
* Fix several errors
And give up using const for SQL to allow multiple database types (and we
cannot redefine a const)
* Add keep_min to categories + factorise archiving logic
* Legacy fix
* Fix bug yield from
* Minor: Use JSON_UNESCAPED_SLASHE for attributes
And make more uniform
* Fix sign and missing variable
* Fine tune the logic
5 years ago
|
|
|
private $attributes = [];
|
|
|
|
private $nbEntries = -1;
|
|
|
|
private $nbUnread = -1;
|
|
|
|
|
|
|
|
public function __construct($name = '') {
|
|
|
|
$this->_name($name);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function id() {
|
|
|
|
return $this->id;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function _id($value) {
|
|
|
|
$this->id = (int)$value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function name() {
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function _name($value) {
|
|
|
|
$this->name = trim($value);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function attributes($key = '') {
|
|
|
|
if ($key == '') {
|
|
|
|
return $this->attributes;
|
|
|
|
} else {
|
|
|
|
return isset($this->attributes[$key]) ? $this->attributes[$key] : null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function _attributes($key, $value) {
|
|
|
|
if ($key == '') {
|
|
|
|
if (is_string($value)) {
|
|
|
|
$value = json_decode($value, true);
|
|
|
|
}
|
|
|
|
if (is_array($value)) {
|
|
|
|
$this->attributes = $value;
|
|
|
|
}
|
|
|
|
} elseif ($value === null) {
|
|
|
|
unset($this->attributes[$key]);
|
|
|
|
} else {
|
|
|
|
$this->attributes[$key] = $value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function nbEntries() {
|
|
|
|
if ($this->nbEntries < 0) {
|
|
|
|
$tagDAO = FreshRSS_Factory::createTagDao();
|
|
|
|
$this->nbEntries = $tagDAO->countEntries($this->id());
|
|
|
|
}
|
|
|
|
return $this->nbFeed;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function _nbEntries($value) {
|
|
|
|
$this->nbEntries = (int)$value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function nbUnread() {
|
|
|
|
if ($this->nbUnread < 0) {
|
|
|
|
$tagDAO = FreshRSS_Factory::createTagDao();
|
|
|
|
$this->nbUnread = $tagDAO->countNotRead($this->id());
|
|
|
|
}
|
|
|
|
return $this->nbUnread;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function _nbUnread($value) {
|
|
|
|
$this->nbUnread = (int)$value;
|
|
|
|
}
|
|
|
|
}
|