lportal 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/company.rb CHANGED
@@ -32,12 +32,14 @@ class Company < ActiveRecord::Base
32
32
  'com.liferay.portal.model.Company'
33
33
  end
34
34
 
35
+ # A list of Users who have the Role 'Administrator'. Scope is not checked!
35
36
  def administrators
36
37
  adminrole = Role.find(:first, :conditions => "companyid=#{self.id} AND name='Administrator'")
37
38
  return self.users.select{|u| u.roles.include?(adminrole) }
38
39
  end
39
40
  alias :admins :administrators
40
41
 
42
+ # The default user for this Company.
41
43
  def guest
42
44
  User.find(:first, :conditions => "companyid=#{self.id} AND defaultuser = true" )
43
45
  end
data/lib/dl_file.rb CHANGED
@@ -22,4 +22,10 @@ class DlFile < ActiveRecord::Base
22
22
  :class_name => 'Tag::Asset',
23
23
  :foreign_key => 'classpk'
24
24
 
25
+
26
+ # URL path to download this Document Library File
27
+ def path
28
+ '/c/document_library/get_file?folderId=%i&name=%s' % [self.folderid, self.name]
29
+ end
30
+
25
31
  end
data/lib/group.rb CHANGED
@@ -222,6 +222,41 @@ class Group < ActiveRecord::Base
222
222
  :foreign_key => 'groupid',
223
223
  :conditions => 'privatelayout = true'
224
224
 
225
+
226
+ # --
227
+ # Class methods
228
+ # ++
229
+
230
+ class << self
231
+
232
+ # 0 = personal user groups
233
+ def find_personal(companyid)
234
+ self.find(:all, :conditions => "companyid=#{companyid} AND type_=0")
235
+ end
236
+
237
+ # 1 = public, guest can see
238
+ def find_public(companyid)
239
+ self.find(:all, :conditions => "companyid=#{companyid} AND type_=1")
240
+ end
241
+
242
+ # 2 = user-created open communities
243
+ def find_open(companyid)
244
+ self.find(:all, :conditions => "companyid=#{companyid} AND type_=2")
245
+ end
246
+
247
+ # 3 = private, also contains admins
248
+ def find_private(companyid)
249
+ self.find(:all, :conditions => "companyid=#{companyid} AND type_=3")
250
+ end
251
+ end
252
+
253
+
254
+ # --
255
+ # Instance methods
256
+ # ++
257
+
258
+ # Group's name. If classnameid==0 (Group is a basic group), use the name in the group_ column.
259
+ # Otherwise use the owner's name.
225
260
  def name
226
261
  self.classnameid != 0 ?
227
262
  self.owner.name : super
@@ -327,4 +362,9 @@ class Group < ActiveRecord::Base
327
362
  self.select_layouts_with(portlet,pl).any?
328
363
  end
329
364
 
365
+ # Helper to collect all tags that are related to this Group through Tag::Asset.
366
+ def assets_tags
367
+ self.assets.collect(&:tags).flatten.uniq
368
+ end
369
+
330
370
  end
data/lib/mb/category.rb CHANGED
@@ -4,7 +4,8 @@ module MB
4
4
  set_table_name :mbcategory
5
5
  set_primary_key :categoryid
6
6
 
7
- validates_uniqueness_of :uuid_
7
+ # this causes trouble when modifying instance attributes (!)
8
+ #validates_uniqueness_of :uuid_
8
9
 
9
10
  # com.liferay.portlet.messageboards.model.MBCategory
10
11
  def liferay_class
data/lib/mb/message.rb CHANGED
@@ -3,11 +3,264 @@ module MB
3
3
  set_table_name :mbmessage
4
4
  set_primary_key :messageid
5
5
 
6
+ # validates_presence_of :user, :category, :subject, :body
7
+
8
+
6
9
  # com.liferay.portlet.messageboards.model.MBMessage
7
10
  def liferay_class
8
11
  'com.liferay.portlet.messageboards.model.MBMessage'
9
12
  end
10
13
 
14
+ # Actions for Permissions.
15
+ def self.actions
16
+ %w{
17
+ DELETE
18
+ PERMISSIONS
19
+ SUBSCRIBE
20
+ UPDATE
21
+ VIEW
22
+ }
23
+ end
24
+
25
+ # - user
26
+ # - category or parent message
27
+ # - body
28
+ def initialize(params)
29
+ raise 'No user' unless params[:user] or params[:userid]
30
+ unless ((params[:category] or params[:categoryid]) || (params[:parent] or params[:parentmessageid]))
31
+ raise 'No category or parentmessage'
32
+ end
33
+ raise 'No body' unless params[:body]
34
+ super(params)
35
+
36
+ # COPY mbmessage (uuid_, messageid, companyid, userid, username, createdate, modifieddate, categoryid, threadid, parentmessageid, subject, body, attachments, anonymous) FROM stdin;
37
+ # +66089117-ddb5-4577-ba9b-76479a273727 10308 10109 10129 Test Test 2009-01-17 08:07:11.947 2009-01-17 08:07:11.947 10307 10309 0 New thread This is a test, using rich editor. f f
38
+
39
+ unless self.uuid_
40
+ require 'rubygems'
41
+ require 'uuidtools'
42
+ self.uuid_ = UUID.random_create.to_s
43
+ end
44
+
45
+ self.category ||= self.parent.category
46
+ category = self.category
47
+
48
+ self.companyid ||= category.companyid
49
+
50
+ # always require User
51
+ #unless self.userid
52
+ # self.userid = 0
53
+ # self.anonymous = true
54
+ #else
55
+ self.anonymous = false
56
+ #end
57
+
58
+ self.subject ||= ''
59
+ self.username ||= ''
60
+ self.createdate = Time.now
61
+ self.modifieddate = Time.now
62
+ self.parentmessageid ||= 0
63
+ self.attachments ||= false
64
+ self.save
65
+
66
+
67
+ # COPY mbcategory (uuid_, categoryid, groupid, companyid, userid, username, createdate, modifieddate, parentcategoryid, name, description, lastpostdate) FROM stdin;
68
+ # -fda18eef-3992-419e-a373-6e2f01a8b6a9 10307 10166 10109 10129 Test Test 2009-01-17 08:06:00.359 2009-01-17 08:06:00.359 0 Teppo Testaaja message board for user Teppo \N
69
+ # +fda18eef-3992-419e-a373-6e2f01a8b6a9 10307 10166 10109 10129 Test Test 2009-01-17 08:06:00.359 2009-01-17 08:06:00.359 0 Teppo Testaaja message board for user Teppo 2009-01-17 08:07:11.947
70
+
71
+ category.lastpostdate = Time.now
72
+ category.save
73
+
74
+
75
+ # COPY mbthread (threadid, categoryid, rootmessageid, messagecount, viewcount, lastpostbyuserid, lastpostdate, priority) FROM stdin;
76
+ # +10309 10307 10308 1 1 10129 2009-01-17 08:07:11.947 0
77
+
78
+ thread = MB::Thread.find(:first,
79
+ :conditions => "categoryid=#{category.id} AND rootmessageid=#{self.find_thread_root.id}")
80
+ unless thread
81
+ thread = MB::Thread.create(
82
+ :category => category,
83
+ :rootmessage => self,
84
+ :messagecount => 0,
85
+ :viewcount => 0
86
+ )
87
+ end
88
+ thread.messagecount += 1
89
+ thread.lastpostbyuserid = self.user.id
90
+ thread.lastpostdate = Time.now
91
+ thread.save
92
+ self.thread = thread
93
+
94
+
95
+ # COPY mbmessageflag (messageflagid, userid, messageid, flag) FROM stdin;
96
+ # +10313 10129 10308 1
97
+
98
+ unless self.flag # wtf?
99
+ MB::MessageFlag.create(
100
+ :user => self.user,
101
+ :message => self,
102
+ :flag => 1
103
+ )
104
+ end
105
+
106
+
107
+ # COPY mbstatsuser (statsuserid, groupid, userid, messagecount, lastpostdate) FROM stdin;
108
+ # +10310 10166 10129 1 2009-01-17 08:07:12.014
109
+
110
+ stats = MB::StatsUser.find(:first, :conditions => "groupid=#{category.groupid} AND userid=#{self.user.id}")
111
+ unless stats
112
+ stats = MB::StatsUser.create(
113
+ :groupid => category.groupid,
114
+ :user => self.user,
115
+ :messagecount => 0
116
+ )
117
+ end
118
+ stats.messagecount += 1
119
+ stats.lastpostdate = Time.now
120
+ stats.save
121
+
122
+
123
+ # COPY ratingsstats (statsid, classnameid, classpk, totalentries, totalscore, averagescore) FROM stdin;
124
+ # +10312 10071 10308 0 0 0
125
+
126
+ classnameid = Classname.find_by_value(self.liferay_class).id
127
+
128
+ unless RatingsStats.find(:first,
129
+ :conditions => "classnameid=#{classnameid} AND classpk=#{self.id}")
130
+ RatingsStats.create(
131
+ :classnameid => classnameid,
132
+ :classpk => self.id
133
+ )
134
+ end
135
+
136
+
137
+ # COPY socialactivity (activityid, groupid, companyid, userid, createdate, mirroractivityid, classnameid, classpk, type_, extradata, receiveruserid) FROM stdin;
138
+ # +1 10166 10109 10129 2009-01-17 08:07:12.024 0 10071 10308 1 0
139
+
140
+ unless SocialActivity.find(:first,
141
+ :conditions => "userid=#{self.user.id} AND classnameid=#{classnameid} AND classpk=#{self.id}")
142
+ SocialActivity.create(
143
+ :group => category.group,
144
+ :company => self.company,
145
+ :user => self.user,
146
+ :classnameid => classnameid,
147
+ :classpk => self.id
148
+ )
149
+ end
150
+
151
+
152
+ # COPY tagsasset (assetid, groupid, companyid, userid, username, createdate, modifieddate, classnameid, classpk, startdate, enddate, publishdate, expirationdate, mimetype, title, description, summary, url, height, width, priority, viewcount) FROM stdin;
153
+ # +10311 10166 10109 10129 Test Test 2009-01-17 08:07:12.039 2009-01-17 08:07:12.039 10071 10308 \N \N \N \N text/html New thread 0 0 0 0
154
+
155
+ unless Tag::Asset.find(:first,
156
+ :conditions => "userid=#{self.user.id} AND classnameid=#{classnameid} AND classpk=#{self.id}")
157
+ Tag::Asset.create(
158
+ :group => category.group,
159
+ :company => self.company,
160
+ :user => self.user,
161
+ :classnameid => classnameid,
162
+ :classpk => self.id,
163
+ :title => 'New thread'
164
+ )
165
+ end
166
+
167
+
168
+ # ResourceCode with scope 1 => Resource for Company
169
+ # ResourceCode with scope 2 => Resource for this Group and Guest's Group
170
+ # ResourceCode with scope 4 => Resource for self
171
+
172
+ # COPY resourcecode (codeid, companyid, name, scope) FROM stdin;
173
+ # +107 10109 com.liferay.portlet.messageboards.model.MBMessage 1
174
+ # +108 10109 com.liferay.portlet.messageboards.model.MBMessage 2
175
+ # +109 10109 com.liferay.portlet.messageboards.model.MBMessage 4
176
+
177
+ # COPY resource_ (resourceid, codeid, primkey) FROM stdin;
178
+ # +214 107 10109
179
+ # +215 108 10124 << this is Guest's group
180
+ # +216 108 10166
181
+ # +217 109 10308
182
+
183
+ # only create resources with scope 1,2 for rootmessages
184
+ if self.is_root?
185
+ rc = self.resource_code(1)
186
+ unless rc
187
+ rc = ResourceCode.create(
188
+ :companyid => self.companyid,
189
+ :name => self.liferay_class,
190
+ :scope => 1
191
+ )
192
+ end
193
+ unless Resource.find(:first, :conditions => "codeid=#{rc.id} AND primkey='#{self.companyid}'")
194
+ Resource.create(
195
+ :codeid => rc.id,
196
+ :primkey => self.companyid
197
+ )
198
+ end
199
+
200
+ rc = self.resource_code(2)
201
+ unless rc
202
+ rc = ResourceCode.create(
203
+ :companyid => self.companyid,
204
+ :name => self.liferay_class,
205
+ :scope => 2
206
+ )
207
+ end
208
+ unless Resource.find(:first, :conditions => "codeid=#{rc.id} AND primkey='#{category.groupid}'")
209
+ Resource.create(
210
+ :codeid => rc.id,
211
+ :primkey => category.groupid
212
+ )
213
+ end
214
+ end
215
+
216
+ # Create a resource with scope=4
217
+ rc = self.resource_code(4)
218
+ unless rc
219
+ rc = ResourceCode.create(
220
+ :companyid => self.companyid,
221
+ :name => self.liferay_class,
222
+ :scope => 4
223
+ )
224
+ end
225
+ resource = Resource.find(:first, :conditions => "codeid=#{rc.id} AND primkey='#{self.id}'")
226
+ unless resource
227
+ resource = Resource.create(
228
+ :codeid => rc.id,
229
+ :primkey => self.id
230
+ )
231
+ end
232
+
233
+
234
+ # COPY permission_ (permissionid, companyid, actionid, resourceid) FROM stdin;
235
+ # +323 10109 DELETE 217
236
+ # +324 10109 PERMISSIONS 217
237
+ # +325 10109 SUBSCRIBE 217
238
+ # +326 10109 UPDATE 217
239
+ # +327 10109 VIEW 217
240
+
241
+ # COPY users_permissions (userid, permissionid) FROM stdin;
242
+ # +10129 323
243
+ # +10129 324
244
+ # +10129 325
245
+ # +10129 326
246
+ # +10129 327
247
+
248
+ self.class.actions.each do |actionid|
249
+ permission = Permission.find(:first,
250
+ :conditions => "companyid=#{self.companyid} AND actionid='#{actionid}' AND resourceid=#{resource.id}")
251
+ unless permission
252
+ permission = Permission.create(
253
+ :companyid => self.companyid,
254
+ :actionid => actionid,
255
+ :resourceid => resource.id
256
+ )
257
+ end
258
+ self.user.user_permissions << permission
259
+ end
260
+
261
+ self.save
262
+ end
263
+
11
264
  belongs_to :company,
12
265
  :foreign_key => 'companyid'
13
266
 
@@ -24,14 +277,42 @@ module MB
24
277
  :class_name => 'MB::Thread',
25
278
  :foreign_key => 'threadid'
26
279
 
27
- # has_one :asset,
28
- # :class_name => 'Tag::Asset',
29
- # :foreign_key => 'classpk'
280
+ has_one :flag,
281
+ :class_name => 'MB::MessageFlag',
282
+ :foreign_key => 'messageid'
30
283
 
31
284
 
32
- # parent message
285
+ has_one :asset,
286
+ :class_name => 'Tag::Asset',
287
+ :foreign_key => 'classpk'
288
+
289
+
290
+ # Parent message
33
291
  def parent
34
- self.parentmessageid != 0 ? MB::Message.find(self.parentmessageid) : nil
292
+ self.is_root? ? nil : MB::Message.find(self.parentmessageid)
293
+ end
294
+ def parent=(msg)
295
+ raise 'Parent must be MB::Message' unless msg.is_a?(MB::Message)
296
+ self.parentmessageid = msg.id
297
+ end
298
+
299
+ # First in thread?
300
+ def is_root?
301
+ self.parentmessageid == 0
302
+ end
303
+
304
+ # Finds the first in the thread recursively.
305
+ #
306
+ # Since initialize() uses this method to find the root message before the thread is known,
307
+ # MB::Thread methods cannot be used. Otherwise, self.thread.rootmessage would be faster.
308
+ # Using while (or until) loops may lead to never-ending loops if the database contains awkward data
309
+ # (actual root message pointing to another message etc)
310
+ def find_thread_root
311
+ msg = self
312
+ until (msg.is_root?) do
313
+ msg = msg.parent
314
+ end
315
+ return msg
35
316
  end
36
317
 
37
318
  def has_attachements?
@@ -42,5 +323,11 @@ module MB
42
323
  self.anonymous
43
324
  end
44
325
 
326
+ # ResourceCode associated to this instance (and scope)
327
+ def resource_code(scope=4)
328
+ ResourceCode.find(:first,
329
+ :conditions => "companyid=#{self.companyid} AND name='#{self.liferay_class}' AND scope=#{scope}")
330
+ end
331
+
45
332
  end
46
333
  end
@@ -0,0 +1,19 @@
1
+ module MB
2
+ class MessageFlag < ActiveRecord::Base
3
+ set_table_name :mbmessageflag
4
+ set_primary_key :messageflagid
5
+
6
+ # com.liferay.portlet.messageboards.model.MBMessageFlag
7
+ def liferay_class
8
+ 'com.liferay.portlet.messageboards.model.MBMessageFlag'
9
+ end
10
+
11
+ belongs_to :user,
12
+ :foreign_key => 'userid'
13
+
14
+ belongs_to :message,
15
+ :class_name => 'MB::Message',
16
+ :foreign_key => 'messageid'
17
+
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ module MB
2
+ class StatsUser < ActiveRecord::Base
3
+ set_table_name :mbstatsuser
4
+ set_primary_key :statsuserid
5
+
6
+ # com.liferay.portlet.messageboards.model.MBStatsUser
7
+ def liferay_class
8
+ 'com.liferay.portlet.messageboards.model.MBStatsUser'
9
+ end
10
+
11
+ belongs_to :user,
12
+ :foreign_key => 'userid'
13
+
14
+ belongs_to :group,
15
+ :foreign_key => 'groupid'
16
+
17
+ end
18
+ end
data/lib/mb/thread.rb CHANGED
@@ -9,15 +9,21 @@ module MB
9
9
  end
10
10
 
11
11
  belongs_to :category,
12
- :class_name => "MB::Category",
13
- :foreign_key => "categoryid"
12
+ :class_name => 'MB::Category',
13
+ :foreign_key => 'categoryid'
14
+
15
+ belongs_to :rootmessage,
16
+ :class_name => 'MB::Message',
17
+ :foreign_key => 'rootmessageid'
18
+
19
+ has_many :messages,
20
+ :class_name => 'MB::Message',
21
+ :foreign_key => 'threadid',
22
+ :order => :createdate
14
23
 
15
- belongs_to :root,
16
- :class_name => "MB::Message",
17
- :foreign_key => "rootmessageid"
18
24
 
19
25
  def first_entry
20
- self.root
26
+ self.rootmessage
21
27
  end
22
28
 
23
29
  end
@@ -0,0 +1,18 @@
1
+ class RatingsStats < ActiveRecord::Base
2
+ set_table_name :ratingsstats
3
+ set_primary_key :statsid
4
+
5
+ # com.liferay.portlet.ratings.model.RatingsStats
6
+ def liferay_class
7
+ 'com.liferay.portlet.ratings.model.RatingsStats'
8
+ end
9
+
10
+ def initialize(params)
11
+ super(params)
12
+ self.totalentries ||= 0
13
+ self.totalscore ||= 0
14
+ self.averagescore ||= 0
15
+ self.save
16
+ end
17
+
18
+ end
@@ -0,0 +1,29 @@
1
+ class SocialActivity < ActiveRecord::Base
2
+ set_table_name :socialactivity
3
+ set_primary_key :activityid
4
+
5
+ # com.liferay.portlet.social.model.SocialActivity
6
+ def liferay_class
7
+ 'com.liferay.portlet.social.model.SocialActivity'
8
+ end
9
+
10
+ belongs_to :group,
11
+ :foreign_key => 'groupid'
12
+
13
+ belongs_to :company,
14
+ :foreign_key => 'companyid'
15
+
16
+ belongs_to :user,
17
+ :foreign_key => 'userid'
18
+
19
+ def initialize(params)
20
+ super(params)
21
+ self.createdate ||= Time.now
22
+ self.mirroractivityid ||= 0
23
+ self.type_ ||= 1
24
+ self.extradata ||= ''
25
+ self.receiveruserid ||= 0
26
+ self.save
27
+ end
28
+
29
+ end
@@ -0,0 +1,19 @@
1
+ class SocialRelation < ActiveRecord::Base
2
+ set_table_name :socialrelation
3
+ set_primary_key :relationid
4
+
5
+ # com.liferay.portlet.social.model.SocialRelation
6
+ def liferay_class
7
+ 'com.liferay.portlet.social.model.SocialRelation'
8
+ end
9
+
10
+ belongs_to :company,
11
+ :foreign_key => 'companyid'
12
+
13
+ belongs_to :user1,
14
+ :foreign_key => 'userid1'
15
+
16
+ belongs_to :user2,
17
+ :foreign_key => 'userid2'
18
+
19
+ end
data/lib/tag/asset.rb CHANGED
@@ -9,6 +9,30 @@ module Tag
9
9
  'com.liferay.portlet.tags.model.TagsAsset'
10
10
  end
11
11
 
12
+ # COPY tagsasset (assetid, groupid, companyid, userid, username, createdate, modifieddate, classnameid, classpk, startdate, enddate, publishdate, expirationdate, mimetype, title, description, summary, url, height, width, priority, viewcount) FROM stdin;
13
+ # +10311 10166 10109 10129 Test Test 2009-01-17 08:07:12.039 2009-01-17 08:07:12.039 10071 10308 \N \N \N \N text/html New thread 0 0 0 0
14
+
15
+
16
+ def initialize(params)
17
+ super(params)
18
+ self.createdate ||= Time.now
19
+ self.modifieddate ||= Time.now
20
+ self.startdate ||= nil
21
+ self.enddate ||= nil
22
+ self.publishdate ||= nil
23
+ self.expirationdate ||= nil
24
+ self.mimetype ||= 'text/html'
25
+ self.title ||= ''
26
+ self.description ||= ''
27
+ self.summary ||= ''
28
+ self.url ||= ''
29
+ self.height ||= 0
30
+ self.width ||= 0
31
+ self.priority ||= 0
32
+ self.viewcount ||= 0
33
+ self.save
34
+ end
35
+
12
36
  belongs_to :company,
13
37
  :foreign_key => 'companyid'
14
38
 
@@ -33,7 +57,7 @@ module Tag
33
57
  [
34
58
  BlogPost,
35
59
  Wiki::Page,
36
- # MB::Message,
60
+ MB::Message,
37
61
  Journal::Article,
38
62
  DlFile,
39
63
  IG::Image,
data/lib/user.rb CHANGED
@@ -274,7 +274,7 @@ class User < ActiveRecord::Base
274
274
  alias :articles :wikipages
275
275
 
276
276
  # association to MessageBoardMessages
277
- has_many :messages,
277
+ has_many :mbmessages,
278
278
  :class_name => 'MB::Message',
279
279
  :foreign_key => 'userid'
280
280
 
@@ -304,10 +304,12 @@ class User < ActiveRecord::Base
304
304
  org = self.company.organizations.select{|o| o.parent==nil}.first
305
305
  self.organizations << org
306
306
 
307
+ # give the user the 'Organization member' role, within the scope of this Organization.
307
308
  org_role = Role.find(:first, :conditions => "companyid=#{self.companyid} AND name='Organization Member'")
308
309
  group = org.group
309
310
 
310
311
  # can ActiveRecord handle 3-way associations?
312
+ # - perhaps with hacking, http://bjhess.com/blog/2007/09/19/my-foray-into-has_many_polymorphs/
311
313
  ActiveRecord::Base.connection.execute(
312
314
  "INSERT INTO usergrouprole (userid, groupid, roleid) VALUES (%i, %i, %i);" % [
313
315
  self.id, org.group.id, org_role.id])
@@ -369,7 +371,7 @@ class User < ActiveRecord::Base
369
371
 
370
372
  # Creates a new Contact unless it exists
371
373
  #
372
- # 1=female, 2=male
374
+ # 1=female, 2=male (WHERE IS CONSISTENCY?!)
373
375
  def sex=(v)
374
376
  male = (v==2 ? true : false)
375
377
  if self.contact
@@ -1,8 +1,36 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class DlFileTest < ActiveSupport::TestCase
4
- # Replace this with your real tests.
5
- def test_truth
6
- assert true
4
+
5
+ def setup
6
+ @files = DLFile.all
7
+ end
8
+
9
+ def test_company
10
+ @files.each do |dlf|
11
+ assert_not_nil dlf.company
12
+ end
13
+ end
14
+
15
+ def test_user
16
+ @files.each do |dlf|
17
+ assert_not_nil dlf.user
18
+ end
19
+ end
20
+
21
+ def test_asset
22
+ @files.each do |dlf|
23
+ assert_not_nil dlf.asset
24
+ end
7
25
  end
26
+
27
+ def test_path
28
+ @files.each do |dlf|
29
+ assert_not_nil dlf.path
30
+ end
31
+ end
32
+
33
+
34
+
35
+
8
36
  end
@@ -5,13 +5,161 @@ class MB::MessageTest < ActiveSupport::TestCase
5
5
  :mbcategory,
6
6
  :mbdiscussion,
7
7
  :mbmessage,
8
- :mbthread
8
+ :mbthread,
9
+ :mbstatsuser,
10
+ :mbmessageflag,
11
+ :classname_,
12
+ :group_,
13
+ :user_
9
14
  ]
10
15
 
11
16
  def setup
12
17
  @messages = MB::Message.all
13
18
  end
14
19
 
20
+ def test_new_rootmsg
21
+ user = User.first
22
+ category = MB::Category.first
23
+ subject = random_string
24
+ body = random_string
25
+
26
+ msg = MB::Message.create(:category => category, :user => user, :subject => subject, :body => body)
27
+
28
+ assert_equal subject, msg.subject
29
+ assert_equal body, msg.body
30
+
31
+ assert_not_nil msg.flag
32
+ assert_equal 1, msg.flag.flag
33
+
34
+ category.reload
35
+ assert_equal category, msg.category
36
+ assert_in_delta Time.now, category.lastpostdate.getlocal, 1.0
37
+
38
+
39
+ thread = MB::Thread.find(:first,
40
+ :conditions => "categoryid=#{category.id} AND rootmessageid=#{msg.id}")
41
+ assert_not_nil thread
42
+ assert_equal thread, msg.thread
43
+ assert_equal 1, thread.messagecount
44
+ assert_equal user.id, thread.lastpostbyuserid
45
+ assert_in_delta Time.now, thread.lastpostdate.getlocal, 1.0
46
+
47
+
48
+ stats = MB::StatsUser.find(:first, :conditions => "groupid=#{category.group.id} AND userid=#{user.id}")
49
+ assert_not_nil stats
50
+ assert_equal 1, stats.messagecount
51
+ assert_in_delta Time.now, stats.lastpostdate.getlocal, 1.0
52
+
53
+
54
+ classnameid = Classname.find_by_value(msg.liferay_class).id
55
+ assert_not_nil RatingsStats.find(:first, :conditions => "classnameid=#{classnameid} AND classpk=#{msg.id}")
56
+
57
+ assert_not_nil SocialActivity.find(:first,
58
+ :conditions => "userid=#{user.id} AND classnameid=#{classnameid} AND classpk=#{msg.id}")
59
+
60
+ assert_not_nil Tag::Asset.find(:first,
61
+ :conditions => "userid=#{user.id} AND classnameid=#{classnameid} AND classpk=#{msg.id}")
62
+
63
+ rc = msg.resource_code(1)
64
+ assert_not_nil rc
65
+ assert_not_nil Resource.find(:first,
66
+ :conditions => "codeid=#{rc.id} AND primkey='#{msg.companyid}'")
67
+
68
+ rc = msg.resource_code(2)
69
+ assert_not_nil rc
70
+ assert_not_nil Resource.find(:first,
71
+ :conditions => "codeid=#{rc.id} AND primkey='#{category.group.id}'")
72
+
73
+ rc = msg.resource_code(4)
74
+ assert_not_nil rc
75
+ resource = Resource.find(:first,
76
+ :conditions => "codeid=#{rc.id} AND primkey='#{msg.id}'")
77
+ assert_not_nil resource
78
+
79
+ msg.class.actions.each do |actionid|
80
+ p = Permission.find(:first,
81
+ :conditions => "companyid=#{msg.companyid} AND actionid='#{actionid}' AND resourceid=#{resource.id}")
82
+ assert_not_nil p
83
+ assert user.user_permissions.include?(p)
84
+ end
85
+ end
86
+
87
+ def test_new_reply
88
+ parent = MB::Message.first
89
+ category = parent.category
90
+ assert_not_nil category
91
+
92
+ user = User.first
93
+ subject = random_string
94
+ body = random_string
95
+
96
+ thread = parent.thread
97
+ assert_not_nil thread
98
+ thread_messagecount = thread.messagecount
99
+
100
+ stats = MB::StatsUser.find(:first, :conditions => "groupid=#{category.groupid} AND userid=#{user.id}")
101
+ stats_messagecount = (stats.nil? ? 0 : stats.messagecount)
102
+
103
+ msg = MB::Message.create(
104
+ :parent => parent,
105
+ :user => user,
106
+ :subject => subject,
107
+ :body => body
108
+ )
109
+
110
+ assert_equal subject, msg.subject
111
+ assert_equal body, msg.body
112
+ assert_equal parent, msg.parent
113
+
114
+ assert_not_nil msg.flag
115
+ assert_equal 1, msg.flag.flag
116
+
117
+
118
+ category.reload
119
+ assert_equal category, msg.category
120
+ assert_in_delta Time.now, category.lastpostdate.getlocal, 1.0
121
+
122
+
123
+ thread.reload
124
+ assert_equal thread, msg.thread
125
+ assert_equal thread_messagecount+1, thread.messagecount
126
+ assert_equal user.id, thread.lastpostbyuserid
127
+ assert_in_delta Time.now, thread.lastpostdate.getlocal, 1.0
128
+
129
+
130
+ stats = MB::StatsUser.find(:first, :conditions => "groupid=#{category.groupid} AND userid=#{user.id}")
131
+ assert_not_nil stats
132
+ assert_equal stats_messagecount+1, stats.messagecount
133
+ assert_in_delta Time.now, stats.lastpostdate.getlocal, 1.0
134
+
135
+
136
+ # COPY ratingsstats (statsid, classnameid, classpk, totalentries, totalscore, averagescore) FROM stdin;
137
+ # +10316 10071 10314 0 0 0
138
+
139
+ classnameid = Classname.find_by_value(msg.liferay_class).id
140
+ assert_not_nil RatingsStats.find(:first, :conditions => "classnameid=#{classnameid} AND classpk=#{msg.id}")
141
+
142
+ assert_not_nil SocialActivity.find(:first,
143
+ :conditions => "userid=#{user.id} AND classnameid=#{classnameid} AND classpk=#{msg.id}")
144
+
145
+ assert_not_nil Tag::Asset.find(:first,
146
+ :conditions => "userid=#{user.id} AND classnameid=#{classnameid} AND classpk=#{msg.id}")
147
+
148
+ rc = msg.resource_code(4)
149
+ assert_not_nil rc
150
+ resource = Resource.find(:first,
151
+ :conditions => "codeid=#{rc.id} AND primkey='#{msg.id}'")
152
+ assert_not_nil resource
153
+
154
+ msg.class.actions.each do |actionid|
155
+ p = Permission.find(:first,
156
+ :conditions => "companyid=#{msg.companyid} AND actionid='#{actionid}' AND resourceid=#{resource.id}")
157
+ assert_not_nil p
158
+ assert user.user_permissions.include?(p)
159
+ end
160
+
161
+ end
162
+
15
163
  def test_company
16
164
  @messages.each do |x|
17
165
  assert_not_nil x.company, "#{x.id} belongs to no company"
@@ -51,4 +199,10 @@ class MB::MessageTest < ActiveSupport::TestCase
51
199
  end
52
200
  end
53
201
 
202
+ def test_asset
203
+ @messages.each do |x|
204
+ assert_nothing_raised { x.asset }
205
+ end
206
+ end
207
+
54
208
  end
data/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # bogus module that only defines the VERSION.
2
2
  module Lportal
3
- VERSION='1.0.8'
3
+ VERSION='1.0.9'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lportal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikael Lammentausta
@@ -9,7 +9,7 @@ autorequire: init
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-25 00:00:00 +02:00
12
+ date: 2009-02-12 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -45,7 +45,9 @@ files:
45
45
  - version.rb
46
46
  - init.rb
47
47
  - lportal.rb
48
+ - lib/social_activity.rb
48
49
  - lib/counter.rb
50
+ - lib/social_relation.rb
49
51
  - lib/image.rb
50
52
  - lib/dl_folder.rb
51
53
  - lib/blog_post.rb
@@ -56,6 +58,7 @@ files:
56
58
  - lib/journal/article.rb
57
59
  - lib/journal/feed.rb
58
60
  - lib/journal/article_image.rb
61
+ - lib/ratings_stats.rb
59
62
  - lib/user.rb
60
63
  - lib/organization.rb
61
64
  - lib/wiki
@@ -85,7 +88,9 @@ files:
85
88
  - lib/mb
86
89
  - lib/mb/thread.rb
87
90
  - lib/mb/message.rb
91
+ - lib/mb/message_flag.rb
88
92
  - lib/mb/category.rb
93
+ - lib/mb/stats_user.rb
89
94
  - lib/mb/discussion.rb
90
95
  - lib/web
91
96
  - lib/web/layout.rb