aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2012-02-20 19:50:05 -0800
committerfriendica <info@friendica.com>2012-02-20 19:50:05 -0800
commitb821399f001cd4082707ba9fb6df9c419e0b8e5e (patch)
tree1e858c850055542794c3f99d21517fdf897c5881
parent6edd6d8ae1e3a6b64fa11ae6a4cc79965084b0d7 (diff)
downloadvolse-hubzilla-b821399f001cd4082707ba9fb6df9c419e0b8e5e.tar.gz
volse-hubzilla-b821399f001cd4082707ba9fb6df9c419e0b8e5e.tar.bz2
volse-hubzilla-b821399f001cd4082707ba9fb6df9c419e0b8e5e.zip
email notify now redirected through mod_notify, weirdness in local deliver caused by community page changes
-rwxr-xr-xboot.php2
-rwxr-xr-xdatabase.sql2
-rwxr-xr-xinclude/enotify.php28
-rwxr-xr-xinclude/items.php12
-rw-r--r--mod/notify.php29
-rwxr-xr-xupdate.php6
6 files changed, 72 insertions, 7 deletions
diff --git a/boot.php b/boot.php
index 2c9bb68d1..a988e826d 100755
--- a/boot.php
+++ b/boot.php
@@ -11,7 +11,7 @@ require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '2.3.1258' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
-define ( 'DB_UPDATE_VERSION', 1122 );
+define ( 'DB_UPDATE_VERSION', 1123 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
diff --git a/database.sql b/database.sql
index 32d7cf40b..e051cdaac 100755
--- a/database.sql
+++ b/database.sql
@@ -741,6 +741,7 @@ CREATE TABLE IF NOT EXISTS `conv` (
CREATE TABLE IF NOT EXISTS `notify` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`hash` CHAR( 64 ) NOT NULL,
`type` INT( 11 ) NOT NULL ,
`name` CHAR( 255 ) NOT NULL ,
`url` CHAR( 255 ) NOT NULL ,
@@ -752,6 +753,7 @@ CREATE TABLE IF NOT EXISTS `notify` (
`seen` TINYINT( 1 ) NOT NULL DEFAULT '0',
`verb` CHAR( 255 ) NOT NULL,
`otype` CHAR( 16 ) NOT NULL,
+INDEX ( `hash` ),
INDEX ( `type` ),
INDEX ( `uid` ),
INDEX ( `seen` ),
diff --git a/include/enotify.php b/include/enotify.php
index b0967cff1..c19cc3a9c 100755
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -116,10 +116,23 @@ function notification($params) {
require_once('include/html2bbcode.php');
+ do {
+ $dups = false;
+ $hash = random_string();
+ $r = q("SELECT `id` FROM `notify` WHERE `hash` = '%s' LIMIT 1",
+ dbesc($hash));
+ if(count($r))
+ $dups = true;
+ } while($dups == true);
+
+
+
+
// create notification entry in DB
- $r = q("insert into notify (name,url,photo,date,msg,uid,link,type,verb,otype)
- values('%s','%s','%s','%s','%s',%d,'%s',%d,'%s','%s')",
+ $r = q("insert into notify (hash,name,url,photo,date,msg,uid,link,type,verb,otype)
+ values('%s','%s','%s','%s','%s','%s',%d,'%s',%d,'%s','%s')",
+ dbesc($hash),
dbesc($params['source_name']),
dbesc($params['source_link']),
dbesc($params['source_photo']),
@@ -132,6 +145,17 @@ function notification($params) {
dbesc($params['otype'])
);
+ $r = q("select id from notify where hash = '%s' and uid = %d limit 1",
+ dbesc($hash),
+ intval($params['uid'])
+ );
+ if($r)
+ $notify_id = $r[0]['id'];
+ else
+ return;
+
+ $itemlink = $a->get_baseurl() . '/notify/view/' . $notify_id;
+
// send email notification if notification preferences permit
require_once('bbcode.php');
diff --git a/include/items.php b/include/items.php
index f87a92334..5beccfbe7 100755
--- a/include/items.php
+++ b/include/items.php
@@ -2040,7 +2040,6 @@ function local_delivery($importer,$data) {
}
if($is_reply) {
-
$community = false;
if($importer['page-flags'] == PAGE_COMMUNITY) {
@@ -2054,7 +2053,9 @@ function local_delivery($importer,$data) {
// was the top-level post for this reply written by somebody on this site?
// Specifically, the recipient?
- $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`,
+ $is_a_remote_comment = false;
+
+ $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,
`contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item`
LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uri` = '%s' AND `item`.`parent-uri` = '%s'
@@ -2065,9 +2066,13 @@ function local_delivery($importer,$data) {
dbesc($parent_uri),
intval($importer['importer_uid'])
);
+ if($r && count($r))
+ $is_a_remote_comment = true;
- if($r && count($r)) {
+ if(($community) && (! $r[0]['forum_mode']))
+ $is_a_remote_comment = false;
+ if($is_a_remote_comment) {
logger('local_delivery: received remote comment');
$is_like = false;
// remote reply to our post. Import and then notify everybody else.
@@ -2188,6 +2193,7 @@ function local_delivery($importer,$data) {
}
}
+
return 0;
// NOTREACHED
}
diff --git a/mod/notify.php b/mod/notify.php
new file mode 100644
index 000000000..d1e5022bc
--- /dev/null
+++ b/mod/notify.php
@@ -0,0 +1,29 @@
+<?php
+
+
+function notify_init(&$a) {
+ if(! local_user())
+ return;
+
+ if($a->argc > 2 && $a->argv[1] === 'view' && intval($a->argv[2])) {
+ $r = q("select * from notify where id = %d and uid = %d limit 1",
+ intval($a->argv[2]),
+ intval(local_user())
+ );
+ if(count($r)) {
+ q("update notify set seen = 1 where id = %d and uid = %d limit 1",
+ intval($a->argv[2]),
+ intval(local_user())
+ );
+ goaway($r[0]['link']);
+ }
+
+ goaway($a->get_baseurl());
+ }
+}
+
+
+function notify_content(&$a) {
+ if(! local_user())
+ return login();
+} \ No newline at end of file
diff --git a/update.php b/update.php
index 24138450a..16c1d7848 100755
--- a/update.php
+++ b/update.php
@@ -1,6 +1,6 @@
<?php
-define( 'UPDATE_VERSION' , 1122 );
+define( 'UPDATE_VERSION' , 1123 );
/**
*
@@ -1065,3 +1065,7 @@ function update_1121() {
}
+function update_1122() {
+q("ALTER TABLE `notify` ADD `hash` CHAR( 64 ) NOT NULL AFTER `id` ,
+ADD INDEX ( `hash` ) ");
+} \ No newline at end of file