daily pastebin goal
29%
SHARE
TWEET

Untitled

a guest Aug 10th, 2018 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php  
  2.        
  3.  
  4.     // a service hook for Clove.
  5.     class ServiceHook
  6.     {                  
  7.        
  8.         /**
  9.          * the current action we're calling
  10.          */
  11.        
  12.         private $_currentAction;    
  13.        
  14.        
  15.         /**              
  16.          * the session associated with the call
  17.          */
  18.        
  19.         private $_sessid;
  20.          
  21.         /**
  22.          * spits out the available hooks for this service.
  23.          */
  24.         public function a_getAvailableCalls()
  25.         {                                              
  26.            
  27.             //get the public methods for this class
  28.             $publicMethods = get_class_methods(get_class($this));
  29.                                      
  30.  
  31.             //only grab the methods with a_ prefix for "action"
  32.             $availableActions = array();
  33.            
  34.             foreach($publicMethods as $a)
  35.             {            
  36.                
  37.                 if(substr($a,0,2) == 'a_')  
  38.                     $availableActions[] = $a;
  39.                                            
  40.             }
  41.                
  42.             //print out the service hook
  43.             $this->result($availableActions);
  44.         }
  45.        
  46.        
  47.         public function getSessid()
  48.         {
  49.             return $this->_sessid;
  50.         }    
  51.        
  52.         public function getAction()
  53.         {
  54.             return $this->_currentAction;
  55.         }
  56.  
  57.        
  58.         //executes the request for Clove                
  59.         public function execute($params)
  60.         {                  
  61.             //the action to be called
  62.             $action = isset($params['a']) ? $params['a'] : null;
  63.            
  64.             //the session for the current call
  65.             $this->_sessid = isset($params['sessid']) ? $params['sessid'] : $this->getNewSessionId();
  66.            
  67.            
  68.             $this->_currentAction = $action;
  69.              
  70.             //an action must be specified before calling any hooked functions
  71.             if(!$action)
  72.                 $this->fault('no action specified');  
  73.                
  74.             //if the method doesn't exist, we need to notify the user
  75.             if(!method_exists($this,$action))
  76.                 $this->fault('action "'.$action.'" doesn\'t exist.');
  77.            
  78.             //the data to be used
  79.             $query = isset($params['q']) ? array($params['q']) : array();
  80.                
  81.                  
  82.             //call the method            
  83.             call_user_func_array(array($this,$action),$query);
  84.         }
  85.        
  86.      
  87.        
  88.         /**
  89.          * the method to call when a we get a successful response
  90.          */
  91.        
  92.         protected function result($data)
  93.         {
  94.             $m = array('result'=>$data);
  95.            
  96.            
  97.             $this->addGenericData($m);
  98.            
  99.             die(json_encode($m));
  100.         }
  101.        
  102.         /**
  103.          * the method to call when a fault occurs  
  104.          */
  105.        
  106.         protected function fault($data)
  107.         {
  108.             $m = array('error'=>$data);
  109.            
  110.             $this->addGenericData($m);
  111.                          
  112.             die(json_encode($m));
  113.         }
  114.        
  115.        
  116.         /**
  117.          */
  118.        
  119.         protected function addGenericData(&$array)
  120.         {
  121.             $array['a'] = $this->_currentAction;
  122.            
  123.             if(isset($this->_sessid))
  124.             {
  125.                 $array['sessid']  = $this->_sessid;
  126.             }
  127.         }  
  128.            
  129.        
  130.         /**
  131.          */
  132.        
  133.         private function getNewSessionId()
  134.         {      
  135.              
  136.             //return com_create_guid();
  137.             mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
  138.    
  139.             return md5(uniqid(rand(), true));
  140.         }
  141.        
  142.     }
  143. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top