]> git.mxchange.org Git - friendica.git/blobdiff - include/delivery.php
Let an item be accssible via the GUI (additionally to uid and item id)
[friendica.git] / include / delivery.php
index 14226e4fba8a97b3473f12e91a68060ee60af307..421e205e345ba85411230b24bec7ea8e8a9c1225 100644 (file)
@@ -3,7 +3,7 @@ require_once("boot.php");
 require_once('include/queue_fn.php');
 require_once('include/html2plain.php');
 
-function delivery_run($argv, $argc){
+function delivery_run(&$argv, &$argc){
        global $a, $db;
 
        if(is_null($a)){
@@ -12,13 +12,13 @@ function delivery_run($argv, $argc){
 
        if(is_null($db)) {
                @include(".htconfig.php");
-               require_once("dba.php");
+               require_once("include/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");
+       require_once("include/session.php");
+       require_once("include/datetime.php");
        require_once('include/items.php');
        require_once('include/bbcode.php');
        require_once('include/diaspora.php');
@@ -52,7 +52,7 @@ function delivery_run($argv, $argc){
                );
                if(! count($r)) {
                        continue;
-               }       
+               }
 
                $maxsysload = intval(get_config('system','maxloadavg'));
                if($maxsysload < 1)
@@ -67,7 +67,7 @@ function delivery_run($argv, $argc){
 
                // It's ours to deliver. Remove it from the queue.
 
-               q("delete from deliverq where cmd = '%s' and item = %d and contact = %d limit 1",
+               q("delete from deliverq where cmd = '%s' and item = %d and contact = %d",
                        dbesc($cmd),
                        dbesc($item_id),
                        dbesc($contact_id)
@@ -157,7 +157,7 @@ function delivery_run($argv, $argc){
                $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, 
                        `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, 
                        `user`.`page-flags`, `user`.`prvnets`
-                       FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` 
+                       FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` 
                        WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
                        intval($uid)
                );
@@ -319,11 +319,11 @@ function delivery_run($argv, $argc){
                                                `contact`.`name` as `senderName`,
                                                `user`.* 
                                                FROM `contact` 
-                                               LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` 
+                                               INNER JOIN `user` ON `contact`.`uid` = `user`.`uid` 
                                                WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                                                AND `contact`.`network` = '%s' AND `user`.`nickname` = '%s'
                                                $sql_extra
-                                               AND `user`.`account_expired` = 0 LIMIT 1",
+                                               AND `user`.`account_expired` = 0 AND `user`.`account_removed` = 0 LIMIT 1",
                                                dbesc(NETWORK_DFRN),
                                                dbesc($nickname)
                                        );
@@ -331,7 +331,7 @@ function delivery_run($argv, $argc){
                                        if($x && count($x)) {
                                                $write_flag = ((($x[0]['rel']) && ($x[0]['rel'] != CONTACT_IS_SHARING)) ? true : false);
                                                if((($owner['page-flags'] == PAGE_COMMUNITY) || ($write_flag)) && (! $x[0]['writable'])) {
-                                                       q("update contact set writable = 1 where id = %d limit 1",
+                                                       q("update contact set writable = 1 where id = %d",
                                                                intval($x[0]['id'])
                                                        );
                                                        $x[0]['writable'] = 1;
@@ -366,7 +366,6 @@ function delivery_run($argv, $argc){
                                break;
 
                        case NETWORK_OSTATUS :
-
                                // Do not send to otatus if we are not configured to send to public networks
                                if($owner['prvnets'])
                                        break;
@@ -386,7 +385,7 @@ function delivery_run($argv, $argc){
                                                // private emails may be in included in public conversations. Filter them.
                                                if(($public_message) && $item['private'] == 1)
                                                        continue;
-       
+
                                                $item_contact = get_item_contact($item,$icontacts);
                                                if(! $item_contact)
                                                        continue;
@@ -430,7 +429,7 @@ function delivery_run($argv, $argc){
                                        if($cmd === 'wall-new') 
                                                $it = $items[0];
                                        else {
-                                               $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", 
+                                               $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
                                                        intval($argv[2]),
                                                        intval($uid)
                                                );
@@ -439,14 +438,14 @@ function delivery_run($argv, $argc){
                                        }
                                        if(! $it)
                                                break;
-                                       
+
 
                                        $local_user = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
                                                intval($uid)
                                        );
                                        if(! count($local_user))
                                                break;
-                                       
+
                                        $reply_to = '';
                                        $r1 = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
                                                intval($uid)
@@ -458,18 +457,18 @@ function delivery_run($argv, $argc){
 
                                        // only expose our real email address to true friends
 
-                                       if(($contact['rel'] == CONTACT_IS_FRIEND) && (! $contact['blocked']))
-                                               $headers  = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . $local_user[0]['email'] . '>' . "\n";
-                                       else
+                                       if(($contact['rel'] == CONTACT_IS_FRIEND) && (! $contact['blocked'])) {
+                                               if($reply_to) {
+                                                       $headers  = 'From: '.email_header_encode($local_user[0]['username'],'UTF-8').' <'.$reply_to.'>'."\n";
+                                                       $headers .= 'Sender: '.$local_user[0]['email']."\n";
+                                               } else
+                                                       $headers  = 'From: '.email_header_encode($local_user[0]['username'],'UTF-8').' <'.$local_user[0]['email'].'>'."\n";
+                                       } else
                                                $headers  = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . t('noreply') . '@' . $a->get_hostname() . '>' . "\n";
 
-                                       if($reply_to)
-                                               $headers .= 'Reply-to: ' . $reply_to . "\n";
+                                       //if($reply_to)
+                                       //      $headers .= 'Reply-to: ' . $reply_to . "\n";
 
-                                       // for testing purposes: Collect exported mails
-                                       // $file = tempnam("/tmp/friendica/", "mail-out-");
-                                       // file_put_contents($file, json_encode($it));
-       
                                        $headers .= 'Message-Id: <' . iri2msgid($it['uri']). '>' . "\n";
 
                                        //logger("Mail: uri: ".$it['uri']." parent-uri ".$it['parent-uri'], LOGGER_DEBUG);
@@ -477,13 +476,28 @@ function delivery_run($argv, $argc){
                                        //logger("Mail: Data: ".print_r($it, true), LOGGER_DATA);
 
                                        if($it['uri'] !== $it['parent-uri']) {
-                                               $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n";
-                                               if(!strlen($it['title'])) {
-                                                       $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
-                                                               dbesc($it['parent-uri']));
+                                               $headers .= "References: <".iri2msgid($it["parent-uri"]).">";
+
+                                               // If Threading is enabled, write down the correct parent
+                                               if (($it["thr-parent"] != "") and ($it["thr-parent"] != $it["parent-uri"]))
+                                                       $headers .= " <".iri2msgid($it["thr-parent"]).">";
+                                               $headers .= "\n";
+
+                                               if(!$it['title']) {
+                                                       $r = q("SELECT `title` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
+                                                               dbesc($it['parent-uri']),
+                                                               intval($uid));
 
                                                        if(count($r) AND ($r[0]['title'] != ''))
                                                                $subject = $r[0]['title'];
+                                                       else {
+                                                               $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d LIMIT 1",
+                                                                       dbesc($it['parent-uri']),
+                                                                       intval($uid));
+
+                                                               if(count($r) AND ($r[0]['title'] != ''))
+                                                                       $subject = $r[0]['title'];
+                                                       }
                                                }
                                                if(strncasecmp($subject,'RE:',3))
                                                        $subject = 'Re: '.$subject;
@@ -523,7 +537,7 @@ function delivery_run($argv, $argc){
 
                                        diaspora_send_relay($target_item,$owner,$contact,$public_message);
                                        break;
-                               }               
+                               }
                                elseif(($top_level) && (! $walltowall)) {
                                        // currently no workable solution for sending walltowall
                                        logger('delivery: diaspora status: ' . $loc);
@@ -539,6 +553,9 @@ function delivery_run($argv, $argc){
                        case NETWORK_FACEBOOK :
                                if(get_config('system','dfrn_only'))
                                        break;
+                       case NETWORK_PUMPIO :
+                               if(get_config('system','dfrn_only'))
+                                       break;
                        default:
                                break;
                }