attach.php minor cleanup and doc

This commit is contained in:
zotlabs 2017-11-06 00:17:46 -08:00
parent 7efcb3c75f
commit 04d66ba7f4

View File

@ -2341,6 +2341,11 @@ function attach_move($channel_id, $resource_id, $new_folder_hash) {
}
/**
* Used to generate a select input box of all your folders
*/
function attach_folder_select_list($channel_id) {
$r = q("select * from attach where is_dir = 1 and uid = %d",
@ -2391,6 +2396,10 @@ function attach_folder_rpaths($all_folders,$that_folder) {
return (($error) ? false : [ $current_hash , $path ]);
}
/**
* @brief Given a channel_id and attach_hash, return an array with the full relative path and os_path
*/
function attach_syspaths($channel_id,$attach_hash) {
@ -2414,6 +2423,17 @@ function attach_syspaths($channel_id,$attach_hash) {
return [ 'os_path' => $os_path, 'path' => $path ];
}
/**
* in earlier releases we did not fill in os_path and display_path in the attach DB structure.
* (It was not needed or used). Going forward we intend to make use of these fields.
* A cron task checks for empty values (as older attachments may have arrived at our site
* in a clone operation) and executes attach_syspaths() to generate these field values and correct
* the attach table entry. The operation is limited to 100 DB entries at a time so as not to
* overload the system in any cron run. Eventually it will catch up with old attach structures
* and switch into maintenance mode to correct any that might arrive in clone packets from older
* sites.
*/
function attach_upgrade() {
@ -2440,6 +2460,12 @@ function attach_upgrade() {
}
/**
* Chunked uploader for integration with the blueimp jquery-uploader
* This is currently used.
*/
function save_chunk($channel,$start,$end,$len) {
$result = [];
@ -2478,64 +2504,3 @@ function save_chunk($channel,$start,$end,$len) {
}
/**
* @brief Submit handler for chunked uploads.
*
* @param array $channel
* @param array $arr
* @return array
*/
function chunkloader($channel, $arr) {
logger('request: ' . print_r($arr,true), LOGGER_DEBUG);
logger('files: ' . print_r($_FILES,true), LOGGER_DEBUG);
$result = [];
$tmp_path = $_FILES['file']['tmp_name'];
$new_base = 'store/[data]/' . $channel['channel_address'] . '/tmp';
os_mkdir($new_base,STORAGE_DEFAULT_PERMISSIONS,true);
$new_path = $new_base . '/' . $arr['resumableFilename'];
rename($tmp_path,$new_path . '.' . intval($arr['resumableChunkNumber']));
$missing_parts = false;
for($x = 1; $x <= intval($arr['resumableTotalChunks']); $x ++) {
if(! file_exists($new_path . '.' . $x)) {
$missing_parts = true;
break;
}
}
if($missing_parts) {
$result['partial'] = true;
return $result;
}
if(intval($arr['resumableTotalChunks']) === 1) {
rename($new_path . '.' . '1', $new_path);
}
else {
for($x = 1; $x <= intval($arr['resumableTotalChunks']); $x ++) {
$istream = fopen($new_path . '.' . $x,'rb');
$ostream = fopen($new_path,'ab');
if($istream && $ostream) {
pipe_streams($istream,$ostream);
fclose($istream);
fclose($ostream);
}
unlink($new_path . '.' . $x);
}
}
$result['name'] = $arr['resumableFilename'];
$result['type'] = $arr['resumableType'];
$result['tmp_name'] = $new_path;
$result['error'] = 0;
$result['size'] = $arr['resumableTotalSize'];
$result['complete'] = true;
return $result;
}