From 83697cf3e561ceaf0365cd2b4e56fb4bcd00d1fa Mon Sep 17 00:00:00 2001 From: fabrixxm <fabrix.xm@gmail.com> Date: Sat, 23 May 2015 22:35:02 +0200 Subject: [PATCH] Delete attachments on item deletion Delete video from videos page --- include/items.php | 13 +++++ mod/videos.php | 96 ++++++++++++++++++++++++++++++------ view/templates/video_top.tpl | 6 +++ 3 files changed, 101 insertions(+), 14 deletions(-) diff --git a/include/items.php b/include/items.php index 5a0aa9ed51..c5de29a6de 100644 --- a/include/items.php +++ b/include/items.php @@ -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 diff --git a/mod/videos.php b/mod/videos.php index 0f29e631bd..607c900eb5 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -43,12 +43,12 @@ function videos_init(&$a) { if(count($albums)) { $a->data['albums'] = $albums; - $albums_visible = ((intval($a->data['user']['hidewall']) && (! local_user()) && (! remote_user())) ? false : true); + $albums_visible = ((intval($a->data['user']['hidewall']) && (! local_user()) && (! remote_user())) ? false : true); if($albums_visible) { $o .= '<div id="side-bar-photos-albums" class="widget">'; $o .= '<h3>' . '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '">' . t('Photo Albums') . '</a></h3>'; - + $o .= '<ul>'; foreach($albums as $album) { @@ -57,7 +57,7 @@ function videos_init(&$a) { if((! strlen($album['album'])) || ($album['album'] === 'Contact Photos') || ($album['album'] === t('Contact Photos'))) continue; - $o .= '<li>' . '<a href="photos/' . $a->argv[1] . '/album/' . bin2hex($album['album']) . '" >' . $album['album'] . '</a></li>'; + $o .= '<li>' . '<a href="photos/' . $a->argv[1] . '/album/' . bin2hex($album['album']) . '" >' . $album['album'] . '</a></li>'; } $o .= '</ul>'; } @@ -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 } @@ -115,8 +182,8 @@ function videos_content(&$a) { notice( t('Public access denied.') . EOL); return; } - - + + require_once('include/bbcode.php'); require_once('include/security.php'); require_once('include/conversation.php'); @@ -131,7 +198,7 @@ function videos_content(&$a) { $_SESSION['video_return'] = $a->cmd; // - // Parse arguments + // Parse arguments // if($a->argc > 3) { @@ -233,7 +300,7 @@ function videos_content(&$a) { // tabs $_is_owner = (local_user() && (local_user() == $owner_uid)); - $o .= profile_tabs($a,$_is_owner, $a->data['user']['nickname']); + $o .= profile_tabs($a,$_is_owner, $a->data['user']['nickname']); // // dispatch request @@ -251,7 +318,7 @@ function videos_content(&$a) { return; // no albums for now // DELETED -- look at mod/photos.php if you want to implement - } + } if($datatype === 'video') { @@ -307,20 +374,21 @@ function videos_content(&$a) { 'name' => $name_e, 'alt' => t('View Album'), ), - + ); } } - - $tpl = get_markup_template('videos_recent.tpl'); + + $tpl = get_markup_template('videos_recent.tpl'); $o .= replace_macros($tpl, array( '$title' => t('Recent Videos'), '$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) )); - + $o .= paginate($a); return $o; } diff --git a/view/templates/video_top.tpl b/view/templates/video_top.tpl index 3a8680fd9d..207dd83f2f 100644 --- a/view/templates/video_top.tpl +++ b/view/templates/video_top.tpl @@ -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>