in src/Facebook/InstantArticles/Transformer/Rules/InteractiveRule.php [61:128]
public function apply($transformer, $context, $node)
{
$interactive = Interactive::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(
// This new error message should be something like:
// Could not transform Image, as no root InstantArticle was provided.
new NoRootInstantArticleFoundWarning(null, $node)
);
return $context;
}
// Builds the interactive
$iframe = $this->getProperty(self::PROPERTY_IFRAME, $node);
$url = $this->getProperty(self::PROPERTY_URL, $node);
if ($iframe) {
$interactive->withHTML(Transformer::cloneNode($iframe));
}
if ($url) {
$interactive->withSource($url);
}
if ($iframe || $url) {
$instant_article->addChild($interactive);
if ($instant_article !== $context) {
$instant_article->addChild($context);
}
} else {
$transformer->addWarning(
new InvalidSelector(
self::PROPERTY_IFRAME,
$instant_article,
$node,
$this
)
);
}
if ($this->getProperty(self::PROPERTY_WIDTH_COLUMN_WIDTH, $node)) {
$interactive->withMargin(Interactive::COLUMN_WIDTH);
} else {
$interactive->withMargin(Interactive::NO_MARGIN);
}
$width = $this->getProperty(self::PROPERTY_WIDTH, $node);
if ($width) {
$interactive->withWidth($width);
}
$height = $this->getProperty(self::PROPERTY_HEIGHT, $node);
if ($height) {
$interactive->withHeight($height);
}
$suppress_warnings = $transformer->suppress_warnings;
$transformer->suppress_warnings = true;
$transformer->transform($interactive, $node);
$transformer->suppress_warnings = $suppress_warnings;
return $context;
}