]> git.mxchange.org Git - friendica.git/commitdiff
Search with tags now works fast.
authorMichael Vogel <icarus@dabo.de>
Tue, 18 Mar 2014 21:51:50 +0000 (22:51 +0100)
committerMichael Vogel <icarus@dabo.de>
Tue, 18 Mar 2014 21:51:50 +0000 (22:51 +0100)
include/notifier.php
mod/search.php

index afe65aa02eac9a8765b8e7199e3fa025a879a9af..ea2f5e75c457b3f8e54d99718fc8462621d1f284 100644 (file)
@@ -241,31 +241,31 @@ function notifier_run(&$argv, &$argc){
 
                // if $parent['wall'] == 1 we will already have the parent message in our array
                // and we will relay the whole lot.
+
                // expire sends an entire group of expire messages and cannot be forwarded.
-               // However the conversation owner will be a part of the conversation and will 
+               // However the conversation owner will be a part of the conversation and will
                // be notified during this run.
                // Other DFRN conversation members will be alerted during polled updates.
 
 
 
                // Diaspora members currently are not notified of expirations, and other networks have
-               // either limited or no ability to process deletions. We should at least fix Diaspora 
+               // either limited or no ability to process deletions. We should at least fix Diaspora
                // by stringing togther an array of retractions and sending them onward.
-                
-       
+
+
                $localhost = str_replace('www.','',$a->get_hostname());
                if(strpos($localhost,':'))
                        $localhost = substr($localhost,0,strpos($localhost,':'));
 
                /**
                 *
-                * Be VERY CAREFUL if you make any changes to the following several lines. Seemingly innocuous changes 
-                * have been known to cause runaway conditions which affected several servers, along with 
-                * permissions issues. 
+                * Be VERY CAREFUL if you make any changes to the following several lines. Seemingly innocuous changes
+                * have been known to cause runaway conditions which affected several servers, along with
+                * permissions issues.
                 *
                 */
+
                $relay_to_owner = false;
 
                if((! $top_level) && ($parent['wall'] == 0) && (! $expire) && (stristr($target_item['uri'],$localhost))) {
@@ -274,8 +274,8 @@ function notifier_run(&$argv, &$argc){
 
 
                if(($cmd === 'uplink') && (intval($parent['forum_mode']) == 1) && (! $top_level)) {
-                       $relay_to_owner = true;                 
-               } 
+                       $relay_to_owner = true;
+               }
 
                // until the 'origin' flag has been in use for several months
                // we will just use it as a fallback test
@@ -452,7 +452,7 @@ function notifier_run(&$argv, &$argc){
                        $photos[$p['scale']] = $a->get_baseurl().'/photo/'.$p['resource-id'].'-'.$p['scale'].'.'.$ext[$p['type']];
                }
                unset($rp, $ext);
-               
+
         $atom .= replace_macros($sugg_template, array(
             '$name' => xmlify($owner['name']),
             '$photo' => xmlify($photos[4]),
@@ -577,12 +577,12 @@ function notifier_run(&$argv, &$argc){
                // This controls the number of deliveries to execute with each separate delivery process.
                // By default we'll perform one delivery per process. Assuming a hostile shared hosting
                // provider, this provides the greatest chance of deliveries if processes start getting 
-               // killed. We can also space them out with the delivery_interval to also help avoid them 
+               // killed. We can also space them out with the delivery_interval to also help avoid them
                // getting whacked.
 
-               // If $deliveries_per_process > 1, we will chain this number of multiple deliveries 
-               // together into a single process. This will reduce the overall number of processes 
-               // spawned for each delivery, but they will run longer. 
+               // If $deliveries_per_process > 1, we will chain this number of multiple deliveries
+               // together into a single process. This will reduce the overall number of processes
+               // spawned for each delivery, but they will run longer.
 
                $deliveries_per_process = intval(get_config('system','delivery_batch_count'));
                if($deliveries_per_process <= 0)
@@ -597,8 +597,8 @@ function notifier_run(&$argv, &$argc){
                                continue;
 
                        // potentially more than one recipient. Start a new process and space them out a bit.
-                       // we will deliver single recipient types of message and email recipients here. 
-               
+                       // we will deliver single recipient types of message and email recipients here.
+
                        if((! $mail) && (! $fsuggest) && (!$relocate) && (! $followup)) {
 
                                $this_batch[] = $contact['id'];
index c7387c5165e768fdc548d4d9c2215d002456f3e1..00f379a75c19ac6aa995cf9d66090c8d640e4679 100644 (file)
@@ -130,8 +130,8 @@ function search_content(&$a) {
        if($tag) {
                $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` ",
-                                       dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG), intval(local_user()));
+               $sql_table = sprintf("`item` INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d) AS `term` ON `item`.`id` = `term`.`oid` ",
+                                       dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG));
 
                $sql_order = "`item`.`id`";
        } else {
@@ -141,7 +141,8 @@ function search_content(&$a) {
                        $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
                }
                $sql_table = "`item`";
-               $sql_order = "`item`.`received`";
+               $sql_order = "`item`.`id`";
+               //$sql_order = "`item`.`received`";
        }
 
        // Here is the way permissions work in the search module...
@@ -171,7 +172,7 @@ function search_content(&$a) {
                }
        }
 
-       $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`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
@@ -182,7 +183,7 @@ function search_content(&$a) {
                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 ))
-               $sql_extra
+               $sql_extra GROUP BY `item`.`uri`
                ORDER BY $sql_order DESC LIMIT %d , %d ",
                intval(local_user()),
                intval($a->pager['start']),