]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/TagSub/TagSub.php
More info for a proper, fancy-url lighttpd setup
[quix0rs-gnu-social.git] / plugins / TagSub / TagSub.php
index a734b4fc5fc709a7695928139d3fd2099807fac2..5bc0c436ee8f7d3639d273896c98ae4436b81545 100644 (file)
@@ -42,7 +42,6 @@ if (!defined('STATUSNET')) {
  *
  * @see      DB_DataObject
  */
-
 class TagSub extends Managed_DataObject
 {
     public $__table = 'tagsub'; // table name
@@ -50,39 +49,6 @@ class TagSub extends Managed_DataObject
     public $profile_id;  // int -> profile.id
     public $created;     // datetime
 
-    /**
-     * Get an instance by key
-     *
-     * This is a utility method to get a single instance with a given key value.
-     *
-     * @param string $k Key to use to lookup (usually 'user_id' for this class)
-     * @param mixed  $v Value to lookup
-     *
-     * @return TagSub object found, or null for no hits
-     *
-     */
-    function staticGet($k, $v=null)
-    {
-        return Memcached_DataObject::staticGet('TagSub', $k, $v);
-    }
-
-    /**
-     * Get an instance by compound key
-     *
-     * This is a utility method to get a single instance with a given set of
-     * key-value pairs. Usually used for the primary key for a compound key; thus
-     * the name.
-     *
-     * @param array $kv array of key-value mappings
-     *
-     * @return TagSub object found, or null for no hits
-     *
-     */
-    function pkeyGet($kv)
-    {
-        return Memcached_DataObject::pkeyGet('TagSub', $kv);
-    }
-
     /**
      * The One True Thingy that must be defined and declared.
      */
@@ -120,6 +86,7 @@ class TagSub extends Managed_DataObject
         $ts->profile_id = $profile->id;
         $ts->created = common_sql_now();
         $ts->insert();
+        self::blow('tagsub:by_profile:%d', $profile->id);
         return $ts;
     }
 
@@ -135,6 +102,34 @@ class TagSub extends Managed_DataObject
                                     'profile_id' => $profile->id));
         if ($ts) {
             $ts->delete();
+            self::blow('tagsub:by_profile:%d', $profile->id);
         }
     }
+
+    static function forProfile(Profile $profile)
+    {
+        $tags = array();
+
+        $keypart = sprintf('tagsub:by_profile:%d', $profile->id);
+        $tagstring = self::cacheGet($keypart);
+        
+        if ($tagstring !== false) { // cache hit
+               if (!empty($tagstring)) {
+               $tags = explode(',', $tagstring);
+               }
+        } else {
+            $tagsub             = new TagSub();
+            $tagsub->profile_id = $profile->id;
+            $tagsub->selectAdd();
+            $tagsub->selectAdd('tag');
+
+            if ($tagsub->find()) {
+                               $tags = $tagsub->fetchAll('tag');
+            }
+
+            self::cacheSet($keypart, implode(',', $tags));
+        }
+
+        return $tags;
+    }
 }