X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=index.php;h=d9fe5bc2d9cac9ad917bde90032e9df758ac9444;hb=refs%2Fpull%2F447%2Fhead;hp=31dcbf0fe7455a9de4a437ea190d556801734117;hpb=729d267172b245572522fccd88a7717beb8d3226;p=github%2Fshaarli%2FShaarli.git
diff --git a/index.php b/index.php
index 31dcbf0f..d9fe5bc2 100644
--- a/index.php
+++ b/index.php
@@ -44,12 +44,18 @@ $GLOBALS['config']['DATASTORE'] = $GLOBALS['config']['DATADIR'].'/datastore.php'
// Banned IPs
$GLOBALS['config']['IPBANS_FILENAME'] = $GLOBALS['config']['DATADIR'].'/ipbans.php';
+// Processed updates file.
+$GLOBALS['config']['UPDATES_FILE'] = $GLOBALS['config']['DATADIR'].'/updates.txt';
+
// Access log
$GLOBALS['config']['LOG_FILE'] = $GLOBALS['config']['DATADIR'].'/log.txt';
// For updates check of Shaarli
$GLOBALS['config']['UPDATECHECK_FILENAME'] = $GLOBALS['config']['DATADIR'].'/lastupdatecheck.txt';
+// Set ENABLE_UPDATECHECK to disabled by default.
+$GLOBALS['config']['ENABLE_UPDATECHECK'] = false;
+
// RainTPL cache directory (keep the trailing slash!)
$GLOBALS['config']['RAINTPL_TMP'] = 'tmp/';
// Raintpl template directory (keep the trailing slash!)
@@ -61,7 +67,6 @@ $GLOBALS['config']['CACHEDIR'] = 'cache';
// Atom & RSS feed cache directory
$GLOBALS['config']['PAGECACHE'] = 'pagecache';
-
/*
* Global configuration
*/
@@ -111,7 +116,8 @@ $GLOBALS['config']['UPDATECHECK_INTERVAL'] = 86400;
//);
$GLOBALS['config']['ENABLED_PLUGINS'] = array('qrcode');
-//$GLOBALS['plugins']['WALLABAG_URL'] = 'https://demo.wallabag.org/';
+// Initialize plugin parameters array.
+$GLOBALS['plugins'] = array();
// PubSubHubbub support. Put an empty string to disable, or put your hub url here to enable.
$GLOBALS['config']['PUBSUBHUB_URL'] = '';
@@ -159,6 +165,7 @@ require_once 'application/Utils.php';
require_once 'application/Config.php';
require_once 'application/PluginManager.php';
require_once 'application/Router.php';
+require_once 'application/Updater.php';
// Ensure the PHP version is supported
try {
@@ -1110,6 +1117,25 @@ function renderPage()
$GLOBALS['redirector']
);
+ $updater = new Updater(
+ read_updates_file($GLOBALS['config']['UPDATES_FILE']),
+ $GLOBALS,
+ $LINKSDB,
+ isLoggedIn()
+ );
+ try {
+ $newUpdates = $updater->update();
+ if (! empty($newUpdates)) {
+ write_updates_file(
+ $GLOBALS['config']['UPDATES_FILE'],
+ $updater->getDoneUpdates()
+ );
+ }
+ }
+ catch(Exception $e) {
+ die($e->getMessage());
+ }
+
$PAGE = new pageBuilder;
// Determine which page will be rendered.
@@ -1119,9 +1145,9 @@ function renderPage()
// Call plugin hooks for header, footer and includes, specifying which page will be rendered.
// Then assign generated data to RainTPL.
$common_hooks = array(
+ 'includes',
'header',
'footer',
- 'includes',
);
$pluginManager = PluginManager::getInstance();
foreach($common_hooks as $name) {
@@ -1526,21 +1552,42 @@ function renderPage()
// -------- User clicked the "Save" button when editing a link: Save link to database.
if (isset($_POST['save_edit']))
{
- if (!tokenOk($_POST['token'])) die('Wrong token.'); // Go away!
- $tags = trim(preg_replace('/\s\s+/',' ', $_POST['lf_tags'])); // Remove multiple spaces.
- $tags = implode(' ', array_unique(explode(' ', $tags))); // Remove duplicates.
- $linkdate=$_POST['lf_linkdate'];
+ // Go away!
+ if (! tokenOk($_POST['token'])) {
+ die('Wrong token.');
+ }
+ // Remove multiple spaces.
+ $tags = trim(preg_replace('/\s\s+/', ' ', $_POST['lf_tags']));
+ // Remove first '-' char in tags.
+ $tags = preg_replace('/(^| )\-/', '$1', $tags);
+ // Remove duplicates.
+ $tags = implode(' ', array_unique(explode(' ', $tags)));
+ $linkdate = $_POST['lf_linkdate'];
$url = trim($_POST['lf_url']);
- if (!startsWith($url,'http:') && !startsWith($url,'https:') && !startsWith($url,'ftp:') && !startsWith($url,'magnet:') && !startsWith($url,'?') && !startsWith($url,'javascript:'))
- $url = 'http://'.$url;
- $link = array('title'=>trim($_POST['lf_title']),'url'=>$url,'description'=>trim($_POST['lf_description']),'private'=>(isset($_POST['lf_private']) ? 1 : 0),
- 'linkdate'=>$linkdate,'tags'=>str_replace(',',' ',$tags));
- if ($link['title']=='') $link['title']=$link['url']; // If title is empty, use the URL as title.
+ if (! startsWith($url, 'http:') && ! startsWith($url, 'https:')
+ && ! startsWith($url, 'ftp:') && ! startsWith($url, 'magnet:')
+ && ! startsWith($url, '?') && ! startsWith($url, 'javascript:')
+ ) {
+ $url = 'http://' . $url;
+ }
+
+ $link = array(
+ 'title' => trim($_POST['lf_title']),
+ 'url' => $url,
+ 'description' => trim($_POST['lf_description']),
+ 'private' => (isset($_POST['lf_private']) ? 1 : 0),
+ 'linkdate' => $linkdate,
+ 'tags' => str_replace(',', ' ', $tags)
+ );
+ // If title is empty, use the URL as title.
+ if ($link['title'] == '') {
+ $link['title'] = $link['url'];
+ }
$pluginManager->executeHooks('save_link', $link);
$LINKSDB[$linkdate] = $link;
- $LINKSDB->savedb($GLOBALS['config']['PAGECACHE']); // Save to disk.
+ $LINKSDB->savedb($GLOBALS['config']['PAGECACHE']);
pubsubhub();
// If we are called from the bookmarklet, we must close the popup:
@@ -1549,10 +1596,12 @@ function renderPage()
exit;
}
- $returnurl = !empty($_POST['returnurl']) ? escape($_POST['returnurl']): '?';
+ $returnurl = !empty($_POST['returnurl']) ? $_POST['returnurl'] : '?';
$location = generateLocation($returnurl, $_SERVER['HTTP_HOST'], array('addlink', 'post', 'edit_link'));
- $location .= '#'.smallHash($_POST['lf_linkdate']); // Scroll to the link which has been edited.
- header('Location: '. $location); // After saving the link, redirect to the page the user was on.
+ // Scroll to the link which has been edited.
+ $location .= '#' . smallHash($_POST['lf_linkdate']);
+ // After saving the link, redirect to the page the user was on.
+ header('Location: '. $location);
exit;
}
@@ -1811,7 +1860,7 @@ HTML;
);
// TODO: do not handle exceptions/errors in JS.
- echo '';
+ echo '';
exit;
}
header('Location: ?do='. Router::$PAGE_PLUGINSADMIN);
@@ -2515,15 +2564,6 @@ function resizeImage($filepath)
return true;
}
-try {
- mergeDeprecatedConfig($GLOBALS, isLoggedIn());
-} catch(Exception $e) {
- error_log(
- 'ERROR while merging deprecated options.php file.' . PHP_EOL .
- $e->getMessage()
- );
-}
-
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=rss')) { showRSS(); exit; }
if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=atom')) { showATOM(); exit; }