diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb
index 5d0fc35fe..686a81b88 100644
--- a/app/controllers/people_controller.rb
+++ b/app/controllers/people_controller.rb
@@ -6,7 +6,7 @@ class PeopleController < ApplicationController
end
def show
- @person= Person.where(:id => params[:id]).first
+ @person= current_user.friend_by_id(params[:id])
@person_profile = @person.profile
@person_posts = Post.where(:person_id => @person.id).paginate :page => params[:page], :order => 'created_at DESC'
diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb
index e6506c55e..91edf995d 100644
--- a/app/controllers/publics_controller.rb
+++ b/app/controllers/publics_controller.rb
@@ -11,12 +11,11 @@ class PublicsController < ApplicationController
end
def host_meta
- @user = User.owner
render 'host_meta', :layout => false, :content_type => 'application/xrd+xml'
end
def webfinger
- @person = Person.first(:email => params[:q].gsub('acct:', ''))
+ @person = Person.by_webfinger(params[:q])
unless @person.nil? || @person.owner.nil?
render 'webfinger', :layout => false, :content_type => 'application/xrd+xml'
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index d6913a9e5..7f6a7bae2 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -32,7 +32,11 @@ module ApplicationHelper
end
def owner_image_tag
- person_image_tag(User.owner)
+ person_image_tag(current_user)
+ end
+
+ def owner_image_link
+ person_image_link(current_user)
end
def person_image_tag(person)
@@ -46,10 +50,6 @@ module ApplicationHelper
link_to person_image_tag(person), object_path(person)
end
- def owner_image_link
- person_image_link(User.owner)
- end
-
def new_request(request_count)
"new_requests" if request_count > 0
end
diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb
index 99f73be66..478d9853b 100644
--- a/app/helpers/requests_helper.rb
+++ b/app/helpers/requests_helper.rb
@@ -26,9 +26,16 @@ module RequestsHelper
end
def relationship_flow(identifier)
- f = Redfinger.finger(identifier)
- action = subscription_mode(f)
- url = subscription_url(action, f)
+ puts request.host
+ if identifier.include?(request.host)
+ person = Person.by_webfinger identifier
+ action = :friend
+ url = person.owner.receive_url
+ else
+ f = Redfinger.finger(identifier)
+ action = subscription_mode(f)
+ url = subscription_url(action, f)
+ end
{ action => url }
end
diff --git a/app/models/blog.rb b/app/models/blog.rb
index 0df0dd558..3859cfa1e 100644
--- a/app/models/blog.rb
+++ b/app/models/blog.rb
@@ -15,8 +15,8 @@ class Blog < Post
http://activitystrea.ms/schema/1.0/post
#{self.title}#{self.body}
-
- #{User.owner.url}blogs/#{self.id}
+
+ #{person.url}blogs/#{self.id}#{self.created_at.xmlschema}#{self.updated_at.xmlschema}
diff --git a/app/models/bookmark.rb b/app/models/bookmark.rb
index de1eb9258..677bfa126 100644
--- a/app/models/bookmark.rb
+++ b/app/models/bookmark.rb
@@ -17,9 +17,9 @@ class Bookmark < Post
http://activitystrea.ms/schema/1.0/post#{self.title}
-
+
- #{User.owner.url}bookmarks/#{self.id}
+ #{person.url}bookmarks/#{self.id}#{self.created_at.xmlschema}#{self.updated_at.xmlschema}
diff --git a/app/models/person.rb b/app/models/person.rb
index cf4899a1e..50a3cc410 100644
--- a/app/models/person.rb
+++ b/app/models/person.rb
@@ -75,7 +75,7 @@ class Person
false
end
- def send_comment c
+ def send_comment( c )
if self.owner.nil?
if c.post.person.owner.nil?
#puts "The commenter is not here, and neither is the poster"
@@ -112,6 +112,10 @@ class Person
"#{self.url}receive/users/#{self.id}/"
end
+ def self.by_webfinger( identifier )
+ Person.first(:email => identifier.gsub('acct:', ''))
+ end
+
protected
def clean_url
self.url ||= "http://localhost:3000/" if self.class == User
diff --git a/app/models/photo.rb b/app/models/photo.rb
index c06ceb62c..d93a1189a 100644
--- a/app/models/photo.rb
+++ b/app/models/photo.rb
@@ -37,7 +37,7 @@ class Photo < Post
end
def remote_photo
- @remote_photo ||= User.owner.url.chop + image.url
+ @remote_photo ||= self.person.url.chop + image.url
end
def remote_photo= remote_path
@@ -47,10 +47,10 @@ class Photo < Post
end
def ensure_user_picture
- user = User.owner
- if user.profile.image_url == image.url(:thumb_medium)
+ users = Person.all('profile.image_url' => image.url(:thumb_medium) )
+ users.each{ |user|
user.profile.update_attributes!(:image_url => nil)
- end
+ }
end
def thumb_hash
diff --git a/app/models/status_message.rb b/app/models/status_message.rb
index bf56410be..3fb9aa39d 100644
--- a/app/models/status_message.rb
+++ b/app/models/status_message.rb
@@ -13,8 +13,8 @@ class StatusMessage < Post
http://activitystrea.ms/schema/1.0/post#{self.message}
-
- #{User.owner.url}status_messages/#{self.id}
+
+ #{person.url}status_messages/#{self.id}#{self.created_at.xmlschema}#{self.updated_at.xmlschema}
diff --git a/app/models/user.rb b/app/models/user.rb
index 7bb292491..28e750789 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -45,7 +45,7 @@ class User
self.pending_requests << request
self.save
- group = self.groups.first(:id => group_id)
+ group = self.group_by_id(group_id)
group.requests << request
group.save
@@ -60,7 +60,7 @@ class User
request = Request.where(:id => friend_request_id).first
n = pending_requests.delete(request)
- activate_friend(request.person, groups.first(:id => group_id))
+ activate_friend(request.person, group_by_id(group_id))
request.reverse self
@@ -82,7 +82,7 @@ class User
def receive_friend_request(friend_request)
Rails.logger.info("receiving friend request #{friend_request.to_json}")
if request_from_me?(friend_request)
- group = self.groups.first(:id => friend_request.group_id)
+ group = self.group_by_id(friend_request.group_id)
activate_friend(friend_request.person, group)
Rails.logger.info("#{self.real_name}'s friend request has been accepted")
@@ -145,8 +145,8 @@ class User
if object.is_a? Retraction
if object.type == 'Person' && object.signature_valid?
- Rails.logger.info( "the person id is #{object.post_id} the friend found is #{friends.first(object.post_id)}")
- unfriended_by friends.first(object.post_id)
+ Rails.logger.info( "the person id is #{object.post_id} the friend found is #{friend_by_id(object.post_id).inspect}")
+ unfriended_by friend_by_id(object.post_id)
else
object.perform self.id
@@ -189,10 +189,14 @@ class User
self.password_confirmation = self.password
end
- def self.owner
- User.first
+ def friend_by_id( id )
+ friends.detect{|x| x.id == ensure_bson id }
end
-
+
+ def group_by_id( id )
+ groups.detect{|x| x.id == ensure_bson id }
+ end
+
protected
def assign_key
@@ -207,4 +211,7 @@ class User
OpenSSL::PKey::RSA::generate 1024
end
+ def ensure_bson id
+ id.class == String ? BSON::ObjectID(id) : id
+ end
end
diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb
index f171eb0f9..6f3e84582 100644
--- a/db/seeds/tom.rb
+++ b/db/seeds/tom.rb
@@ -1,11 +1,3 @@
-#This file should contain all the record creation needed to seed the database with its default values.
-# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
-#
-# Examples:
-#
-# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
-# Mayor.create(:name => 'Daley', :city => citie
-
require 'config/environment'
# Create seed user
diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb
index f013e1583..a20ffb504 100644
--- a/spec/models/post_spec.rb
+++ b/spec/models/post_spec.rb
@@ -6,17 +6,6 @@ describe Post do
@user.person.save
end
- describe 'defaults' do
- before do
- WebSocket.stub!(:update_clients)
- @post = Factory.create(:post, :person => nil)
- end
-
- it "should associate the owner if none is present" do
- @post.person.should == User.owner
- end
- end
-
describe "newest" do
before do
@person_one = Factory.create(:person, :email => "some@dudes.com")