Delete attachments on item deletion

Delete video from videos page
This commit is contained in:
fabrixxm 2015-05-23 22:35:02 +02:00
parent 41d5e89f50
commit 83697cf3e5
3 changed files with 101 additions and 14 deletions

View file

@ -4745,6 +4745,18 @@ function drop_item($id,$interactive = true) {
// ignore the result
}
// If item has attachments, drop them
foreach(explode(",",$item['attach']) as $attach){
preg_match("|attach/(\d+)|", $attach, $matches);
q("DELETE FROM `attach` WHERE `id` = %d AND `uid` = %d",
intval($matches[1]),
local_user()
);
// ignore the result
}
// clean up item_id and sign meta-data tables
/*
@ -4821,6 +4833,7 @@ function drop_item($id,$interactive = true) {
// Add a relayable_retraction signature for Diaspora.
store_diaspora_retract_sig($item, $a->user, $a->get_baseurl());
}
$drop_id = intval($item['id']);
// send the notification upstream/downstream as the case may be

View file

@ -92,9 +92,76 @@ function videos_init(&$a) {
function videos_post(&$a) {
return;
$owner_uid = $a->data['user']['uid'];
if (local_user() != $owner_uid) goaway($a->get_baseurl() . '/videos/' . $a->data['user']['nickname']);
if(($a->argc == 2) && x($_POST,'delete') && x($_POST, 'id')) {
// Check if we should do HTML-based delete confirmation
if(!x($_REQUEST,'confirm')) {
if(x($_REQUEST,'canceled')) goaway($a->get_baseurl() . '/videos/' . $a->data['user']['nickname']);
$drop_url = $a->query_string;
$a->page['content'] = replace_macros(get_markup_template('confirm.tpl'), array(
'$method' => 'post',
'$message' => t('Do you really want to delete this video?'),
'$extra_inputs' => [
['name'=>'id', 'value'=> $_POST['id']],
['name'=>'delete', 'value'=>'x']
],
'$confirm' => t('Delete Video'),
'$confirm_url' => $drop_url,
'$confirm_name' => 'confirm', // Needed so that confirmation will bring us back into this if statement
'$cancel' => t('Cancel'),
));
$a->error = 1; // Set $a->error so the other module functions don't execute
return;
}
$video_id = $_POST['id'];
$r = q("SELECT `id` FROM `attach` WHERE `uid` = %d AND `id` = '%s' LIMIT 1",
intval(local_user()),
dbesc($video_id)
);
if(count($r)) {
q("DELETE FROM `attach` WHERE `uid` = %d AND `id` = '%s'",
intval(local_user()),
dbesc($video_id)
);
$i = q("SELECT * FROM `item` WHERE `attach` like '%%attach/%s%%' AND `uid` = %d LIMIT 1",
dbesc($video_id),
intval(local_user())
);
#echo "<pre>"; var_dump($i); killme();
if(count($i)) {
q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d",
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc($i[0]['uri']),
intval(local_user())
);
create_tags_from_itemuri($i[0]['uri'], local_user());
delete_thread_uri($i[0]['uri'], local_user());
$url = $a->get_baseurl();
$drop_id = intval($i[0]['id']);
if($i[0]['visible'])
proc_run('php',"include/notifier.php","drop","$drop_id");
}
}
goaway($a->get_baseurl() . '/videos/' . $a->data['user']['nickname']);
return; // NOTREACHED
}
goaway($a->get_baseurl() . '/videos/' . $a->data['user']['nickname']);
// DELETED -- look at mod/photos.php if you want to implement
}
@ -318,6 +385,7 @@ function videos_content(&$a) {
'$can_post' => $can_post,
'$upload' => array(t('Upload New Videos'), $a->get_baseurl().'/videos/'.$a->data['user']['nickname'].'/upload'),
'$videos' => $videos,
'$delete_url' => (($can_post)?$a->get_baseurl().'/videos/'.$a->data['user']['nickname']:False)
));

View file

@ -9,5 +9,11 @@
</video>
{{*<div class="video-top-album-name"><a href="{{$video.album.link}}" class="video-top-album-link" title="{{$video.album.alt}}" >{{$video.album.name}}</a></div>*}}
{{if $delete_url }}
<form method="post" action="{{$delete_url}}">
<input type="submit" name="delete" value="X"></input>
<input type="hidden" name="id" value="{{$video.id}}"></input>
</form>
{{/if}}
</div>