Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove "Download from URL" feature #14652

Merged
merged 2 commits into from
Mar 3, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 12 additions & 108 deletions apps/files/ajax/newfile.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,38 +11,6 @@
// Get the params
$dir = isset( $_REQUEST['dir'] ) ? '/'.trim((string)$_REQUEST['dir'], '/\\') : '';
$filename = isset( $_REQUEST['filename'] ) ? trim((string)$_REQUEST['filename'], '/\\') : '';
$content = isset( $_REQUEST['content'] ) ? (string)$_REQUEST['content'] : '';
$source = isset( $_REQUEST['source'] ) ? trim((string)$_REQUEST['source'], '/\\') : '';

if($source) {
$eventSource = \OC::$server->createEventSource();
}

function progress($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
static $filesize = 0;
static $lastsize = 0;
global $eventSource;

switch($notification_code) {
case STREAM_NOTIFY_FILE_SIZE_IS:
$filesize = $bytes_max;
break;

case STREAM_NOTIFY_PROGRESS:
if ($bytes_transferred > 0) {
if (!isset($filesize) || $filesize === 0) {
} else {
$progress = (int)(($bytes_transferred/$filesize)*100);
if($progress>$lastsize) { //limit the number or messages send
$eventSource->send('progress', $progress);
}
$lastsize=$progress;
}
}
break;
}
}


$l10n = \OC::$server->getL10N('files');

Expand Down Expand Up @@ -89,85 +57,21 @@ function progress($notification_code, $severity, $message, $message_code, $bytes
exit();
}

if($source) {
$httpHelper = \OC::$server->getHTTPHelper();
if(!$httpHelper->isHTTPURL($source)) {
OCP\JSON::error(array('data' => array('message' => $l10n->t('Not a valid source'))));
exit();
}

if (!ini_get('allow_url_fopen')) {
$eventSource->send('error', array('message' => $l10n->t('Server is not allowed to open URLs, please check the server configuration')));
$eventSource->close();
exit();
}
$success = false;
$templateManager = OC_Helper::getFileTemplateManager();
$mimeType = OC_Helper::getMimetypeDetector()->detectPath($target);
$content = $templateManager->getTemplate($mimeType);

$source = $httpHelper->getFinalLocationOfURL($source);

$ctx = stream_context_create(\OC::$server->getHTTPHelper()->getDefaultContextArray(), array('notification' =>'progress'));

$sourceStream=@fopen($source, 'rb', false, $ctx);
$result = 0;
if (is_resource($sourceStream)) {
$meta = stream_get_meta_data($sourceStream);
if (isset($meta['wrapper_data']) && is_array($meta['wrapper_data'])) {
//check stream size
$storageStats = \OCA\Files\Helper::buildFileStorageStatistics($dir);
$freeSpace = $storageStats['freeSpace'];

foreach($meta['wrapper_data'] as $header) {
if (strpos($header, ':') === false){
continue;
}
list($name, $value) = explode(':', $header);
if ('content-length' === strtolower(trim($name))) {
$length = (int) trim($value);

if ($length > $freeSpace) {
$delta = $length - $freeSpace;
$humanDelta = OCP\Util::humanFileSize($delta);

$eventSource->send('error', array('message' => (string)$l10n->t('The file exceeds your quota by %s', array($humanDelta))));
$eventSource->close();
fclose($sourceStream);
exit();
}
}
}
}
$result = \OC\Files\Filesystem::file_put_contents($target, $sourceStream);
}
if($result) {
$meta = \OC\Files\Filesystem::getFileInfo($target);
$data = \OCA\Files\Helper::formatFileInfo($meta);
$eventSource->send('success', $data);
} else {
$eventSource->send('error', array('message' => $l10n->t('Error while downloading %s to %s', array($source, $target))));
}
if (is_resource($sourceStream)) {
fclose($sourceStream);
}
$eventSource->close();
exit();
if($content) {
$success = \OC\Files\Filesystem::file_put_contents($target, $content);
} else {
$success = false;
if (!$content) {
$templateManager = OC_Helper::getFileTemplateManager();
$mimeType = OC_Helper::getMimetypeDetector()->detectPath($target);
$content = $templateManager->getTemplate($mimeType);
}

if($content) {
$success = \OC\Files\Filesystem::file_put_contents($target, $content);
} else {
$success = \OC\Files\Filesystem::touch($target);
}
$success = \OC\Files\Filesystem::touch($target);
}

if($success) {
$meta = \OC\Files\Filesystem::getFileInfo($target);
OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta)));
exit();
}
if($success) {
$meta = \OC\Files\Filesystem::getFileInfo($target);
OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta)));
return;
}

OCP\JSON::error(array('data' => array( 'message' => $l10n->t('Error when creating the file') )));
54 changes: 1 addition & 53 deletions apps/files/js/file-upload.js
Original file line number Diff line number Diff line change
Expand Up @@ -602,9 +602,7 @@ OC.Upload = {
var lastPos;
var checkInput = function () {
var filename = input.val();
if (type === 'web' && filename.length === 0) {
throw t('files', 'URL cannot be empty');
} else if (type !== 'web' && ! Files.isFileNameValid(filename)) {
if (Files.isFileNameValid(filename)) {
// Files.isFileNameValid(filename) throws an exception itself
} else if (FileList.inList(filename)) {
throw t('files', '{new_name} already exists', {new_name: filename});
Expand Down Expand Up @@ -683,56 +681,6 @@ OC.Upload = {
}
);
break;
case 'web':
if (name.substr(0, 8) !== 'https://' && name.substr(0, 7) !== 'http://') {
name = 'http://' + name;
}
var localName = name;
if (localName.substr(localName.length-1, 1) === '/') {//strip /
localName = localName.substr(0, localName.length-1);
}
if (localName.indexOf('/')) { //use last part of url
localName = localName.split('/').pop();
} else { //or the domain
localName = (localName.match(/:\/\/(.[^\/]+)/)[1]).replace('www.', '');
}
localName = FileList.getUniqueName(localName);
//IE < 10 does not fire the necessary events for the progress bar.
if ($('html.lte9').length === 0) {
$('#uploadprogressbar').progressbar({value: 0});
OC.Upload._showProgressBar();
}

var eventSource = new OC.EventSource(
OC.filePath('files', 'ajax', 'newfile.php'),
{
dir: FileList.getCurrentDirectory(),
source: name,
filename: localName
}
);
eventSource.listen('progress', function(progress) {
//IE < 10 does not fire the necessary events for the progress bar.
if ($('html.lte9').length === 0) {
$('#uploadprogressbar').progressbar('value',progress);
}
});
eventSource.listen('success', function(data) {
var file = data;
OC.Upload._hideProgressBar();

FileList.add(file, {hidden: hidden, animate: true});
});
eventSource.listen('error', function(error) {
OC.Upload._hideProgressBar();
var message = (error && error.message) || t('core', 'Error fetching URL');
OC.Notification.show(message);
//hide notification after 10 sec
setTimeout(function() {
OC.Notification.hide();
}, 10000);
});
break;
}
var li = form.parent();
form.remove();
Expand Down
3 changes: 0 additions & 3 deletions apps/files/templates/list.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@
data-type="folder" data-newname="<?php p($l->t('New folder')) ?>">
<p><?php p($l->t('Folder'));?></p>
</li>
<li class="icon-link svg" data-type="web">
<p><?php p($l->t('From link'));?></p>
</li>
</ul>
</div>
<?php endif;?>
Expand Down