Archived
Merge branch '2.0' of github.com:s9y/Serendipity into 2.0
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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 : */
|
||||
|
||||
@@ -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) . " >> 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) {
|
||||
|
||||
@@ -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'] =
|
||||
|
||||
Reference in New Issue
Block a user