]> git.mxchange.org Git - friendica.git/commitdiff
Database stuff. New table "thread". Changing "left join" to "inner join", removing...
authorMichael Vogel <icarus@dabo.de>
Sun, 9 Mar 2014 08:19:14 +0000 (09:19 +0100)
committerMichael Vogel <icarus@dabo.de>
Sun, 9 Mar 2014 08:19:14 +0000 (09:19 +0100)
33 files changed:
boot.php
database.sql
include/api.php
include/dba.php
include/delivery.php
include/diaspora.php
include/follow.php
include/group.php
include/items.php
include/notifier.php
include/onepoll.php
include/poller.php
include/profile_update.php
include/queue.php
include/queue_fn.php
include/security.php
include/socgraph.php
include/tags.php
include/user.php
mod/community.php
mod/contacts.php
mod/content.php
mod/display.php
mod/item.php
mod/network.php
mod/photos.php
mod/profile.php
mod/profiles.php
mod/pubsub.php
mod/search.php
mod/share.php
mod/wall_upload.php
update.php

index a784b37b05b897001f9e2f2c73f2342922d94d23..55318e1ec563a5364ad6ad47e771ff5ee12dce86 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -14,7 +14,7 @@ require_once('include/features.php');
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_VERSION',      '3.2.1748' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1169      );
+define ( 'DB_UPDATE_VERSION',      1170      );
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
 
@@ -739,7 +739,7 @@ if(! class_exists('App')) {
                        if($this->cached_profile_picdate[$common_filename]){
                                $this->cached_profile_image[$avatar_image] = $avatar_image . $this->cached_profile_picdate[$common_filename];
                        } else {
-                               $r = q("SELECT `contact`.`avatar-date` AS picdate FROM `contact` WHERE `contact`.`thumb` like \"%%/%s\"",
+                               $r = q("SELECT `contact`.`avatar-date` AS picdate FROM `contact` WHERE `contact`.`thumb` like '%%/%s'",
                                        $common_filename);
                                if(! count($r)){
                                        $this->cached_profile_image[$avatar_image] = $avatar_image;
@@ -1328,7 +1328,7 @@ if(! function_exists('profile_load')) {
                if($profile) {
                        $profile_int = intval($profile);
                        $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `user`.* FROM `profile`
-                                       left join `contact` on `contact`.`uid` = `profile`.`uid` LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
+                                       INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
                                        WHERE `user`.`nickname` = '%s' AND `profile`.`id` = %d and `contact`.`self` = 1 LIMIT 1",
                                        dbesc($nickname),
                                        intval($profile_int)
@@ -1336,7 +1336,7 @@ if(! function_exists('profile_load')) {
                }
                if((! $r) && (!  count($r))) {
                        $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `user`.* FROM `profile`
-                                       left join `contact` on `contact`.`uid` = `profile`.`uid` LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
+                                       INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
                                        WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` = 1 and `contact`.`self` = 1 LIMIT 1",
                                        dbesc($nickname)
                        );
@@ -1591,7 +1591,7 @@ if(! function_exists('get_birthdays')) {
                $bd_short = t('F d');
 
                $r = q("SELECT `event`.*, `event`.`id` AS `eid`, `contact`.* FROM `event`
-                               LEFT JOIN `contact` ON `contact`.`id` = `event`.`cid`
+                               INNER JOIN `contact` ON `contact`.`id` = `event`.`cid`
                                WHERE `event`.`uid` = %d AND `type` = 'birthday' AND `start` < '%s' AND `finish` > '%s'
                                ORDER BY `start` ASC ",
                                intval(local_user()),
index 92805ef001cc0f0895c7586784c115ba8c004310..8480051752ba9325e9e488b04a0f9b72686c1b40 100644 (file)
@@ -1192,3 +1192,46 @@ CREATE TABLE IF NOT EXISTS `unique_contacts` (
   PRIMARY KEY (`id`),
   KEY `url` (`url`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `thread`
+--
+
+CREATE TABLE IF NOT EXISTS `thread` (
+  `iid` int(10) unsigned NOT NULL DEFAULT '0',
+  `uid` int(10) unsigned NOT NULL DEFAULT '0',
+  `contact-id` int(10) unsigned NOT NULL DEFAULT '0',
+  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `wall` tinyint(1) NOT NULL DEFAULT '0',
+  `private` tinyint(1) NOT NULL DEFAULT '0',
+  `pubmail` tinyint(1) NOT NULL DEFAULT '0',
+  `moderated` tinyint(1) NOT NULL DEFAULT '0',
+  `visible` tinyint(1) NOT NULL DEFAULT '0',
+  `spam` tinyint(1) NOT NULL DEFAULT '0',
+  `starred` tinyint(1) NOT NULL DEFAULT '0',
+  `bookmark` tinyint(1) NOT NULL DEFAULT '0',
+  `unseen` tinyint(1) NOT NULL DEFAULT '1',
+  `deleted` tinyint(1) NOT NULL DEFAULT '0',
+  `origin` tinyint(1) NOT NULL DEFAULT '0',
+  `forum_mode` tinyint(1) NOT NULL DEFAULT '0',
+  `mention` tinyint(1) NOT NULL DEFAULT '0',
+  `network` char(32) NOT NULL,
+  PRIMARY KEY (`iid`),
+  KEY `uid` (`uid`),
+  KEY `contact-id` (`contact-id`),
+  KEY `created` (`created`),
+  KEY `edited` (`edited`),
+  KEY `commented` (`commented`),
+  KEY `received` (`received`),
+  KEY `changed` (`changed`),
+  KEY `network` (`network`),
+  KEY `visible_deleted_moderated_private_wall_received` (`visible`,`deleted`,`moderated`,`private`,`wall`,`received`),
+  KEY `uid_visible_deleted_moderated_created` (`uid`,`visible`,`deleted`,`moderated`,`created`),
+  KEY `uid_visible_deleted_moderated_commented` (`uid`,`visible`,`deleted`,`moderated`,`commented`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
index d98ad970d59532a51a304fe6c63251758126a697..72a64f2ac4f7c0cb521a3188d154b19e10ecb998 100644 (file)
 
                $lastwall = q("SELECT `item`.*
                                FROM `item`, `contact`
-                               WHERE `item`.`contact-id` = %d
+                               WHERE `item`.`uid` = %d AND `item`.`contact-id` = %d
                                        AND ((`item`.`author-link` IN ('%s', '%s')) OR (`item`.`owner-link` IN ('%s', '%s')))
                                        AND `contact`.`id`=`item`.`contact-id`
                                        AND `type`!='activity'
                                        AND `item`.`allow_cid`='' AND `item`.`allow_gid`='' AND `item`.`deny_cid`='' AND `item`.`deny_gid`=''
                                ORDER BY `created` DESC
                                LIMIT 1",
+                               intval(api_user()),
                                intval($user_info['cid']),
                                dbesc($user_info['url']),
                                dbesc(normalise_link($user_info['url'])),
                        `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
                        `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
                        `user`.`nickname`, `user`.`hidewall`
-                       FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                       LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
+                       FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                       INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
                        WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
                        AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
                        AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
index 293cce5780c018f08b3256c55e374a461466add8..b89f28c599bd7d90b411d292c0b34e00dce20a0a 100644 (file)
@@ -18,6 +18,7 @@ class dba {
 
        private $debug = 0;
        private $db;
+       private $result;
        public  $mysqli = true;
        public  $connected = false;
        public  $error = false;
@@ -75,7 +76,7 @@ class dba {
                return $this->db;
        }
 
-       public function q($sql) {
+       public function q($sql, $onlyquery = false) {
                global $a;
 
                if((! $this->db) || (! $this->connected))
@@ -154,6 +155,11 @@ class dba {
                if(($result === true) || ($result === false))
                        return $result;
 
+               if ($onlyquery) {
+                       $this->result = $result;
+                       return true;
+               }
+
                $r = array();
                if($this->mysqli) {
                        if($result->num_rows) {
@@ -177,6 +183,30 @@ class dba {
                return($r);
        }
 
+       public function qfetch() {
+               $x = false;
+
+               if ($this->result)
+                       if($this->mysqli) {
+                               if($this->result->num_rows)
+                                       $x = $this->result->fetch_array(MYSQLI_ASSOC);
+                       } else {
+                               if(mysql_num_rows($this->result))
+                                       $x = mysql_fetch_array($this->result, MYSQL_ASSOC);
+                       }
+
+               return($x);
+       }
+
+       public function qclose() {
+               if ($this->result)
+                       if($this->mysqli) {
+                               $this->result->free_result();
+                       } else {
+                               mysql_free_result($this->result);
+                       }
+       }
+
        public function dbg($dbg) {
                $this->debug = $dbg;
        }
index 1de45255e9497ae3186525aeca9600932a7212e4..97f39331161c04d6581596d65f226f4933ba199c 100644 (file)
@@ -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,7 +319,7 @@ 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
index f8d72a2f80d14a4a05b4b2d42e24d19b52a158c8..e949f20e97d71cd984211d27c35a5f1c3af8ce96 100755 (executable)
@@ -578,7 +578,7 @@ function diaspora_request($importer,$xml) {
                // That makes us friends.
 
                if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) {
-                       q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+                       q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
                                intval(CONTACT_IS_FRIEND),
                                intval($contact['id']),
                                intval($importer['uid'])
@@ -733,7 +733,7 @@ function diaspora_request($importer,$xml) {
                        `avatar-date` = '%s', 
                        `blocked` = 0, 
                        `pending` = 0
-                       WHERE `id` = %d LIMIT 1
+                       WHERE `id` = %d
                        ",
                        dbesc($photos[0]),
                        dbesc($photos[1]),
@@ -759,7 +759,7 @@ function diaspora_post_allow($importer,$contact) {
        // That makes us friends.
        // Normally this should have handled by getting a request - but this could get lost
        if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) {
-               q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+               q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
                        intval(CONTACT_IS_FRIEND),
                        intval($contact['id']),
                        intval($importer['uid'])
@@ -895,7 +895,7 @@ function diaspora_post($importer,$xml,$msg) {
        $message_id = item_store($datarray);
 
        //if($message_id) {
-       //      q("update item set plink = '%s' where id = %d limit 1",
+       //      q("update item set plink = '%s' where id = %d",
        //              dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
        //              intval($message_id)
        //      );
@@ -1071,7 +1071,7 @@ function diaspora_reshare($importer,$xml,$msg) {
        $message_id = item_store($datarray);
 
        //if($message_id) {
-       //      q("update item set plink = '%s' where id = %d limit 1",
+       //      q("update item set plink = '%s' where id = %d",
        //              dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
        //              intval($message_id)
        //      );
@@ -1170,7 +1170,7 @@ function diaspora_asphoto($importer,$xml,$msg) {
        $message_id = item_store($datarray);
 
        //if($message_id) {
-       //      q("update item set plink = '%s' where id = %d limit 1",
+       //      q("update item set plink = '%s' where id = %d",
        //              dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
        //              intval($message_id)
        //      );
@@ -1350,7 +1350,7 @@ function diaspora_comment($importer,$xml,$msg) {
        $message_id = item_store($datarray);
 
        if($message_id) {
-               q("update item set plink = '%s' where id = %d limit 1",
+               q("update item set plink = '%s' where id = %d",
                        dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
                        intval($message_id)
                );
@@ -1559,15 +1559,15 @@ function diaspora_conversation($importer,$xml,$msg) {
                        dbesc($message_id),
                        dbesc($parent_uri),
                        dbesc($msg_created_at)
-               );                      
+               );
 
-               q("update conv set updated = '%s' where id = %d limit 1",
+               q("update conv set updated = '%s' where id = %d",
                        dbesc(datetime_convert()),
                        intval($conversation['id'])
-               );              
+               );
 
                require_once('include/enotify.php');
-               notification(array(                     
+               notification(array(
                        'type' => NOTIFY_MAIL,
                        'notify_flags' => $importer['notify-flags'],
                        'language' => $importer['language'],
@@ -1672,13 +1672,13 @@ function diaspora_message($importer,$xml,$msg) {
                dbesc($message_id),
                dbesc($parent_uri),
                dbesc($msg_created_at)
-       );                      
+       );
 
-       q("update conv set updated = '%s' where id = %d limit 1",
+       q("update conv set updated = '%s' where id = %d",
                dbesc(datetime_convert()),
                intval($conversation['id'])
-       );              
-       
+       );
+
        return;
 }
 
@@ -1740,7 +1740,7 @@ function diaspora_photo($importer,$xml,$msg,$attempt=1) {
                                           array($remote_photo_name, 'scaled_full_' . $remote_photo_name));
 
        if(strpos($parent_item['body'],$link_text) === false) {
-               $r = q("update item set `body` = '%s', `visible` = 1 where `id` = %d and `uid` = %d limit 1",
+               $r = q("update item set `body` = '%s', `visible` = 1 where `id` = %d and `uid` = %d",
                        dbesc($link_text . $parent_item['body']),
                        intval($parent_item['id']),
                        intval($parent_item['uid'])
@@ -1800,12 +1800,12 @@ function diaspora_like($importer,$xml,$msg) {
                if($positive === 'true') {
                        logger('diaspora_like: duplicate like: ' . $guid);
                        return;
-               } 
+               }
                // Note: I don't think "Like" objects with positive = "false" are ever actually used
                // It looks like "RelayableRetractions" are used for "unlike" instead
                if($positive === 'false') {
                        logger('diaspora_like: received a like with positive set to "false"...ignoring');
-/*                     q("UPDATE `item` SET `deleted` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+/*                     q("UPDATE `item` SET `deleted` = 1 WHERE `id` = %d AND `uid` = %d",
                                intval($r[0]['id']),
                                intval($importer['uid'])
                        );*/
@@ -1942,7 +1942,7 @@ EOT;
 
 
        if($message_id) {
-               q("update item set plink = '%s' where id = %d limit 1",
+               q("update item set plink = '%s' where id = %d",
                        dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
                        intval($message_id)
                );
@@ -1989,8 +1989,8 @@ function diaspora_retraction($importer,$xml) {
                );
                if(count($r)) {
                        if(link_compare($r[0]['author-link'],$contact['url'])) {
-                               q("update item set `deleted` = 1, `changed` = '%s' where `id` = %d limit 1",
-                                       dbesc(datetime_convert()),                      
+                               q("update item set `deleted` = 1, `changed` = '%s' where `id` = %d",
+                                       dbesc(datetime_convert()),
                                        intval($r[0]['id'])
                                );
                        }
@@ -2060,12 +2060,12 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
                );
                if(count($r)) {
                        if(link_compare($r[0]['author-link'],$contact['url'])) {
-                               q("update item set `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' where `id` = %d limit 1",
-                                       dbesc(datetime_convert()),                      
-                                       dbesc(datetime_convert()),                      
+                               q("update item set `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' where `id` = %d",
+                                       dbesc(datetime_convert()),
+                                       dbesc(datetime_convert()),
                                        intval($r[0]['id'])
                                );
-       
+
                                // Now check if the retraction needs to be relayed by us
                                //
                                // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
@@ -2161,7 +2161,7 @@ function diaspora_profile($importer,$xml,$msg) {
        // TODO: update name on item['author-name'] if the name changed. See consume_feed()
        // Not doing this currently because D* protocol is scheduled for revision soon. 
 
-       $r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
+       $r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s' WHERE `id` = %d AND `uid` = %d",
                dbesc($name),
                dbesc(datetime_convert()),
                dbesc($images[0]),
@@ -2331,7 +2331,7 @@ function diaspora_send_images($item,$owner,$contact,$images,$public_batch = fals
                if(! count($r))
                        continue;
                $public = (($r[0]['allow_cid'] || $r[0]['allow_gid'] || $r[0]['deny_cid'] || $r[0]['deny_gid']) ? 'false' : 'true' );
-               $msg = replace_macros($tpl,array(               
+               $msg = replace_macros($tpl,array(
                        '$path' => xmlify($image['path']),
                        '$filename' => xmlify($image['file']),
                        '$msg_guid' => xmlify($image['guid']),
index fc167bb82be792316f8101baaf05673ba418fd37..32dd29e6762193d890be8f44f061b849d7d50100 100644 (file)
@@ -262,7 +262,7 @@ function new_contact($uid,$url,$interactive = false) {
                '$ostat_follow' => ''
        ));
 
-       $r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` 
+       $r = q("SELECT `contact`.*, `user`.* FROM `contact` INNER JOIN `user` ON `contact`.`uid` = `user`.`uid` 
                        WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
                        intval($uid)
        );
index aa226688ae5242dae6220b0a00062acef44911ce..abfe42df726b525ae2ee1323481ce7e064a3bd25 100644 (file)
@@ -157,7 +157,7 @@ function group_get_members($gid) {
        $ret = array();
        if(intval($gid)) {
                $r = q("SELECT `group_member`.`contact-id`, `contact`.* FROM `group_member` 
-                       LEFT JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id` 
+                       INNER JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id` 
                        WHERE `gid` = %d AND `group_member`.`uid` = %d ORDER BY `contact`.`name` ASC ",
                        intval($gid),
                        intval(local_user())
@@ -172,7 +172,7 @@ function group_public_members($gid) {
        $ret = 0;
        if(intval($gid)) {
                $r = q("SELECT `contact`.`id` AS `contact-id` FROM `group_member` 
-                       LEFT JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id` 
+                       INNER JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id` 
                        WHERE `gid` = %d AND `group_member`.`uid` = %d 
                        AND  `contact`.`network` = '%s' AND `contact`.`notify` != '' ",
                        intval($gid),
@@ -299,7 +299,7 @@ function expand_groups($a,$check_dead = false) {
 
 function member_of($c) {
 
-       $r = q("SELECT `group`.`name`, `group`.`id` FROM `group` LEFT JOIN `group_member` ON `group_member`.`gid` = `group`.`id` WHERE `group_member`.`contact-id` = %d AND `group`.`deleted` = 0 ORDER BY `group`.`name`  ASC ",
+       $r = q("SELECT `group`.`name`, `group`.`id` FROM `group` INNER JOIN `group_member` ON `group_member`.`gid` = `group`.`id` WHERE `group_member`.`contact-id` = %d AND `group`.`deleted` = 0 ORDER BY `group`.`name`  ASC ",
                intval($c)
        );
 
index ffd549ea14eba4c3faa2a1b592d03777d7ac6480..6c438f463962bff56161192b0b6b5f2d4da972d2 100755 (executable)
@@ -9,6 +9,7 @@ require_once('include/tags.php');
 require_once('include/text.php');
 require_once('include/email.php');
 require_once('include/ostatus_conversation.php');
+require_once('include/threads.php');
 
 function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) {
 
@@ -36,7 +37,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
        $sql_extra = " AND `allow_cid` = '' AND `allow_gid` = '' AND `deny_cid`  = '' AND `deny_gid`  = '' ";
 
        $r = q("SELECT `contact`.*, `user`.`uid` AS `user_uid`, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags`
-               FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid`
+               FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid`
                WHERE `contact`.`self` = 1 AND `user`.`nickname` = '%s' LIMIT 1",
                dbesc($owner_nick)
        );
@@ -122,15 +123,15 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
 
        $check_date = datetime_convert('UTC','UTC',$last_update,'Y-m-d H:i:s');
 
-       $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, 
-               `contact`.`name`, `contact`.`network`, `contact`.`photo`, `contact`.`url`, 
+       $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
+               `contact`.`name`, `contact`.`network`, `contact`.`photo`, `contact`.`url`,
                `contact`.`name-date`, `contact`.`uri-date`, `contact`.`avatar-date`,
-               `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, 
+               `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
                `contact`.`id` AS `contact-id`, `contact`.`uid` AS `contact-uid`,
                `sign`.`signed_text`, `sign`.`signature`, `sign`.`signer`
-               FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+               FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
                LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id`
-               WHERE `item`.`uid` = %d AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`parent` != 0 
+               WHERE `item`.`uid` = %d AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`parent` != 0
                AND `item`.`wall` = 1 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                AND ( `item`.`edited` > '%s' OR `item`.`changed` > '%s' )
                $sql_extra
@@ -915,7 +916,7 @@ function encode_rel_links($links) {
 
 function item_store($arr,$force_parent = false) {
 
-       // If a Diaspora signature structure was passed in, pull it out of the 
+       // If a Diaspora signature structure was passed in, pull it out of the
        // item array and set it aside for later storage.
 
        $dsprsig = null;
@@ -947,7 +948,7 @@ function item_store($arr,$force_parent = false) {
 
        // Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin.
 
-       if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false)) 
+       if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
                $arr['body'] = strip_tags($arr['body']);
 
 
@@ -1058,7 +1059,7 @@ function item_store($arr,$force_parent = false) {
 
                        if($r[0]['uri'] != $r[0]['parent-uri']) {
                                $arr['parent-uri'] = $r[0]['parent-uri'];
-                               $z = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `parent-uri` = '%s' AND `uid` = %d 
+                               $z = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `parent-uri` = '%s' AND `uid` = %d
                                        ORDER BY `id` ASC LIMIT 1",
                                        dbesc($r[0]['parent-uri']),
                                        dbesc($r[0]['parent-uri']),
@@ -1077,18 +1078,32 @@ function item_store($arr,$force_parent = false) {
                        $arr['wall']    = $r[0]['wall'];
 
                        // if the parent is private, force privacy for the entire conversation
-                       // This differs from the above settings as it subtly allows comments from 
-                       // email correspondents to be private even if the overall thread is not. 
+                       // This differs from the above settings as it subtly allows comments from
+                       // email correspondents to be private even if the overall thread is not.
 
                        if($r[0]['private'])
                                $arr['private'] = $r[0]['private'];
 
                        // Edge case. We host a public forum that was originally posted to privately.
                        // The original author commented, but as this is a comment, the permissions
-                       // weren't fixed up so it will still show the comment as private unless we fix it here. 
+                       // weren't fixed up so it will still show the comment as private unless we fix it here.
 
                        if((intval($r[0]['forum_mode']) == 1) && (! $r[0]['private']))
                                $arr['private'] = 0;
+
+
+                       // If its a post from myself then tag the thread as "mention"
+                       logger("item_store: Checking if parent ".$parent_id." has to be tagged as mention for user ".$arr['uid'], LOGGER_DEBUG);
+                       $u = q("select * from user where uid = %d limit 1", intval($arr['uid']));
+                       if(count($u)) {
+                               $a = get_app();
+                               $self = normalise_link($a->get_baseurl() . '/profile/' . $u[0]['nickname']);
+                               logger("item_store: 'myself' is ".$self." for parent ".$parent_id." checking against ".$arr['author-link']." and ".$arr['owner-link'], LOGGER_DEBUG);
+                               if ((normalise_link($arr['author-link']) == $self) OR (normalise_link($arr['owner-link']) == $self)) {
+                                       q("UPDATE `thread` SET `mention` = 1 WHERE `iid` = %d", intval($parent_id));
+                                       logger("item_store: tagged thread ".$parent_id." as mention for user ".$self, LOGGER_DEBUG);
+                               }
+                       }
                }
                else {
 
@@ -1150,6 +1165,7 @@ function item_store($arr,$force_parent = false) {
 
                // Only check for notifications on start posts
                if ($arr['parent-uri'] === $arr['uri']) {
+                       add_thread($r[0]['id']);
                        logger('item_store: Check notification for contact '.$arr['contact-id'].' and post '.$current_post, LOGGER_DEBUG);
 
                        // Send a notification for every new post?
@@ -1246,6 +1262,7 @@ function item_store($arr,$force_parent = false) {
                dbesc(datetime_convert()),
                intval($parent_id)
        );
+       update_thread($parent_id);
 
        if($dsprsig) {
                q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
@@ -1318,7 +1335,7 @@ function get_item_contact($item,$contacts) {
  */
 function tag_deliver($uid,$item_id) {
 
-       // 
+       //
 
        $a = get_app();
 
@@ -1448,6 +1465,7 @@ function tag_deliver($uid,$item_id) {
                dbesc($u[0]['deny_gid']),
                intval($item_id)
        );
+       update_thread($item_id);
 
        proc_run('php','include/notifier.php','tgroup',$item_id);
 
@@ -1965,7 +1983,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                        $when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s');
                        }
                        if($deleted && is_array($contact)) {
-                               $r = q("SELECT `item`.*, `contact`.`self` FROM `item` left join `contact` on `item`.`contact-id` = `contact`.`id` 
+                               $r = q("SELECT `item`.*, `contact`.`self` FROM `item` INNER JOIN `contact` on `item`.`contact-id` = `contact`.`id` 
                                        WHERE `uri` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d AND NOT `item`.`file` LIKE '%%[%%' LIMIT 1",
                                        dbesc($uri),
                                        intval($importer['uid']),
@@ -2023,10 +2041,11 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                        intval($importer['uid'])
                                                );
                                                create_tags_from_itemuri($item['uri'], $importer['uid']);
+                                               update_thread_uri($item['uri'], $importer['uid']);
                                        }
                                        else {
                                                $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s',
-                                                       `body` = '', `title` = '' 
+                                                       `body` = '', `title` = ''
                                                        WHERE `uri` = '%s' AND `uid` = %d",
                                                        dbesc($when),
                                                        dbesc(datetime_convert()),
@@ -2122,6 +2141,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                intval($importer['uid'])
                                        );
                                        $datarray['last-child'] = 1;
+                                       update_thread_uri($parent_uri, $importer['uid']);
                                }
 
 
@@ -2148,6 +2168,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                        intval($importer['uid'])
                                                );
                                                create_tags_from_itemuri($item_id, $importer['uid']);
+                                               update_thread_uri($item_id, $importer['uid']);
                                        }
 
                                        // update last-child if it changes
@@ -2165,6 +2186,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                        dbesc($item_id),
                                                        intval($importer['uid'])
                                                );
+                                               update_thread_uri($item_id, $importer['uid']);
                                        }
                                        continue;
                                }
@@ -2291,7 +2313,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                // Update content if 'updated' changes
 
                                if(count($r)) {
-                                       if (edited_timestamp_is_newer($r[0], $datarray)) {  
+                                       if (edited_timestamp_is_newer($r[0], $datarray)) {
 
                                                // do not accept (ignore) an earlier edit than one we currently have.
                                                if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
@@ -2306,6 +2328,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                        intval($importer['uid'])
                                                );
                                                create_tags_from_itemuri($item_id, $importer['uid']);
+                                               update_thread_uri($item_id, $importer['uid']);
                                        }
 
                                        // update last-child if it changes
@@ -2318,6 +2341,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                        dbesc($item_id),
                                                        intval($importer['uid'])
                                                );
+                                               update_thread_uri($item_id, $importer['uid']);
                                        }
                                        continue;
                                }
@@ -2556,65 +2580,65 @@ function local_delivery($importer,$data) {
                /*$newloc['pubkey'] = notags(unxmlify($base['pubkey'][0]['data']));
                $newloc['prvkey'] = notags(unxmlify($base['prvkey'][0]['data']));*/
 
-        logger("items:relocate contact ".print_r($newloc, true).print_r($importer, true), LOGGER_DEBUG);
+               logger("items:relocate contact ".print_r($newloc, true).print_r($importer, true), LOGGER_DEBUG);
 
-        // update contact
-        $r = q("SELECT photo, url FROM contact WHERE id=%d AND uid=%d;",
-                    intval($importer['id']),
-                                       intval($importer['importer_uid']));
+               // update contact
+               $r = q("SELECT photo, url FROM contact WHERE id=%d AND uid=%d;",
+                       intval($importer['id']),
+                       intval($importer['importer_uid']));
                if ($r === false)
                        return 1;
-        $old = $r[0];
-
-        $x = q("UPDATE contact SET
-                        name = '%s',
-                        photo = '%s',
-                        thumb = '%s',
-                        micro = '%s',
-                        url = '%s',
-                        request = '%s',
-                        confirm = '%s',
-                        notify = '%s',
-                        poll = '%s',
-                        `site-pubkey` = '%s'
-                WHERE id=%d AND uid=%d;",
-                    dbesc($newloc['name']),
-                    dbesc($newloc['photo']),
-                    dbesc($newloc['thumb']),
-                    dbesc($newloc['micro']),
-                    dbesc($newloc['url']),
-                    dbesc($newloc['request']),
-                    dbesc($newloc['confirm']),
-                    dbesc($newloc['notify']),
-                    dbesc($newloc['poll']),
-                    dbesc($newloc['sitepubkey']),
-                    intval($importer['id']),
+               $old = $r[0];
+
+               $x = q("UPDATE contact SET
+                                       name = '%s',
+                                       photo = '%s',
+                                       thumb = '%s',
+                                       micro = '%s',
+                                       url = '%s',
+                                       request = '%s',
+                                       confirm = '%s',
+                                       notify = '%s',
+                                       poll = '%s',
+                                       `site-pubkey` = '%s'
+                       WHERE id=%d AND uid=%d;",
+                                       dbesc($newloc['name']),
+                                       dbesc($newloc['photo']),
+                                       dbesc($newloc['thumb']),
+                                       dbesc($newloc['micro']),
+                                       dbesc($newloc['url']),
+                                       dbesc($newloc['request']),
+                                       dbesc($newloc['confirm']),
+                                       dbesc($newloc['notify']),
+                                       dbesc($newloc['poll']),
+                                       dbesc($newloc['sitepubkey']),
+                                       intval($importer['id']),
                                        intval($importer['importer_uid']));
 
-        if ($x === false)
+               if ($x === false)
                        return 1;
-        // update items
-        $fields = array(
-            'owner-link' => array($old['url'], $newloc['url']),
-            'author-link' => array($old['url'], $newloc['url']),
-            'owner-avatar' => array($old['photo'], $newloc['photo']),
-            'author-avatar' => array($old['photo'], $newloc['photo']),
-        );
-        foreach ($fields as $n=>$f){
-            $x = q("UPDATE item SET `%s`='%s' WHERE `%s`='%s' AND uid=%d",
-                        $n, dbesc($f[1]),
-                        $n, dbesc($f[0]),
-                        intval($importer['importer_uid']));
-                       if ($x === false)
-                               return 1;
-               }
+               // update items
+               $fields = array(
+                       'owner-link' => array($old['url'], $newloc['url']),
+                       'author-link' => array($old['url'], $newloc['url']),
+                       'owner-avatar' => array($old['photo'], $newloc['photo']),
+                       'author-avatar' => array($old['photo'], $newloc['photo']),
+                       );
+               foreach ($fields as $n=>$f){
+                       $x = q("UPDATE `item` SET `%s`='%s' WHERE `%s`='%s' AND uid=%d",
+                                       $n, dbesc($f[1]),
+                                       $n, dbesc($f[0]),
+                                       intval($importer['importer_uid']));
+                               if ($x === false)
+                                       return 1;
+                       }
 
                // TODO
                // merge with current record, current contents have priority
                // update record, set url-updated
                // update profile photos
                // schedule a scan?
-        return 0;
+               return 0;
        }
 
 
@@ -2832,7 +2856,7 @@ function local_delivery($importer,$data) {
                                        // POSSIBLE CLEANUP --> Why select so many fields when only forum_mode and wall are used?
                                        $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`, 
                                                `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item` 
-                                               LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` 
+                                               INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` 
                                                WHERE `item`.`uri` = '%s' AND (`item`.`parent-uri` = '%s' or `item`.`thr-parent` = '%s')
                                                AND `item`.`uid` = %d 
                                                $sql_extra
@@ -2862,7 +2886,7 @@ function local_delivery($importer,$data) {
                                        }
                                }
 
-                               $r = q("SELECT `item`.*, `contact`.`self` FROM `item` left join contact on `item`.`contact-id` = `contact`.`id`
+                               $r = q("SELECT `item`.*, `contact`.`self` FROM `item` INNER JOIN contact on `item`.`contact-id` = `contact`.`id`
                                        WHERE `uri` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d AND NOT `item`.`file` LIKE '%%[%%' LIMIT 1",
                                        dbesc($uri),
                                        intval($importer['importer_uid']),
@@ -2924,6 +2948,7 @@ function local_delivery($importer,$data) {
                                                        intval($importer['importer_uid'])
                                                );
                                                create_tags_from_itemuri($item['uri'], $importer['importer_uid']);
+                                               update_thread_uri($item['uri'], $importer['importer_uid']);
                                        }
                                        else {
                                                $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s',
@@ -2935,6 +2960,7 @@ function local_delivery($importer,$data) {
                                                        intval($importer['importer_uid'])
                                                );
                                                create_tags_from_itemuri($uri, $importer['importer_uid']);
+                                               update_thread_uri($uri, $importer['importer_uid']);
                                                if($item['last-child']) {
                                                        // 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 ",
@@ -3003,7 +3029,7 @@ function local_delivery($importer,$data) {
                                // POSSIBLE CLEANUP --> Why select so many fields when only forum_mode and wall are used?
                                $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`,
                                        `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item`
-                                       LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                                       INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
                                        WHERE `item`.`uri` = '%s' AND (`item`.`parent-uri` = '%s' or `item`.`thr-parent` = '%s')
                                        AND `item`.`uid` = %d
                                        $sql_extra
@@ -3346,7 +3372,7 @@ function local_delivery($importer,$data) {
                                                                        continue;
 
                                                                require_once('include/enotify.php');
-                                                               
+
                                                                $conv_parent = $conv['parent'];
 
                                                                notification(array(
@@ -3430,6 +3456,7 @@ function local_delivery($importer,$data) {
                                                intval($importer['importer_uid'])
                                        );
                                        create_tags_from_itemuri($item_id, $importer['importer_uid']);
+                                       update_thread_uri($item_id, $importer['importer_uid']);
                                }
 
                                // update last-child if it changes
@@ -4154,6 +4181,7 @@ function drop_item($id,$interactive = true) {
                        intval($item['id'])
                );
                create_tags_from_item($item['id']);
+               delete_thread($item['id']);
 
                // clean up categories and tags so they don't end up as orphans
 
@@ -4248,6 +4276,7 @@ function drop_item($id,$interactive = true) {
                                intval($item['uid'])
                        );
                        create_tags_from_item($item['parent-uri'], $item['uid']);
+                       delete_thread_uri($item['parent-uri'], $item['uid']);
                        // ignore the result
                }
                else {
@@ -4294,8 +4323,8 @@ function drop_item($id,$interactive = true) {
 
 
 function first_post_date($uid,$wall = false) {
-       $r = q("select id, created from item 
-               where uid = %d and wall = %d and deleted = 0 and visible = 1 AND moderated = 0 
+       $r = q("select id, created from item
+               where uid = %d and wall = %d and deleted = 0 and visible = 1 AND moderated = 0
                and id = parent
                order by created asc limit 1",
                intval($uid),
index 8e9764315f4631ee7239de8feccc8152c7a73baf..cb080a4093fca683c118de64db9709b121c53519 100644 (file)
@@ -207,7 +207,7 @@ function notifier_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)
        );
@@ -643,7 +643,7 @@ function notifier_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`.`archive` = 0
                                                        AND `contact`.`pending` = 0
                                                        AND `contact`.`network` = '%s' AND `user`.`nickname` = '%s'
index 2a7815fa52372566725340aa221d5a2a961c810c..49047118a4b20c3fe96b3a255518657cd0c85de2 100644 (file)
@@ -112,7 +112,7 @@ function onepoll_run(&$argv, &$argc){
 
        $importer_uid = $contact['uid'];
 
-       $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `contact`.`uid` = `user`.`uid` WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
+       $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` INNER JOIN `user` on `contact`.`uid` = `user`.`uid` WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
                intval($importer_uid)
        );
        if(! count($r))
index 9b18fe3c6d9901dbe5f79c4f0cecb6e54f475270..084067b190059c3c6f0290b2476811b1f2c87d82 100644 (file)
@@ -174,7 +174,7 @@ function poller_run(&$argv, &$argc){
                : '' 
        );
 
-       $contacts = q("SELECT `contact`.`id` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` 
+       $contacts = q("SELECT `contact`.`id` FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` 
                WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
                AND NOT `network` IN ( '%s', '%s', '%s' )
                $sql_extra 
index 61eaee75d92ae64641c567f4dcdf55704d938079..611b00819da3a161ca798b359c6bebac75434090 100644 (file)
@@ -25,7 +25,7 @@ function profile_change() {
                return;
 
        $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile`
-               LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
+               INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
                WHERE `user`.`uid` = %d AND `profile`.`is-default` = 1 LIMIT 1",
                intval(local_user())
        );
index 2cc16282344b3193e4971d931974ba28e0c6769e..e3ca5767a9a04accfc3eef8a731a035e2182b0b7 100644 (file)
@@ -111,7 +111,7 @@ function queue_run(&$argv, &$argc){
        }
 
        $r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue` 
-               LEFT JOIN `contact` ON `queue`.`cid` = `contact`.`id` 
+               INNER JOIN `contact` ON `queue`.`cid` = `contact`.`id` 
                WHERE `queue`.`created` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
        if($r) {
                foreach($r as $rr) {
index e43912431c762fff263432701f0c02f914457df8..5214131b2bf0ed1e119b98379857838d6cf8ea20 100644 (file)
@@ -2,7 +2,7 @@
 
 function update_queue_time($id) {
        logger('queue: requeue item ' . $id);
-       q("UPDATE `queue` SET `last` = '%s' WHERE `id` = %d LIMIT 1",
+       q("UPDATE `queue` SET `last` = '%s' WHERE `id` = %d",
                dbesc(datetime_convert()),
                intval($id)
        );
@@ -10,7 +10,7 @@ function update_queue_time($id) {
 
 function remove_queue_item($id) {
        logger('queue: remove queue item ' . $id);
-       q("DELETE FROM `queue` WHERE `id` = %d LIMIT 1",
+       q("DELETE FROM `queue` WHERE `id` = %d",
                intval($id)
        );
 }
@@ -44,7 +44,7 @@ function add_to_queue($cid,$network,$msg,$batch = false) {
        if($batch_queue < 1)
                $batch_queue = 1000;
 
-       $r = q("SELECT COUNT(*) AS `total` FROM `queue` left join `contact` ON `queue`.`cid` = `contact`.`id` 
+       $r = q("SELECT COUNT(*) AS `total` FROM `queue` INNER JOIN `contact` ON `queue`.`cid` = `contact`.`id` 
                WHERE `queue`.`cid` = %d AND `contact`.`self` = 0 ",
                intval($cid)
        );
index 9f160e7884cbada1f9691d362eb936604ba491f9..7c2e2d47c3f95bd35d5a393bcbce6d59fa2093b4 100644 (file)
@@ -56,7 +56,7 @@ function authenticate_success($user_record, $login_initial = false, $interactive
                $a->identities = array();
 
        $r = q("select `user`.`uid`, `user`.`username`, `user`.`nickname` 
-               from manage left join user on manage.mid = user.uid where `user`.`account_removed` = 0
+               from manage INNER JOIN user on manage.mid = user.uid where `user`.`account_removed` = 0
                and `manage`.`uid` = %d",
                intval($master_record['uid'])
        );
@@ -139,7 +139,7 @@ function can_write_wall(&$a,$owner) {
                                return false;
 
 
-                       $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `user`.`uid` = `contact`.`uid` 
+                       $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` INNER JOIN `user` on `user`.`uid` = `contact`.`uid` 
                                WHERE `contact`.`uid` = %d AND `contact`.`id` = %d AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 
                                AND `user`.`blockwall` = 0 AND `readonly` = 0  AND ( `contact`.`rel` IN ( %d , %d ) OR `user`.`page-flags` = %d ) LIMIT 1",
                                intval($owner),
@@ -255,11 +255,11 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
         * default permissions - anonymous user
         */
 
-       $sql = " AND allow_cid = '' 
-                        AND allow_gid = '' 
-                        AND deny_cid  = '' 
-                        AND deny_gid  = '' 
-                        AND private = 0
+       $sql = " AND `item`.allow_cid = ''
+                        AND `item`.allow_gid = ''
+                        AND `item`.deny_cid  = ''
+                        AND `item`.deny_gid  = ''
+                        AND `item`.private = 0
        ";
 
        /**
@@ -291,7 +291,7 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
                        }
                }
                if($remote_verified) {
-               
+
                        $gs = '<<>>'; // should be impossible to match
 
                        if(is_array($groups) && count($groups)) {
@@ -310,9 +310,9 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
                                dbesc($gs),
                                dbesc($gs)
 */
-                               " AND ( private = 0 OR ( private in (1,2) AND wall = 1
-                                 AND ( NOT (deny_cid REGEXP '<%d>' OR deny_gid REGEXP '%s')
-                                 AND ( allow_cid REGEXP '<%d>' OR allow_gid REGEXP '%s' OR ( allow_cid = '' AND allow_gid = '')))))
+                               " AND ( `item`.private = 0 OR ( `item`.private in (1,2) AND wall = 1
+                                 AND ( NOT (`item`.deny_cid REGEXP '<%d>' OR `item`.deny_gid REGEXP '%s')
+                                 AND ( `item`.allow_cid REGEXP '<%d>' OR `item`.allow_gid REGEXP '%s' OR ( allow_cid = '' AND allow_gid = '')))))
                                ",
                                intval($remote_user),
                                dbesc($gs),
index 24f584db765bd862afa450c3d2652cf76f85f30d..daec03726eb939085b5ea2a1f651d4e095d5b8a4 100644 (file)
@@ -170,7 +170,7 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) {
 function count_common_friends($uid,$cid) {
 
        $r = q("SELECT count(*) as `total`
-               FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
+               FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
                where `glink`.`cid` = %d and `glink`.`uid` = %d
                and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 and id != %d ) ",
                intval($cid),
@@ -195,7 +195,7 @@ function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) {
                $sql_extra = " order by `gcontact`.`name` asc "; 
 
        $r = q("SELECT `gcontact`.* 
-               FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
+               FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
                where `glink`.`cid` = %d and `glink`.`uid` = %d
                and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 and id != %d ) 
                $sql_extra limit %d, %d",
@@ -215,7 +215,7 @@ function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) {
 function count_common_friends_zcid($uid,$zcid) {
 
        $r = q("SELECT count(*) as `total` 
-               FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
+               FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
                where `glink`.`zcid` = %d
                and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 ) ",
                intval($zcid),
@@ -236,7 +236,7 @@ function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = fal
                $sql_extra = " order by `gcontact`.`name` asc "; 
 
        $r = q("SELECT `gcontact`.* 
-               FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
+               FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
                where `glink`.`zcid` = %d
                and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 ) 
                $sql_extra limit %d, %d",
@@ -254,7 +254,7 @@ function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = fal
 function count_all_friends($uid,$cid) {
 
        $r = q("SELECT count(*) as `total`
-               FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
+               FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
                where `glink`.`cid` = %d and `glink`.`uid` = %d ",
                intval($cid),
                intval($uid)
@@ -270,7 +270,7 @@ function count_all_friends($uid,$cid) {
 function all_friends($uid,$cid,$start = 0, $limit = 80) {
 
        $r = q("SELECT `gcontact`.* 
-               FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
+               FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
                where `glink`.`cid` = %d and `glink`.`uid` = %d 
                order by `gcontact`.`name` asc LIMIT %d, %d ",
                intval($cid),
@@ -290,7 +290,7 @@ function suggestion_query($uid, $start = 0, $limit = 80) {
                return array();
 
        $r = q("SELECT count(glink.gcid) as `total`, gcontact.* from gcontact 
-               left join glink on glink.gcid = gcontact.id 
+               INNER JOIN glink on glink.gcid = gcontact.id 
                where uid = %d and not gcontact.nurl in ( select nurl from contact where uid = %d )
                and not gcontact.name in ( select name from contact where uid = %d )
                and not gcontact.id in ( select gcid from gcign where uid = %d )
@@ -307,7 +307,7 @@ function suggestion_query($uid, $start = 0, $limit = 80) {
                return $r;
 
        $r2 = q("SELECT gcontact.* from gcontact 
-               left join glink on glink.gcid = gcontact.id 
+               INNER JOIN glink on glink.gcid = gcontact.id 
                where glink.uid = 0 and glink.cid = 0 and glink.zcid = 0 and not gcontact.nurl in ( select nurl from contact where uid = %d )
                and not gcontact.name in ( select name from contact where uid = %d )
                and not gcontact.id in ( select gcid from gcign where uid = %d )
index e5bc29cd4f5db6bb13662e4c1a6f35db8dde2935..fbb9e6ff776fdbe28850b683076c78555eb68bce 100644 (file)
@@ -1,20 +1,4 @@
 <?php
-/*
-require_once("boot.php");
-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);
-};
-
-$a->set_baseurl("https://pirati.ca");
-*/
-
 function create_tags_from_item($itemid) {
        global $a;
 
@@ -25,7 +9,7 @@ function create_tags_from_item($itemid) {
 
        $searchpath = $a->get_baseurl()."/search?tag=";
 
-       $messages = q("SELECT `guid`, `uid`, `id`, `edited`, `deleted`, `title`, `body`, `tag` FROM `item` WHERE `id` = %d LIMIT 1", intval($itemid));
+       $messages = q("SELECT `guid`, `uid`, `id`, `edited`, `deleted`, `title`, `body`, `tag`, `parent` FROM `item` WHERE `id` = %d LIMIT 1", intval($itemid));
 
        if (!$messages)
                return;
@@ -102,8 +86,11 @@ function create_tags_from_item($itemid) {
                if ((substr($tag, 0, 1) == '@') AND (strpos($link, $profile_base_friendica) OR strpos($link, $profile_base_diaspora))) {
                        $users = q("SELECT `uid` FROM `contact` WHERE self AND (`url` = '%s' OR `nurl` = '%s')", $link, $link);
                        foreach ($users AS $user) {
-                               if ($user["uid"] == $message["uid"])
+                               if ($user["uid"] == $message["uid"]) {
                                        q("UPDATE `item` SET `mention` = 1 WHERE `id` = %d", intval($itemid));
+
+                                       q("UPDATE `thread` SET `mention` = 1 WHERE `iid` = %d", intval($message["parent"]));
+                               }
                        }
                }
        }
@@ -125,11 +112,4 @@ function update_items() {
        foreach ($messages as $message)
                create_tags_from_item($message["id"]);
 }
-
-//print_r($tags);
-//print_r($hashtags);
-//print_r($mentions);
-//update_items();
-//create_tags_from_item(265194);
-//create_tags_from_itemuri("infoagent@diasp.org:cce94abd104c06e8", 2);
 ?>
index 93b34e1f5656d270bb2bb4525fe66620219c645c..8528bfbfa50a72e3e556cc08379cc26df8bc1dfe 100644 (file)
@@ -233,7 +233,7 @@ function create_user($arr) {
        );
        if((count($r) > 1) && $newuid) {
                $result['message'] .= t('Nickname is already registered. Please choose another.') . EOL;
-               q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
+               q("DELETE FROM `user` WHERE `uid` = %d",
                        intval($newuid)
                );
                return $result;
index dbf4c82beb8eb4a581e2757394830d4093017a71..f3c213f0c2447276f9c7793872f03c8d2b8d8f9a 100644 (file)
@@ -46,12 +46,13 @@ function community_content(&$a, $update = 0) {
 
        if( (! get_config('alt_pager', 'global')) && (! get_pconfig(local_user(),'system','alt_pager')) ) {
                $r = q("SELECT COUNT(distinct(`item`.`uri`)) AS `total`
-                       FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
+                       FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+                       INNER JOIN `user` ON `user`.`uid` = `item`.`uid` AND `user`.`hidewall` = 0
                        WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
-                       AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = '' 
+                       AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
                        AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
-                       AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 
-                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0"
+                       AND `item`.`private` = 0 AND `item`.`wall` = 1"
                );
 
                if(count($r))
@@ -65,27 +66,25 @@ function community_content(&$a, $update = 0) {
        }
 
        //$r = q("SELECT distinct(`item`.`uri`)
-       $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, 
+       $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`,
                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
-               `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
+               `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
                `user`.`nickname`, `user`.`hidewall`
-               FROM `item` FORCE INDEX (`received`, `wall`) LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-               LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
-               WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
+               FROM `thread` FORCE INDEX (`visible_deleted_moderated_private_wall_received`)
+               INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND `user`.`hidewall` = 0
+               INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
                AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
-               AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = '' 
-               AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `item`.`id` = `item`.`parent`
-               AND `user`.`hidewall` = 0
+               AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
+               INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
                AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self`
-               ORDER BY `received` DESC LIMIT %d, %d ",
+               WHERE `thread`.`visible` = 1 AND `thread`.`deleted` = 0 and `thread`.`moderated` = 0
+               AND `thread`.`private` = 0 AND `thread`.`wall` = 1
+               ORDER BY `thread`.`received` DESC LIMIT %d, %d ",
                intval($a->pager['start']),
                intval($a->pager['itemspage'])
 
        );
-//             group by `item`.`uri`
-//             AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `item`.`id` = `item`.`parent`
-//             AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self`
 
        if(! count($r)) {
                info( t('No results.') . EOL);
index ad50376b704441f268571bcdd7e25530854aec8b..3d79eb583e679751f22abe8642dc8737fc378d80 100644 (file)
@@ -164,7 +164,7 @@ function contacts_post(&$a) {
        $info = fix_mce_lf(escape_tags(trim($_POST['info'])));
 
        $r = q("UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `info` = '%s',
-               `hidden` = %d, `notify_new_posts` = %d, `fetch_further_information` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
+               `hidden` = %d, `notify_new_posts` = %d, `fetch_further_information` = %d WHERE `id` = %d AND `uid` = %d",
                intval($profile_id),
                intval($priority),
                dbesc($info),
@@ -197,7 +197,7 @@ function _contact_update($contact_id) {
 }
 function _contact_block($contact_id, $orig_record) {
        $blocked = (($orig_record['blocked']) ? 0 : 1);
-       $r = q("UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
+       $r = q("UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d",
                intval($blocked),
                intval($contact_id),
                intval(local_user())
@@ -207,7 +207,7 @@ function _contact_block($contact_id, $orig_record) {
 }
 function _contact_ignore($contact_id, $orig_record) {
        $readonly = (($orig_record['readonly']) ? 0 : 1);
-       $r = q("UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
+       $r = q("UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d",
                intval($readonly),
                intval($contact_id),
                intval(local_user())
@@ -216,7 +216,7 @@ function _contact_ignore($contact_id, $orig_record) {
 }
 function _contact_archive($contact_id, $orig_record) {
        $archived = (($orig_record['archive']) ? 0 : 1);
-       $r = q("UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
+       $r = q("UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d",
                intval($archived),
                intval($contact_id),
                intval(local_user())
index f974eecdd11fe0aecb8e09b5432348a77638b4ee..a992d1c8a70643737c22f5105e730d58fef53900 100644 (file)
@@ -176,7 +176,7 @@ function content_content(&$a, $update = 0) {
                if($tag) {
                        //$sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d ",
                        //      dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG));
-                       //$sql_table = "`term` LEFT JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` ";
+                       //$sql_table = "`term` INNER JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` ";
 
                        $sql_extra = "";
                        $sql_table = sprintf("`item` INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",
@@ -216,7 +216,7 @@ function content_content(&$a, $update = 0) {
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`,
                        `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
                        `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-                       FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                       FROM $sql_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
                        WHERE `item`.`uid` = %d AND `item`.`visible` = 1
                        AND `item`.`deleted` = 0 and `item`.`moderated` = 0
                        $simple_update
@@ -240,7 +240,7 @@ function content_content(&$a, $update = 0) {
                $start = dba_timer();
 
                $r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact_uid`
-                       FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                       FROM $sql_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
                        WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                        AND `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                        AND `item`.`parent` = `item`.`id`
@@ -267,7 +267,7 @@ function content_content(&$a, $update = 0) {
                                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`writable`,
                                `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
                                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-                               FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                               FROM $sql_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
                                WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                                AND `item`.`moderated` = 0
                                AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
index 116b4a17e3073d2590df08aa56a873f2073fb1e3..2de3a8a88e4bf5947fefe26a57b000074bdd27ff 100644 (file)
@@ -138,10 +138,10 @@ function display_content(&$a, $update = 0) {
                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
                `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-               FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+               FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                and `item`.`moderated` = 0
-               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                AND `item`.`parent` = ( SELECT `parent` FROM `item` FORCE INDEX (PRIMARY, `uri`) WHERE ( `id` = '%s' OR `uri` = '%s' )
                AND uid = %d )
                $sql_extra
@@ -167,10 +167,10 @@ function display_content(&$a, $update = 0) {
                                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
                                `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
                                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-                               FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                               FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                                WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                                and `item`.`moderated` = 0
-                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                                AND `item`.`parent` = ( SELECT `parent` FROM `item` FORCE INDEX (PRIMARY, `uri`) WHERE `uri` = '%s' AND uid = %d )
                                ORDER BY `parent` DESC, `gravity` ASC, `id` ASC ",
                                intval(local_user()),
index 805701dc34963dc5a540c5376526ad0764ba1438..451fcb48c445902f3348daf95850924cfa439b20 100644 (file)
@@ -20,6 +20,7 @@ require_once('include/enotify.php');
 require_once('include/email.php');
 require_once('library/langdet/Text/LanguageDetect.php');
 require_once('include/tags.php');
+require_once('include/threads.php');
 
 function item_post(&$a) {
 
@@ -705,6 +706,7 @@ function item_post(&$a) {
                        intval($profile_uid)
                );
                create_tags_from_itemuri($post_id, $profile_uid);
+               update_thread_uri($post_id, $profile_uid);
 
                // update filetags in pconfig
                 file_tag_update_pconfig($uid,$categories_old,$categories_new,'category');
@@ -772,6 +774,7 @@ function item_post(&$a) {
                $post_id = $r[0]['id'];
                logger('mod_item: saved item ' . $post_id);
                create_tags_from_item($post_id);
+               add_thread($post_id);
 
                // update filetags in pconfig
                 file_tag_update_pconfig($uid,$categories_old,$categories_new,'category');
@@ -794,8 +797,9 @@ function item_post(&$a) {
                                dbesc(datetime_convert()),
                                intval($parent)
                        );
+                       update_thread($parent, true);
 
-                       // Inherit ACL's from the parent item.
+                       // Inherit ACLs from the parent item.
 
                        $r = q("UPDATE `item` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `private` = %d
                                WHERE `id` = %d",
@@ -825,15 +829,14 @@ function item_post(&$a) {
                                        'parent'       => $parent,
                                        'parent_uri'   => $parent_item['uri']
                                ));
-                       
+
                        }
 
 
                        // Store the comment signature information in case we need to relay to Diaspora
                        store_diaspora_comment_sig($datarray, $author, ($self ? $a->user['prvkey'] : false), $parent_item, $post_id);
 
-               }
-               else {
+               } else {
                        $parent = $post_id;
 
                        if($contact_record != $author) {
@@ -868,6 +871,7 @@ function item_post(&$a) {
                        dbesc(datetime_convert()),
                        intval($post_id)
                );
+               update_thread($post_id);
 
                // photo comments turn the corresponding item visible to the profile wall
                // This way we don't see every picture in your new photo album posted to your wall at once.
@@ -877,6 +881,7 @@ function item_post(&$a) {
                        $r = q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d",
                                intval($parent_item['id'])
                        );
+                       update_thread($parent_item['id']);
                }
        }
        else {
@@ -893,6 +898,7 @@ function item_post(&$a) {
                dbesc(datetime_convert()),
                intval($parent)
        );
+       update_thread($parent);
 
        $datarray['id']    = $post_id;
        $datarray['plink'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id;
index e23fd0de5ad551b0b0b379f1c0dee4ff56371859..9d2f60c4788d1cdc465b9a4d49f8839137e99dbb 100644 (file)
@@ -1,5 +1,8 @@
 <?php
-
+/*
+To-Do:
+- Community-Seite umstellen
+*/
 
 function network_init(&$a) {
        if(! local_user()) {
@@ -48,7 +51,7 @@ function network_init(&$a) {
 
                if($remember_tab) {
                        // redirect if current selected tab is '/network' and
-                       // last selected tab is _not_ '/network?f=&order=comment'. 
+                       // last selected tab is _not_ '/network?f=&order=comment'.
                        // and this isn't a date query
 
                        $tab_baseurls = array(
@@ -90,55 +93,14 @@ function network_init(&$a) {
                }
 
                if($remember_tab || $remember_net || $remember_group) {
-            $net_args = array_merge($query_array, $net_args);
-            $net_queries = build_querystring($net_args);
-
-            // groups filter is in form of "network/nnn". Add it to $dest_url, if it's possible
-            //if ($a->argc==2 && is_numeric($a->argv[1]) && strpos($net_baseurl, "/",1)===false){
-            //    $net_baseurl .= "/".$a->argv[1];
-            //}
+                       $net_args = array_merge($query_array, $net_args);
+                       $net_queries = build_querystring($net_args);
 
                        $redir_url = ($net_queries ? $net_baseurl."?".$net_queries : $net_baseurl);
                        goaway($a->get_baseurl() . $redir_url);
                }
        }
 
-/*     $sel_tabs = network_query_get_sel_tab($a);
-       $last_sel_tabs = get_pconfig(local_user(), 'network.view','tab.selected');
-       if (is_array($last_sel_tabs)){
-               $tab_urls = array(
-                       '/network?f=&order=comment',//all
-                       '/network?f=&order=post',               //postord
-                       '/network?f=&conv=1',                   //conv
-                       '/network/new',                                 //new
-                       '/network?f=&star=1',                   //starred
-                       '/network?f=&bmark=1',                  //bookmarked
-                       '/network?f=&spam=1',                   //spam
-               );
-
-               // redirect if current selected tab is 'no_active' and
-               // last selected tab is _not_ 'all_active'.
-               // and this isn't a date query
-
-               if ($sel_tabs[0] == 'active' && $last_sel_tabs[0]!='active' && (! $is_a_date_query)) {
-                       $k = array_search('active', $last_sel_tabs);
-
-            // merge tab querystring with request querystring
-            $dest_qa = array();
-            list($dest_url,$dest_qs) = explode("?", $tab_urls[$k]);
-            parse_str( $dest_qs, $dest_qa);
-            $dest_qa = array_merge($query_array, $dest_qa);
-            $dest_qs = build_querystring($dest_qa);
-
-            // groups filter is in form of "network/nnn". Add it to $dest_url, if it's possible
-            if ($a->argc==2 && is_numeric($a->argv[1]) && strpos($dest_url, "/",1)===false){
-                $dest_url .= "/".$a->argv[1];
-            }
-
-                       goaway($a->get_baseurl() . $dest_url."?".$dest_qs);
-               }
-       }*/
-
        if(x($_GET['nets']) && $_GET['nets'] === 'all')
                unset($_GET['nets']);
 
@@ -180,7 +142,7 @@ function network_init(&$a) {
        }
 
        $a->page['aside'] .= (feature_enabled(local_user(),'groups') ? group_side('network/0','network',true,$group_id) : '');
-       $a->page['aside'] .= posted_date_widget($a->get_baseurl() . '/network',local_user(),false);     
+       $a->page['aside'] .= posted_date_widget($a->get_baseurl() . '/network',local_user(),false);
        $a->page['aside'] .= networks_widget($a->get_baseurl(true) . '/network',(x($_GET, 'nets') ? $_GET['nets'] : ''));
        $a->page['aside'] .= saved_searches($search);
        $a->page['aside'] .= fileas_widget($a->get_baseurl(true) . '/network',(x($_GET, 'file') ? $_GET['file'] : ''));
@@ -240,7 +202,7 @@ function saved_searches($search) {
 
 /**
  * Return selected tab from query
- * 
+ *
  * urls -> returns
  *             '/network'                                      => $no_active = 'active'
  *             '/network?f=&order=comment'     => $comment_active = 'active'
@@ -250,7 +212,7 @@ function saved_searches($search) {
  *             '/network?f=&star=1',           => $starred_active = 'active'
  *             '/network?f=&bmark=1',          => $bookmarked_active = 'active'
  *             '/network?f=&spam=1',           => $spam_active = 'active'
- * 
+ *
  * @return Array ( $no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active );
  */
 function network_query_get_sel_tab($a) {
@@ -383,7 +345,6 @@ function network_content(&$a, $update = 0) {
        list($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active) = network_query_get_sel_tab($a);
        // if no tabs are selected, defaults to comments
        if ($no_active=='active') $all_active='active';
-       //echo "<pre>"; var_dump($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active); killme();
 
        $cmd = (($datequery) ? '' : $a->cmd);
        $len_naked_cmd = strlen(str_replace('/new','',$cmd));
@@ -392,48 +353,16 @@ function network_content(&$a, $update = 0) {
        $tabs = array(
                array(
                        'label' => t('Commented Order'),
-                       'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''), 
+                       'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
                        'sel'=>$all_active,
                        'title'=> t('Sort by Comment Date'),
                ),
                array(
                        'label' => t('Posted Order'),
-                       'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''), 
+                       'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
                        'sel'=>$postord_active,
                        'title' => t('Sort by Post Date'),
                ),
-
-/*             array(
-                       'label' => t('Personal'),
-                       'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1',
-                       'sel' => $conv_active,
-                       'title' => t('Posts that mention or involve you'),
-               ),*/
-/*             array(
-                       'label' => t('New'),
-                       'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ($len_naked_cmd ? '/' : '') . 'new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
-                       'sel' => $new_active,
-                       'title' => t('Activity Stream - by date'),
-               ),*/
-/*             array(
-                       'label' => t('Starred'),
-                       'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
-                       'sel'=>$starred_active,
-                       'title' => t('Favourite Posts'),
-               ),*/
-/*             array(
-                       'label' => t('Shared Links'),
-                       'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1',
-                       'sel'=>$bookmarked_active,
-                       'title'=> t('Interesting Links'),
-               ),      */
-//             array(
-//                     'label' => t('Spam'),
-//                     'url'=>$a->get_baseurl(true) . '/network?f=&spam=1'
-//                     'sel'=> $spam_active,
-//                     'title' => t('Posts flagged as SPAM'),
-//             ),
-
        );
 
        if(feature_enabled(local_user(),'personal_tab')) {
@@ -472,17 +401,6 @@ function network_content(&$a, $update = 0) {
                );
        }
 
-       // Not yet implemented
-
-/*     if(feature_enabled(local_user(),'spam_filter'))  {
-               $tabs[] = array(
-                       'label' => t('Spam'),
-                       'url'=>$a->get_baseurl(true) . '/network?f=&spam=1',
-                       'sel'=> $spam_active,
-                       'title' => t('Posts flagged as SPAM'),
-               );
-       }*/
-
        // save selected tab, but only if not in search or file mode
        if(!x($_GET,'search') && !x($_GET,'file')) {
                set_pconfig( local_user(), 'network.view','tab.selected',array($all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active) );
@@ -533,6 +451,11 @@ function network_content(&$a, $update = 0) {
        }
        set_pconfig(local_user(), 'network.view', 'net.selected', ($nets ? $nets : 'all'));
 
+/*if ($update) {
+print_r($_GET);
+die("ss");
+}*/
+
        if(! $update) {
                if($group) {
                        if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
@@ -567,19 +490,23 @@ function network_content(&$a, $update = 0) {
 
        // We don't have to deal with ACLs on this page. You're looking at everything
        // that belongs to you, hence you can see all of it. We will filter by group if
-       // desired. 
+       // desired.
 
+       $sql_post_table = "";
        $sql_options  = (($star) ? " and starred = 1 " : '');
        $sql_options .= (($bmark) ? " and bookmark = 1 " : '');
+       $sql_extra = $sql_options;
+       $sql_extra2 = "";
+       $sql_extra3 = "";
+       $sql_table = "`thread`";
+       $sql_parent = "`iid`";
 
-       //$sql_nets = (($nets) ? sprintf(" and `contact`.`network` = '%s' ", dbesc($nets)) : '');
-       $sql_nets = (($nets) ? sprintf(" and `item`.`network` = '%s' ", dbesc($nets)) : '');
+       if ($nouveau OR strlen($file) OR $update) {
+               $sql_table = "`item`";
+               $sql_parent = "`parent`";
+       }
 
-       if ($star OR $bmark) {
-               $sql_table = "`item` INNER JOIN (SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options and deleted = 0 ORDER BY `commented` DESC) AS `temp1` ON item.parent = `temp1`.parent ";
-               $sql_extra = "";
-       } else
-               $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` $sql_options ) ";
+       $sql_nets = (($nets) ? sprintf(" and $sql_table.`network` = '%s' ", dbesc($nets)) : '');
 
        if($group) {
                $r = q("SELECT `name`, `id` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1",
@@ -595,29 +522,33 @@ function network_content(&$a, $update = 0) {
                }
 
                $contacts = expand_groups(array($group));
+
+               $contact_str_self = "";
+
                if((is_array($contacts)) && count($contacts)) {
                        $contact_str = implode(',',$contacts);
+                       $self = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self`", intval($_SESSION['uid']));
+                       if (count($self))
+                               $contact_str_self = ",".$self[0]["id"];
                }
                else {
                                $contact_str = ' 0 ';
                                info( t('Group is empty'));
                }
 
-               $sql_table = "`item` INNER JOIN (SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND (`contact-id` IN ($contact_str) OR `allow_gid` like '".protect_sprintf('%<'.intval($group).'>%')."') and deleted = 0 ORDER BY `created` DESC) AS `temp1` ON item.parent = `temp1`.parent ";
-               $sql_extra = "";
-               //$sql_extra = " AND `item`.`parent` IN ( SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND ( `contact-id` IN ( $contact_str ) OR `allow_gid` like '" . protect_sprintf('%<' . intval($group) . '>%') . "' ) and deleted = 0 ) ";
+               $sql_post_table = " INNER JOIN (SELECT DISTINCT(`parent`) FROM `item` WHERE (`contact-id` IN ($contact_str) OR `allow_gid` like '".protect_sprintf('%<'.intval($group).'>%')."') and deleted = 0 ORDER BY `created` DESC) AS `temp1` ON $sql_table.$sql_parent = `temp1`.`parent` ";
+
+               $sql_extra3 .= " AND `contact-id` IN ($contact_str.$contact_str_self) ";
                $o = '<h2>' . t('Group: ') . $r[0]['name'] . '</h2>' . $o;
-       }
-       elseif($cid) {
+       } elseif($cid) {
 
-               $r = q("SELECT `id`,`name`,`network`,`writable`,`nurl` FROM `contact` WHERE `id` = %d 
+               $r = q("SELECT `id`,`name`,`network`,`writable`,`nurl` FROM `contact` WHERE `id` = %d
                                AND `blocked` = 0 AND `pending` = 0 LIMIT 1",
                        intval($cid)
                );
                if(count($r)) {
-                       $sql_table = "`item` INNER JOIN (SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND `contact-id` = ".intval($cid)." and deleted = 0 ORDER BY `item`.`received` DESC) AS `temp1` ON item.parent = `temp1`.parent ";
+                       $sql_post_table = " INNER JOIN (SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND `contact-id` = ".intval($cid)." and deleted = 0 ORDER BY `item`.`received` DESC) AS `temp1` ON $sql_table.$sql_parent = `temp1`.`parent` ";
                        $sql_extra = "";
-                       //$sql_extra = " AND `item`.`parent` IN ( SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND `contact-id` = " . intval($cid) . " and deleted = 0 ) ";
                        $o = '<h2>' . t('Contact: ') . $r[0]['name'] . '</h2>' . $o;
                        if($r[0]['network'] === NETWORK_OSTATUS && $r[0]['writable'] && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
                                notice( t('Private messages to this person are at risk of public disclosure.') . EOL);
@@ -636,24 +567,19 @@ function network_content(&$a, $update = 0) {
                $o .= get_events();
        }
 
-       $sql_extra3 = '';
-
        if($datequery) {
-               $sql_extra3 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
+               $sql_extra3 .= protect_sprintf(sprintf(" AND $sql_table.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
        }
        if($datequery2) {
-               $sql_extra3 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
+               $sql_extra3 .= protect_sprintf(sprintf(" AND $sql_table.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
        }
 
-       $sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` ");
+       //$sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` ");
+       $sql_extra2 = (($nouveau) ? '' : $sql_extra2);
        $sql_extra3 = (($nouveau) ? '' : $sql_extra3);
-       //$sql_order = "`item`.`received`";
        $sql_order = "";
        $order_mode = "received";
 
-       if ($sql_table == "")
-               $sql_table = "`item`";
-
        if(x($_GET,'search')) {
                $search = escape_tags($_GET['search']);
 
@@ -666,44 +592,24 @@ function network_content(&$a, $update = 0) {
                        $tag = true;
 
                if($tag) {
-                       //$sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d ",
-                       //              dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG));
-                       //$sql_table = "`term` LEFT JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` ";
-
-                       //$sql_order = "`term`.`tid`";
-
                        $sql_extra = "";
 
-                       $sql_table = sprintf("`item` INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",
+                       $sql_post_table = sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",
                                        dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG), intval(local_user()));
-
-                       $sql_order = "`item`.`received`";
-                       $order_mode = "received";
                } else {
                        if (get_config('system','use_fulltext_engine'))
                                $sql_extra = sprintf(" AND MATCH (`item`.`body`, `item`.`title`) AGAINST ('%s' in boolean mode) ", dbesc(protect_sprintf($search)));
                        else
                                $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
-
-                       $sql_order = "`item`.`received`";
-                       $order_mode = "received";
                }
+               $sql_order = "`item`.`received`";
+               $order_mode = "received";
        }
-       if(strlen($file)) {
+       if(strlen($file))
                $sql_extra .= file_tag_file_query('item',unxmlify($file));
-       }
 
-       if($conv) {
-               $myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname'];
-               $myurl = substr($myurl,strpos($myurl,'://')+3);
-               $myurl = str_replace('www.','',$myurl);
-               $diasp_url = str_replace('/profile/','/u/',$myurl);
-
-               $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where `author-link` IN ('https://%s', 'http://%s') OR `mention`)",
-                       dbesc(protect_sprintf($myurl)),
-                       dbesc(protect_sprintf($myurl))
-               );
-       }
+       if($conv)
+               $sql_extra2 .= " AND `mention`";
 
        if($update) {
 
@@ -714,9 +620,9 @@ function network_content(&$a, $update = 0) {
        else {
                if( (! get_config('alt_pager', 'global')) && (! get_pconfig(local_user(),'system','alt_pager')) ) {
                        $r = q("SELECT COUNT(*) AS `total`
-                               FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                               WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+                               FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = $sql_table.`contact-id`
                                AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+                               WHERE $sql_table.`uid` = %d AND $sql_table.`visible` = 1 AND $sql_table.`deleted` = 0
                                $sql_extra2 $sql_extra3
                                $sql_extra $sql_nets ",
                                intval($_SESSION['uid'])
@@ -727,16 +633,16 @@ function network_content(&$a, $update = 0) {
                        }
                }
 
-               //  check if we serve a mobile device and get the user settings 
+               //  check if we serve a mobile device and get the user settings
                //  accordingly
-               if ($a->is_mobile) { 
+               if ($a->is_mobile) {
                    $itemspage_network = get_pconfig(local_user(),'system','itemspage_mobile_network');
                    $itemspage_network = ((intval($itemspage_network)) ? $itemspage_network : 20);
-               } else { 
+               } else {
                    $itemspage_network = get_pconfig(local_user(),'system','itemspage_network');
                    $itemspage_network = ((intval($itemspage_network)) ? $itemspage_network : 40);
                }
-               //  now that we have the user settings, see if the theme forces 
+               //  now that we have the user settings, see if the theme forces
                //  a maximum item number which is lower then the user choice
                if(($a->force_max_items > 0) && ($a->force_max_items < $itemspage_network))
                        $itemspage_network = $a->force_max_items;
@@ -745,28 +651,26 @@ function network_content(&$a, $update = 0) {
                $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
        }
 
-       $simple_update = (($update) ? " and `item`.`unseen` = 1 " : '');
-
        if($nouveau) {
-               // "New Item View" - show all items unthreaded in reverse created date order
+               $simple_update = (($update) ? " and `item`.`unseen` = 1 " : '');
 
+               // "New Item View" - show all items unthreaded in reverse created date order
                $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`,
                        `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
                        `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-                       FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                       WHERE `item`.`uid` = %d AND `item`.`visible` = 1 
+                       FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+                       WHERE `item`.`uid` = %d AND `item`.`visible` = 1
                        AND `item`.`deleted` = 0 and `item`.`moderated` = 0
                        $simple_update
-                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                        $sql_extra $sql_nets
                        ORDER BY `item`.`received` DESC $pager_sql ",
                        intval($_SESSION['uid'])
                );
 
                $update_unseen = ' WHERE uid = ' . intval($_SESSION['uid']) . " AND unseen = 1 $sql_extra $sql_nets";
-       }
-       else {
+       } else {
 
                // Normal conversation view
 
@@ -782,31 +686,29 @@ function network_content(&$a, $update = 0) {
                }
 
                if ($sql_order == "")
-                       $sql_order = "`item`.$ordering";
+                       $sql_order = "$sql_table.$ordering";
 
                if (($_GET["offset"] != ""))
                        $sql_extra3 .= sprintf(" AND $sql_order <= '%s'", dbesc($_GET["offset"]));
 
                // Fetch a page full of parent items for this page
-
                if($update) {
                        $r = q("SELECT `item`.`parent` AS `item_id`, `item`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
-                               FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                               FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                                WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND
-                               (`item`.`deleted` = 0 OR item.verb = '" . ACTIVITY_LIKE ."' OR item.verb = '" . ACTIVITY_DISLIKE . "')
+                               (`item`.`deleted` = 0 OR `item`.`verb` = '" . ACTIVITY_LIKE ."' OR `item`.`verb` = '" . ACTIVITY_DISLIKE . "')
                                and `item`.`moderated` = 0 and `item`.`unseen` = 1
-                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                               $sql_extra3 $sql_extra $sql_nets ",
+                               $sql_extra3 $sql_extra $sql_nets ORDER BY `item_id` DESC LIMIT 100",
                                intval(local_user())
                        );
-               }
-               else {
-                       $r = q("SELECT `item`.`id` AS `item_id`, `item`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
-                               FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                               WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
-                               AND `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                               AND `item`.`parent` = `item`.`id`
-                               $sql_extra3 $sql_extra $sql_nets
+               } else {
+                       $r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
+                               FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
+                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+                               WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0
+                               AND `thread`.`moderated` = 0
+                               $sql_extra2 $sql_extra3 $sql_extra $sql_nets
                                ORDER BY $sql_order DESC $pager_sql ",
                                intval(local_user())
                        );
@@ -823,7 +725,7 @@ function network_content(&$a, $update = 0) {
                                if(! in_array($rr['item_id'],$parents_arr))
                                        $parents_arr[] = $rr['item_id'];
 
-                       //$parents_str = implode(', ', $parents_arr);
+                       $parents_str = implode(", ", $parents_arr);
 
                        // splitted into separate queries to avoid the problem with very long threads
                        // so always the last X comments are loaded
@@ -834,26 +736,25 @@ function network_content(&$a, $update = 0) {
 
                        $items = array();
 
-                       foreach ($parents_arr AS $parents_str) {
-
+                       foreach ($parents_arr AS $parents) {
+//                                     $sql_extra ORDER BY `item`.`commented` DESC LIMIT %d",
                                $thread_items = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`writable`,
                                        `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
                                        `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-                                       FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                                       FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                                        WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                                        AND `item`.`moderated` = 0
-                                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                                       AND `item`.`parent` IN ( %s )
-                                       $sql_extra ORDER BY `item`.`commented` DESC LIMIT %d",
+                                       AND `item`.`parent` = %d
+                                       ORDER BY `item`.`commented` DESC LIMIT %d",
                                        intval(local_user()),
-                                       dbesc($parents_str),
+                                       intval($parents),
                                        intval($max_comments + 1)
                                );
                                $items = array_merge($items, $thread_items);
                        }
                        $items = conv_sort($items,$ordering);
-
                } else {
                        $items = array();
                }
@@ -871,17 +772,18 @@ function network_content(&$a, $update = 0) {
 
        // We aren't going to try and figure out at the item, group, and page
        // level which items you've seen and which you haven't. If you're looking
-       // at the top level network page just mark everything seen. 
+       // at the top level network page just mark everything seen.
 
 
-// The $update_unseen is a bit unreliable if you have stuff coming into your stream from a new contact - 
-// and other feeds that bring in stuff from the past. One can't find it all. 
+// The $update_unseen is a bit unreliable if you have stuff coming into your stream from a new contact -
+// and other feeds that bring in stuff from the past. One can't find it all.
 // I'm reviving this block to mark everything seen on page 1 of the network as a temporary measure.
 // The correct solution is to implement a network notifications box just like the system notifications popup
 // with the ability in the popup to "mark all seen".
 // Several people are complaining because there are unseen messages they can't find and as time goes
 // on they just get buried deeper. It has happened to me a couple of times also.
 
+
        if((! $group) && (! $cid) && (! $star)) {
                $r = q("UPDATE `item` SET `unseen` = 0
                        WHERE `unseen` = 1 AND `uid` = %d",
index dac6dae9bebc44389d193849096c1847b5177dd3..1ec16898bf761f784d0d0b652b403959d8e3e4e2 100644 (file)
@@ -6,6 +6,7 @@ require_once('include/bbcode.php');
 require_once('include/security.php');
 require_once('include/redir.php');
 require_once('include/tags.php');
+require_once('include/threads.php');
 
 function photos_init(&$a) {
 
@@ -253,6 +254,7 @@ function photos_post(&$a) {
                                                intval($page_owner_uid)
                                        );
                                        create_tags_from_itemuri($rr['parent-uri'], $page_owner_uid);
+                                       delete_thread_uri($rr['parent-uri'], $page_owner_uid);
 
                                        $drop_id = intval($rr['id']);
 
@@ -323,6 +325,7 @@ function photos_post(&$a) {
                                        intval($page_owner_uid)
                                );
                                create_tags_from_itemuri($i[0]['uri'], $page_owner_uid);
+                               delete_thread_uri($i[0]['uri'], $page_owner_uid);
 
                                $url = $a->get_baseurl();
                                $drop_id = intval($i[0]['id']);
@@ -371,7 +374,7 @@ function photos_post(&$a) {
                                        $width  = $ph->getWidth();
                                        $height = $ph->getHeight();
 
-                                       $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 0 limit 1",
+                                       $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 0",
                                                dbesc($ph->imageString()),
                                                intval($height),
                                                intval($width),
@@ -384,7 +387,7 @@ function photos_post(&$a) {
                                                $width  = $ph->getWidth();
                                                $height = $ph->getHeight();
 
-                                               $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 1 limit 1",
+                                               $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 1",
                                                        dbesc($ph->imageString()),
                                                        intval($height),
                                                        intval($width),
@@ -398,7 +401,7 @@ function photos_post(&$a) {
                                                $width  = $ph->getWidth();
                                                $height = $ph->getHeight();
 
-                                               $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 2 limit 1",
+                                               $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 2",
                                                        dbesc($ph->imageString()),
                                                        intval($height),
                                                        intval($width),
@@ -599,7 +602,7 @@ function photos_post(&$a) {
                                $newinform .= ',';
                        $newinform .= $inform;
 
-                       $r = q("UPDATE `item` SET `tag` = '%s', `inform` = '%s', `edited` = '%s', `changed` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
+                       $r = q("UPDATE `item` SET `tag` = '%s', `inform` = '%s', `edited` = '%s', `changed` = '%s' WHERE `id` = %d AND `uid` = %d",
                                dbesc($newtag),
                                dbesc($newinform),
                                dbesc(datetime_convert()),
@@ -608,6 +611,7 @@ function photos_post(&$a) {
                                intval($page_owner_uid)
                        );
                        create_tags_from_item($item_id);
+                       update_thread($item_id);
 
                        $best = 0;
                        foreach($p as $scales) {
@@ -668,7 +672,7 @@ function photos_post(&$a) {
 
                                        $item_id = item_store($arr);
                                        if($item_id) {
-                                               q("UPDATE `item` SET `plink` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1",
+                                               q("UPDATE `item` SET `plink` = '%s' WHERE `uid` = %d AND `id` = %d",
                                                        dbesc($a->get_baseurl() . '/display/' . $owner_record['nickname'] . '/' . $item_id),
                                                        intval($page_owner_uid),
                                                        intval($item_id)
@@ -877,7 +881,7 @@ function photos_post(&$a) {
        $item_id = item_store($arr);
 
        if($item_id) {
-               q("UPDATE `item` SET `plink` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1",
+               q("UPDATE `item` SET `plink` = '%s' WHERE `uid` = %d AND `id` = %d",
                        dbesc($a->get_baseurl() . '/display/' . $owner_record['nickname'] . '/' . $item_id),
                        intval($page_owner_uid),
                        intval($item_id)
@@ -1431,6 +1435,7 @@ function photos_content(&$a) {
                                        intval($link_item['parent']),
                                        intval(local_user())
                                );
+                               update_thread($link_item['parent']);
                        }
                }
 
index 28e93b294797c44400ddf9535efd83f3d01c2625..c8f6d2a1705719995749b2a3f1b03160023cab64 100644 (file)
@@ -27,7 +27,7 @@ function profile_init(&$a) {
        $profile = 0;
        if((local_user()) && ($a->argc > 2) && ($a->argv[2] === 'view')) {
                $which = $a->user['nickname'];
-               $profile = $a->argv[1];         
+               $profile = $a->argv[1];
        }
        else {
                auto_redir($a, $which);
@@ -41,7 +41,7 @@ function profile_init(&$a) {
        if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) {
                $a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
        }
-       if(x($a->profile,'openidserver'))                               
+       if(x($a->profile,'openidserver'))
                $a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n";
        if(x($a->profile,'openid')) {
                $delegate = ((strstr($a->profile['openid'],'://')) ? $a->profile['openid'] : 'http://' . $a->profile['openid']);
@@ -60,7 +60,7 @@ function profile_init(&$a) {
        $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->get_hostname() . (($a->path) ? '/' . $a->path : ''));
        $a->page['htmlhead'] .= '<link rel="lrdd" type="application/xrd+xml" href="' . $a->get_baseurl() . '/xrd/?uri=' . $uri . '" />' . "\r\n";
        header('Link: <' . $a->get_baseurl() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
-       
+
        $dfrn_pages = array('request', 'confirm', 'notify', 'poll');
        foreach($dfrn_pages as $dfrn)
                $a->page['htmlhead'] .= "<link rel=\"dfrn-{$dfrn}\" href=\"".$a->get_baseurl()."/dfrn_{$dfrn}/{$which}\" />\r\n";
@@ -219,11 +219,11 @@ function profile_content(&$a, $update = 0) {
 
                $r = q("SELECT distinct(parent) AS `item_id`, `item`.`network` AS `item_network`,
                        `contact`.`uid` AS `contact-uid`
-                       FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                       FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                        WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND
                        (`item`.`deleted` = 0 OR item.verb = '" . ACTIVITY_LIKE ."' OR item.verb = '" . ACTIVITY_DISLIKE . "')
                        and `item`.`moderated` = 0 and `item`.`unseen` = 1
-                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                        AND `item`.`wall` = 1
                        $sql_extra
                        ORDER BY `item`.`created` DESC",
@@ -238,18 +238,20 @@ function profile_content(&$a, $update = 0) {
                }
 
                if($datequery) {
-                       $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
+                       $sql_extra2 .= protect_sprintf(sprintf(" AND `thread`.`created` <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
                }
                if($datequery2) {
-                       $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
+                       $sql_extra2 .= protect_sprintf(sprintf(" AND `thread`.`created` >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
                }
 
                if( (! get_config('alt_pager', 'global')) && (! get_pconfig($a->profile['profile_uid'],'system','alt_pager')) ) {
                    $r = q("SELECT COUNT(*) AS `total`
-                           FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                           WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
-                           and `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 
-                           AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1
+                           FROM `thread` INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
+                           INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
+                           AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+                           WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0
+                           and `thread`.`moderated` = 0
+                           AND `thread`.`wall` = 1
                            $sql_extra $sql_extra2 ",
                            intval($a->profile['profile_uid'])
                    );
@@ -277,16 +279,16 @@ function profile_content(&$a, $update = 0) {
 
                $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
 
-               // FROM `item` FORCE INDEX (created, uid) LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-
-               $r = q("SELECT `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
-                       `contact`.`uid` AS `contact-uid`
-                       FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                       WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
-                       and `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                       AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1
+               $r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`,
+                       `thread`.`uid` AS `contact-uid`
+                       FROM `thread` INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
+                       INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
+                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+                       WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0
+                       and `thread`.`moderated` = 0
+                       AND `thread`.`wall` = 1
                        $sql_extra $sql_extra2
-                       ORDER BY `item`.`created` DESC $pager_sql ",
+                       ORDER BY `thread`.`created` DESC $pager_sql ",
                        intval($a->profile['profile_uid'])
 
                );
@@ -303,19 +305,19 @@ function profile_content(&$a, $update = 0) {
  
                $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`network`, `contact`.`rel`, 
-                       `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
+                       `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
                        `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
                        FROM `item`, `contact`
                        WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                        and `item`.`moderated` = 0
-                       AND `contact`.`id` = `item`.`contact-id`
+                       AND `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
                        AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                        AND `item`.`parent` IN ( %s )
                        $sql_extra ",
                        intval($a->profile['profile_uid']),
                        dbesc($parents_str)
                );
-               
+
                $items = conv_sort($items,'created');
        } else {
                $items = array();
index 148c632914a568a16b93e562f400b24b79818533..3e45f1c45121dc2fc829c43fad1590a23e765e24 100644 (file)
@@ -19,7 +19,7 @@ function profiles_init(&$a) {
                        goaway($a->get_baseurl(true) . '/profiles');
                        return; // NOTREACHED
                }
-               
+
                check_form_security_token_redirectOnErr('/profiles', 'profile_drop', 't');
 
                // move every contact using this profile as their default to the user default
@@ -29,7 +29,7 @@ function profiles_init(&$a) {
                        intval($a->argv[2]),
                        intval(local_user())
                );
-               $r = q("DELETE FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+               $r = q("DELETE FROM `profile` WHERE `id` = %d AND `uid` = %d",
                        intval($a->argv[2]),
                        intval(local_user())
                );
@@ -45,7 +45,7 @@ function profiles_init(&$a) {
 
 
        if(($a->argc > 1) && ($a->argv[1] === 'new')) {
-               
+
                check_form_security_token_redirectOnErr('/profiles', 'profile_new', 't');
 
                $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
@@ -56,7 +56,7 @@ function profiles_init(&$a) {
 
                $r1 = q("SELECT `name`, `photo`, `thumb` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
                        intval(local_user()));
-               
+
                $r2 = q("INSERT INTO `profile` (`uid` , `profile-name` , `name`, `photo`, `thumb`)
                        VALUES ( %d, '%s', '%s', '%s', '%s' )",
                        intval(local_user()),
@@ -74,12 +74,12 @@ function profiles_init(&$a) {
                info( t('New profile created.') . EOL);
                if(count($r3) == 1)
                        goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']);
-               
+
                goaway($a->get_baseurl(true) . '/profiles');
        } 
 
        if(($a->argc > 2) && ($a->argv[1] === 'clone')) {
-               
+
                check_form_security_token_redirectOnErr('/profiles', 'profile_clone', 't');
 
                $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
@@ -117,9 +117,9 @@ function profiles_init(&$a) {
                info( t('New profile created.') . EOL);
                if(count($r3) == 1)
                        goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']);
-               
+
                goaway($a->get_baseurl(true) . '/profiles');
-               
+
                return; // NOTREACHED
        }
 
@@ -160,7 +160,7 @@ function profiles_post(&$a) {
                        notice( t('Profile not found.') . EOL);
                        return;
                }
-               
+
                check_form_security_token_redirectOnErr('/profiles', 'profile_edit');
                
                $is_default = (($orig[0]['is-default']) ? 1 : 0);
@@ -259,7 +259,7 @@ function profiles_post(&$a) {
                                                        intval(local_user())
                                                );
                                        }*/
-                                       
+
                                        $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1",
                                                dbesc($newname),
                                                intval(local_user())
@@ -372,9 +372,9 @@ function profiles_post(&$a) {
 
                        profile_activity($changes,$value);
 
-               }                       
-                       
-               $r = q("UPDATE `profile` 
+               }
+
+               $r = q("UPDATE `profile`
                        SET `profile-name` = '%s',
                        `name` = '%s',
                        `pdesc` = '%s',
@@ -408,7 +408,7 @@ function profiles_post(&$a) {
                        `work` = '%s',
                        `education` = '%s',
                        `hide-friends` = %d
-                       WHERE `id` = %d AND `uid` = %d LIMIT 1",
+                       WHERE `id` = %d AND `uid` = %d",
                        dbesc($profile_name),
                        dbesc($name),
                        dbesc($pdesc),
@@ -451,11 +451,11 @@ function profiles_post(&$a) {
 
 
                if($namechanged && $is_default) {
-                       $r = q("UPDATE `contact` SET `name-date` = '%s' WHERE `self` = 1 AND `uid` = %d LIMIT 1",
+                       $r = q("UPDATE `contact` SET `name-date` = '%s' WHERE `self` = 1 AND `uid` = %d",
                                dbesc(datetime_convert()),
                                intval(local_user())
                        );
-                       $r = q("UPDATE `user` set `username` = '%s' where `uid` = %d limit 1",
+                       $r = q("UPDATE `user` set `username` = '%s' where `uid` = %d",
                                dbesc($name),
                                intval(local_user())
                        );
@@ -554,7 +554,7 @@ function profile_activity($changed, $value) {
        if($i) {
 
                // give it a permanent link
-               q("update item set plink = '%s' where id = %d limit 1",
+               q("update item set plink = '%s' where id = %d",
                        dbesc($a->get_baseurl() . '/display/' . $a->user['nickname'] . '/' . $i),
                        intval($i)
                );
index 7aa95e49c0db7200b10953e7283509e2ebafd772..3d8bfca48e39a5db21e6384b2897cf5c31877530 100644 (file)
@@ -79,18 +79,18 @@ function pubsub_init(&$a) {
 
                if($hub_mode === 'unsubscribe') {
                        if(! strlen($hub_verify)) {
-                               logger('pubsub: bogus unsubscribe'); 
+                               logger('pubsub: bogus unsubscribe');
                                hub_return(false, '');
                        }
                        logger('pubsub: unsubscribe success');
                }
 
-               $r = q("UPDATE `contact` SET `subhub` = %d WHERE `id` = %d LIMIT 1",
+               $r = q("UPDATE `contact` SET `subhub` = %d WHERE `id` = %d",
                        intval($subscribe),
                        intval($contact['id'])
                );
 
-               hub_return(true, $hub_challenge);               
+               hub_return(true, $hub_challenge);
        }
 }
 
index cda9f68d2de99ef811a3fa60604c764729549590..75c52fc5a0674cfd9129f58da35d3fb09508e7aa 100644 (file)
@@ -131,7 +131,7 @@ function search_content(&$a) {
                //$sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d",
                //$sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d group by `item`.`uri` ",
                //                      dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG));
-               //$sql_table = "`term` LEFT JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` ";
+               //$sql_table = "`term` INNER JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` ";
                //$sql_order = "`term`.`tid`";
                //$sql_order = "`item`.`received`";
 
@@ -162,11 +162,12 @@ function search_content(&$a) {
 
        if( (! get_config('alt_pager', 'global')) && (! get_pconfig(local_user(),'system','alt_pager')) ) {
                $r = q("SELECT distinct(`item`.`uri`) as `total`
-                       FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
+                       FROM $sql_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+                       INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
                        WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
-                       AND (( `item`.`allow_cid` = ''  AND `item`.`allow_gid` = '' AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0) 
+                       AND (( `item`.`allow_cid` = ''  AND `item`.`allow_gid` = '' AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0)
                                OR ( `item`.`uid` = %d ))
-                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                        $sql_extra ",
                        intval(local_user())
                );
@@ -186,12 +187,12 @@ function search_content(&$a) {
                `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
                `user`.`nickname`, `user`.`uid`, `user`.`hidewall`
-               FROM $sql_table LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-               LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
+               FROM $sql_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+               INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
                WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
                AND (( `item`.`allow_cid` = ''  AND `item`.`allow_gid` = '' AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0 ) 
                        OR ( `item`.`uid` = %d ))
-               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                $sql_extra
                ORDER BY $sql_order DESC LIMIT %d , %d ",
                intval(local_user()),
index 66d07db3ce7b301e6fca2b026fecce015a52e66d..e9127b647d4a9d321d3d2f3c2e019f37d33e5415 100644 (file)
@@ -9,7 +9,7 @@ function share_init(&$a) {
                killme();
 
        $r = q("SELECT item.*, contact.network FROM `item` 
-               left join contact on `item`.`contact-id` = `contact`.`id` 
+               inner join contact on `item`.`contact-id` = `contact`.`id` 
                WHERE `item`.`id` = %d AND `item`.`uid` = %d LIMIT 1",
 
                intval($post_id),
index 3bd3d8dc2657c57c6854f39313a933766f999061..4cd4e5f52d853933d73f3486486887e9b7b38b61 100644 (file)
@@ -9,7 +9,7 @@ function wall_upload_post(&$a) {
        if($a->argc > 1) {
                if(! x($_FILES,'media')) {
                        $nick = $a->argv[1];
-                       $r = q("SELECT `user`.*, `contact`.`id` FROM `user` LEFT JOIN `contact` on `user`.`uid` = `contact`.`uid`  WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
+                       $r = q("SELECT `user`.*, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid`  WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
                                dbesc($nick)
                        );
 
@@ -18,7 +18,7 @@ function wall_upload_post(&$a) {
                }
                 else {
                        $user_info = api_get_user($a);
-                       $r = q("SELECT `user`.*, `contact`.`id` FROM `user` LEFT JOIN `contact` on `user`.`uid` = `contact`.`uid`  WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
+                       $r = q("SELECT `user`.*, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid`  WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
                                dbesc($user_info['screen_name'])
                        );
                 }
index ed631fee4e9fd995d088cb0c17fc6348693dd018..c84329511f91025076c8cec32e4c9e5dcee49880 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1169 );
+define( 'UPDATE_VERSION' , 1170 );
 
 /**
  *
@@ -1557,3 +1557,48 @@ function update_1168() {
 
        return UPDATE_SUCCESS;
 }
+
+function update_1169() {
+       $r = q("CREATE TABLE IF NOT EXISTS `thread` (
+                 `iid` int(10) unsigned NOT NULL DEFAULT '0',
+                 `uid` int(10) unsigned NOT NULL DEFAULT '0',
+                 `contact-id` int(10) unsigned NOT NULL DEFAULT '0',
+                 `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+                 `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+                 `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+                 `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+                 `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+                 `wall` tinyint(1) NOT NULL DEFAULT '0',
+                 `private` tinyint(1) NOT NULL DEFAULT '0',
+                 `pubmail` tinyint(1) NOT NULL DEFAULT '0',
+                 `moderated` tinyint(1) NOT NULL DEFAULT '0',
+                 `visible` tinyint(1) NOT NULL DEFAULT '0',
+                 `spam` tinyint(1) NOT NULL DEFAULT '0',
+                 `starred` tinyint(1) NOT NULL DEFAULT '0',
+                 `bookmark` tinyint(1) NOT NULL DEFAULT '0',
+                 `unseen` tinyint(1) NOT NULL DEFAULT '1',
+                 `deleted` tinyint(1) NOT NULL DEFAULT '0',
+                 `origin` tinyint(1) NOT NULL DEFAULT '0',
+                 `forum_mode` tinyint(1) NOT NULL DEFAULT '0',
+                 `mention` tinyint(1) NOT NULL DEFAULT '0',
+                 `network` char(32) NOT NULL,
+                 PRIMARY KEY (`iid`),
+                 KEY `uid` (`uid`),
+                 KEY `contact-id` (`contact-id`),
+                 KEY `created` (`created`),
+                 KEY `edited` (`edited`),
+                 KEY `commented` (`commented`),
+                 KEY `received` (`received`),
+                 KEY `changed` (`changed`),
+                 KEY `network` (`network`)
+                 KEY `visible_deleted_moderated_private_wall_received` (`visible`,`deleted`,`moderated`,`private`,`wall`,`received`),
+                 KEY `uid_visible_deleted_moderated_created` (`uid`,`visible`,`deleted`,`moderated`,`created`),
+                 KEY `uid_visible_deleted_moderated_commented` (`uid`,`visible`,`deleted`,`moderated`,`commented`)
+               ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;");
+       if (!$r)
+               return UPDATE_FAILED;
+
+       proc_run('php',"include/threadupdate.php");
+
+       return UPDATE_SUCCESS;
+}