@@ -33,50 +33,22 @@ namespace :crm do
end
namespace :settings do
desc "Load default application settings"
task :load => :environment do
plugin = ENV [ "PLUGIN" ]
yaml = File . join ( Rails . root , ( plugin ? "/vendor/plugins/#{ plugin } " : "" ) + "/config/settings.yml" )
puts "== Loading settings#{ plugin ? ( ' from ' << plugin ) : '' } ..."
desc "Clear settings from database (reset to default)"
task :clear => :environment do
puts "== Clearing settings table..."
begin
settings = YAML . load_file ( yaml )
rescue
puts "Couldn't load #{ yaml } configuration file."
exit
end
# Truncate settings table if loading Fat Free CRM settings.
# Truncate settings table
ActiveRecord ::Base . establish_connection ( Rails . env )
unless plugin
if ActiveRecord ::Base . connection . adapter_name . downcase == "sqlite"
ActiveRecord ::Base . connection . execute ( "DELETE FROM settings" )
else # mysql and postgres
ActiveRecord ::Base . connection . execute ( "TRUNCATE settings" )
end
end
settings . keys . each do |key |
if plugin # Delete existing plugin setting if any (since we haven't truncated the whole table).
sql = [ "DELETE FROM settings WHERE name = ?" , key . to_s ]
Rake ::Task . sanitize_and_execute ( sql )
end
sql = [ "INSERT INTO settings (name, default_value, created_at, updated_at) VALUES(?, ?, ?, ?)" , key . to_s , Base64 . encode64 ( Marshal . dump ( settings [ key ] ) ) , Time . now , Time . now ]
Rake ::Task . sanitize_and_execute ( sql )
end
# Change default access on models, as specified in settings.yml
%w( leads opportunities contacts campaigns accounts ) . each do |table |
ActiveRecord ::Migration . change_column_default ( table , 'access' , settings [ :default_access ] )
if ActiveRecord ::Base . connection . adapter_name . downcase == "sqlite"
ActiveRecord ::Base . connection . execute ( "DELETE FROM settings" )
else # mysql and postgres
ActiveRecord ::Base . connection . execute ( "TRUNCATE settings" )
end
# Re-dump the schema in case default access has changed (Critical for RSpec)
Rake ::Task [ "db:schema:dump" ] . invoke
puts "===== Settings have been loaded ."
puts "===== Settings table has been cleared ."
end
desc "Show current application settings"
desc "Show current settings in the database "
task :show => :environment do
ActiveRecord ::Base . establish_connection ( Rails . env )
names = ActiveRecord ::Base . connection . select_values ( "SELECT name FROM settings ORDER BY name" )