function index_url($server)
{
$scriptname = $server['SCRIPT_NAME'];
- if (endswith($scriptname, 'index.php')) {
+ if (endsWith($scriptname, 'index.php')) {
$scriptname = substr($scriptname, 0, -9);
}
return server_url($server) . $scriptname;
return self::$PAGE_LINKLIST;
}
- if (startswith($query, 'do='. self::$PAGE_LOGIN) && $loggedIn === false) {
+ if (startsWith($query, 'do='. self::$PAGE_LOGIN) && $loggedIn === false) {
return self::$PAGE_LOGIN;
}
- if (startswith($query, 'do='. self::$PAGE_PICWALL)) {
+ if (startsWith($query, 'do='. self::$PAGE_PICWALL)) {
return self::$PAGE_PICWALL;
}
- if (startswith($query, 'do='. self::$PAGE_TAGCLOUD)) {
+ if (startsWith($query, 'do='. self::$PAGE_TAGCLOUD)) {
return self::$PAGE_TAGCLOUD;
}
- if (startswith($query, 'do='. self::$PAGE_OPENSEARCH)) {
+ if (startsWith($query, 'do='. self::$PAGE_OPENSEARCH)) {
return self::$PAGE_OPENSEARCH;
}
return self::$PAGE_LINKLIST;
}
- if (startswith($query, 'do='. self::$PAGE_TOOLS)) {
+ if (startsWith($query, 'do='. self::$PAGE_TOOLS)) {
return self::$PAGE_TOOLS;
}
- if (startswith($query, 'do='. self::$PAGE_CHANGEPASSWORD)) {
+ if (startsWith($query, 'do='. self::$PAGE_CHANGEPASSWORD)) {
return self::$PAGE_CHANGEPASSWORD;
}
- if (startswith($query, 'do='. self::$PAGE_CONFIGURE)) {
+ if (startsWith($query, 'do='. self::$PAGE_CONFIGURE)) {
return self::$PAGE_CONFIGURE;
}
- if (startswith($query, 'do='. self::$PAGE_CHANGETAG)) {
+ if (startsWith($query, 'do='. self::$PAGE_CHANGETAG)) {
return self::$PAGE_CHANGETAG;
}
- if (startswith($query, 'do='. self::$PAGE_ADDLINK)) {
+ if (startsWith($query, 'do='. self::$PAGE_ADDLINK)) {
return self::$PAGE_ADDLINK;
}
return self::$PAGE_EDITLINK;
}
- if (startswith($query, 'do='. self::$PAGE_EXPORT)) {
+ if (startsWith($query, 'do='. self::$PAGE_EXPORT)) {
return self::$PAGE_EXPORT;
}
- if (startswith($query, 'do='. self::$PAGE_IMPORT)) {
+ if (startsWith($query, 'do='. self::$PAGE_IMPORT)) {
return self::$PAGE_IMPORT;
}
- if (startswith($query, 'do='. self::$PAGE_PLUGINSADMIN)) {
+ if (startsWith($query, 'do='. self::$PAGE_PLUGINSADMIN)) {
return self::$PAGE_PLUGINSADMIN;
}
- if (startswith($query, 'do='. self::$PAGE_SAVE_PLUGINSADMIN)) {
+ if (startsWith($query, 'do='. self::$PAGE_SAVE_PLUGINSADMIN)) {
return self::$PAGE_SAVE_PLUGINSADMIN;
}
/**
* Tells if a string start with a substring
+ *
+ * @param string $haystack Given string.
+ * @param string $needle String to search at the beginning of $haystack.
+ * @param bool $case Case sensitive.
+ *
+ * @return bool True if $haystack starts with $needle.
*/
-function startsWith($haystack, $needle, $case=true)
+function startsWith($haystack, $needle, $case = true)
{
if ($case) {
return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0);
/**
* Tells if a string ends with a substring
+ *
+ * @param string $haystack Given string.
+ * @param string $needle String to search at the end of $haystack.
+ * @param bool $case Case sensitive.
+ *
+ * @return bool True if $haystack ends with $needle.
*/
-function endsWith($haystack, $needle, $case=true)
+function endsWith($haystack, $needle, $case = true)
{
if ($case) {
return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
else
{
ban_loginFailed();
- $redir = '';
+ $redir = '&username='. $_POST['login'];
if (isset($_GET['post'])) {
- $redir = '?post=' . urlencode($_GET['post']);
+ $redir .= '&post=' . urlencode($_GET['post']);
foreach (array('description', 'source', 'title') as $param) {
if (!empty($_GET[$param])) {
$redir .= '&' . $param . '=' . urlencode($_GET[$param]);
// This RSS feed cannot be filtered.
function showDailyRSS() {
// Cache system
- $query = $_SERVER["QUERY_STRING"];
+ $query = $_SERVER['QUERY_STRING'];
$cache = new CachedPage(
$GLOBALS['config']['PAGECACHE'],
page_url($_SERVER),
if ($GLOBALS['config']['OPEN_SHAARLI']) { header('Location: ?'); exit; } // No need to login for open Shaarli
$token=''; if (ban_canLogin()) $token=getToken(); // Do not waste token generation if not useful.
$PAGE->assign('token',$token);
+ if (isset($_GET['username'])) {
+ $PAGE->assign('username', escape($_GET['username']));
+ }
$PAGE->assign('returnurl',(isset($_SERVER['HTTP_REFERER']) ? escape($_SERVER['HTTP_REFERER']):''));
$PAGE->renderPage('loginform');
exit;
}
// -------- User wants to logout.
- if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=logout'))
+ if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=logout'))
{
invalidateCaches($GLOBALS['config']['PAGECACHE']);
logout();
exit;
}
- // Same case as above except that user tried to access ?do=addlink without being logged in
- // Note: passing empty parameters makes Shaarli generate default URLs and descriptions.
- if (isset($_GET['do']) && $_GET['do'] === 'addlink') {
- header('Location: ?do=login&post=');
- exit;
- }
showLinkList($PAGE, $LINKSDB);
if (isset($_GET['edit_link'])) {
header('Location: ?do=login&edit_link='. escape($_GET['edit_link']));
}
// -------- User is uploading a file for import
- if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=upload'))
+ if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=upload'))
{
// If file is too big, some form field may be missing.
if (!isset($_POST['token']) || (!isset($_FILES)) || (isset($_FILES['filetoupload']['size']) && $_FILES['filetoupload']['size']==0))
{
$link = array('linkdate'=>'','title'=>'','url'=>'','description'=>'','tags'=>'','private'=>0);
$d = explode('<DD>',$html);
- if (startswith($d[0],'<A '))
+ if (startsWith($d[0], '<A '))
{
$link['description'] = (isset($d[1]) ? html_entity_decode(trim($d[1]),ENT_QUOTES,'UTF-8') : ''); // Get description (optional)
preg_match('!<A .*?>(.*?)</A>!i',$d[0],$matches); $link['title'] = (isset($matches[1]) ? trim($matches[1]) : ''); // Get title
// Is this a link to an image, or to a flickr page ?
$imageurl='';
- if (endswith(parse_url($url,PHP_URL_PATH),'.jpg'))
+ if (endsWith(parse_url($url, PHP_URL_PATH), '.jpg'))
{ // This is a direct link to an image. e.g. http://farm1.staticflickr.com/5/5921913_ac83ed27bd_o.jpg
preg_match('!(http://farm\d+\.staticflickr\.com/\d+/\d+_\w+_)\w.jpg!',$url,$matches);
if (!empty($matches[1])) $imageurl=$matches[1].'m.jpg';
return true;
}
-if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=genthumbnail')) { genThumbnail(); exit; } // Thumbnail generation/cache does not need the link database.
-if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=dailyrss')) { showDailyRSS(); exit; }
+if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=genthumbnail')) { genThumbnail(); exit; } // Thumbnail generation/cache does not need the link database.
+if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=dailyrss')) { showDailyRSS(); exit; }
if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['config']['LINKS_PER_PAGE'];
renderPage();
?>
hyphens: none;
}
+.markdown :not(pre) code {
+ background-color: #eee;
+ padding: 1px 3px;
+ border-radius: 1px;
+ box-shadow: 0 -1px 0 #e5e5e5,0 0 1px rgba(0,0,0,0.12),0 1px 1px rgba(0,0,0,0.24);
+}
+
.md_help {
color: white;
}
<!DOCTYPE html>
<html>
<head>{include="includes"}</head>
-<body{if="ban_canLogin()"} onload="document.loginform.login.focus();"{/if}>
+<body
+{if="ban_canLogin()"}
+ {if="empty($username)"}
+ onload="document.loginform.login.focus();"
+ {else}
+ onload="document.loginform.password.focus();"
+ {/if}
+{/if}>
<div id="pageheader">
- {include="page.header"}
+ {include="page.header"}
- <div id="headerform">
-{if="!ban_canLogin()"}
- You have been banned from login after too many failed attempts. Try later.
-{else}
- <form method="post" name="loginform">
- <label for="login">Login: <input type="text" id="login" name="login" tabindex="1"></label>
- <label for="password">Password: <input type="password" id="password" name="password" tabindex="2"></label>
- <input type="submit" value="Login" class="bigbutton" tabindex="4">
- <label for="longlastingsession">
- <input type="checkbox" name="longlastingsession" id="longlastingsession" tabindex="3">
- Stay signed in (Do not check on public computers)</label>
- <input type="hidden" name="token" value="{$token}">
- {if="$returnurl"}<input type="hidden" name="returnurl" value="{$returnurl}">{/if}
- </form>
-{/if}
- </div>
+ <div id="headerform">
+ {if="!ban_canLogin()"}
+ You have been banned from login after too many failed attempts. Try later.
+ {else}
+ <form method="post" name="loginform">
+ <label for="login">Login: <input type="text" id="login" name="login" tabindex="1"
+ {if="!empty($username)"}value="{$username}"{/if}>
+ </label>
+ <label for="password">Password: <input type="password" id="password" name="password" tabindex="2">
+ </label>
+ <input type="submit" value="Login" class="bigbutton" tabindex="4">
+ <label for="longlastingsession">
+ <input type="checkbox" name="longlastingsession" id="longlastingsession" tabindex="3">
+ Stay signed in (Do not check on public computers)</label>
+ <input type="hidden" name="token" value="{$token}">
+ {if="$returnurl"}<input type="hidden" name="returnurl" value="{$returnurl}">{/if}
+ </form>
+ {/if}
+ </div>
</div>
{include="page.footer"}