|
|
- <?php
- namespace p3k\XRay;
-
- class PostType {
-
- // Takes an XRay format post and runs post-type-discovery, returning a single string
- // https://www.w3.org/TR/post-type-discovery/
- public static function discover($post) {
-
- // A few of the post types are defined as the same as their microformats h-* types
- if(in_array($post['type'], ['event','recipe','review']))
- return $post['type'];
-
- if(isset($post['rsvp']))
- return 'rsvp';
-
- if(isset($post['repost-of']))
- return 'repost';
-
- if(isset($post['like-of']))
- return 'like';
-
- if(isset($post['in-reply-to']))
- return 'reply';
-
- if(isset($post['bookmark-of']))
- return 'bookmark';
-
- if(isset($post['follow-of']))
- return 'follow';
-
- if(isset($post['checkin']))
- return 'checkin';
-
- if(isset($post['video']))
- return 'video';
-
- if(isset($post['audio']))
- return 'audio';
-
- if(isset($post['photo']))
- return 'photo';
-
- $content = '';
- if(isset($post['content']))
- $content = $post['content']['text'];
- elseif(isset($post['summary']))
- $content = $post['summary'];
-
- if(!isset($post['name']) || !trim($post['name']))
- return 'note';
-
- // Trim all leading/trailing whitespace
- $name = trim($post['name']);
-
- // Collapse all sequences of internal whitespace to a single space (0x20) character each
- $name = preg_replace('/\s+/', ' ', $name);
- $content = preg_replace('/\s+/', ' ', $content);
-
- // If this processed "name" property value is NOT a prefix of the
- // processed "content" property, then it is an article post.
- if(strpos($content, $name) === false) {
- return 'article';
- }
-
- return 'note';
- }
-
- }
|