]> git.mxchange.org Git - friendica.git/commitdiff
Even more SQL improvements.
authorMichael Vogel <icarus@dabo.de>
Sun, 16 Mar 2014 16:12:56 +0000 (17:12 +0100)
committerMichael Vogel <icarus@dabo.de>
Sun, 16 Mar 2014 16:12:56 +0000 (17:12 +0100)
database.sql
include/api.php
include/items.php
mod/display.php
mod/item.php
mod/network.php
mod/profile.php
mod/search.php
object/Item.php
update.php

index 8480051752ba9325e9e488b04a0f9b72686c1b40..0d45dda106c4e6fe92c6e66a796b70a04fcb99b7 100644 (file)
@@ -1202,7 +1202,7 @@ CREATE TABLE IF NOT EXISTS `unique_contacts` (
 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',
+  `contact-id` int(11) 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',
@@ -1223,15 +1223,13 @@ CREATE TABLE IF NOT EXISTS `thread` (
   `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`)
+  KEY `uid_network_commented` (`uid`,`network`,`commented`),
+  KEY `uid_network_created` (`uid`,`network`,`created`),
+  KEY `uid_contactid_commented` (`uid`,`contact-id`,`commented`),
+  KEY `uid_contactid_created` (`uid`,`contact-id`,`created`),
+  KEY `wall_private_received` (`wall`,`private`,`received`),
+  KEY `uid_created` (`uid`,`created`),
+  KEY `uid_commented` (`uid`,`commented`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
index 0a63a2c04904d80b9008c5679083cf14bd658318..80f448c2686c8b2a4ffb7504a0ed087e62eea302 100644 (file)
 
                        //AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`=''",
                        // count public wall messages
-                       $r = q("SELECT count(*) as `count` FROM `item` force index (uid_type)
+                       $r = q("SELECT count(*) as `count` FROM `item`
                                        WHERE  `uid` = %d
                                        AND `type`='wall'",
                                        intval($uinfo[0]['uid'])
index 6c438f463962bff56161192b0b6b5f2d4da972d2..a1eddb2eebef9b95bae68158b4c9cbc3d0c84a6d 100755 (executable)
@@ -6,6 +6,7 @@ require_once('include/salmon.php');
 require_once('include/crypto.php');
 require_once('include/Photo.php');
 require_once('include/tags.php');
+require_once('include/files.php');
 require_once('include/text.php');
 require_once('include/email.php');
 require_once('include/ostatus_conversation.php');
@@ -123,22 +124,25 @@ 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');
 
+       //      AND ( `item`.`edited` > '%s' OR `item`.`changed` > '%s' )
+       //      dbesc($check_date),
+
        $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`.`id` AS `contact-id`, `contact`.`uid` AS `contact-uid`,
                `sign`.`signed_text`, `sign`.`signature`, `sign`.`signer`
-               FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
+               FROM `item`
+               INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id`
                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' )
+               AND `item`.`wall` = 1 AND `item`.`changed` > '%s'
                $sql_extra
                ORDER BY `parent` %s, `created` ASC LIMIT 0, 300",
                intval($owner_id),
                dbesc($check_date),
-               dbesc($check_date),
                dbesc($sort)
        );
 
@@ -619,7 +623,7 @@ function get_atom_elements($feed, $item, $contact = array()) {
                $res['edited'] = unxmlify($rawedited[0]['data']);
 
        if((x($res,'edited')) && (! (x($res,'created'))))
-               $res['created'] = $res['edited']; 
+               $res['created'] = $res['edited'];
 
        if(! $res['created'])
                $res['created'] = $item->get_date('c');
@@ -1161,7 +1165,6 @@ function item_store($arr,$force_parent = false) {
        if(count($r)) {
                $current_post = $r[0]['id'];
                logger('item_store: created item ' . $current_post);
-               create_tags_from_item($r[0]['id']);
 
                // Only check for notifications on start posts
                if ($arr['parent-uri'] === $arr['uri']) {
@@ -1240,7 +1243,6 @@ function item_store($arr,$force_parent = false) {
                intval($parent_deleted),
                intval($current_post)
        );
-       create_tags_from_item($current_post);
 
        // Complete ostatus threads
        if ($ostatus_conversation)
@@ -1304,17 +1306,20 @@ function item_store($arr,$force_parent = false) {
                        logger('item_store: put item '.$current_post.' into cachefile '.$cachefile);
                }
 
-        $r = q('SELECT * FROM `item` WHERE id = %d', intval($current_post));
-        if (count($r) == 1) {
-            call_hooks('post_remote_end', $r[0]);
-        }
-        else {
-            logger('item_store: new item not found in DB, id ' . $current_post);
-        }
+               $r = q('SELECT * FROM `item` WHERE id = %d', intval($current_post));
+               if (count($r) == 1) {
+                       call_hooks('post_remote_end', $r[0]);
+               } else {
+                       logger('item_store: new item not found in DB, id ' . $current_post);
+               }
        }
+
+       create_tags_from_item($current_post);
+       create_files_from_item($current_post);
+
        return $current_post;
 }
-
+// return - test
 function get_item_contact($item,$contacts) {
        if(! count($contacts) || (! is_array($item)))
                return false;
@@ -1762,7 +1767,7 @@ function edited_timestamp_is_newer($existing, $update) {
  * thing regardless of feed ordering. This won't be adequate in a fully-threaded
  * model where comments can have sub-threads. That would require some massive sorting
  * to get all the feed items into a mostly linear ordering, and might still require
- * recursion.  
+ * recursion.
  */
 
 function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) {
@@ -2041,6 +2046,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                        intval($importer['uid'])
                                                );
                                                create_tags_from_itemuri($item['uri'], $importer['uid']);
+                                               create_files_from_itemuri($item['uri'], $importer['uid']);
                                                update_thread_uri($item['uri'], $importer['uid']);
                                        }
                                        else {
@@ -2053,6 +2059,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                        intval($importer['uid'])
                                                );
                                                create_tags_from_itemuri($uri, $importer['uid']);
+                                               create_files_from_itemuri($uri, $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 ",
@@ -2159,11 +2166,12 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
                                                        continue;
 
-                                               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
+                                               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s', `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
                                                        dbesc($datarray['title']),
                                                        dbesc($datarray['body']),
                                                        dbesc($datarray['tag']),
                                                        dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
+                                                       dbesc(datetime_convert()),
                                                        dbesc($item_id),
                                                        intval($importer['uid'])
                                                );
@@ -2319,11 +2327,12 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                                if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
                                                        continue;
 
-                                               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
+                                               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s', `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
                                                        dbesc($datarray['title']),
                                                        dbesc($datarray['body']),
                                                        dbesc($datarray['tag']),
                                                        dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
+                                                       dbesc(datetime_convert()),
                                                        dbesc($item_id),
                                                        intval($importer['uid'])
                                                );
@@ -2948,6 +2957,7 @@ function local_delivery($importer,$data) {
                                                        intval($importer['importer_uid'])
                                                );
                                                create_tags_from_itemuri($item['uri'], $importer['importer_uid']);
+                                               create_files_from_itemuri($item['uri'], $importer['importer_uid']);
                                                update_thread_uri($item['uri'], $importer['importer_uid']);
                                        }
                                        else {
@@ -2960,6 +2970,7 @@ function local_delivery($importer,$data) {
                                                        intval($importer['importer_uid'])
                                                );
                                                create_tags_from_itemuri($uri, $importer['importer_uid']);
+                                               create_files_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.
@@ -3078,11 +3089,12 @@ function local_delivery($importer,$data) {
                                                        continue;
 
                                                logger('received updated comment' , LOGGER_DEBUG);
-                                               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
+                                               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s', `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
                                                        dbesc($datarray['title']),
                                                        dbesc($datarray['body']),
                                                        dbesc($datarray['tag']),
                                                        dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
+                                                       dbesc(datetime_convert()),
                                                        dbesc($item_id),
                                                        intval($importer['importer_uid'])
                                                );
@@ -3164,9 +3176,10 @@ function local_delivery($importer,$data) {
                                                                        intval($importer['importer_uid'])
                                                                );
                                                                if(count($i) && ! intval($i[0]['blocktags'])) {
-                                                                       q("UPDATE item SET tag = '%s', `edited` = '%s' WHERE id = %d",
+                                                                       q("UPDATE item SET tag = '%s', `edited` = '%s', `changed` = '%s' WHERE id = %d",
                                                                                dbesc($tagp[0]['tag'] . (strlen($tagp[0]['tag']) ? ',' : '') . $newtag),
                                                                                intval($tagp[0]['id']),
+                                                                               dbesc(datetime_convert()),
                                                                                dbesc(datetime_convert())
                                                                        );
                                                                        create_tags_from_item($tagp[0]['id']);
@@ -3262,11 +3275,12 @@ function local_delivery($importer,$data) {
                                                if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
                                                        continue;
 
-                                               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
+                                               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s', `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
                                                        dbesc($datarray['title']),
                                                        dbesc($datarray['body']),
                                                        dbesc($datarray['tag']),
                                                        dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
+                                                       dbesc(datetime_convert()),
                                                        dbesc($item_id),
                                                        intval($importer['importer_uid'])
                                                );
@@ -3447,11 +3461,12 @@ function local_delivery($importer,$data) {
                                        if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
                                                continue;
 
-                                       $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
+                                       $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s', `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
                                                dbesc($datarray['title']),
                                                dbesc($datarray['body']),
                                                dbesc($datarray['tag']),
                                                dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
+                                               dbesc(datetime_convert()),
                                                dbesc($item_id),
                                                intval($importer['importer_uid'])
                                        );
@@ -3828,11 +3843,11 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
        $mentioned = get_mentions($item);
        if($mentioned)
                $o .= $mentioned;
-       
+
        call_hooks('atom_entry', $o);
 
        $o .= '</entry>' . "\r\n";
-       
+
        return $o;
 }
 
@@ -4021,7 +4036,7 @@ function item_getfeedattach($item) {
 }
 
 
-       
+
 function item_expire($uid,$days) {
 
        if((! $uid) || ($days < 1))
@@ -4181,6 +4196,7 @@ function drop_item($id,$interactive = true) {
                        intval($item['id'])
                );
                create_tags_from_item($item['id']);
+               create_files_from_item($item['id']);
                delete_thread($item['id']);
 
                // clean up categories and tags so they don't end up as orphans
@@ -4276,6 +4292,7 @@ function drop_item($id,$interactive = true) {
                                intval($item['uid'])
                        );
                        create_tags_from_item($item['parent-uri'], $item['uid']);
+                       create_files_from_item($item['parent-uri'], $item['uid']);
                        delete_thread_uri($item['parent-uri'], $item['uid']);
                        // ignore the result
                }
index 2de3a8a88e4bf5947fefe26a57b000074bdd27ff..5c6277e34c34b6dbf94b067e1528f022bcb7834e 100644 (file)
@@ -120,32 +120,36 @@ function display_content(&$a, $update = 0) {
 
        $sql_extra = item_permissions_sql($a->profile['uid'],$remote_contact,$groups);
 
+       //              AND `item`.`parent` = ( SELECT `parent` FROM `item` FORCE INDEX (PRIMARY, `uri`) WHERE ( `id` = '%s' OR `uri` = '%s' ))
+
        if($update) {
 
                $r = q("SELECT id FROM item WHERE item.uid = %d
-                       AND `item`.`parent` = ( SELECT `parent` FROM `item` FORCE INDEX (PRIMARY, `uri`) WHERE ( `id` = '%s' OR `uri` = '%s' ))
+                       AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE (`id` = '%s' OR `uri` = '%s'))
                        $sql_extra AND unseen = 1",
                        intval($a->profile['uid']),
                        dbesc($item_id),
-                       dbesc($item_id) 
+                       dbesc($item_id)
                );
 
                if(!$r)
                        return '';
        }
 
+       //      AND `item`.`parent` = ( SELECT `parent` FROM `item` FORCE INDEX (PRIMARY, `uri`) WHERE ( `id` = '%s' OR `uri` = '%s' )
+
        $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,  `item`.`network` AS `item_network`,
                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `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`
                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 `item`.`parent` = ( SELECT `parent` FROM `item` FORCE INDEX (PRIMARY, `uri`) WHERE ( `id` = '%s' OR `uri` = '%s' )
-               AND uid = %d )
+               AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE (`id` = '%s' OR `uri` = '%s')
+               AND uid = %d)
                $sql_extra
-               ORDER BY `parent` DESC, `gravity` ASC, `id` ASC ",
+               ORDER BY `parent` DESC, `gravity` ASC, `id` ASC",
                intval($a->profile['uid']),
                dbesc($item_id),
                dbesc($item_id),
@@ -162,6 +166,7 @@ function display_content(&$a, $update = 0) {
                );
                if($r) {
                        $item_uri = $r[0]['uri'];
+                       //      AND `item`.`parent` = ( SELECT `parent` FROM `item` FORCE INDEX (PRIMARY, `uri`) WHERE `uri` = '%s' AND uid = %d )
 
                        $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,  `item`.`network` AS `item_network`,
                                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@@ -171,7 +176,7 @@ function display_content(&$a, $update = 0) {
                                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 `item`.`parent` = ( SELECT `parent` FROM `item` FORCE INDEX (PRIMARY, `uri`) WHERE `uri` = '%s' AND uid = %d )
+                               AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `uri` = '%s' AND uid = %d)
                                ORDER BY `parent` DESC, `gravity` ASC, `id` ASC ",
                                intval(local_user()),
                                dbesc($item_uri),
@@ -184,7 +189,7 @@ function display_content(&$a, $update = 0) {
        if($r) {
 
                if((local_user()) && (local_user() == $a->profile['uid'])) {
-                       q("UPDATE `item` SET `unseen` = 0 
+                       q("UPDATE `item` SET `unseen` = 0
                                WHERE `parent` = %d AND `unseen` = 1",
                                intval($r[0]['parent'])
                        );
@@ -257,8 +262,8 @@ function display_content(&$a, $update = 0) {
                if($r[0]['deleted']) {
                        notice( t('Item has been removed.') . EOL );
                }
-               else {  
-                       notice( t('Permission denied.') . EOL ); 
+               else {
+                       notice( t('Permission denied.') . EOL );
                }
        }
        else {
index 451fcb48c445902f3348daf95850924cfa439b20..7d8492bb21e48c68784147eb5ceef1281c5d5fd6 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/files.php');
 require_once('include/threads.php');
 
 function item_post(&$a) {
@@ -695,18 +696,17 @@ function item_post(&$a) {
 
 
        if($orig_post) {
-               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `attach` = '%s', `file` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d",
+               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `attach` = '%s', `file` = '%s', `edited` = '%s', `changed` = '%s' WHERE `id` = %d AND `uid` = %d",
                        dbesc($datarray['title']),
                        dbesc($datarray['body']),
                        dbesc($datarray['tag']),
                        dbesc($datarray['attach']),
                        dbesc($datarray['file']),
                        dbesc(datetime_convert()),
+                       dbesc(datetime_convert()),
                        intval($post_id),
                        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');
@@ -773,7 +773,6 @@ function item_post(&$a) {
        if(count($r)) {
                $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
@@ -871,7 +870,6 @@ 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.
@@ -939,6 +937,10 @@ function item_post(&$a) {
                }
        }
 
+       create_tags_from_item($post_id);
+       create_files_from_item($post_id);
+       update_thread($post_id);
+
        // This is a real juggling act on shared hosting services which kill your processes
        // e.g. dreamhost. We used to start delivery to our native delivery agents in the background
        // and then run our plugin delivery from the foreground. We're now doing plugin delivery first,
@@ -946,7 +948,7 @@ function item_post(&$a) {
        // likely to get killed off. If you end up looking at an /item URL and a blank page,
        // it's very likely the delivery got killed before all your friends could be notified.
        // Currently the only realistic fixes are to use a reliable server - which precludes shared hosting,
-       // or cut back on plugins which do remote deliveries.  
+       // or cut back on plugins which do remote deliveries.
 
        proc_run('php', "include/notifier.php", $notify_type, "$post_id");
 
index 9d2f60c4788d1cdc465b9a4d49f8839137e99dbb..5b2908f0e967b144afbb8fae0db3b00a03f03b9a 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
 To-Do:
-- Community-Seite umstellen
+- Update berücksichtigt keine Konversationen
 */
 
 function network_init(&$a) {
@@ -579,6 +579,7 @@ die("ss");
        $sql_extra3 = (($nouveau) ? '' : $sql_extra3);
        $sql_order = "";
        $order_mode = "received";
+       $tag = false;
 
        if(x($_GET,'search')) {
                $search = escape_tags($_GET['search']);
@@ -596,20 +597,26 @@ die("ss");
 
                        $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`.`id`";
+                       $order_mode = "id";
                } 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))
-               $sql_extra .= file_tag_file_query('item',unxmlify($file));
+       if(strlen($file)) {
+               $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($file)), intval(TERM_OBJ_POST), intval(TERM_FILE), intval(local_user()));
+               $sql_order = "`item`.`id`";
+               $order_mode = "id";
+       }
 
        if($conv)
-               $sql_extra2 .= " AND `mention`";
+               $sql_extra3 .= " AND `mention`";
 
        if($update) {
 
@@ -654,6 +661,9 @@ die("ss");
        if($nouveau) {
                $simple_update = (($update) ? " and `item`.`unseen` = 1 " : '');
 
+               if ($sql_order == "")
+                       $sql_order = "`item`.`received`";
+
                // "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`,
@@ -665,7 +675,7 @@ die("ss");
                        AND `item`.`deleted` = 0 and `item`.`moderated` = 0
                        $simple_update
                        $sql_extra $sql_nets
-                       ORDER BY `item`.`received` DESC $pager_sql ",
+                       ORDER BY $sql_order DESC $pager_sql ",
                        intval($_SESSION['uid'])
                );
 
index c8f6d2a1705719995749b2a3f1b03160023cab64..263d7f80b2126bf8d77989a77f0f27a0be590067 100644 (file)
@@ -230,11 +230,13 @@ function profile_content(&$a, $update = 0) {
                        intval($a->profile['profile_uid'])
                );
 
-       }
-       else {
+       } else {
+               $sql_post_table = "";
 
                if(x($category)) {
-                       $sql_extra .= protect_sprintf(file_tag_file_query('item',$category,'category'));
+                       $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($category)), intval(TERM_OBJ_POST), intval(TERM_CATEGORY), intval($a->profile['profile_uid']));
+                       //$sql_extra .= protect_sprintf(file_tag_file_query('item',$category,'category'));
                }
 
                if($datequery) {
@@ -247,7 +249,7 @@ function profile_content(&$a, $update = 0) {
                if( (! get_config('alt_pager', 'global')) && (! get_pconfig($a->profile['profile_uid'],'system','alt_pager')) ) {
                    $r = q("SELECT COUNT(*) AS `total`
                            FROM `thread` INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
-                           INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
+                           $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
@@ -282,7 +284,7 @@ function profile_content(&$a, $update = 0) {
                $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`
+                       $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
@@ -310,7 +312,7 @@ function profile_content(&$a, $update = 0) {
                        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`.`uid` = `item`.`uid`
+                       AND `contact`.`id` = `item`.`contact-id`
                        AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                        AND `item`.`parent` IN ( %s )
                        $sql_extra ",
index 75c52fc5a0674cfd9129f58da35d3fb09508e7aa..032dc17e1005ad4baf6ad406e75be37646115ea0 100644 (file)
@@ -128,17 +128,6 @@ function search_content(&$a) {
                $tag = true;
 
        if($tag) {
-               //$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` INNER JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` ";
-               //$sql_order = "`term`.`tid`";
-               //$sql_order = "`item`.`received`";
-
-               //$sql_extra = sprintf(" AND EXISTS (SELECT * FROM `term` WHERE `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` 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 = "`item` FORCE INDEX (`uri`) ";
-
                $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` ",
@@ -158,7 +147,7 @@ function search_content(&$a) {
        // Here is the way permissions work in the search module...
        // Only public posts can be shown
        // OR your own posts if you are a logged in member
-       // No items will be shown if the member has a blocked profile wall. 
+       // No items will be shown if the member has a blocked profile wall.
 
        if( (! get_config('alt_pager', 'global')) && (! get_pconfig(local_user(),'system','alt_pager')) ) {
                $r = q("SELECT distinct(`item`.`uri`) as `total`
index 17a723acba32b093d51fe4a950f7e004f5d41f25..3ea970e7ff4496d2ec7eba55db955c110a08589b 100644 (file)
@@ -32,7 +32,7 @@ class Item extends BaseObject {
 
        public function __construct($data) {
                $a = $this->get_app();
-               
+
                $this->data = $data;
                $this->set_template('wall');
                $this->toplevel = ($this->get_id() == $this->get_data_value('parent'));
index a9cca27d91117ce862ab19e51f71cfe16e6514e1..4f3f4daec63e6e781f8af8c08a4da39a85f37bf4 100644 (file)
@@ -1562,7 +1562,7 @@ 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',
+                 `contact-id` int(11) 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',
@@ -1583,17 +1583,15 @@ function update_1169() {
                  `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`)
+                 KEY `uid_network_commented` (`uid`,`network`,`commented`),
+                 KEY `uid_network_created` (`uid`,`network`,`created`),
+                 KEY `uid_contactid_commented` (`uid`,`contact-id`,`commented`),
+                 KEY `uid_contactid_created` (`uid`,`contact-id`,`created`),
+                 KEY `wall_private_received` (`wall`,`private`,`received`),
+                 KEY `uid_created` (`uid`,`created`),
+                 KEY `uid_commented` (`uid`,`commented`)
                ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;");
        if (!$r)
                return UPDATE_FAILED;