public function apply($transformer, $context, $node)
{
$image = Image::create();
if (Type::is($context, InstantArticle::getClassName())) {
$instant_article = $context;
} elseif ($transformer->getInstantArticle()) {
$instant_article = $transformer->getInstantArticle();
$context->disableEmptyValidation();
$context = Paragraph::create();
$context->disableEmptyValidation();
} else {
$transformer->addWarning(new NoRootInstantArticleFoundWarning(null, $node));
return $context;
}
// Builds the image
$url = $this->getProperty(self::PROPERTY_IMAGE_URL, $node);
if ($url) {
$image->withURL($url);
$instant_article->addChild($image);
if ($instant_article !== $context) {
$instant_article->addChild($context);
}
} else {
$transformer->addWarning(new InvalidSelector(self::PROPERTY_IMAGE_URL, $instant_article, $node, $this));
}
if ($this->getProperty(Image::ASPECT_FIT, $node)) {
$image->withPresentation(Image::ASPECT_FIT);
} elseif ($this->getProperty(Image::ASPECT_FIT_ONLY, $node)) {
$image->withPresentation(Image::ASPECT_FIT_ONLY);
} elseif ($this->getProperty(Image::FULLSCREEN, $node)) {
$image->withPresentation(Image::FULLSCREEN);
} elseif ($this->getProperty(Image::NON_INTERACTIVE, $node)) {
$image->withPresentation(Image::NON_INTERACTIVE);
}
if ($this->getProperty(self::PROPERTY_LIKE, $node)) {
$image->enableLike();
}
if ($this->getProperty(self::PROPERTY_COMMENTS, $node)) {
$image->enableComments();
}
$suppress_warnings = $transformer->suppress_warnings;
$transformer->suppress_warnings = true;
$transformer->transform($image, $node);
$transformer->suppress_warnings = $suppress_warnings;
return $context;
}