sakai-info 0.4.2 → 0.4.3
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/CHANGELOG.md +10 -0
- data/README.md +2 -2
- data/ROADMAP.md +6 -7
- data/lib/sakai-info.rb +12 -1
- data/lib/sakai-info/announcement.rb +100 -69
- data/lib/sakai-info/assignment.rb +16 -4
- data/lib/sakai-info/authz.rb +16 -4
- data/lib/sakai-info/cli.rb +3 -1
- data/lib/sakai-info/cli/help.rb +26 -2
- data/lib/sakai-info/content.rb +16 -4
- data/lib/sakai-info/forum.rb +18 -6
- data/lib/sakai-info/gradebook.rb +13 -5
- data/lib/sakai-info/group.rb +6 -2
- data/lib/sakai-info/message.rb +7 -4
- data/lib/sakai-info/page.rb +6 -2
- data/lib/sakai-info/question_pool.rb +6 -2
- data/lib/sakai-info/quiz.rb +67 -16
- data/lib/sakai-info/sakai_object.rb +6 -1
- data/lib/sakai-info/site.rb +7 -3
- data/lib/sakai-info/tool.rb +6 -2
- data/lib/sakai-info/user.rb +10 -6
- data/lib/sakai-info/version.rb +1 -1
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# sakai-info Change History #
|
2
2
|
|
3
|
+
### 0.4.3 ###
|
4
|
+
|
5
|
+
*Released 2012-05-10*
|
6
|
+
|
7
|
+
* Tweaked site summary serialization to display creator EID
|
8
|
+
* Added attempted_at field to quiz attempt item serializations
|
9
|
+
* Added CLI support for announcement and announcement-channel
|
10
|
+
* Added clear_cache class method to all objects using caches
|
11
|
+
* Added Cache.clear_all class and method to SakaiInfo module
|
12
|
+
|
3
13
|
### 0.4.2 ###
|
4
14
|
|
5
15
|
*Released 2012-05-04*
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# sakai-info #
|
2
2
|
|
3
|
-
last updated: 2012-05-
|
3
|
+
last updated: 2012-05-10
|
4
4
|
author: David Adams (daveadams@gmail.com)
|
5
5
|
github url: https://github.com/daveadams/sakai-info
|
6
6
|
|
@@ -24,7 +24,7 @@ Use `rake` to test and build the gem:
|
|
24
24
|
$ rake gem:build
|
25
25
|
|
26
26
|
The resulting gem will be saved to the working directory as
|
27
|
-
`sakai-info-0.4.
|
27
|
+
`sakai-info-0.4.3.gem`.
|
28
28
|
|
29
29
|
Cleanup built gems using:
|
30
30
|
|
data/ROADMAP.md
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
# sakai-info Roadmap #
|
2
2
|
|
3
|
-
*Last updated 2012-05-
|
4
|
-
|
5
|
-
### 0.4.3 ###
|
6
|
-
|
7
|
-
* CLI access to announcements
|
3
|
+
*Last updated 2012-05-10*
|
8
4
|
|
9
5
|
### 0.4.4 ###
|
10
6
|
|
@@ -25,11 +21,11 @@
|
|
25
21
|
|
26
22
|
### 0.7.0 ###
|
27
23
|
|
28
|
-
*
|
24
|
+
* OSP support
|
29
25
|
|
30
26
|
------
|
31
27
|
|
32
|
-
|
28
|
+
Ideas for future releases:
|
33
29
|
|
34
30
|
* More complete object relationship support for full drilldown capability
|
35
31
|
* Gradebook/assignment/quiz interaction
|
@@ -37,6 +33,7 @@ Other things on the wishlist for future releases:
|
|
37
33
|
* Assignment submissions per-assignment and per-student
|
38
34
|
* Support for more Sakai objects
|
39
35
|
* OSP
|
36
|
+
* Evaluations
|
40
37
|
* Forum topics and posts
|
41
38
|
* Private messages
|
42
39
|
* Events
|
@@ -52,4 +49,6 @@ Other things on the wishlist for future releases:
|
|
52
49
|
* httpd log analysis helper
|
53
50
|
* RPC client for Sakai-monitoring servlet
|
54
51
|
* schema analysis and generators
|
52
|
+
* web UI
|
53
|
+
* CLI shell
|
55
54
|
|
data/lib/sakai-info.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# Base library file
|
3
3
|
#
|
4
4
|
# Created 2012-02-15 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -69,6 +69,17 @@ module SakaiInfo
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
72
|
+
|
73
|
+
# cache control
|
74
|
+
class Cache
|
75
|
+
def self.clear_all
|
76
|
+
SakaiObject.descendants.select { |klass|
|
77
|
+
klass.methods.include? :clear_cache
|
78
|
+
}.each { |klass|
|
79
|
+
klass.clear_cache
|
80
|
+
}
|
81
|
+
end
|
82
|
+
end
|
72
83
|
end
|
73
84
|
|
74
85
|
######################################################################
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Announcement library
|
3
3
|
#
|
4
4
|
# Created 2012-02-16 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -10,24 +10,29 @@
|
|
10
10
|
#
|
11
11
|
|
12
12
|
module SakaiInfo
|
13
|
-
class AnnouncementChannel <
|
14
|
-
attr_reader :
|
13
|
+
class AnnouncementChannel < SakaiObject
|
14
|
+
attr_reader :dbrow
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
def self.clear_cache
|
17
|
+
@@cache = {}
|
18
|
+
@@site_cache = {}
|
19
|
+
end
|
20
|
+
clear_cache
|
21
|
+
|
22
|
+
def initialize(dbrow)
|
23
|
+
@dbrow = dbrow
|
24
|
+
@id = dbrow[:channel_id]
|
25
|
+
end
|
18
26
|
|
19
27
|
def self.find(id)
|
20
28
|
if @@cache[id].nil?
|
21
29
|
xml = ""
|
22
|
-
row = DB.connect[:announcement_channel].
|
30
|
+
row = DB.connect[:announcement_channel].where(:channel_id => id).first
|
23
31
|
if row.nil?
|
24
32
|
raise ObjectNotFoundException.new(AnnouncementChannel, id)
|
25
33
|
end
|
26
|
-
|
27
|
-
|
28
|
-
channel = AnnouncementChannel.new(id, nextid, xml)
|
29
|
-
@@cache[id] = channel
|
30
|
-
@@site_cache[channel.site_id] = channel
|
34
|
+
@@cache[id] = AnnouncementChannel.new(row)
|
35
|
+
@@site_cache[@@cache[id].site_id] = @@cache[id]
|
31
36
|
end
|
32
37
|
@@cache[id]
|
33
38
|
end
|
@@ -41,32 +46,31 @@ module SakaiInfo
|
|
41
46
|
end
|
42
47
|
end
|
43
48
|
|
44
|
-
#
|
45
|
-
def initialize(id, nextid, xml)
|
46
|
-
@id = id
|
47
|
-
@next = nextid
|
48
|
-
@xml = xml
|
49
|
-
parse_xml
|
50
|
-
end
|
51
|
-
|
52
|
-
# properties
|
49
|
+
# lazy properties
|
53
50
|
def announcements
|
54
51
|
@announcements ||= Announcement.find_by_channel_id(@id)
|
55
52
|
end
|
56
53
|
|
57
54
|
def announcement_count
|
58
|
-
@announcement_count ||=
|
55
|
+
@announcement_count ||= Announcement.count_by_channel_id(@id)
|
59
56
|
end
|
60
57
|
|
61
58
|
def site_id
|
62
59
|
@site_id ||= @id.split("/")[3]
|
63
60
|
end
|
64
61
|
|
62
|
+
def xml
|
63
|
+
if @xml.nil?
|
64
|
+
@xml = ""
|
65
|
+
REXML::Document.new(@dbrow[:xml].read).write(@xml, 2)
|
66
|
+
end
|
67
|
+
@xml
|
68
|
+
end
|
69
|
+
|
65
70
|
# serialization
|
66
71
|
def default_serialization
|
67
72
|
{
|
68
73
|
"id" => self.id,
|
69
|
-
"next" => self.next,
|
70
74
|
"site_id" => self.site_id,
|
71
75
|
"announcement_count" => self.announcement_count
|
72
76
|
}
|
@@ -75,72 +79,86 @@ module SakaiInfo
|
|
75
79
|
def summary_serialization
|
76
80
|
{
|
77
81
|
"id" => self.id,
|
78
|
-
"site_id" => self.site_id,
|
79
82
|
"announcement_count" => self.announcement_count
|
80
83
|
}
|
81
84
|
end
|
85
|
+
|
86
|
+
def xml_serialization
|
87
|
+
{
|
88
|
+
"xml" => self.xml
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
92
|
+
def announcements_serialization
|
93
|
+
{
|
94
|
+
"announcements" => self.announcements.collect { |ann| ann.serialize(:summary) }
|
95
|
+
}
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.all_serializations
|
99
|
+
[
|
100
|
+
:default,
|
101
|
+
:xml,
|
102
|
+
:announcements,
|
103
|
+
]
|
104
|
+
end
|
82
105
|
end
|
83
106
|
|
84
|
-
class Announcement <
|
85
|
-
attr_reader :
|
86
|
-
|
107
|
+
class Announcement < SakaiObject
|
108
|
+
attr_reader :channel_id, :owner, :date, :draft, :pubview, :dbrow
|
109
|
+
|
110
|
+
def self.clear_cache
|
111
|
+
@@cache = {}
|
112
|
+
end
|
113
|
+
clear_cache
|
114
|
+
|
115
|
+
def initialize(dbrow)
|
116
|
+
@dbrow = dbrow
|
117
|
+
|
118
|
+
@id = @dbrow[:message_id]
|
119
|
+
@channel_id = @dbrow[:channel_id]
|
120
|
+
@draft = @dbrow[:draft]
|
121
|
+
@pubview = @dbrow[:pubview]
|
122
|
+
@owner = User.find(@dbrow[:owner])
|
123
|
+
@date = @dbrow[:message_date]
|
124
|
+
end
|
87
125
|
|
88
|
-
@@cache = {}
|
89
126
|
def self.find(id)
|
90
127
|
if @@cache[id].nil?
|
91
|
-
|
92
|
-
row = DB.connect.fetch("select channel_id, draft, pubview, owner, xml, " +
|
93
|
-
"to_char(message_date,'YYYY-MM-DD HH24:MI:SS') as message_date " +
|
94
|
-
"from announcement_message " +
|
95
|
-
"where message_id = ?", id).first
|
128
|
+
row = DB.connect[:announcement_message].where(:message_id => id).first
|
96
129
|
if row.nil?
|
97
130
|
raise ObjectNotFoundException.new(Announcement, id)
|
98
131
|
end
|
99
|
-
|
100
|
-
channel = AnnouncementChannel.find(row[:channel_id])
|
101
|
-
draft = row[:draft]
|
102
|
-
pubview = row[:pubview]
|
103
|
-
owner = User.find(row[:owner])
|
104
|
-
date = row[:message_date]
|
105
|
-
REXML::Document.new(row[:xml].read).write(xml, 2)
|
106
|
-
@@cache[id] = Announcement.new(id, channel, draft, pubview, owner, date, xml)
|
132
|
+
@@cache[id] = Announcement.new(row)
|
107
133
|
end
|
108
134
|
@@cache[id]
|
109
135
|
end
|
110
136
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
@owner = owner
|
118
|
-
@date = date
|
119
|
-
@xml = xml
|
120
|
-
parse_xml
|
137
|
+
def self.query_by_channel_id(channel_id)
|
138
|
+
DB.connect[:announcement_message].where(:channel_id => channel_id)
|
139
|
+
end
|
140
|
+
|
141
|
+
def self.count_by_channel_id(channel_id)
|
142
|
+
Announcement.query_by_channel_id(channel_id).count
|
121
143
|
end
|
122
144
|
|
123
|
-
# helpers
|
124
145
|
def self.find_by_channel_id(channel_id)
|
125
|
-
|
126
|
-
|
146
|
+
Announcement.query_by_channel_id(channel_id).all.collect do |row|
|
147
|
+
@@cache[row[:message_id]] = Announcement.new(row)
|
148
|
+
end
|
149
|
+
end
|
127
150
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
REXML::Document.new(row[:xml].read).write(xml, 2)
|
138
|
-
date = row[:message_date]
|
139
|
-
|
140
|
-
@@cache[id] = Announcement.new(id, channel, draft, pubview, owner, date, xml)
|
141
|
-
announcements << @@cache[id]
|
151
|
+
# lazy properties
|
152
|
+
def channel
|
153
|
+
@channel ||= AnnouncementChannel.find(self.channel_id)
|
154
|
+
end
|
155
|
+
|
156
|
+
def xml
|
157
|
+
if @xml.nil?
|
158
|
+
@xml = ""
|
159
|
+
REXML::Document.new(@dbrow[:xml].read).write(@xml, 2)
|
142
160
|
end
|
143
|
-
|
161
|
+
@xml
|
144
162
|
end
|
145
163
|
|
146
164
|
# serialization
|
@@ -151,7 +169,7 @@ module SakaiInfo
|
|
151
169
|
"owner" => self.owner.serialize(:summary),
|
152
170
|
"draft" => self.draft,
|
153
171
|
"pubview" => self.pubview,
|
154
|
-
"channel" => self.
|
172
|
+
"channel" => self.channel_id,
|
155
173
|
}
|
156
174
|
end
|
157
175
|
|
@@ -161,6 +179,19 @@ module SakaiInfo
|
|
161
179
|
"date" => self.date
|
162
180
|
}
|
163
181
|
end
|
182
|
+
|
183
|
+
def xml_serialization
|
184
|
+
{
|
185
|
+
"xml" => self.xml
|
186
|
+
}
|
187
|
+
end
|
188
|
+
|
189
|
+
def self.all_serializations
|
190
|
+
[
|
191
|
+
:default,
|
192
|
+
:xml,
|
193
|
+
]
|
194
|
+
end
|
164
195
|
end
|
165
196
|
end
|
166
197
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Assignment library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-05-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -13,7 +13,11 @@ module SakaiInfo
|
|
13
13
|
class Assignment < SakaiXMLEntity
|
14
14
|
attr_reader :dbrow, :site_id
|
15
15
|
|
16
|
-
|
16
|
+
def self.clear_cache
|
17
|
+
@@cache = {}
|
18
|
+
end
|
19
|
+
clear_cache
|
20
|
+
|
17
21
|
def self.find(id)
|
18
22
|
if @@cache[id].nil?
|
19
23
|
xml = ""
|
@@ -95,6 +99,11 @@ module SakaiInfo
|
|
95
99
|
class AssignmentSubmission < SakaiXMLEntity
|
96
100
|
attr_reader :dbrow, :assignment_id, :submitter_id
|
97
101
|
|
102
|
+
def self.clear_cache
|
103
|
+
@@cache = {}
|
104
|
+
end
|
105
|
+
clear_cache
|
106
|
+
|
98
107
|
def initialize(dbrow)
|
99
108
|
@dbrow = dbrow
|
100
109
|
|
@@ -107,7 +116,6 @@ module SakaiInfo
|
|
107
116
|
parse_xml
|
108
117
|
end
|
109
118
|
|
110
|
-
@@cache = {}
|
111
119
|
def self.find(id)
|
112
120
|
if @@cache[id].nil?
|
113
121
|
row = DB.connect[:assignment_submission].where(:submission_id => id).first
|
@@ -204,6 +212,11 @@ module SakaiInfo
|
|
204
212
|
class AssignmentContent < SakaiXMLEntity
|
205
213
|
attr_reader :owner
|
206
214
|
|
215
|
+
def self.clear_cache
|
216
|
+
@@cache = {}
|
217
|
+
end
|
218
|
+
clear_cache
|
219
|
+
|
207
220
|
def initialize(id, owner, xml)
|
208
221
|
@id = id
|
209
222
|
@owner = owner
|
@@ -211,7 +224,6 @@ module SakaiInfo
|
|
211
224
|
parse_xml
|
212
225
|
end
|
213
226
|
|
214
|
-
@@cache = {}
|
215
227
|
def self.find(id)
|
216
228
|
if @@cache[id].nil?
|
217
229
|
row = DB.connect[:assignment_content].where(:content_id => id).first
|
data/lib/sakai-info/authz.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Authz library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -13,6 +13,11 @@ module SakaiInfo
|
|
13
13
|
class AuthzRole < SakaiObject
|
14
14
|
attr_reader :name
|
15
15
|
|
16
|
+
def self.clear_cache
|
17
|
+
@@cache = {}
|
18
|
+
end
|
19
|
+
clear_cache
|
20
|
+
|
16
21
|
def initialize(id, name)
|
17
22
|
@id = id
|
18
23
|
@name = name
|
@@ -22,7 +27,6 @@ module SakaiInfo
|
|
22
27
|
name
|
23
28
|
end
|
24
29
|
|
25
|
-
@@cache = {}
|
26
30
|
def self.find_by_id(id)
|
27
31
|
id = id.to_s
|
28
32
|
if @@cache[id].nil?
|
@@ -87,6 +91,11 @@ module SakaiInfo
|
|
87
91
|
class AuthzFunction < SakaiObject
|
88
92
|
attr_reader :name
|
89
93
|
|
94
|
+
def self.clear_cache
|
95
|
+
@@cache = {}
|
96
|
+
end
|
97
|
+
clear_cache
|
98
|
+
|
90
99
|
def initialize(id, name)
|
91
100
|
@id = id
|
92
101
|
@name = name
|
@@ -96,7 +105,6 @@ module SakaiInfo
|
|
96
105
|
name
|
97
106
|
end
|
98
107
|
|
99
|
-
@@cache = {}
|
100
108
|
def self.find_by_id(id)
|
101
109
|
id = id.to_s
|
102
110
|
if @@cache[id].nil?
|
@@ -164,6 +172,11 @@ module SakaiInfo
|
|
164
172
|
class AuthzRealm < SakaiObject
|
165
173
|
attr_reader :name, :providers, :maintain_role
|
166
174
|
|
175
|
+
def self.clear_cache
|
176
|
+
@@cache = {}
|
177
|
+
end
|
178
|
+
clear_cache
|
179
|
+
|
167
180
|
def initialize(id, name, providers, maintain_role)
|
168
181
|
@id = id
|
169
182
|
@name = name
|
@@ -191,7 +204,6 @@ module SakaiInfo
|
|
191
204
|
@membership ||= AuthzRealmMembership.find_by_realm_id(@id)
|
192
205
|
end
|
193
206
|
|
194
|
-
@@cache = {}
|
195
207
|
def self.find_by_id(id)
|
196
208
|
id = id.to_s
|
197
209
|
if @@cache[id].nil?
|
data/lib/sakai-info/cli.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# - sakai-info command line tool support
|
3
3
|
#
|
4
4
|
# Created 2012-02-19 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -36,6 +36,8 @@ module SakaiInfo
|
|
36
36
|
"forum-thread" => ForumThread,
|
37
37
|
"forum-post" => ForumPost,
|
38
38
|
"content" => Content,
|
39
|
+
"announcement" => Announcement,
|
40
|
+
"announcement-channel" => AnnouncementChannel,
|
39
41
|
}
|
40
42
|
end
|
41
43
|
end
|
data/lib/sakai-info/cli/help.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# - sin command line help
|
3
3
|
#
|
4
4
|
# Created 2012-02-19 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -20,7 +20,8 @@ sin #{VERSION}
|
|
20
20
|
Object commands:
|
21
21
|
user, group, site, page, tool, quiz, quiz-section, quiz-item, quiz-attempt,
|
22
22
|
quiz-attempt-item, quiz-attempt-item-attachment, question-pool, assignment,
|
23
|
-
assignment-submission, forum, forum-thread, forum-post, content
|
23
|
+
assignment-submission, forum, forum-thread, forum-post, content,
|
24
|
+
announcement, announcement-channel
|
24
25
|
|
25
26
|
Misc commands:
|
26
27
|
test Tests configured database connections
|
@@ -327,6 +328,29 @@ sin content
|
|
327
328
|
--children Recursively print collection children
|
328
329
|
--mod Print creation/modification info
|
329
330
|
--all Print all possible details
|
331
|
+
EOF
|
332
|
+
"announcement" => <<EOF,
|
333
|
+
sin announcement
|
334
|
+
|
335
|
+
Usage: sin announcement <id> [<options>]
|
336
|
+
|
337
|
+
Prints information about the announcement specified. Additional options may
|
338
|
+
be passed to include additional information:
|
339
|
+
|
340
|
+
--xml Print raw XML content
|
341
|
+
--all Print all possible details
|
342
|
+
EOF
|
343
|
+
"announcement-channel" => <<EOF,
|
344
|
+
sin content
|
345
|
+
|
346
|
+
Usage: sin announcement-channel <id> [<options>]
|
347
|
+
|
348
|
+
Prints information about the announcement channel specified. Additional
|
349
|
+
options may be passed to include additional information:
|
350
|
+
|
351
|
+
--announcements Print a summary of all announcements in this channel
|
352
|
+
--xml Print raw XML content
|
353
|
+
--all Print all possible details
|
330
354
|
EOF
|
331
355
|
}
|
332
356
|
|
data/lib/sakai-info/content.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Content library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -145,6 +145,11 @@ module SakaiInfo
|
|
145
145
|
class ContentResource < Content
|
146
146
|
attr_reader :file_path, :uuid, :context, :resource_type_id, :dbrow
|
147
147
|
|
148
|
+
def self.clear_cache
|
149
|
+
@@cache = {}
|
150
|
+
end
|
151
|
+
clear_cache
|
152
|
+
|
148
153
|
def initialize(dbrow)
|
149
154
|
@dbrow = dbrow
|
150
155
|
|
@@ -160,7 +165,6 @@ module SakaiInfo
|
|
160
165
|
@id_column = "resource_id"
|
161
166
|
end
|
162
167
|
|
163
|
-
@@cache = {}
|
164
168
|
def self.find(id)
|
165
169
|
if @@cache[id].nil?
|
166
170
|
row = DB.connect[:content_resource].where(:resource_id => id).first
|
@@ -219,6 +223,11 @@ module SakaiInfo
|
|
219
223
|
class ContentCollection < Content
|
220
224
|
attr_reader :dbrow
|
221
225
|
|
226
|
+
def self.clear_cache
|
227
|
+
@@cache = {}
|
228
|
+
end
|
229
|
+
clear_cache
|
230
|
+
|
222
231
|
def initialize(dbrow)
|
223
232
|
@dbrow = dbrow
|
224
233
|
|
@@ -229,7 +238,6 @@ module SakaiInfo
|
|
229
238
|
@id_column = "collection_id"
|
230
239
|
end
|
231
240
|
|
232
|
-
@@cache = {}
|
233
241
|
def self.find(id)
|
234
242
|
if id !~ /\/$/
|
235
243
|
id += "/"
|
@@ -348,7 +356,11 @@ module SakaiInfo
|
|
348
356
|
end
|
349
357
|
|
350
358
|
class MissingContentCollection < ContentCollection
|
351
|
-
|
359
|
+
def self.clear_cache
|
360
|
+
@@cache = {}
|
361
|
+
end
|
362
|
+
clear_cache
|
363
|
+
|
352
364
|
def self.find(id)
|
353
365
|
@@cache[id] ||= MissingContentCollection.new(id, nil)
|
354
366
|
end
|
data/lib/sakai-info/forum.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Forum library
|
3
3
|
#
|
4
4
|
# Created 2012-04-01 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
module SakaiInfo
|
13
13
|
class Forum < SakaiObject
|
14
|
-
attr_reader :
|
14
|
+
attr_reader :title, :dbrow
|
15
15
|
|
16
16
|
include ModProps
|
17
17
|
created_by_key :created_by
|
@@ -19,7 +19,11 @@ module SakaiInfo
|
|
19
19
|
modified_by_key :modified_by
|
20
20
|
modified_at_key :modified
|
21
21
|
|
22
|
-
|
22
|
+
def self.clear_cache
|
23
|
+
@@cache = {}
|
24
|
+
end
|
25
|
+
clear_cache
|
26
|
+
|
23
27
|
def self.find(id)
|
24
28
|
if @@cache[id.to_s].nil?
|
25
29
|
row = DB.connect[:mfr_open_forum_t].where(:id => id).first
|
@@ -118,7 +122,7 @@ module SakaiInfo
|
|
118
122
|
end
|
119
123
|
|
120
124
|
class ForumThread < GenericThread
|
121
|
-
attr_reader :
|
125
|
+
attr_reader :title, :dbrow
|
122
126
|
|
123
127
|
include ModProps
|
124
128
|
created_by_key :created_by
|
@@ -126,7 +130,11 @@ module SakaiInfo
|
|
126
130
|
modified_by_key :modified_by
|
127
131
|
modified_at_key :modified
|
128
132
|
|
129
|
-
|
133
|
+
def self.clear_cache
|
134
|
+
@@cache = {}
|
135
|
+
end
|
136
|
+
clear_cache
|
137
|
+
|
130
138
|
def self.find(id)
|
131
139
|
if @@cache[id.to_s].nil?
|
132
140
|
row = DB.connect[:mfr_topic_t].where(:id => id, :topic_dtype => "DT").first
|
@@ -204,7 +212,11 @@ module SakaiInfo
|
|
204
212
|
modified_by_key :modified_by
|
205
213
|
modified_at_key :modified
|
206
214
|
|
207
|
-
|
215
|
+
def self.clear_cache
|
216
|
+
@@cache = {}
|
217
|
+
end
|
218
|
+
clear_cache
|
219
|
+
|
208
220
|
def self.find(id)
|
209
221
|
if @@cache[id.to_s].nil?
|
210
222
|
row = DB.connect[:mfr_message_t].where(:id => id, :message_dtype => "ME").first
|
data/lib/sakai-info/gradebook.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Gradebook library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -13,6 +13,12 @@ module SakaiInfo
|
|
13
13
|
class Gradebook < SakaiObject
|
14
14
|
attr_reader :version, :site, :name
|
15
15
|
|
16
|
+
def self.clear_cache
|
17
|
+
@@cache = {}
|
18
|
+
@@cache_by_site_id = {}
|
19
|
+
end
|
20
|
+
clear_cache
|
21
|
+
|
16
22
|
def initialize(id, version, site, name)
|
17
23
|
@id = id
|
18
24
|
@version = version
|
@@ -20,8 +26,6 @@ module SakaiInfo
|
|
20
26
|
@name = name
|
21
27
|
end
|
22
28
|
|
23
|
-
@@cache = {}
|
24
|
-
@@cache_by_site_id = {}
|
25
29
|
def self.find(id)
|
26
30
|
if @@cache[id].nil?
|
27
31
|
row = DB.connect.fetch("select version, gradebook_uid, name " +
|
@@ -72,6 +76,12 @@ module SakaiInfo
|
|
72
76
|
attr_reader :id, :gradebook, :object_type, :version, :name
|
73
77
|
attr_reader :points_possible, :due_date, :weight
|
74
78
|
|
79
|
+
def self.clear_cache
|
80
|
+
@@cache = {}
|
81
|
+
@@cache_by_gradebook_id = {}
|
82
|
+
end
|
83
|
+
clear_cache
|
84
|
+
|
75
85
|
def initialize(id, gradebook, object_type, version, name,
|
76
86
|
points_possible, due_date, weight)
|
77
87
|
@id = id
|
@@ -84,7 +94,6 @@ module SakaiInfo
|
|
84
94
|
@weight = weight
|
85
95
|
end
|
86
96
|
|
87
|
-
@@cache = {}
|
88
97
|
def self.find(id)
|
89
98
|
if @@cache[id].nil?
|
90
99
|
row = DB.connect.fetch("select gradebook_id, object_type_id, version, " +
|
@@ -112,7 +121,6 @@ module SakaiInfo
|
|
112
121
|
@@cache[id]
|
113
122
|
end
|
114
123
|
|
115
|
-
@@cache_by_gradebook_id = {}
|
116
124
|
def self.find_by_gradebook_id(gradebook_id)
|
117
125
|
if @@cache_by_gradebook_id[gradebook_id].nil?
|
118
126
|
objects = []
|
data/lib/sakai-info/group.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Group library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -13,6 +13,11 @@ module SakaiInfo
|
|
13
13
|
class Group < SakaiObject
|
14
14
|
attr_reader :site_id, :title, :dbrow
|
15
15
|
|
16
|
+
def self.clear_cache
|
17
|
+
@@cache = {}
|
18
|
+
end
|
19
|
+
clear_cache
|
20
|
+
|
16
21
|
def initialize(dbrow)
|
17
22
|
@dbrow = dbrow
|
18
23
|
|
@@ -25,7 +30,6 @@ module SakaiInfo
|
|
25
30
|
@site ||= Site.find(@site_id)
|
26
31
|
end
|
27
32
|
|
28
|
-
@@cache = {}
|
29
33
|
def self.find(id)
|
30
34
|
if @@cache[id].nil?
|
31
35
|
row = DB.connect[:sakai_site_group].filter(:group_id => id).first
|
data/lib/sakai-info/message.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Message library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -63,13 +63,17 @@ module SakaiInfo
|
|
63
63
|
class Forum < SakaiObject
|
64
64
|
attr_reader :id, :title
|
65
65
|
|
66
|
+
def self.clear_cache
|
67
|
+
@@cache = {}
|
68
|
+
@@cache_by_site_id = {}
|
69
|
+
end
|
70
|
+
clear_cache
|
71
|
+
|
66
72
|
def initialize(id, title)
|
67
73
|
@id = id.to_i
|
68
74
|
@title = title
|
69
75
|
end
|
70
76
|
|
71
|
-
@@cache = {}
|
72
|
-
|
73
77
|
def self.count_by_site_id(site_id)
|
74
78
|
DB.connect.fetch("select count(*) as count from mfr_open_forum_t " +
|
75
79
|
"where surrogatekey = (select id from mfr_area_t " +
|
@@ -77,7 +81,6 @@ module SakaiInfo
|
|
77
81
|
MessageTypeUUID::FORUM_POST, site_id).first[:count].to_i
|
78
82
|
end
|
79
83
|
|
80
|
-
@@cache_by_site_id = {}
|
81
84
|
def self.find_by_site_id(site_id)
|
82
85
|
if @@cache_by_site_id[site_id].nil?
|
83
86
|
@@cache_by_site_id[site_id] = []
|
data/lib/sakai-info/page.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Page library
|
3
3
|
#
|
4
4
|
# Created 2012-03-08 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -13,7 +13,11 @@ module SakaiInfo
|
|
13
13
|
class Page < SakaiObject
|
14
14
|
attr_reader :title, :order, :layout, :site_id, :dbrow
|
15
15
|
|
16
|
-
|
16
|
+
def self.clear_cache
|
17
|
+
@@cache = {}
|
18
|
+
end
|
19
|
+
clear_cache
|
20
|
+
|
17
21
|
def self.find(id)
|
18
22
|
if @@cache[id].nil?
|
19
23
|
row = DB.connect[:sakai_site_page].where(:page_id => id).first
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::QuestionPool library
|
3
3
|
#
|
4
4
|
# Created 2012-02-26 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -19,6 +19,11 @@ module SakaiInfo
|
|
19
19
|
modified_at_key :lastmodifieddate
|
20
20
|
modified_by_key :lastmodifiedby
|
21
21
|
|
22
|
+
def self.clear_cache
|
23
|
+
@@cache = {}
|
24
|
+
end
|
25
|
+
clear_cache
|
26
|
+
|
22
27
|
def initialize(dbrow)
|
23
28
|
@dbrow = dbrow
|
24
29
|
|
@@ -30,7 +35,6 @@ module SakaiInfo
|
|
30
35
|
@parent_pool_id = nil if @parent_pool_id == 0
|
31
36
|
end
|
32
37
|
|
33
|
-
@@cache = {}
|
34
38
|
def self.find(id)
|
35
39
|
if @@cache[id].nil?
|
36
40
|
row = DB.connect[:sam_questionpool_t].filter(:questionpoolid => id).first
|
data/lib/sakai-info/quiz.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Quiz library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-05-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -19,6 +19,11 @@ module SakaiInfo
|
|
19
19
|
modified_by_key :lastmodifiedby
|
20
20
|
modified_at_key :lastmodifieddate
|
21
21
|
|
22
|
+
def self.clear_cache
|
23
|
+
@@cache = {}
|
24
|
+
end
|
25
|
+
clear_cache
|
26
|
+
|
22
27
|
# a note about quizzes:
|
23
28
|
# they do not link directly back to sites
|
24
29
|
# instead, they link back only via the sam_authzdata_t table
|
@@ -56,7 +61,6 @@ module SakaiInfo
|
|
56
61
|
end
|
57
62
|
end
|
58
63
|
|
59
|
-
@@cache = {}
|
60
64
|
def self.find(id)
|
61
65
|
id = id.to_s
|
62
66
|
if @@cache[id].nil?
|
@@ -171,7 +175,11 @@ module SakaiInfo
|
|
171
175
|
end
|
172
176
|
|
173
177
|
class PendingQuiz < Quiz
|
174
|
-
|
178
|
+
def self.clear_cache
|
179
|
+
@@cache = {}
|
180
|
+
end
|
181
|
+
clear_cache
|
182
|
+
|
175
183
|
def self.find(id)
|
176
184
|
id = id.to_s
|
177
185
|
if @@cache[id].nil?
|
@@ -212,7 +220,11 @@ module SakaiInfo
|
|
212
220
|
end
|
213
221
|
|
214
222
|
class PublishedQuiz < Quiz
|
215
|
-
|
223
|
+
def self.clear_cache
|
224
|
+
@@cache = {}
|
225
|
+
end
|
226
|
+
clear_cache
|
227
|
+
|
216
228
|
def self.find(id)
|
217
229
|
id = id.to_s
|
218
230
|
if @@cache[id].nil?
|
@@ -280,6 +292,11 @@ module SakaiInfo
|
|
280
292
|
modified_by_key :lastmodifiedby
|
281
293
|
modified_at_key :lastmodifieddate
|
282
294
|
|
295
|
+
def self.clear_cache
|
296
|
+
@@cache = {}
|
297
|
+
end
|
298
|
+
clear_cache
|
299
|
+
|
283
300
|
def initialize(dbrow)
|
284
301
|
@dbrow = dbrow
|
285
302
|
|
@@ -292,7 +309,6 @@ module SakaiInfo
|
|
292
309
|
@status = dbrow[:status]
|
293
310
|
end
|
294
311
|
|
295
|
-
@@cache = {}
|
296
312
|
def self.find(id)
|
297
313
|
id = id.to_s
|
298
314
|
if @@cache[id].nil?
|
@@ -387,7 +403,11 @@ module SakaiInfo
|
|
387
403
|
end
|
388
404
|
|
389
405
|
class PendingQuizSection < QuizSection
|
390
|
-
|
406
|
+
def self.clear_cache
|
407
|
+
@@cache = {}
|
408
|
+
end
|
409
|
+
clear_cache
|
410
|
+
|
391
411
|
def self.find(id)
|
392
412
|
id = id.to_s
|
393
413
|
if @@cache[id].nil?
|
@@ -407,7 +427,11 @@ module SakaiInfo
|
|
407
427
|
end
|
408
428
|
|
409
429
|
class PublishedQuizSection < QuizSection
|
410
|
-
|
430
|
+
def self.clear_cache
|
431
|
+
@@cache = {}
|
432
|
+
end
|
433
|
+
clear_cache
|
434
|
+
|
411
435
|
def self.find(id)
|
412
436
|
id = id.to_s
|
413
437
|
if @@cache[id].nil?
|
@@ -435,6 +459,11 @@ module SakaiInfo
|
|
435
459
|
modified_by_key :lastmodifiedby
|
436
460
|
modified_at_key :lastmodifieddate
|
437
461
|
|
462
|
+
def self.clear_cache
|
463
|
+
@@cache = {}
|
464
|
+
end
|
465
|
+
clear_cache
|
466
|
+
|
438
467
|
def initialize(dbrow)
|
439
468
|
@dbrow = dbrow
|
440
469
|
|
@@ -445,7 +474,6 @@ module SakaiInfo
|
|
445
474
|
@typeid = dbrow[:typeid]
|
446
475
|
end
|
447
476
|
|
448
|
-
@@cache = {}
|
449
477
|
def self.find(id)
|
450
478
|
id = id.to_s
|
451
479
|
if @@cache[id].nil?
|
@@ -540,7 +568,11 @@ module SakaiInfo
|
|
540
568
|
end
|
541
569
|
|
542
570
|
class PendingQuizItem < QuizItem
|
543
|
-
|
571
|
+
def self.clear_cache
|
572
|
+
@@cache = {}
|
573
|
+
end
|
574
|
+
clear_cache
|
575
|
+
|
544
576
|
def self.find(id)
|
545
577
|
id = id.to_s
|
546
578
|
if @@cache[id].nil?
|
@@ -560,7 +592,11 @@ module SakaiInfo
|
|
560
592
|
end
|
561
593
|
|
562
594
|
class PublishedQuizItem < QuizItem
|
563
|
-
|
595
|
+
def self.clear_cache
|
596
|
+
@@cache = {}
|
597
|
+
end
|
598
|
+
clear_cache
|
599
|
+
|
564
600
|
def self.find(id)
|
565
601
|
id = id.to_s
|
566
602
|
if @@cache[id].nil?
|
@@ -592,6 +628,11 @@ module SakaiInfo
|
|
592
628
|
attr_reader :dbrow, :submitted_at, :total_auto_score, :status, :attempted_at
|
593
629
|
attr_reader :time_elapsed, :comments, :user_id, :quiz_id
|
594
630
|
|
631
|
+
def self.clear_cache
|
632
|
+
@@cache = {}
|
633
|
+
end
|
634
|
+
clear_cache
|
635
|
+
|
595
636
|
def initialize(dbrow)
|
596
637
|
@dbrow = dbrow
|
597
638
|
|
@@ -608,7 +649,6 @@ module SakaiInfo
|
|
608
649
|
@comments = dbrow[:comments]
|
609
650
|
end
|
610
651
|
|
611
|
-
@@cache = {}
|
612
652
|
def self.find(id)
|
613
653
|
id = id.to_s
|
614
654
|
if @@cache[id].nil?
|
@@ -704,6 +744,11 @@ module SakaiInfo
|
|
704
744
|
class QuizAttemptItem < SakaiObject
|
705
745
|
attr_reader :dbrow, :submitted_at, :answer, :user_id, :item_id, :attempt_id
|
706
746
|
|
747
|
+
def self.clear_cache
|
748
|
+
@@cache = {}
|
749
|
+
end
|
750
|
+
clear_cache
|
751
|
+
|
707
752
|
def initialize(dbrow)
|
708
753
|
@dbrow = dbrow
|
709
754
|
|
@@ -727,7 +772,6 @@ module SakaiInfo
|
|
727
772
|
@item ||= PublishedQuizItem.find(@item_id)
|
728
773
|
end
|
729
774
|
|
730
|
-
@@cache = {}
|
731
775
|
def self.find(id)
|
732
776
|
id = id.to_s
|
733
777
|
if @@cache[id].nil?
|
@@ -766,7 +810,8 @@ module SakaiInfo
|
|
766
810
|
"attempt" => self.attempt.serialize(:summary),
|
767
811
|
"item" => self.item.serialize(:summary),
|
768
812
|
"answer" => self.answer,
|
769
|
-
"attachment_count" => self.attachments.length
|
813
|
+
"attachment_count" => self.attachments.length,
|
814
|
+
"submitted_at" => self.submitted_at,
|
770
815
|
}
|
771
816
|
end
|
772
817
|
|
@@ -775,14 +820,16 @@ module SakaiInfo
|
|
775
820
|
"id" => self.id,
|
776
821
|
"eid" => User.get_eid(self.user_id),
|
777
822
|
"attempt_id" => self.attempt_id,
|
778
|
-
"item_id" => self.item_id
|
823
|
+
"item_id" => self.item_id,
|
824
|
+
"submitted_at" => self.submitted_at,
|
779
825
|
}
|
780
826
|
end
|
781
827
|
|
782
828
|
def attempt_summary_serialization
|
783
829
|
{
|
784
830
|
"id" => self.id,
|
785
|
-
"item_id" => self.item_id
|
831
|
+
"item_id" => self.item_id,
|
832
|
+
"submitted_at" => self.submitted_at,
|
786
833
|
}
|
787
834
|
end
|
788
835
|
|
@@ -807,6 +854,11 @@ module SakaiInfo
|
|
807
854
|
modified_by_key :lastmodifiedby
|
808
855
|
modified_at_key :lastmodifieddate
|
809
856
|
|
857
|
+
def self.clear_cache
|
858
|
+
@@cache = {}
|
859
|
+
end
|
860
|
+
clear_cache
|
861
|
+
|
810
862
|
def initialize(dbrow)
|
811
863
|
@dbrow = dbrow
|
812
864
|
|
@@ -829,7 +881,6 @@ module SakaiInfo
|
|
829
881
|
all.collect { |row| QuizAttemptItemAttachment.new(row) }
|
830
882
|
end
|
831
883
|
|
832
|
-
@@cache = {}
|
833
884
|
def self.find(id)
|
834
885
|
id = id.to_s
|
835
886
|
if @@cache[id].nil?
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::SakaiObject
|
3
3
|
#
|
4
4
|
# Created 2012-02-15 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -76,5 +76,10 @@ module SakaiInfo
|
|
76
76
|
def self.all_serializations
|
77
77
|
[:default]
|
78
78
|
end
|
79
|
+
|
80
|
+
# keep track of descendants
|
81
|
+
def self.descendants
|
82
|
+
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
83
|
+
end
|
79
84
|
end
|
80
85
|
end
|
data/lib/sakai-info/site.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Site library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -19,7 +19,11 @@ module SakaiInfo
|
|
19
19
|
modified_by_key :modifiedby
|
20
20
|
modified_at_key :modifiedon
|
21
21
|
|
22
|
-
|
22
|
+
def self.clear_cache
|
23
|
+
@@cache = {}
|
24
|
+
end
|
25
|
+
clear_cache
|
26
|
+
|
23
27
|
def self.find(id)
|
24
28
|
if @@cache[id].nil?
|
25
29
|
row = DB.connect[:sakai_site].where(:site_id => id).first
|
@@ -275,7 +279,7 @@ module SakaiInfo
|
|
275
279
|
"id" => self.id,
|
276
280
|
"title" => self.title,
|
277
281
|
"type" => self.type,
|
278
|
-
"created_by" => self.
|
282
|
+
"created_by" => self.created_by.eid
|
279
283
|
}
|
280
284
|
end
|
281
285
|
|
data/lib/sakai-info/tool.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::Tool library
|
3
3
|
#
|
4
4
|
# Created 2012-03-08 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -13,7 +13,11 @@ module SakaiInfo
|
|
13
13
|
class Tool < SakaiObject
|
14
14
|
attr_reader :title, :registration, :order, :layout, :page_id, :site_id, :dbrow
|
15
15
|
|
16
|
-
|
16
|
+
def self.clear_cache
|
17
|
+
@@cache = {}
|
18
|
+
end
|
19
|
+
clear_cache
|
20
|
+
|
17
21
|
def self.find(id)
|
18
22
|
if @@cache[id].nil?
|
19
23
|
row = DB.connect[:sakai_site_tool].where(:tool_id => id).first
|
data/lib/sakai-info/user.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# SakaiInfo::User library
|
3
3
|
#
|
4
4
|
# Created 2012-02-17 daveadams@gmail.com
|
5
|
-
# Last updated 2012-
|
5
|
+
# Last updated 2012-05-10 daveadams@gmail.com
|
6
6
|
#
|
7
7
|
# https://github.com/daveadams/sakai-info
|
8
8
|
#
|
@@ -19,7 +19,12 @@ module SakaiInfo
|
|
19
19
|
modified_by_key :modifiedby
|
20
20
|
modified_at_key :modifiedon
|
21
21
|
|
22
|
-
|
22
|
+
def self.clear_cache
|
23
|
+
@@cache = {}
|
24
|
+
@@id_cache = {}
|
25
|
+
end
|
26
|
+
clear_cache
|
27
|
+
|
23
28
|
def self.find(id)
|
24
29
|
if @@cache[id].nil?
|
25
30
|
eid = User.get_eid(id)
|
@@ -30,8 +35,8 @@ module SakaiInfo
|
|
30
35
|
|
31
36
|
row = DB.connect[:sakai_user].where(:user_id => user_id).first
|
32
37
|
if row.nil?
|
33
|
-
#Has sakai_user_id_map record, but not sakai_user record. Provided account!
|
34
|
-
#
|
38
|
+
# Has sakai_user_id_map record, but not sakai_user record. Provided account!
|
39
|
+
# TODO: replace with a ProvidedUser subclass
|
35
40
|
@@cache[eid] = @@cache[user_id] = User.new(user_id,'Provided')
|
36
41
|
else
|
37
42
|
@@cache[eid] = @@cache[user_id] = User.new(row)
|
@@ -40,7 +45,6 @@ module SakaiInfo
|
|
40
45
|
@@cache[id]
|
41
46
|
end
|
42
47
|
|
43
|
-
@@id_cache = {}
|
44
48
|
def self.get_ids(id)
|
45
49
|
@@id_cache[id] ||=
|
46
50
|
DB.connect[:sakai_user_id_map].where({:user_id => id, :eid => id}.sql_or).first
|
@@ -66,7 +70,7 @@ module SakaiInfo
|
|
66
70
|
case args.size
|
67
71
|
when 1
|
68
72
|
dbrow = args[0]
|
69
|
-
@dbrow = dbrow
|
73
|
+
@dbrow = dbrow
|
70
74
|
@id = dbrow[:user_id]
|
71
75
|
@eid = User.get_eid(@id)
|
72
76
|
@email = dbrow[:email]
|
data/lib/sakai-info/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sakai-info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sequel
|