Diff
Modified: trunk/app/models/blob.rb (2581 => 2582)
--- trunk/app/models/blob.rb 2011-03-17 14:36:42 UTC (rev 2581)
+++ trunk/app/models/blob.rb 2011-03-17 17:00:59 UTC (rev 2582)
@@ -67,4 +67,8 @@
def named_download_url
"#{Conf.base_uri}/files/#{id}/download/#{local_name}"
end
+
+ def statistics_for_rest_api
+ APIStatistics.statistics(self)
+ end
end
Modified: trunk/app/models/pack.rb (2581 => 2582)
--- trunk/app/models/pack.rb 2011-03-17 14:36:42 UTC (rev 2581)
+++ trunk/app/models/pack.rb 2011-03-17 17:00:59 UTC (rev 2582)
@@ -639,6 +639,10 @@
relationship.subject.nil? || relationship.objekt.nil?
end
end
+
+ def statistics_for_rest_api
+ APIStatistics.statistics(self)
+ end
protected
Modified: trunk/app/models/workflow.rb (2581 => 2582)
--- trunk/app/models/workflow.rb 2011-03-17 14:36:42 UTC (rev 2581)
+++ trunk/app/models/workflow.rb 2011-03-17 17:00:59 UTC (rev 2582)
@@ -353,4 +353,9 @@
related_workflows.map do |result| result[0] end
end
+
+ def statistics_for_rest_api
+ APIStatistics.statistics(self)
+ end
+
end
Modified: trunk/config/tables.xml
(Binary files differ)
Added: trunk/lib/api_statistics.rb (0 => 2582)
--- trunk/lib/api_statistics.rb (rev 0)
+++ trunk/lib/api_statistics.rb 2011-03-17 17:00:59 UTC (rev 2582)
@@ -0,0 +1,49 @@
+# myExperiment: lib/api_statistics.rb
+#
+# Copyright (c) 2011 University of Manchester and the University of Southampton.
+# See license.txt for details.
+
+module APIStatistics
+
+ def self.statistics(ob)
+
+ total_viewings = Viewing.count(:conditions => ['contribution_id = ?', ob.contribution.id])
+ site_viewings = Viewing.count(:conditions => ['contribution_id = ? AND accessed_from_site = 1', ob.contribution.id])
+ other_viewings = Viewing.count(:conditions => ['contribution_id = ? AND accessed_from_site = 0', ob.contribution.id])
+
+ total_downloads = Download.count(:conditions => ['contribution_id = ?', ob.contribution.id])
+ site_downloads = Download.count(:conditions => ['contribution_id = ? AND accessed_from_site = 1', ob.contribution.id])
+ other_downloads = Download.count(:conditions => ['contribution_id = ? AND accessed_from_site = 0', ob.contribution.id])
+
+ result = XML::Node.new('statistics')
+
+ viewings_element = XML::Node.new('viewings')
+
+ viewings_element << (XML::Node.new('total') << total_viewings)
+
+ viewings_breakdown_element = XML::Node.new('breakdown')
+
+ viewings_breakdown_element << (XML::Node.new('site') << site_viewings)
+ viewings_breakdown_element << (XML::Node.new('other') << other_viewings)
+
+ viewings_element << viewings_breakdown_element
+
+ downloads_element = XML::Node.new('downloads')
+
+ downloads_element << (XML::Node.new('total') << total_downloads)
+
+ downloads_breakdown_element = XML::Node.new('breakdown')
+
+ downloads_breakdown_element << (XML::Node.new('site') << site_downloads)
+ downloads_breakdown_element << (XML::Node.new('other') << other_downloads)
+
+ downloads_element << downloads_breakdown_element
+
+ result << viewings_element
+ result << downloads_element
+
+ result
+ end
+
+end
+