/**
  * Map an existing Wikia user to a Facebook id
  * If an exact or partial match of the map already exists, OR
  * if creation of mapping does not succeed, returns not-OK Status
  *
  * @param int $wikiaUserId
  * @param int $fbUserId
  * @return \Status (status value will be null or \FacebookMapModel if successfully created)
  */
 public function connectToFacebook($wikiaUserId, $fbUserId)
 {
     $status = new Status();
     try {
         $map = \FacebookMapModel::getUserMapping($wikiaUserId, $fbUserId);
         if ($map) {
             // Error! There is already a mapping
             $status->setResult(false);
             $status->error('fbconnect-error-already-connected');
         } else {
             $bizToken = \FacebookClient::getInstance()->getBizToken();
             $map = \FacebookMapModel::createUserMapping($wikiaUserId, $fbUserId, $bizToken);
             if ($map instanceof \FacebookMapModel) {
                 $status->setResult(true, $map);
             } else {
                 $status->setResult(false);
                 $status->error('fbconnect-error');
             }
         }
     } catch (\Exception $e) {
         $messageParams = [];
         switch ($e->getCode()) {
             case \FacebookMapModel::ERROR_WIKIA_USER_ID_MISMATCH:
                 $messageParams[] = 'fbconnect-error-fb-account-in-use';
                 $messageParams[] = \User::whoIs($wikiaUserId);
                 break;
             case \FacebookMapModel::ERROR_FACEBOOK_USER_ID_MISMATCH:
                 $messageParams[] = 'fbconnect-error-already-connected';
                 break;
             default:
                 $messageParams[] = 'fbconnect-error';
         }
         $status->setResult(false);
         call_user_func_array([$status, 'error'], $messageParams);
     }
     return $status;
 }