예제 #1
0
 /**
  * Initialize project by calling get_config on the RW server and saving the response. 
  * 
  * @param int $id PK of a project
  * @throws Exception if valid config objects (device, session, project) are not returned from RW
  */
 function __construct(array $config = array())
 {
     $this->CI =& get_instance();
     $this->log = KLogger::syslog(KLogger::DEBUG, TRUE);
     if (isset($config['id'])) {
         $this->project_id = $config['id'];
     }
     // if we don't have an RW session-id, call get config and push the device and project
     // values into the CI session. If we do have an RW session-id, pull those values
     // from the CI session.
     if (FALSE === ($this->rw_session_id = $this->CI->session->userdata('rw_session_id'))) {
         $this->config(json_decode($this->do_curl('get_config')));
         $this->CI->session->set_userdata('rw_session_id', $this->rw_session_id);
         $this->CI->session->set_userdata('rw_device', $this->device);
         $this->CI->session->set_userdata('rw_project', $this->project);
     } else {
         $this->rw_session_id = $this->CI->session->userdata('rw_session_id');
         $this->device = $this->CI->session->userdata('rw_device');
         $this->project = $this->CI->session->userdata('rw_project');
     }
     // we can't do anything without device, session and project objects
     if (!($this->device && $this->rw_session_id && $this->project)) {
         throw new Exception("Roundware could not be initialized with the given project ID.");
     }
 }