]> git.mxchange.org Git - friendica.git/blobdiff - mod/search.php
rolling version number in preparation for release
[friendica.git] / mod / search.php
index a6a4b613fcb5b87a3cff55dce47f24e2f5ddc516..33032e183234b706c45b98fbd8ddf1f4104f8d28 100644 (file)
@@ -9,6 +9,15 @@ function search_post(&$a) {
 
 function search_content(&$a) {
 
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               notice( t('Public access denied.') . EOL);
+               return;
+       }
+
+       require_once("include/bbcode.php");
+       require_once('include/security.php');
+       require_once('include/conversation.php');
+
        if(x($_SESSION,'theme'))
                unset($_SESSION['theme']);
 
@@ -26,8 +35,6 @@ function search_content(&$a) {
        if(! $search)
                return $o;
 
-       require_once("include/bbcode.php");
-       require_once('include/security.php');
 
        $sql_extra = "
                AND `item`.`allow_cid` = '' 
@@ -36,12 +43,20 @@ function search_content(&$a) {
                AND `item`.`deny_gid`  = '' 
        ";
 
+       $s_bool  = "AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )";
+       $s_regx  = "AND `item`.`body` REGEXP '%s' ";
+
+       if(mb_strlen($search) >= 3)
+               $search_alg = $s_bool;
+       else
+               $search_alg = $s_regx;
+
        $r = q("SELECT COUNT(*) AS `total`
                FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
                WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0
                AND ( `wall` = 1 OR `contact`.`uid` = %d )
                AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-               AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )
+               $search_alg
                $sql_extra ",
                intval(local_user()),
                dbesc($search)
@@ -51,13 +66,13 @@ function search_content(&$a) {
                $a->set_pager_total($r[0]['total']);
 
        if(! $r[0]['total']) {
-               notice('No results.');
+               notice( t('No results.') . EOL);
                return $o;
        }
 
        $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, 
                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
-               `contact`.`network`, `contact`.`thumb`, `contact`.`self`, 
+               `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
                `user`.`nickname`
                FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
@@ -65,80 +80,16 @@ function search_content(&$a) {
                WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0
                AND ( `wall` = 1 OR `contact`.`uid` = %d )
                AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-               AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )
+               $search_alg
                $sql_extra
                ORDER BY `parent` DESC ",
                intval(local_user()),
                dbesc($search)
        );
 
-       $tpl = load_view_file('view/search_item.tpl');
-       $droptpl = load_view_file('view/wall_fake_drop.tpl');
-
-       $return_url = $_SESSION['return_url'] = $a->cmd;
-
-       if(count($r)) {
-
-               foreach($r as $item) {
-
-                       $total       = 0;
-                       $comment     = '';
-                       $owner_url   = '';
-                       $owner_photo = '';
-                       $owner_name  = '';
-                       $sparkle     = '';
-                       
-                       if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) 
-                               && ($item['id'] != $item['parent']))
-                               continue;
-
-                       $total ++;
-
-                       $profile_name   = ((strlen($item['author-name']))   ? $item['author-name']   : $item['name']);
-                       $profile_avatar = ((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']);
-                       $profile_link   = ((strlen($item['author-link']))   ? $item['author-link']   : $item['url']);
-
-
-                       $location = (($item['location']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
-                       $coord = (($item['coord']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
-                       if($coord) {
-                               if($location)
-                                       $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
-                               else
-                                       $location = '<span class="smalltext">' . $coord . '</span>';
-                       }
-
-                       $drop = replace_macros($droptpl,array('$id' => $item['id']));
-                       $lock = '<div class="wall-item-lock"></div>';
-
-                       $o .= replace_macros($tpl,array(
-                               '$id' => $item['item_id'],
-                               '$profile_url' => $profile_link,
-                               '$name' => $profile_name,
-                               '$sparkle' => $sparkle,
-                               '$lock' => $lock,
-                               '$thumb' => $profile_avatar,
-                               '$title' => $item['title'],
-                               '$body' => bbcode($item['body']),
-                               '$ago' => relative_date($item['created']),
-                               '$location' => $location,
-                               '$indent' => '',
-                               '$owner_url' => $owner_url,
-                               '$owner_photo' => $owner_photo,
-                               '$owner_name' => $owner_name,
-                               '$drop' => $drop,
-                               '$conv' => '<a href="' . $a->get_baseurl() . '/display/' . $item['nickname'] . '/' . $item['id'] . '">' . t('View in context') . '</a>'
-                       ));
-
-               }
-       }
-
 
-       if(! $r[0]['total']) {
-               notice('No results.');
-               return $o;
-       }
 
+       $o .= conversation($a,$r,'search',false);
 
        $o .= paginate($a);