diff --git a/include/items.php b/include/items.php
index 5a0aa9ed5..c5de29a6d 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 0f29e631b..607c900eb 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 .= '
';
$o .= '
';
-
+
$o .= '
';
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 .= '- ' . '' . $album['album'] . '
';
+ $o .= '- ' . '' . $album['album'] . '
';
}
$o .= '
';
}
@@ -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 "
"; 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 3a8680fd9..207dd83f2 100644
--- a/view/templates/video_top.tpl
+++ b/view/templates/video_top.tpl
@@ -9,5 +9,11 @@
{{**}}
+ {{if $delete_url }}
+
+ {{/if}}