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; }