|
|
- <?php
- namespace feeds;
- use BarnabyWalters\Mf2;
-
- function parse_mf2(&$html, $base) {
- $parser = new \mf2\Parser($html, $base);
- return $parser->parse();
- }
-
- function get_rels(&$data) {
- if($data && array_key_exists('rels', $data)) {
- return $data['rels'];
- } else {
- return [];
- }
- }
-
- function get_alternates(&$data) {
- if($data && array_key_exists('alternates', $data)) {
- return $data['alternates'];
- } else {
- return [];
- }
- }
-
- // Compares name, summary and content values to determine if they are equal
- function content_is_equal($a, $b) {
- // remove html tags
- $a = strip_tags($a);
- $b = strip_tags($b);
- // remove encoded entities
- $a = preg_replace('/&#?[a-z0-9]{2,8};/i', '', $a);
- $b = preg_replace('/&#?[a-z0-9]{2,8};/i', '', $b);
- // remove all non-alphanumeric chars
- $a = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($a));
- $b = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($b));
- return $a == $b;
- }
-
- // Given a parsed microformat data structure, find the feed on the page.
- // This is meant to follow
- // * http://indiewebcamp.com/feed#How_To_Consume
- // * http://microformats.org/wiki/h-feed#Parsing
- // Returns an array:
- // [
- // 'properties' => [ list of mf2 properties of the h-feed ],
- // 'entries' => [ list of h-entry items of the feed ]
- // ]
- function find_feed_info(&$data) {
-
- // tantek.com : h-card => h-feed => h-entry
- // snarfed.org : h-feed => h-entry
- // aaronparecki.com : h-entry
-
- $properties = [];
- $entries = [];
-
- // Find the first h-feed
- $feeds = Mf2\findMicroformatsByType($data, 'h-feed');
- if(count($feeds)) {
- $feed = $feeds[0];
-
- $properties = $feed['properties'];
- $entries = Mf2\findMicroformatsByType($feed['children'], 'h-entry', false);
-
- return [
- 'properties' => $properties,
- 'entries' => $entries
- ];
-
- } else {
- // This is an implied feed if there are h-entry posts found at the top level
-
- $entries = Mf2\findMicroformatsByType($data['items'], 'h-entry', false);
-
- if(count($entries)) {
- return [
- 'properties' => [],
- 'entries' => $entries
- ];
- }
-
- }
-
- return false;
- }
|