public function testMergeObjects()
 {
     $o1 = (object) array('a' => 1, 'b' => 2);
     $o2 = (object) array('c' => 3, 'b' => 3);
     $o3 = merge_objects($o1, $o2);
     $this->assertEquals($o3, (object) array('a' => 1, 'b' => 2, 'c' => 3));
     $o4 = merge_objects($o1, $o2, $o3, array('d' => 4), 1, 2, 3);
     $this->assertEquals($o4, (object) array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4));
 }
 public function getLoginArgs()
 {
     $CI =& get_instance();
     $CI->load->model('sso_app_model');
     // Load sso apps model by default
     if ($CI->input->get()) {
         $args = new Login_Args($CI->input->get());
     } else {
         $args = new Login_Args($CI->input->post());
     }
     $CI->load->library('session');
     if (isset($args->appid)) {
         $app = $CI->sso_app_model->getApp($args->appid);
         if (isset($app->config)) {
             // Merge the configurations to the app object first
             $app = merge_objects($app, (object) json_decode($app->config));
             unset($app->config);
         }
         $args = merge_objects($args, $app);
     }
     return $args;
 }