/**
  * Pass webmentions to the component objects
  *
  * @param string $source The source URL
  * @param string $target The target URL (i.e., the page on this site that was pinged)
  * @param string $source_content The source page's HTML
  * @param array $source_mf2 Parsed Microformats 2 content from $source
  * @return bool
  */
 function addWebmentions($source, $target, $source_content, $source_mf2)
 {
     if ($object = $this->getObject()) {
         return $object->addWebmentions($source, $target, $source_content, $source_mf2);
     }
     return parent::addWebmentions($source, $target, $source_content, $source_mf2);
 }
Exemple #2
0
    /**
     * When we get a webmention where the source is a feed, make
     * sure we handle it gracefully.
     */
    function testAddWebmentions_RemoteFeed()
    {
        $entity = new Entity();
        $entity->setOwner($this->user());
        $entity->title = "This post will be the webmention target";
        $entity->publish();
        $this->toDelete[] = $entity;
        $target = $entity->getURL();
        $source = 'http://example.com/';
        $sourceContent = <<<EOD
<!DOCTYPE html>
<html>
<body>
  <div class="h-entry">
    <a class="p-author h-card" href="https://example.com/">Jane Example</a>
    <span class="p-name e-content">This is just nonsense</span>
    <a class="u-url" href="http://example.com/2015/this-is-just-nonsense">permalink</a>
  </div>
  <div class="h-entry">
    <a class="u-in-reply-to" href="{$target}">in reply to</a>
    <a class="p-author h-card" href="https://example.com/">Jane Example</a>
    <span class="p-name e-content">This is a reply</span>
    <a class="u-url" href="http://example.com/2015/this-is-a-reply">permalink</a>
  </div>
  <div class="h-entry">
    <a class="p-author h-card" href="https://example.com/">Jane Example</a>
    <span class="p-name e-content">This is probably really serious</span>
    <a class="u-url" href="http://example.com/2015/this-is-probably-really-serious">permalink</a>
  </div>
</body>
</html>
EOD;
        $sourceResp = ['response' => 200, 'content' => $sourceContent];
        $sourceMf2 = (new \Mf2\Parser($sourceContent, $source))->parse();
        $entity->addWebmentions($source, $target, $sourceResp, $sourceMf2);
        $this->assertEmpty($entity->getAllAnnotations());
    }