aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/items.php20
-rw-r--r--include/notifier.php43
-rw-r--r--mod/dfrn_notify.php80
-rw-r--r--mod/item.php30
-rw-r--r--mod/lockview.php17
-rw-r--r--mod/photos.php10
-rw-r--r--view/it/profile_photo.tpl6
-rw-r--r--view/it/strings.php2
8 files changed, 130 insertions, 78 deletions
diff --git a/include/items.php b/include/items.php
index 45d8b62c0..359378ff7 100644
--- a/include/items.php
+++ b/include/items.php
@@ -688,11 +688,12 @@ function item_store($arr,$force_parent = false) {
$arr['parent-uri'] = $r[0]['parent-uri'];
}
- $parent_id = $r[0]['id'];
- $allow_cid = $r[0]['allow_cid'];
- $allow_gid = $r[0]['allow_gid'];
- $deny_cid = $r[0]['deny_cid'];
- $deny_gid = $r[0]['deny_gid'];
+ $parent_id = $r[0]['id'];
+ $parent_deleted = $r[0]['deleted'];
+ $allow_cid = $r[0]['allow_cid'];
+ $allow_gid = $r[0]['allow_gid'];
+ $deny_cid = $r[0]['deny_cid'];
+ $deny_gid = $r[0]['deny_gid'];
}
else {
@@ -739,10 +740,10 @@ function item_store($arr,$force_parent = false) {
return 0;
}
- if($arr['parent-uri'] === $arr['uri'])
+ if((! $parent_id) || ($arr['parent-uri'] === $arr['uri']))
$parent_id = $current_post;
-
- if(strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid))
+
+ if(strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid))
$private = 1;
else
$private = $arr['private'];
@@ -750,13 +751,14 @@ function item_store($arr,$force_parent = false) {
// Set parent id - and also make sure to inherit the parent's ACL's.
$r = q("UPDATE `item` SET `parent` = %d, `allow_cid` = '%s', `allow_gid` = '%s',
- `deny_cid` = '%s', `deny_gid` = '%s', `private` = %d WHERE `id` = %d LIMIT 1",
+ `deny_cid` = '%s', `deny_gid` = '%s', `private` = %d, `deleted` = %d WHERE `id` = %d LIMIT 1",
intval($parent_id),
dbesc($allow_cid),
dbesc($allow_gid),
dbesc($deny_cid),
dbesc($deny_gid),
intval($private),
+ intval($parent_deleted),
intval($current_post)
);
diff --git a/include/notifier.php b/include/notifier.php
index 8442349cf..a71da853d 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -2,18 +2,18 @@
require_once("boot.php");
function notifier_run($argv, $argc){
- global $a, $db;
+ global $a, $db;
- if(is_null($a)){
- $a = new App;
- }
+ if(is_null($a)){
+ $a = new App;
+ }
- if(is_null($db)){
- @include(".htconfig.php");
- require_once("dba.php");
- $db = new dba($db_host, $db_user, $db_pass, $db_data);
- unset($db_host, $db_user, $db_pass, $db_data);
- };
+ if(is_null($db)) {
+ @include(".htconfig.php");
+ require_once("dba.php");
+ $db = new dba($db_host, $db_user, $db_pass, $db_data);
+ unset($db_host, $db_user, $db_pass, $db_data);
+ }
require_once("session.php");
require_once("datetime.php");
@@ -62,11 +62,12 @@ function notifier_run($argv, $argc){
$r = q("SELECT `parent`, `uid`, `edited` FROM `item` WHERE `id` = %d LIMIT 1",
intval($item_id)
);
- if(! count($r)){
+
+ if((! count($r)) || (! intval($r[0]['parent']))) {
return;
}
-
- $parent_id = $r[0]['parent'];
+
+ $parent_id = intval($r[0]['parent']);
$uid = $r[0]['uid'];
$updated = $r[0]['edited'];
@@ -77,6 +78,13 @@ function notifier_run($argv, $argc){
if(! count($items)){
return;
}
+
+ // avoid race condition with deleting entries
+
+ if($items[0]['deleted']) {
+ foreach($items as $item)
+ $item['deleted'] = 1;
+
}
$r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, `user`.`page-flags`
@@ -122,8 +130,8 @@ function notifier_run($argv, $argc){
$allow_people = expand_acl($parent['allow_cid']);
$allow_groups = expand_groups(expand_acl($parent['allow_gid']));
- $deny_people = expand_acl($parent['deny_cid']);
- $deny_groups = expand_groups(expand_acl($parent['deny_gid']));
+ $deny_people = expand_acl($parent['deny_cid']);
+ $deny_groups = expand_groups(expand_acl($parent['deny_gid']));
$conversants = array();
@@ -220,6 +228,8 @@ function notifier_run($argv, $argc){
else {
if($followup) {
foreach($items as $item) { // there is only one item
+ if(! $item['parent'])
+ continue;
if($item['id'] == $item_id) {
logger('notifier: followup: item: ' . print_r($item,true), LOGGER_DATA);
$slap = atom_entry($item,'html',$owner,$owner,false);
@@ -229,6 +239,9 @@ function notifier_run($argv, $argc){
}
else {
foreach($items as $item) {
+ if(! $item['parent'])
+ continue;
+
$contact = get_item_contact($item,$contacts);
if(! $contact)
continue;
diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php
index 7f023ef22..142d13284 100644
--- a/mod/dfrn_notify.php
+++ b/mod/dfrn_notify.php
@@ -289,54 +289,58 @@ function dfrn_notify_post(&$a) {
$datarray['last-child'] = 0;
}
$posted_id = item_store($datarray);
+ $parent = 0;
if($posted_id) {
+ $r = q("SELECT `parent` FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($posted_id),
+ intval($importer['importer_uid'])
+ );
+ if(count($r))
+ $parent = $r[0]['parent'];
+
if(! $is_like) {
- $r = q("SELECT `parent` FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($posted_id),
- intval($importer['importer_uid'])
+ $r1 = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `uid` = %d AND `parent` = %d",
+ dbesc(datetime_convert()),
+ intval($importer['importer_uid']),
+ intval($r[0]['parent'])
);
- if(count($r)) {
- $r1 = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `uid` = %d AND `parent` = %d",
- dbesc(datetime_convert()),
- intval($importer['importer_uid']),
- intval($r[0]['parent'])
- );
- }
+
$r2 = q("UPDATE `item` SET `last-child` = 1, `changed` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1",
- dbesc(datetime_convert()),
- intval($importer['importer_uid']),
- intval($posted_id)
+ dbesc(datetime_convert()),
+ intval($importer['importer_uid']),
+ intval($posted_id)
);
}
- $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
+ if($posted_id && $parent) {
+
+ $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
- //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"comment-import\" \"$posted_id\" &", array(),$foo));
- proc_run($php_path,"include/notifier.php","comment-import","$posted_id");
+ proc_run($php_path,"include/notifier.php","comment-import","$posted_id");
- if((! $is_like) && ($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) {
- require_once('bbcode.php');
- $from = stripslashes($datarray['author-name']);
- $tpl = load_view_file('view/cmnt_received_eml.tpl');
- $email_tpl = replace_macros($tpl, array(
- '$sitename' => $a->config['sitename'],
- '$siteurl' => $a->get_baseurl(),
- '$username' => $importer['username'],
- '$email' => $importer['email'],
- '$display' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id,
- '$from' => $from,
- '$body' => strip_tags(bbcode(stripslashes($datarray['body'])))
- ));
-
- $res = mail($importer['email'], $from . t(' commented on an item at ') . $a->config['sitename'],
- $email_tpl, "From: " . t('Administrator') . '@' . $a->get_hostname() );
+ if((! $is_like) && ($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) {
+ require_once('bbcode.php');
+ $from = stripslashes($datarray['author-name']);
+ $tpl = load_view_file('view/cmnt_received_eml.tpl');
+ $email_tpl = replace_macros($tpl, array(
+ '$sitename' => $a->config['sitename'],
+ '$siteurl' => $a->get_baseurl(),
+ '$username' => $importer['username'],
+ '$email' => $importer['email'],
+ '$display' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id,
+ '$from' => $from,
+ '$body' => strip_tags(bbcode(stripslashes($datarray['body'])))
+ ));
+
+ $res = mail($importer['email'], $from . t(' commented on an item at ') . $a->config['sitename'],
+ $email_tpl, "From: " . t('Administrator') . '@' . $a->get_hostname() );
+ }
}
- }
-
- xml_status(0);
- // NOTREACHED
+ xml_status(0);
+ // NOTREACHED
+ }
}
else {
// regular comment that is part of this total conversation. Have we seen it? If not, import it.
@@ -375,13 +379,13 @@ function dfrn_notify_post(&$a) {
if(($datarray['type'] != 'activity') && ($importer['notify-flags'] & NOTIFY_COMMENT)) {
- $myconv = q("SELECT `author-link` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d",
+ $myconv = q("SELECT `author-link` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ",
dbesc($parent_uri),
intval($importer['importer_uid'])
);
if(count($myconv)) {
foreach($myconv as $conv) {
- if($conv['author-link'] != $importer['url'])
+ if(! link_compare($conv['author-link'],$importer['url']))
continue;
require_once('bbcode.php');
$from = stripslashes($datarray['author-name']);
diff --git a/mod/item.php b/mod/item.php
index 7125ae1f4..38ef580af 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -1,11 +1,17 @@
<?php
-// This is the POST destination for most all locally posted
-// text stuff. This function handles status, wall-to-wall status,
-// local comments, and remote coments - that are posted on this site
-// (as opposed to being delivered in a feed).
-// All of these become an "item" which is our basic unit of
-// information.
+/**
+ *
+ * This is the POST destination for most all locally posted
+ * text stuff. This function handles status, wall-to-wall status,
+ * local comments, and remote coments - that are posted on this site
+ * (as opposed to being delivered in a feed).
+ * All of these become an "item" which is our basic unit of
+ * information.
+ * Posts that originate externally or do not fall into the above
+ * posting categories go through item_store() instead of this function.
+ *
+ */
function item_post(&$a) {
@@ -417,6 +423,12 @@ function item_post(&$a) {
);
}
}
+ else {
+ logger('mod_item: unable to retrieve post that was just stored.');
+ notify( t('System error. Post not saved.'));
+ goaway($a->get_baseurl() . "/" . $_POST['return'] );
+ // NOTREACHED
+ }
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
@@ -454,10 +466,8 @@ function item_post(&$a) {
}
}
-
-
goaway($a->get_baseurl() . "/" . $_POST['return'] );
- return; // NOTREACHED
+ // NOTREACHED
}
@@ -551,7 +561,7 @@ function item_content(&$a) {
proc_run($php_path,"include/notifier.php","drop","$drop_id");
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
- return; //NOTREACHED
+ //NOTREACHED
}
else {
notice( t('Permission denied.') . EOL);
diff --git a/mod/lockview.php b/mod/lockview.php
index a886effeb..9e64e2608 100644
--- a/mod/lockview.php
+++ b/mod/lockview.php
@@ -2,12 +2,23 @@
function lockview_content(&$a) {
-
- $item_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
+
+ $type = (($a->argc > 1) ? $a->argv[1] : 0);
+ if (is_numeric($type)) {
+ $item_id = intval($type);
+ $type='item';
+ } else {
+ $item_id = (($a->argc > 2) ? intval($a->argv[2]) : 0);
+ }
+
if(! $item_id)
killme();
- $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
+ if (!in_array($type, array('item','photo','event')))
+ killme();
+
+ $r = q("SELECT * FROM `%s` WHERE `id` = %d LIMIT 1",
+ dbesc($type),
intval($item_id)
);
if(! count($r))
diff --git a/mod/photos.php b/mod/photos.php
index f892e2ce2..52cc66eae 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -913,7 +913,15 @@ function photos_content(&$a) {
$o .= '<h3>' . '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']) . '">' . $ph[0]['album'] . '</a></h3>';
if($can_post && ($ph[0]['uid'] == $owner_uid)) {
- $o .= '<div id="photo-edit-link-wrap" ><a id="photo-edit-link" href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit' . '">' . t('Edit photo') . '</a></div>';
+ $o .= '<div id="photo-edit-link-wrap" ><a id="photo-edit-link" href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit' . '">' . t('Edit photo') . '</a>';
+
+ // lock
+ $o .= ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid'])
+ || strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid'])) )
+ ? ' - <img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,\'photo/' . $ph[0]['id'] . '\');" />'
+ : '');
+
+ $o .= '</div>';
}
diff --git a/view/it/profile_photo.tpl b/view/it/profile_photo.tpl
index d941743d4..4d77e87cf 100644
--- a/view/it/profile_photo.tpl
+++ b/view/it/profile_photo.tpl
@@ -1,4 +1,4 @@
-<h1>Upload Profile Photo</h1>
+<h1>Carica foto del profilo</h1>
<form enctype="multipart/form-data" action="profile_photo" method="post">
@@ -12,3 +12,7 @@
</div>
</form>
+
+<div id="profile-photo-link-select-wrapper">
+o <a href='photos/$user'>seleziona una foto da un album</a>
+</div> \ No newline at end of file
diff --git a/view/it/strings.php b/view/it/strings.php
index 6ae9285ad..2c429cc8a 100644
--- a/view/it/strings.php
+++ b/view/it/strings.php
@@ -270,7 +270,7 @@ $a->strings['Edit photo'] = 'Modifica foto';
$a->strings['View Full Size'] = 'Vedi dimensione intera';
$a->strings['Tags: '] = 'Tag: ';
$a->strings['[Remove any tag]'] = '[Rimuovi tutti i tag]';
-$a->strings['New album name'] = 'Nome nuovo album';
+$a->strings['New album name'] = 'Nuovo nome album';
$a->strings['Caption'] = 'Didascalia';
$a->strings['Add a Tag'] = 'Aggiungi un tag';
$a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Esempio: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping';