Skip to content

Commit

Permalink
Issue #1 - another example URL
Browse files Browse the repository at this point in the history
  • Loading branch information
jarofgreen committed Jul 26, 2015
1 parent 2676886 commit 2b33701
Show file tree
Hide file tree
Showing 3 changed files with 419 additions and 13 deletions.
42 changes: 29 additions & 13 deletions src/JMBTechnologyLimited/HTMLIsAnEvent/Parser.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,16 @@ function __construct($html, $url)

$event = new Event();

//$places = $node->find('[itemtype="http://schema.org/Place"]');

$nameMetas = $node->find('meta[itemprop="name"]');
if ($nameMetas) {
if ($nameMetas->count() > 0) {
$event->setTitle(html_entity_decode($nameMetas->getAttribute("content")));
}

$nameContents = $node->find('div[itemprop="name"]');
if ($nameContents->count() > 0) {
$event->setTitle(html_entity_decode($nameContents[0]->text(true)));
} else {
$nameContents = $node->find('[itemprop="name"]');
if ($nameContents->count() > 0) {
$event->setTitle(html_entity_decode($nameContents[0]->text(true)));
}
}

$urlContents = $node->find('a[itemprop="url"]');
Expand All @@ -51,15 +52,24 @@ function __construct($html, $url)
}
}

$startContents = $node->find('time[itemprop="startDate"]');
if ($startContents->count() > 0) {
$event->setStart(new \DateTime($startContents[0]->getAttribute("datetime"), new \DateTimeZone("UTC")));
$startMetas = $node->find('meta[itemprop="startDate"]');
if ($startMetas->count() > 0) {
$event->setStart(new \DateTime($startMetas[0]->getAttribute("content"), new \DateTimeZone("UTC")));
} else {
$startContents = $node->find('time[itemprop="startDate"]');
if ($startContents->count() > 0) {
$event->setStart(new \DateTime($startContents[0]->getAttribute("datetime"), new \DateTimeZone("UTC")));
}
}


$endContents = $node->find('time[itemprop="endDate"]');
if ($endContents->count() > 0) {
$event->setEnd(new \DateTime($endContents[0]->getAttribute("datetime"), new \DateTimeZone("UTC")));
$endMetas = $node->find('meta[itemprop="endDate"]');
if ($endMetas->count() > 0) {
$event->setEnd(new \DateTime($startMetas[0]->getAttribute("content"), new \DateTimeZone("UTC")));
} else {
$endContents = $node->find('time[itemprop="endDate"]');
if ($endContents->count() > 0) {
$event->setEnd(new \DateTime($endContents[0]->getAttribute("datetime"), new \DateTimeZone("UTC")));
}
}

$descriptionContents = $node->find('p[itemprop="description"]');
Expand All @@ -78,6 +88,12 @@ function __construct($html, $url)

$event = new Event();

$locations = $node->find(".p-location");
foreach($locations as $location) {
$location->getParent()->removeChild($location->id());
}


$nameContents = $node->find('.p-name');
if ($nameContents->count() > 0) {
$event->setTitle(html_entity_decode($nameContents[0]->text(true)));
Expand Down
68 changes: 68 additions & 0 deletions tests/JMBTechnologyLimited/HTMLIsAnEvent/BothTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php


namespace JMBTechnologyLimited\HTMLIsAnEvent;


/**
*
* @link https://github.com/JMB-Technology-Limited/HTMLIsAnEvent
* @license https://raw.github.com/JMB-Technology-Limited/HTMLIsAnEvent/master/LICENSE.txt 3-clause BSD
* @copyright (c) 2015, JMB Technology Limited, http://jmbtechnology.co.uk/
* @author James Baster <[email protected]>
*/
class BothTest extends \PHPUnit_Framework_TestCase {

function testFile1() {

$parser = new Parser(file_get_contents(__DIR__.DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."both1.html"), "http://example.com");

$events = $parser->getEvents();

$this->assertEquals(2, count($events));


############################### Event

$event1 = $events[0];


$this->assertEquals("IndieWebCamp 2015",$event1->getTitle());
$this->assertEquals(1, $event1->getUrlsCount());
$this->assertEquals("http://indiewebcamp.com/2015",$event1->getUrls()[0]->getUrl());


$this->assertNotNull($event1->getStart());
$this->assertEquals("2015-07-11T16:30:00+00:00",$event1->getStart()->format("c"));
$this->assertEquals("+00:00",$event1->getStart()->getTimezone()->getName());

$this->assertNotNull($event1->getEnd());
$this->assertEquals("2015-07-11T16:30:00+00:00",$event1->getEnd()->format("c"));
$this->assertEquals("+00:00",$event1->getEnd()->getTimezone()->getName());

$this->assertNull($event1->getDescriptionHtml());
$this->assertNull($event1->getDescriptionText());

############################### Event

$event2 = $events[1];

$this->assertEquals("IndieWebCamp 2015",$event2->getTitle());
$this->assertEquals(1, $event2->getUrlsCount());
$this->assertEquals("http://indiewebcamp.com/2015",$event2->getUrls()[0]->getUrl());


$this->assertNotNull($event2->getStart());
$this->assertEquals("2015-07-11T09:30:00+00:00",$event2->getStart()->format("c"));
$this->assertEquals("UTC",$event2->getStart()->getTimezone()->getName());

$this->assertNotNull($event2->getEnd());
$this->assertEquals("2015-07-12T18:00:00+00:00",$event2->getEnd()->format("c"));
$this->assertEquals("UTC",$event2->getEnd()->getTimezone()->getName());

$this->assertNull($event2->getDescriptionHtml());
$this->assertNull($event2->getDescriptionText());
}

}

Loading

0 comments on commit 2b33701

Please sign in to comment.