1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-07-12 16:58:37 +00:00
This commit is contained in:
Jeremy Benoist 2017-07-03 13:56:39 +02:00
parent d0ec2ddd23
commit c18a2476b6
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
4 changed files with 95 additions and 96 deletions

View file

@ -354,11 +354,11 @@ class EntryRestController extends WallabagRestController
]);
}
if (!is_null($data['isArchived'])) {
if (null !== $data['isArchived']) {
$entry->setArchived((bool) $data['isArchived']);
}
if (!is_null($data['isStarred'])) {
if (null !== $data['isStarred']) {
$entry->setStarred((bool) $data['isStarred']);
}
@ -366,7 +366,7 @@ class EntryRestController extends WallabagRestController
$this->get('wallabag_core.tags_assigner')->assignTagsToEntry($entry, $data['tags']);
}
if (!is_null($data['isPublic'])) {
if (null !== $data['isPublic']) {
if (true === (bool) $data['isPublic'] && null === $entry->getUid()) {
$entry->generateUid();
} elseif (false === (bool) $data['isPublic']) {
@ -457,11 +457,11 @@ class EntryRestController extends WallabagRestController
$contentProxy->updatePublishedAt($entry, $data['publishedAt']);
}
if (!is_null($data['isArchived'])) {
if (null !== $data['isArchived']) {
$entry->setArchived((bool) $data['isArchived']);
}
if (!is_null($data['isStarred'])) {
if (null !== $data['isStarred']) {
$entry->setStarred((bool) $data['isStarred']);
}
@ -470,7 +470,7 @@ class EntryRestController extends WallabagRestController
$this->get('wallabag_core.tags_assigner')->assignTagsToEntry($entry, $data['tags']);
}
if (!is_null($data['isPublic'])) {
if (null !== $data['isPublic']) {
if (true === (bool) $data['isPublic'] && null === $entry->getUid()) {
$entry->generateUid();
} elseif (false === (bool) $data['isPublic']) {

View file

@ -66,6 +66,76 @@ class ContentProxy
$this->stockEntry($entry, $content);
}
/**
* Use a Symfony validator to ensure the language is well formatted.
*
* @param Entry $entry
* @param string $value Language to validate and save
*/
public function updateLanguage(Entry $entry, $value)
{
// some lang are defined as fr-FR, es-ES.
// replacing - by _ might increase language support
$value = str_replace('-', '_', $value);
$errors = $this->validator->validate(
$value,
(new LocaleConstraint())
);
if (0 === count($errors)) {
$entry->setLanguage($value);
return;
}
$this->logger->warning('Language validation failed. ' . (string) $errors);
}
/**
* Use a Symfony validator to ensure the preview picture is a real url.
*
* @param Entry $entry
* @param string $value URL to validate and save
*/
public function updatePreviewPicture(Entry $entry, $value)
{
$errors = $this->validator->validate(
$value,
(new UrlConstraint())
);
if (0 === count($errors)) {
$entry->setPreviewPicture($value);
return;
}
$this->logger->warning('PreviewPicture validation failed. ' . (string) $errors);
}
/**
* Update date.
*
* @param Entry $entry
* @param string $value Date to validate and save
*/
public function updatePublishedAt(Entry $entry, $value)
{
$date = $value;
// is it a timestamp?
if (filter_var($date, FILTER_VALIDATE_INT) !== false) {
$date = '@' . $value;
}
try {
$entry->setPublishedAt(new \DateTime($date));
} catch (\Exception $e) {
$this->logger->warning('Error while defining date', ['e' => $e, 'url' => $entry->getUrl(), 'date' => $value]);
}
}
/**
* Stock entry with fetched or imported content.
* Will fall back to OpenGraph data if available.
@ -155,74 +225,4 @@ class ContentProxy
{
return !empty($content['title']) && !empty($content['html']) && !empty($content['url']);
}
/**
* Use a Symfony validator to ensure the language is well formatted.
*
* @param Entry $entry
* @param string $value Language to validate and save
*/
public function updateLanguage(Entry $entry, $value)
{
// some lang are defined as fr-FR, es-ES.
// replacing - by _ might increase language support
$value = str_replace('-', '_', $value);
$errors = $this->validator->validate(
$value,
(new LocaleConstraint())
);
if (0 === count($errors)) {
$entry->setLanguage($value);
return;
}
$this->logger->warning('Language validation failed. ' . (string) $errors);
}
/**
* Use a Symfony validator to ensure the preview picture is a real url.
*
* @param Entry $entry
* @param string $value URL to validate and save
*/
public function updatePreviewPicture(Entry $entry, $value)
{
$errors = $this->validator->validate(
$value,
(new UrlConstraint())
);
if (0 === count($errors)) {
$entry->setPreviewPicture($value);
return;
}
$this->logger->warning('PreviewPicture validation failed. ' . (string) $errors);
}
/**
* Update date.
*
* @param Entry $entry
* @param string $value Date to validate and save
*/
public function updatePublishedAt(Entry $entry, $value)
{
$date = $value;
// is it a timestamp?
if (filter_var($date, FILTER_VALIDATE_INT) !== false) {
$date = '@'.$value;
}
try {
$entry->setPublishedAt(new \DateTime($date));
} catch (\Exception $e) {
$this->logger->warning('Error while defining date', ['e' => $e, 'url' => $entry->getUrl(), 'date' => $value]);
}
}
}