/**
  * Refreshs the roundcube HTTP session
  * @return boolean true if refresh was successfull, otherwise false
  */
 public static function refresh()
 {
     try {
         OCP\Util::writeLog('roundcube', 'OC_RoundCube_AuthHelper.class.php->refresh(): Preparing refresh for roundcube', OCP\Util::DEBUG);
         $maildir = OCP\Config::getAppValue('roundcube', 'maildir', '');
         $rc_host = OCP\Config::getAppValue('roundcube', 'rcHost', '');
         if ($rc_host == '') {
             $rc_host = OC_Request::serverHost();
         }
         $rc_port = OCP\Config::getAppValue('roundcube', 'rcPort', '');
         OC_RoundCube_App::refresh($rc_host, $rc_port, $maildir);
         OCP\Util::writeLog('roundcube', 'OC_RoundCube_AuthHelper.class.php->refresh(): Finished refresh for roundcube', OCP\Util::DEBUG);
         return true;
     } catch (Exception $e) {
         // We got an exception during login/refresh
         OCP\Util::writeLog('roundcube', 'OC_RoundCube_AuthHelper.class.php: ' . 'Login error during refresh.' . $e, OCP\Util::DEBUG);
         return false;
     }
 }
 /**
  *
  * @brief showing up roundcube iFrame
  * @param roundcube host $rcHost
  * @param roundcube port $rcPort
  * @param path to roundcube installation, Note: The first parameter is the URL-path of the RC inst
  * NOT the file-system path http://host.com/path/to/roundcube/ --> "/path/to/roundcube" $maildir
  *
  */
 public static function showMailFrame($rcHost, $rcPort, $maildir)
 {
     $returnObject = new OC_Mail_Object();
     $enableDebug = OCP\Config::getAppValue('roundcube', 'enableDebug', true);
     $enableAutologin = OCP\Config::getAppValue('roundcube', 'autoLogin', false);
     // Create RC login object.
     $rcl = new OC_RoundCube_Login($rcHost, $rcPort, $maildir, $enableDebug);
     try {
         if (!$rcl->isLoggedIn()) {
             // If the login fails, display an error message in the loggs
             OCP\Util::writeLog('roundcube', 'OC_RoundCube_App.class.php->showMailFrame(): Not logged in.', OCP\Util::ERROR);
             OCP\Util::writeLog('roundcube', 'OC_RoundCube_App.class.php->showMailFrame(): Trying to refresh session.', OCP\Util::INFO);
             if (!OC_RoundCube_App::refresh($rcHost, $rcPort, $maildir)) {
                 throw new OC_Mail_LoginException("Unable to login to roundcube");
             }
         }
         OCP\Util::writeLog('roundcube', 'OC_RoundCube_App.class.php->showMailFrame(): Preparing iFrame for roundcube:' . $rcl->getRedirectPath(), OCP\Util::DEBUG);
         // loader image
         $loader_image = OCP\Util::imagePath('roundcube', 'loader.gif');
         $disable_header_nav = OCP\Config::getAppValue('roundcube', 'removeHeaderNav', 'false');
         $disable_control_nav = OCP\Config::getAppValue('roundcube', 'removeControlNav', 'false');
         // create iFrame begin
         $returnObject->appendHtmlOutput('<img src="' . $loader_image . '" id="roundcubeLoader">');
         $returnObject->appendHtmlOutput('<iframe src="' . $rcl->getRedirectPath() . '" id="roundcubeFrame"  name="roundcube" width="100%" style="display:none;">  </iframe>');
         $returnObject->appendHtmlOutput('<input type="hidden" id="disable_header_nav" value="' . $disable_header_nav . '"/>');
         $returnObject->appendHtmlOutput('<input type="hidden" id="disable_control_nav" value="' . $disable_control_nav . '"/>');
         // create iFrame end
     } catch (OC_Mail_NetworkingException $ex_net) {
         $returnObject->setErrorOccurred(true);
         $returnObject->setErrorCode(OC_Mail_Object::ERROR_CODE_NETWORK);
         $returnObject->setHtmlOutput('');
         $returnObject->setErrorDetails("ERROR: Technical problem during trying to connect to roundcube server, " . $ex_net->getMessage());
         OCP\Util::writeLog('roundcube', 'OC_RoundCube_App.class.php->showMailFrame(): RoundCube can\'t login to roundcube due to a network connection exception to roundcube', OCP\Util::ERROR);
     } catch (OC_Mail_LoginException $ex_login) {
         $returnObject->setErrorOccurred(true);
         if ($enableAutologin) {
             OCP\Util::writeLog('roundcube', 'OC_RoundCube_App.class.php->showMailFrame(): Autologin is enabled. Seems that the owncloud and roundcube login details do not match', OCP\Util::ERROR);
             $returnObject->setErrorCode(OC_Mail_Object::ERROR_CODE_AUTOLOGIN);
         } else {
             $returnObject->setErrorCode(OC_Mail_Object::ERROR_CODE_LOGIN);
         }
         $returnObject->setHtmlOutput('');
         $returnObject->setErrorDetails("ERROR: Technical problem, " . $ex_login->getMessage());
         OCP\Util::writeLog('roundcube', 'OC_RoundCube_App.class.php->showMailFrame(): RoundCube can\'t login to roundcube due to a login exception to roundcube', OCP\Util::ERROR);
     } catch (OC_Mail_RC_InstallNotFoundException $ex_login) {
         $returnObject->setErrorOccurred(true);
         $returnObject->setErrorCode(OC_Mail_Object::ERROR_CODE_RC_NOT_FOUND);
         $returnObject->setHtmlOutput('');
         $returnObject->setErrorDetails("ERROR: Technical problem, " . $ex_login->getMessage());
         OCP\Util::writeLog('roundcube', 'OC_RoundCube_App.class.php->showMailFrame(): RoundCube can\'t be found on the given path.', OCP\Util::ERROR);
     } catch (Exception $ex_login) {
         $returnObject->setErrorOccurred(true);
         $returnObject->setErrorCode(OC_Mail_Object::ERROR_CODE_GENERAL);
         $returnObject->setHtmlOutput('');
         $returnObject->setErrorDetails("ERROR: Technical problem, " . $ex_login->getMessage());
         OCP\Util::writeLog('roundcube', 'OC_RoundCube_App.class.php->showMailFrame(): RoundCube can\'t login to roundcube due to a unkown exception to roundcube', OCP\Util::ERROR);
     }
     return $returnObject;
 }