Version 1
[yaffs-website] / vendor / php-instagram-api / php-instagram-api / Instagram / Helper.php
diff --git a/vendor/php-instagram-api/php-instagram-api/Instagram/Helper.php b/vendor/php-instagram-api/php-instagram-api/Instagram/Helper.php
new file mode 100644 (file)
index 0000000..c6518f2
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+
+/**
+* Instagram PHP
+* @author Galen Grover <galenjr@gmail.com>
+* @license http://opensource.org/licenses/mit-license.php The MIT License
+*/
+
+namespace Instagram;
+
+/**
+ * Helper class
+ *
+ * Example:
+ *
+ * $tags_closure = function($m){
+ *     return sprintf( '<a href="?example=tag.php&tag=%s">%s</a>', $m[1], $m[0] );
+ * };
+ *
+ * $mentions_closure = function($m){
+ *    return sprintf( '<a href="?example=user.php&user=%s">%s</a>', $m[1], $m[0] );
+ * };
+ *
+ * echo \Instagram\Helper::parseTagsAndMentions( $media->getCaption(), $tags_closure, $mentions_closure )
+ */
+class Helper {
+
+    /**
+     * Parse mentions in a string
+     *
+     * Finds mentions in a string (@mention) and applies a callback function each one
+     *
+     * @param string $text Text to parse
+     * @param \Closure $callback Function to apply to each mention
+     * @return string Returns the text after the callback have been applied to each mention
+     * @access public
+     */
+    public static function parseMentions( $text, \Closure $callback ) {
+        return preg_replace_callback( '~@(.+?)(?=\b)~', $callback, $text );
+    }
+
+    /**
+     * Parse tags in a string
+     *
+     * Finds tags in a string (#username) and applies a callback function each one
+     *
+     * @param string $text Text to parse
+     * @param \Closure $callback Function to apply to each tag
+     * @return string Returns the text after the callback have been applied to each tag
+     * @access public
+     */
+    public static function parseTags( $text, \Closure $callback ) {
+        return preg_replace_callback( '~#(.+?)(?=\b)~', $callback, $text );
+    }
+
+    /**
+     * Parse mentions and tags in a string
+     *
+     * Finds mentions and tags in a string (@mention, #tag) and applies a callback function each one
+     *
+     * @param string $text Text to parse
+     * @param \Closure $tags_callback Function to apply to each tag
+     * @param \Closure $mentions_callback Function to apply to each mention
+     * @return string Returns the text after the callbacks have been applied to tags and mentions
+     * @access public
+     */
+    public static function parseTagsAndMentions( $text, \Closure $tags_callback, \Closure $mentions_callback ) {
+        $text = self::parseTags( $text, $tags_callback );
+        $text = self::parseMentions( $text, $mentions_callback );
+        return $text;
+    }
+
+    /**
+     * Is the comment deletable
+     *
+     * Checks if a comment is deletable by checking if the current user posted the comment
+     * or if the comment was added to one of the current user's media
+     * 
+     * @param  \Instagram\Comment $comment The comment
+     * @param  \Instagram\Media $media The media the comment was added to
+     * @param  \Instagram\CurrentUser $current_user Current user
+     * @access public
+     */
+    public static function commentIsDeletable( \Instagram\Comment $comment, \Instagram\Media $media, \Instagram\CurrentUser $current_user ) {
+        return
+            $comment->getUser()->getId() == $current_user->getId() ||
+            $media->getUser()->getId() == $current_user->getId();
+    }
+
+}
\ No newline at end of file