/**
  * On user login, get user info and sitetree
  */
 public function login($message = array())
 {
     $socketSession = null;
     $data = $this->getMessage($message);
     $userdata = array();
     $response = array('success' => 1);
     try {
         $userdata = $this->getUserData();
     } catch (Exception $e) {
         // return failure
         $response['success'] = 0;
         $response['body'] = $e->getMessage();
     }
     if (count($userdata) > 0 && SocketSession::get()->filter('MemberID', $userdata['ID'])->count() > 0) {
         $socketSession = SocketSession::get()->filter('MemberID', $userdata['ID'])->First();
     } else {
         $socketSession = new SocketSession();
     }
     // setup SocketSession with relevant data
     $socketSession->MemberID = $userdata['ID'];
     $socketSession->SocketID = $this->getMessageSocketID($message);
     $socketSession->PageID = 0;
     $socketSession->write();
     SiteTreeOrigamiApi::emit_structure($data->socketId);
     ZMQInterface::emit('userdata', $userdata, $data->socketId);
     return $response;
 }
 /**
  * Wrapper for updating sitetree functionality,
  * it's called on almost every action of an edit page form
  */
 protected function updateSiteTree($record, $socketId = null)
 {
     // if it's a sitetree page then reset the sitetree cache
     // and re emit the sitetree refresh
     SiteTreeOrigamiApi::reset_cache();
     SiteTreeOrigamiApi::emit_structure($socketId, $record);
 }