aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorFriendika <info@friendika.com>2011-06-15 20:43:39 -0700
committerFriendika <info@friendika.com>2011-06-15 20:43:39 -0700
commite5b54e74ba22b487f816c5a5d16758be34be785a (patch)
tree9dcfe11ddc57e95bb9e0e8aab9c320397f0db11f /include
parent7659f2a87ac5b1de55d0e9f26027fe4f1f05d14b (diff)
downloadvolse-hubzilla-e5b54e74ba22b487f816c5a5d16758be34be785a.tar.gz
volse-hubzilla-e5b54e74ba22b487f816c5a5d16758be34be785a.tar.bz2
volse-hubzilla-e5b54e74ba22b487f816c5a5d16758be34be785a.zip
delete selected items
Diffstat (limited to 'include')
-rw-r--r--include/conversation.php25
-rw-r--r--include/items.php126
-rw-r--r--include/main.js20
3 files changed, 142 insertions, 29 deletions
diff --git a/include/conversation.php b/include/conversation.php
index 9ffcbe157..0d3123831 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -114,6 +114,8 @@ function conversation(&$a, $items, $mode, $update) {
$noshare_tpl = get_markup_template('like_noshare.tpl');
$tpl = get_markup_template('wall_item.tpl');
$wallwall = get_markup_template('wallwall_item.tpl');
+ $droptpl = get_markup_template('wall_item_drop.tpl');
+ $fakedrop = get_markup_template('wall_fake_drop.tpl');
$alike = array();
$dlike = array();
@@ -126,7 +128,6 @@ function conversation(&$a, $items, $mode, $update) {
// - just loop through the items and format them minimally for display
$tpl = get_markup_template('search_item.tpl');
- $droptpl = get_markup_template('wall_fake_drop.tpl');
foreach($items as $item) {
@@ -171,14 +172,7 @@ function conversation(&$a, $items, $mode, $update) {
}
$drop = '';
- $dropping = false;
- if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
- $dropping = true;
-
- $drop = replace_macros((($dropping)? $droptpl : $fakedrop), array('$id' => $item['id'], '$delete' => t('Delete')));
-
- //
localize_item($item);
$drop = replace_macros($droptpl,array('$id' => $item['id']));
@@ -390,7 +384,16 @@ function conversation(&$a, $items, $mode, $update) {
? '<a class="editpost" href="' . $a->get_baseurl() . '/editpost/' . $item['id']
. '" title="' . t('Edit') . '"><img src="images/pencil.gif" /></a>'
: '');
- $drop = replace_macros(get_markup_template('wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
+
+
+ $drop = '';
+ $dropping = false;
+
+ if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
+ $dropping = true;
+
+ $drop = replace_macros((($dropping)? $droptpl : $fakedrop), array('$id' => $item['id'], '$delete' => t('Delete')));
+
$photo = $item['photo'];
$thumb = $item['thumb'];
@@ -477,6 +480,7 @@ function conversation(&$a, $items, $mode, $update) {
'$comment' => $comment
));
+
$arr = array('item' => $item, 'output' => $tmp_item);
call_hooks('display_item', $arr);
@@ -491,6 +495,9 @@ function conversation(&$a, $items, $mode, $update) {
if($blowhard_count >= 3)
$o .= '</div>';
+ if($dropping)
+ $o .= '<div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();"><div id="item-delete-selected-icon" class="icon drophide" title="' . t('Delete Selected Items') . '" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></div><div id="item-delete-selected-desc" >' . t('Delete Selected Items') . '</div></div><div id="item-delete-selected-end"></div>';
+
return $o;
}
diff --git a/include/items.php b/include/items.php
index dc177c468..a003b84bb 100644
--- a/include/items.php
+++ b/include/items.php
@@ -1772,3 +1772,129 @@ function item_expire($uid,$days) {
}
+
+function drop_items($items) {
+ $uid = 0;
+
+ if(count($items)) {
+ foreach($items as $item) {
+ $owner = drop_item($item,false);
+ if($owner && ! $uid)
+ $uid = $owner;
+ }
+ }
+
+ // multiple threads may have been deleted, send an expire notification
+
+ if($uid)
+ proc_run('php',"include/notifier.php","expire","$uid");
+}
+
+
+function drop_item($id,$interactive = true) {
+
+ $a = get_app();
+
+ // locate item to be deleted
+
+ $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
+ intval($id)
+ );
+
+ if(! count($r)) {
+ if(! $interactive)
+ return 0;
+ notice( t('Item not found.') . EOL);
+ goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
+ }
+
+ $item = $r[0];
+
+ $owner = $item['uid'];
+
+ // check if logged in user is either the author or owner of this item
+
+ if((local_user() == $item['uid']) || (remote_user() == $item['contact-id'])) {
+
+ // delete the item
+
+ $r = q("UPDATE `item` SET `deleted` = 1, `body` = '', `edited` = '%s', `changed` = '%s' WHERE `id` = %d LIMIT 1",
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($item['id'])
+ );
+
+ // If item is a link to a photo resource, nuke all the associated photos
+ // (visitors will not have photo resources)
+ // This only applies to photos uploaded from the photos page. Photos inserted into a post do not
+ // generate a resource-id and therefore aren't intimately linked to the item.
+
+ if(strlen($item['resource-id'])) {
+ q("DELETE FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d ",
+ dbesc($item['resource-id']),
+ intval($item['uid'])
+ );
+ // ignore the result
+ }
+
+ // If item is a link to an event, nuke the event record.
+
+ if(intval($item['event-id'])) {
+ q("DELETE FROM `event` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($item['event-id']),
+ intval($item['uid'])
+ );
+ // ignore the result
+ }
+
+
+ // If it's the parent of a comment thread, kill all the kids
+
+ if($item['uri'] == $item['parent-uri']) {
+ $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = ''
+ WHERE `parent-uri` = '%s' AND `uid` = %d ",
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($item['parent-uri']),
+ intval($item['uid'])
+ );
+ // ignore the result
+ }
+ else {
+ // ensure that last-child is set in case the comment that had it just got wiped.
+ q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d ",
+ dbesc(datetime_convert()),
+ dbesc($item['parent-uri']),
+ intval($item['uid'])
+ );
+ // who is the last child now?
+ $r = q("SELECT `id` FROM `item` WHERE `parent-uri` = '%s' AND `type` != 'activity' AND `deleted` = 0 AND `uid` = %d ORDER BY `edited` DESC LIMIT 1",
+ dbesc($item['parent-uri']),
+ intval($item['uid'])
+ );
+ if(count($r)) {
+ q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
+ intval($r[0]['id'])
+ );
+ }
+ }
+ $drop_id = intval($item['id']);
+
+ // send the notification upstream/downstream as the case may be
+
+ if(! $interactive)
+ return $owner;
+
+ proc_run('php',"include/notifier.php","drop","$drop_id");
+ goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
+ //NOTREACHED
+ }
+ else {
+ if(! $interactive)
+ return 0;
+ notice( t('Permission denied.') . EOL);
+ goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
+ //NOTREACHED
+ }
+
+} \ No newline at end of file
diff --git a/include/main.js b/include/main.js
index 34045f57f..18cb55328 100644
--- a/include/main.js
+++ b/include/main.js
@@ -47,26 +47,6 @@
$('#pause').html('');
}
}
-// // F8 - show/hide language selector
-// if(event.keyCode == '119') {
-// if(langSelect) {
-// langSelect = false;
-// $('#language-selector').hide();
-// }
-// else {
-// langSelect = true;
-// $('#language-selector').show();
-// }
-// }
-//
-// this is shift-home on FF, but $ on IE, disabling until I figure out why the diff.
-// update: incompatible usage of onKeyDown vs onKeyPress
-// if(event.keyCode == '36' && event.shiftKey == true) {
-// if(homebase !== undefined) {
-// event.preventDefault();
-// document.location = homebase;
-// }
-// }
});
});