forked from GitHub/dbot
		
	 8e8953999d
			
		
	
	
		8e8953999d
		
	
	
	
	
		
			
			* Admin module doesn't try to use reload string when it's not there. * Fix dent event hookin * Fix quote retrieval (two ~q definitions and no false check before interpolate) * Change databankerised modules to use redis for testing
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Module Name: Admin
 | |
|  * Description: Set of commands which only one who is a DepressionBot
 | |
|  * administrator can run - as such, it has its own command execution listener.
 | |
|  */
 | |
| var fs = require('fs'),
 | |
|     _ = require('underscore')._;
 | |
| 
 | |
| var admin = function(dbot) {
 | |
|     this.internalAPI = {
 | |
|         'getCurrentConfig': function(configKey, callback) {
 | |
|             if(configKey) {
 | |
|                 this.db.read('config', configKey, function(err, cRecord) {
 | |
|                     if(cRecord) {
 | |
|                         console.log('record found');
 | |
|                         callback(cRecord.value)
 | |
|                     } else {
 | |
|                         var configPath = dbot.config;
 | |
|                         configKey = configKey.split('.');  
 | |
| 
 | |
|                         for(var i=0;i<configKey.length;i++) {
 | |
|                             if(_.has(configPath, configKey[i])) {
 | |
|                                 configPath = configPath[configKey[i]]; 
 | |
|                             } else {
 | |
|                                 callback(false);
 | |
|                                 break;
 | |
|                             }
 | |
|                         }
 | |
| 
 | |
|                         process.nextTick(function() {
 | |
|                             callback(configPath);
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             } else {
 | |
|                 callback(dbot.config);
 | |
|             }
 | |
|         }.bind(this)
 | |
|     };
 | |
| 
 | |
|     this.onLoad = function() {
 | |
|         var configMap = dbot.config;
 | |
|         this.db.scan('config', function(config) {
 | |
|             if(config) {
 | |
|                 var currentPath = configMap,
 | |
|                     key = config.key.split('.'),
 | |
|                     value = config.value;
 | |
| 
 | |
|                 for(var i=0;i<key.length-1;i++) {
 | |
|                     if(_.has(currentPath, key[i])) {
 | |
|                         currentPath = currentPath[key[i]];
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 currentPath[key[i]] = value;
 | |
|             }
 | |
|         }, function(err) { });
 | |
|     }.bind(this);
 | |
| };
 | |
| 
 | |
| exports.fetch = function(dbot) {
 | |
|     return new admin(dbot);
 | |
| };
 |