# database_user: %env.database_user%
# database_password: %env.database_password%
- database_driver: pdo_sqlite
+ database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: ~
- database_name: symfony
+ database_name: wallabag
database_user: root
database_password: ~
- database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
+ # For SQLite, database_path should be "%kernel.root_dir%/../data/db/wallabag.sqlite"
+ database_path: null
database_table_prefix: wallabag_
database_socket: null
- # with MySQL, use "utf8mb4" if you got problem with content with emojis
- database_charset: utf8
+ # with PostgreSQL and SQLite, you must set "utf8"
+ database_charset: utf8mb4
mailer_transport: smtp
mailer_host: 127.0.0.1
$pagerAdapter = new DoctrineORMAdapter($qb->getQuery(), true, false);
- $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')
- ->prepare($pagerAdapter, $page);
+ $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')->prepare($pagerAdapter);
try {
$entries->setCurrentPage($page);
$pagerAdapter = new ArrayAdapter($entriesByTag);
- $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')
- ->prepare($pagerAdapter, $page);
+ $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')->prepare($pagerAdapter);
try {
$entries->setCurrentPage($page);
$crawler = new Crawler($html);
$result = $crawler
->filterXpath('//img')
- ->extract(array('src'));
+ ->extract(['src']);
$relativePath = $this->getRelativePath($entryId);
continue;
}
+ // if image contains "&" and we can't find it in the html it might be because it's encoded as &
+ if (false !== stripos($image, '&') && false === stripos($html, $image)) {
+ $image = str_replace('&', '&', $image);
+ }
+
$html = str_replace($image, $imagePath, $html);
}
$ext = $this->mimeGuesser->guess($res->getHeader('content-type'));
$this->logger->debug('DownloadImages: Checking extension', ['ext' => $ext, 'header' => $res->getHeader('content-type')]);
if (!in_array($ext, ['jpeg', 'jpg', 'gif', 'png'], true)) {
- $this->logger->error('DownloadImages: Processed image with not allowed extension. Skipping '.$imagePath);
+ $this->logger->error('DownloadImages: Processed image with not allowed extension. Skipping: '.$imagePath);
return false;
}
/**
* @param AdapterInterface $adapter
- * @param int $page
*
* @return null|Pagerfanta
*/
- public function prepare(AdapterInterface $adapter, $page = 1)
+ public function prepare(AdapterInterface $adapter)
{
$user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
if (null === $user || !is_object($user)) {
- return null;
+ return;
}
$entries = new Pagerfanta($adapter);
protected $email;
/**
- * @var date
+ * @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime")
*
protected $createdAt;
/**
- * @var date
+ * @var \DateTime
*
* @ORM\Column(name="updated_at", type="datetime")
*
}
/**
- * @return string
+ * @return \DateTime
*/
public function getCreatedAt()
{
}
/**
- * @return string
+ * @return \DateTime
*/
public function getUpdatedAt()
{
use Doctrine\ORM\EntityManager;
use FOS\UserBundle\Event\UserEvent;
use FOS\UserBundle\FOSUserEvents;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Wallabag\CoreBundle\Entity\Config;
];
}
- public function createConfig(UserEvent $event, $eventName = null, EventDispatcherInterface $eventDispatcher = null)
+ public function createConfig(UserEvent $event)
{
$config = new Config($event->getUser());
$config->setTheme($this->theme);
class DownloadImagesTest extends \PHPUnit_Framework_TestCase
{
- public function testProcessHtml()
+ public function dataForSuccessImage()
+ {
+ return [
+ 'imgur' => [
+ '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>',
+ 'http://imgur.com/gallery/WxtWY',
+ ],
+ 'image with &' => [
+ '<div><img src="https://i2.wp.com/www.tvaddons.ag/wp-content/uploads/2017/01/Screen-Shot-2017-01-07-at-10.17.40-PM.jpg?w=640&ssl=1" /></div>',
+ 'https://www.tvaddons.ag/realdebrid-kodi-jarvis/',
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider dataForSuccessImage
+ */
+ public function testProcessHtml($html, $url)
{
$client = new Client();
$download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger);
- $res = $download->processHtml(123, '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>', 'http://imgur.com/gallery/WxtWY');
+ $res = $download->processHtml(123, $html, $url);
- $this->assertContains('http://wallabag.io/assets/images/9/b/9b0ead26/c638b4c2.png', $res);
+ // this the base path of all image (since it's calculated using the entry id: 123)
+ $this->assertContains('http://wallabag.io/assets/images/9/b/9b0ead26/', $res);
}
public function testProcessHtmlWithBadImage()