mirror of
https://github.com/wallabag/wallabag.git
synced 2025-09-15 18:57:05 +00:00
Move to PHPStan level 4
This commit is contained in:
parent
31e1be4191
commit
b4483023e6
22 changed files with 116 additions and 104 deletions
|
@ -554,7 +554,7 @@ class EntryRestController extends WallabagRestController
|
|||
$this->entityManager->persist($entry);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$results[$key]['entry'] = $entry instanceof Entry ? $entry->getId() : false;
|
||||
$results[$key]['entry'] = $entry->getId();
|
||||
|
||||
// entry saved, dispatch event about it!
|
||||
$eventDispatcher->dispatch(new EntrySavedEvent($entry), EntrySavedEvent::NAME);
|
||||
|
@ -734,7 +734,7 @@ class EntryRestController extends WallabagRestController
|
|||
'html' => !empty($data['content']) ? $data['content'] : $entry->getContent(),
|
||||
'url' => $entry->getUrl(),
|
||||
'language' => !empty($data['language']) ? $data['language'] : $entry->getLanguage(),
|
||||
'date' => !empty($data['publishedAt']) ? $data['publishedAt'] : $entry->getPublishedAt(),
|
||||
'date' => !empty($data['publishedAt']) ? $data['publishedAt'] : $entry->getPublishedAt()?->format('Y-m-d H:i:s') ?? '',
|
||||
// faking the open graph preview picture
|
||||
'image' => !empty($data['picture']) ? $data['picture'] : $entry->getPreviewPicture(),
|
||||
'authors' => \is_string($data['authors']) ? explode(',', $data['authors']) : $entry->getPublishedBy(),
|
||||
|
|
|
@ -125,10 +125,6 @@ class FeedController extends AbstractController
|
|||
$perPage = $user->getConfig()->getFeedLimit() ?: $this->getParameter('wallabag.feed_limit');
|
||||
$entries->setMaxPerPage($perPage);
|
||||
|
||||
if (null === $entries) {
|
||||
throw $this->createNotFoundException('No entries found?');
|
||||
}
|
||||
|
||||
try {
|
||||
$entries->setCurrentPage($page);
|
||||
} catch (OutOfRangeCurrentPageException) {
|
||||
|
|
|
@ -61,10 +61,10 @@ class PocketController extends AbstractController
|
|||
return $this->redirect($this->generateUrl('import_pocket'));
|
||||
}
|
||||
|
||||
$form = $request->request->get('form');
|
||||
$form = $request->request->all('form');
|
||||
|
||||
$this->session->set('import.pocket.code', $requestToken);
|
||||
if (null !== $form && \array_key_exists('mark_as_read', $form)) {
|
||||
if (\array_key_exists('mark_as_read', $form)) {
|
||||
$this->session->set('mark_as_read', $form['mark_as_read']);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Wallabag\Entity;
|
||||
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Hateoas\Configuration\Annotation as Hateoas;
|
||||
use JMS\Serializer\Annotation\Exclude;
|
||||
|
@ -233,11 +234,14 @@ class Entry
|
|||
#[Groups(['export_all'])]
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* @var Collection<Tag>
|
||||
*/
|
||||
#[ORM\JoinTable(name: 'entry_tag')]
|
||||
#[ORM\JoinColumn(name: 'entry_id', referencedColumnName: 'id', onDelete: 'cascade')]
|
||||
#[ORM\InverseJoinColumn(name: 'tag_id', referencedColumnName: 'id', onDelete: 'cascade')]
|
||||
#[ORM\ManyToMany(targetEntity: Tag::class, inversedBy: 'entries', cascade: ['persist'])]
|
||||
private $tags;
|
||||
private Collection $tags;
|
||||
|
||||
/*
|
||||
* @param User $user
|
||||
|
@ -589,7 +593,7 @@ class Entry
|
|||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDomainName()
|
||||
{
|
||||
|
@ -597,7 +601,7 @@ class Entry
|
|||
}
|
||||
|
||||
/**
|
||||
* @param string $domainName
|
||||
* @param string|null $domainName
|
||||
*/
|
||||
public function setDomainName($domainName)
|
||||
{
|
||||
|
@ -605,7 +609,7 @@ class Entry
|
|||
}
|
||||
|
||||
/**
|
||||
* @return ArrayCollection
|
||||
* @return Collection
|
||||
*/
|
||||
public function getTags()
|
||||
{
|
||||
|
@ -696,7 +700,7 @@ class Entry
|
|||
/**
|
||||
* Get previewPicture.
|
||||
*
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function getPreviewPicture()
|
||||
{
|
||||
|
@ -706,7 +710,7 @@ class Entry
|
|||
/**
|
||||
* Set language.
|
||||
*
|
||||
* @param string $language
|
||||
* @param string|null $language
|
||||
*
|
||||
* @return Entry
|
||||
*/
|
||||
|
@ -720,7 +724,7 @@ class Entry
|
|||
/**
|
||||
* Get language.
|
||||
*
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function getLanguage()
|
||||
{
|
||||
|
@ -808,7 +812,7 @@ class Entry
|
|||
}
|
||||
|
||||
/**
|
||||
* @return \DateTimeInterface
|
||||
* @return \DateTimeInterface|null
|
||||
*/
|
||||
public function getPublishedAt()
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Wallabag\Entity;
|
||||
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Gedmo\Mapping\Annotation as Gedmo;
|
||||
use JMS\Serializer\Annotation\ExclusionPolicy;
|
||||
|
@ -41,8 +42,11 @@ class Tag implements \Stringable
|
|||
#[Expose]
|
||||
private $slug;
|
||||
|
||||
/**
|
||||
* @var Collection<Entry>
|
||||
*/
|
||||
#[ORM\ManyToMany(targetEntity: Entry::class, mappedBy: 'tags', cascade: ['persist'])]
|
||||
private $entries;
|
||||
private Collection $entries;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -121,7 +125,7 @@ class Tag implements \Stringable
|
|||
/**
|
||||
* Get entries for this tag.
|
||||
*
|
||||
* @return ArrayCollection<Entry>
|
||||
* @return Collection<Entry>
|
||||
*/
|
||||
public function getEntries()
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Wallabag\Entity;
|
||||
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use FOS\UserBundle\Model\User as BaseUser;
|
||||
use JMS\Serializer\Annotation\Accessor;
|
||||
|
@ -117,16 +118,16 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
protected $config;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection&iterable<SiteCredential>
|
||||
* @var Collection<SiteCredential>
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: SiteCredential::class, mappedBy: 'user', cascade: ['remove'])]
|
||||
protected $siteCredentials;
|
||||
protected Collection $siteCredentials;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection&iterable<Client>
|
||||
* @var Collection<Client>
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: Client::class, mappedBy: 'user', cascade: ['remove'])]
|
||||
protected $clients;
|
||||
protected Collection $clients;
|
||||
|
||||
/**
|
||||
* @see getFirstClient() below
|
||||
|
@ -162,6 +163,8 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
{
|
||||
parent::__construct();
|
||||
$this->entries = new ArrayCollection();
|
||||
$this->siteCredentials = new ArrayCollection();
|
||||
$this->clients = new ArrayCollection();
|
||||
$this->roles = ['ROLE_USER'];
|
||||
}
|
||||
|
||||
|
@ -216,7 +219,7 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
}
|
||||
|
||||
/**
|
||||
* @return ArrayCollection<Entry>
|
||||
* @return Collection<Entry>
|
||||
*/
|
||||
public function getEntries()
|
||||
{
|
||||
|
@ -338,13 +341,15 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
*/
|
||||
public function addClient(Client $client)
|
||||
{
|
||||
$this->clients[] = $client;
|
||||
if (!$this->clients->contains($client)) {
|
||||
$this->clients->add($client);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ArrayCollection<Client>
|
||||
* @return Collection<Client>
|
||||
*/
|
||||
public function getClients()
|
||||
{
|
||||
|
@ -358,7 +363,7 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
*/
|
||||
public function getFirstClient()
|
||||
{
|
||||
if (!empty($this->clients)) {
|
||||
if (!$this->clients->isEmpty()) {
|
||||
return $this->clients->first();
|
||||
}
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ class DownloadImagesSubscriber implements EventSubscriberInterface
|
|||
*
|
||||
* @todo If we want to add async download, it should be done in that method
|
||||
*
|
||||
* @return string|false False in case of async
|
||||
* @return string
|
||||
*/
|
||||
private function downloadImages(Entry $entry)
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Wallabag\Form\DataTransformer;
|
||||
|
||||
use Symfony\Component\Form\DataTransformerInterface;
|
||||
use Symfony\Component\Form\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Transforms a comma-separated list to a proper PHP array.
|
||||
|
@ -21,8 +22,6 @@ class StringToListTransformer implements DataTransformerInterface
|
|||
/**
|
||||
* Transforms a list to a string.
|
||||
*
|
||||
* @param array|null $list
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function transform($list)
|
||||
|
@ -31,14 +30,16 @@ class StringToListTransformer implements DataTransformerInterface
|
|||
return '';
|
||||
}
|
||||
|
||||
if (!\is_array($list)) {
|
||||
throw new UnexpectedTypeException($list, 'array');
|
||||
}
|
||||
|
||||
return implode($this->separator, $list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms a string to a list.
|
||||
*
|
||||
* @param string $string
|
||||
*
|
||||
* @return array|null
|
||||
*/
|
||||
public function reverseTransform($string)
|
||||
|
@ -47,6 +48,10 @@ class StringToListTransformer implements DataTransformerInterface
|
|||
return null;
|
||||
}
|
||||
|
||||
if (!\is_string($string)) {
|
||||
throw new UnexpectedTypeException($string, 'string');
|
||||
}
|
||||
|
||||
return array_values(array_filter(array_map('trim', explode($this->separator, $string))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -143,11 +143,8 @@ class ContentProxy
|
|||
}
|
||||
|
||||
try {
|
||||
// is it already a DateTime?
|
||||
// (it's inside the try/catch in case of fail to be parse time string)
|
||||
if (!$date instanceof \DateTime) {
|
||||
$date = new \DateTime($date);
|
||||
}
|
||||
$date = new \DateTime($date);
|
||||
|
||||
$entry->setPublishedAt($date);
|
||||
} catch (\Exception $e) {
|
||||
|
|
|
@ -98,10 +98,10 @@ class DownloadImages
|
|||
* - re-saved it (for security reason)
|
||||
* - return the new local path.
|
||||
*
|
||||
* @param int $entryId ID of the entry
|
||||
* @param string $imagePath Path to the image to retrieve
|
||||
* @param string $url Url from where the image were found
|
||||
* @param string $relativePath Relative local path to saved the image
|
||||
* @param int $entryId ID of the entry
|
||||
* @param string|null $imagePath Path to the image to retrieve
|
||||
* @param string $url Url from where the image were found
|
||||
* @param string $relativePath Relative local path to saved the image
|
||||
*
|
||||
* @return string|false Relative url to access the image from the web
|
||||
*/
|
||||
|
@ -136,7 +136,7 @@ class DownloadImages
|
|||
}
|
||||
|
||||
$ext = $this->getExtensionFromResponse($res, $imagePath);
|
||||
if (false === $res) {
|
||||
if (false === $ext) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,8 +20,8 @@ class Redirect
|
|||
}
|
||||
|
||||
/**
|
||||
* @param string $url URL to redirect
|
||||
* @param bool $ignoreActionMarkAsRead Ignore configured action when mark as read
|
||||
* @param string|null $url URL to redirect
|
||||
* @param bool $ignoreActionMarkAsRead Ignore configured action when mark as read
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
|
|
@ -129,7 +129,8 @@ class RuleBasedTagger
|
|||
private function fixEntry(Entry $entry)
|
||||
{
|
||||
$clonedEntry = clone $entry;
|
||||
$clonedEntry->setReadingTime($entry->getReadingTime() / $entry->getUser()->getConfig()->getReadingSpeed() * 200);
|
||||
$newReadingTime = (int) ($entry->getReadingTime() / $entry->getUser()->getConfig()->getReadingSpeed() * 200);
|
||||
$clonedEntry->setReadingTime($newReadingTime);
|
||||
|
||||
return $clonedEntry;
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ class PinboardImport extends AbstractImport
|
|||
'is_archived' => ('no' === $importedEntry['toread']) || $this->markAsRead,
|
||||
'is_starred' => false,
|
||||
'created_at' => $importedEntry['time'],
|
||||
'tags' => explode(' ', (string) $importedEntry['tags']),
|
||||
'tags' => array_filter(explode(' ', (string) $importedEntry['tags'])),
|
||||
];
|
||||
|
||||
$entry = new Entry($this->user);
|
||||
|
|
|
@ -52,7 +52,7 @@ class AuthCodeMailer implements AuthCodeMailerInterface
|
|||
]);
|
||||
|
||||
$email = (new Email())
|
||||
->from(new Address($this->senderEmail, $this->senderName ?? $this->senderEmail))
|
||||
->from(new Address($this->senderEmail, $this->senderName ?: $this->senderEmail))
|
||||
->to($user->getEmailAuthRecipient())
|
||||
->subject($subject)
|
||||
->text($bodyText)
|
||||
|
|
|
@ -24,10 +24,10 @@ class Utils
|
|||
*
|
||||
* @param string $text
|
||||
*
|
||||
* @return float
|
||||
* @return int
|
||||
*/
|
||||
public static function getReadingTime($text)
|
||||
{
|
||||
return floor(\count(preg_split('~([^\p{L}\p{N}\']+|(\p{Han}|\p{Hiragana}|\p{Katakana}|\p{Hangul}){1,2})~u', strip_tags($text))) / 200);
|
||||
return (int) floor(\count(preg_split('~([^\p{L}\p{N}\']+|(\p{Han}|\p{Hiragana}|\p{Katakana}|\p{Hangul}){1,2})~u', strip_tags($text))) / 200);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue