Merge branch '2.0' of github.com:s9y/Serendipity into 2.0

This commit is contained in:
Matthias Gutjahr
2014-04-25 10:56:14 +02:00
88 changed files with 2027 additions and 1982 deletions
+71 -61
View File
@@ -265,73 +265,83 @@ switch ($serendipity['GET']['adminAction']) {
serendipity_request_end();
}
} else {
if (!is_array($serendipity['POST']['target_filename'])) {
if (!is_array($_FILES['serendipity']['name']['userfile'])) {
break;
}
foreach($serendipity['POST']['target_filename'] AS $idx => $target_filename) {
$uploadfile = &$_FILES['serendipity']['name']['userfile'][$idx];
$uploadtmp = &$_FILES['serendipity']['tmp_name']['userfile'][$idx];
if (!empty($target_filename)) {
$tfile = $target_filename;
} elseif (!empty($uploadfile)) {
$tfile = $uploadfile;
} else {
// skip empty array
continue;
foreach($_FILES['serendipity']['name']['userfile'] AS $idx => $uploadfiles) {
if (! is_array($uploadfiles)) {
$uploadfiles = array($uploadfiles);
}
$tfile = serendipity_uploadSecure(basename($tfile));
if (serendipity_isActiveFile($tfile)) {
$messages[] = ERROR_FILE_FORBIDDEN .' '. $tfile;
continue;
}
$serendipity['POST']['target_directory'][$idx] = serendipity_uploadSecure($serendipity['POST']['target_directory'][$idx], true, true);
if (!serendipity_checkDirUpload($serendipity['POST']['target_directory'][$idx])) {
$messages[] = PERM_DENIED;
continue;
}
$target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx] . $tfile;
$realname = $tfile;
if (file_exists($target)) {
$messages[] = '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY;
$realname = serendipity_imageAppend($tfile, $target, $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx]);
}
// Accept file
if (is_uploaded_file($uploadtmp) && serendipity_checkMediaSize($uploadtmp) && move_uploaded_file($uploadtmp, $target)) {
$messages[] = sprintf( FILE_UPLOADED , $uploadfile , $target);
@umask(0000);
@chmod($target, 0664);
$thumbs = array(array(
'thumbSize' => $serendipity['thumbSize'],
'thumb' => $serendipity['thumbSuffix']
));
serendipity_plugin_api::hook_event('backend_media_makethumb', $thumbs);
foreach($thumbs as $thumb) {
// Create thumbnail
if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][$idx], $thumb['thumbSize'], $thumb['thumb']) ) {
$messages[] = THUMB_CREATED_DONE;
}
$uploadFileCounter=-1;
foreach($uploadfiles AS $uploadfile) {
$uploadFileCounter++;
$target_filename = $serendipity['POST']['target_filename'][$idx];
$uploadtmp = $_FILES['serendipity']['tmp_name']['userfile'][$idx];
if (is_array($uploadtmp)) {
$uploadtmp = $uploadtmp[$uploadFileCounter];
}
if (!empty($target_filename)) {
$tfile = $target_filename;
} elseif (!empty($uploadfile)) {
$tfile = $uploadfile;
} else {
// skip empty array
continue;
}
// Insert into database
$image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][$idx], $authorid, null, $realname);
serendipity_plugin_api::hook_event('backend_image_add', $target, $created_thumbnail);
$new_media[] = array(
'image_id' => $image_id,
'target' => $target,
'created_thumbnail' => $created_thumbnail
);
} else {
$messages[] = ERROR_UNKNOWN_NOUPLOAD;
$tfile = serendipity_uploadSecure(basename($tfile));
if (serendipity_isActiveFile($tfile)) {
$messages[] = ERROR_FILE_FORBIDDEN .' '. $tfile;
continue;
}
$serendipity['POST']['target_directory'][$idx] = serendipity_uploadSecure($serendipity['POST']['target_directory'][$idx], true, true);
if (!serendipity_checkDirUpload($serendipity['POST']['target_directory'][$idx])) {
$messages[] = PERM_DENIED;
continue;
}
$target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx] . $tfile;
$realname = $tfile;
if (file_exists($target)) {
$messages[] = '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY;
$realname = serendipity_imageAppend($tfile, $target, $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx]);
}
// Accept file
if (is_uploaded_file($uploadtmp) && serendipity_checkMediaSize($uploadtmp) && move_uploaded_file($uploadtmp, $target)) {
$messages[] = sprintf( FILE_UPLOADED , $uploadfile , $target);
@umask(0000);
@chmod($target, 0664);
$thumbs = array(array(
'thumbSize' => $serendipity['thumbSize'],
'thumb' => $serendipity['thumbSuffix']
));
serendipity_plugin_api::hook_event('backend_media_makethumb', $thumbs);
foreach($thumbs as $thumb) {
// Create thumbnail
if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][$idx], $thumb['thumbSize'], $thumb['thumb']) ) {
$messages[] = THUMB_CREATED_DONE;
}
}
// Insert into database
$image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][$idx], $authorid, null, $realname);
serendipity_plugin_api::hook_event('backend_image_add', $target, $created_thumbnail);
$new_media[] = array(
'image_id' => $image_id,
'target' => $target,
'created_thumbnail' => $created_thumbnail
);
} else {
$messages[] = ERROR_UNKNOWN_NOUPLOAD;
}
}
}
}
+3
View File
@@ -94,6 +94,9 @@ class Serendipity_Import_Generic extends Serendipity_Import {
}
$entry['title'] = $this->decode($item['title']);
if (!isset($item['pubdate']) && isset($item['pubDate'])) {
$item['pubdate'] = $item['pubDate'];
}
$entry['timestamp'] = $this->decode(strtotime(isset($item['pubdate']) ? $item['pubdate'] : $item['dc:date']));
if ($entry['timestamp'] == -1) {
// strtotime does not seem to parse ISO 8601 dates
+8 -2
View File
@@ -23,6 +23,12 @@ switch($serendipity['POST']['adminAction']) {
$data['error_publish'] = $success;
}
break;
case 'updateCheckDisable':
if ( !serendipity_checkFormToken() || !serendipity_checkPermission('blogConfiguration') ) {
break;
}
serendipity_set_config_var('updateCheck', false);
break;
}
@@ -38,11 +44,11 @@ $output = array();
serendipity_plugin_api::hook_event('backend_frontpage_display', $output);
$data['backend_frontpage_display'] = $output['more'];
$data['curVersion'] = serendipity_getCurrentVersion();
$data['usedVersion'] = $serendipity['version'];
$data['updateCheck'] = $serendipity['updateCheck'];
$data['curVersion'] = serendipity_getCurrentVersion();
$data['update'] = version_compare($data['usedVersion'], $data['curVersion'], '<');
$comments = serendipity_db_query("SELECT c.*, e.title FROM {$serendipity['dbPrefix']}comments c
LEFT JOIN {$serendipity['dbPrefix']}entries e ON (e.id = c.entry_id)
ORDER BY c.id DESC LIMIT 5");
+44 -9
View File
@@ -1196,21 +1196,56 @@ function serendipity_verifyFTPChecksums() {
return $badsums;
}
function serendipity_getCurrentVersion() {
$updateURL = 'https://raw.github.com/s9y/Serendipity/master/docs/RELEASE';
$file = fopen($updateURL, 'r');
if (!$file) {
return;
/**
* Check https://raw.github.com/s9y/Serendipity/master/docs/RELEASE for the newest available version
*
* If the file is not fetch- or parseable (behind a proxy, malformed by Garvin), this will return -1
* */
function serendipity_getCurrentVersion() {
global $serendipity;
if ($serendipity['updateCheck'] != "stable" && $serendipity['updateCheck'] != "beta") {
return -1;
}
while (!feof($file)) {
$line = fgets($file);
// Perform update check once a day. We use a suffix of the configured channel, so when
// the user switches channels, it has its own timer.
if ($serendipity['last_update_check_' . $serendipity['updateCheck']] >= (time()-86400)) {
// Last update was performed less than a day ago. Return last result.
return $serendipity['last_update_version_' . $serendipity['updateCheck']];
}
if (preg_match('/stable:(.+$)/', $line, $match)) {
return $match[1];
serendipity_set_config_var('last_update_check_' . $serendipity['updateCheck'], time());
$updateURL = 'https://raw.github.com/s9y/Serendipity/master/docs/RELEASE';
$context = stream_context_create(array('http' => array('timeout' => 5.0)));
$file = @file_get_contents($updateURL, false, $context);
if (!$file) {
if (function_exists('curl_init')) {
$ch = curl_init($updateURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, "5");
$file = curl_exec($ch);
curl_close($ch);
}
}
if ($file) {
if ($serendipity['updateCheck'] == "stable") {
if (preg_match('/^stable:(.+)\b/', $file, $match)) {
serendipity_set_config_var('last_update_version_' . $serendipity['updateCheck'], $match[1]);
return $match[1];
}
} else {
if (preg_match('/^beta:(.+)\b/', $file, $match)) {
serendipity_set_config_var('last_update_version_' . $serendipity['updateCheck'], $match[1]);
return $match[1];
}
}
}
return -1;
}
/* vim: set sts=4 ts=4 sw=4 expandtab : */
+9 -7
View File
@@ -163,12 +163,8 @@ $dead_htmlarea_dirs = array(
*/
function recursive_directory_iterator($dir = array()) {
foreach ($dir AS $path) {
try {
serendipity_removeDeadFiles_SPL($path);
@rmdir($path);
} catch (Exception $e) {
echo htmlspecialchars($path) . " &gt;&gt; File or directory probably does not exist.<br/>";
}
serendipity_removeDeadFiles_SPL($path);
@rmdir($path);
}
}
@@ -293,7 +289,13 @@ function serendipity_killPlugin($name) {
*/
function serendipity_removeDeadFiles_SPL($dir=null, $deadfiles=null, $purgedir=null, $list_only=false) {
if (!is_dir($dir)) return;
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::CHILD_FIRST);
try {
$_dir = new RecursiveDirectoryIterator($dir);
// NOTE: UnexpectedValueException thrown for PHP >= 5.3
} catch (Exception $e) {
return;
}
$iterator = new RecursiveIteratorIterator($_dir, RecursiveIteratorIterator::CHILD_FIRST);
$search = array("\\", '//');
$replace = array('/');
foreach ($iterator as $file) {
+6
View File
@@ -398,6 +398,12 @@
'type' => 'bool',
'default' => false,
'permission' => 'blogConfiguration'),
array('var' => 'updateCheck',
'title' => UPDATE_NOTIFICATION,
'description' => UPDATE_NOTIFICATION_DESC,
'type' => 'list',
'default' => array('stable' => 'stable', 'beta' => 'beta', 'false' => NO ), # i18n
'permission' => 'blogConfiguration'),
));
$res['display'] =