/** * 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."); } }