aboutsummaryrefslogtreecommitdiff
path: root/mod/search/index.php
diff options
context:
space:
mode:
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2009-10-22 18:20:10 +0000
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2009-10-22 18:20:10 +0000
commitb36bf0e97e8dfbf2dcd07d4173392a3dcfbc2df0 (patch)
treeeadba4e265c097359389b866919201858c5ffdd5 /mod/search/index.php
parentcb01252489f233535e2057457cfe90920f82f96d (diff)
downloadelgg-b36bf0e97e8dfbf2dcd07d4173392a3dcfbc2df0.tar.gz
elgg-b36bf0e97e8dfbf2dcd07d4173392a3dcfbc2df0.tar.bz2
Pulling in MITRE's search core. Fo'rizzle this time. Yo.
git-svn-id: http://code.elgg.org/elgg/trunk@3572 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'mod/search/index.php')
-rw-r--r--mod/search/index.php146
1 files changed, 146 insertions, 0 deletions
diff --git a/mod/search/index.php b/mod/search/index.php
new file mode 100644
index 000000000..7cbf6121c
--- /dev/null
+++ b/mod/search/index.php
@@ -0,0 +1,146 @@
+<?php
+
+ /** Main search page */
+
+global $CONFIG;
+
+$tag = get_input('tag');
+$offset = get_input('offset', 0);
+$viewtype = get_input('search_viewtype','list');
+if ($viewtype == 'gallery') {
+ $limit = get_input('limit', 12); // 10 items in list view
+} else {
+ $limit = get_input('limit', 10); // 12 items in gallery view
+}
+$searchtype = get_input('searchtype', 'all');
+$object_type = get_input('object_type', '');
+$subtype = get_input('subtype', '');
+$owner_guid = get_input('owner_guid', '');
+$tagtype = get_input('tagtype', '');
+$friends = (int)get_input('friends', 0);
+
+
+$title = sprintf(elgg_echo('searchtitle'), $tag);
+
+
+if (substr_count($owner_guid,',')) {
+ $owner_guid_array = explode(",",$owner_guid);
+} else {
+ $owner_guid_array = $owner_guid;
+}
+if ($friends > 0) {
+ if ($friends = get_user_friends($friends,'',9999)) {
+ $owner_guid_array = array();
+ foreach($friends as $friend) {
+ $owner_guid_array[] = $friend->guid;
+ }
+ } else {
+ $owner_guid = -1;
+ }
+}
+
+// Set up submenus
+if ($object_types = get_registered_entity_types()) {
+
+ foreach($object_types as $ot => $subtype_array) {
+ if (is_array($subtype_array) && sizeof($subtype_array))
+ foreach($subtype_array as $object_subtype) {
+ $label = 'item:' . $ot;
+ if (!empty($object_subtype)) $label .= ':' . $object_subtype;
+ add_submenu_item(elgg_echo($label), $CONFIG->wwwroot . "pg/search/?tag=". urlencode($tag) ."&subtype=" . $object_subtype . "&object_type=". urlencode($ot) ."&tagtype=" . urlencode($md_type) . "&owner_guid=" . urlencode($owner_guid));
+ }
+ }
+ add_submenu_item(elgg_echo('all'), $CONFIG->wwwroot . "pg/search/?tag=". urlencode($tag) ."&owner_guid=" . urlencode($owner_guid));
+
+}
+
+$body = '';
+if (!empty($tag)) {
+
+ // blank the results to start off
+ $results = new stdClass();
+ $results->entities = array();
+ $results->total = 0;
+
+ // do the actual search
+ $results = trigger_plugin_hook('search:entities', '', array('tag' => $tag,
+ 'offset' => $offset,
+ 'limit' => $limit,
+ 'searchtype' => $searchtype,
+ 'object_type' => $object_type,
+ 'subtype' => $subtype,
+ 'tagtype' => $tagtype,
+ 'owner_guid' => $owner_guid_array
+ ),
+ $results);
+
+ /* // this piece is for future work, to setup submenus for searchtypes
+ $searchtypes = trigger_plugin_hook('search:types', '', NULL, array());
+ add_submenu_item(elgg_echo('search:type:all'),
+ $CONFIG->wwwroot . "pg/search/?tag=". urlencode($tag) ."&searchtype=all");
+
+ foreach ($searchtypes as $st) {
+ add_submenu_item(elgg_echo('search:type:' . $st),
+ $CONFIG->wwwroot . "pg/search/?tag=". urlencode($tag) ."&searchtype=" . $st);
+ }
+ */
+
+
+ if (empty($objecttype) && empty($subtype)) {
+ $title = sprintf(elgg_echo('searchtitle'),$tag);
+ } else {
+ if (empty($objecttype)) $objecttype = 'object';
+ $itemtitle = 'item:' . $objecttype;
+ if (!empty($subtype)) $itemtitle .= ':' . $subtype;
+ $itemtitle = elgg_echo($itemtitle);
+ $title = sprintf(elgg_echo('advancedsearchtitle'),$itemtitle,$tag);
+ }
+
+
+
+
+ //print_r($results);
+
+ $body .= elgg_view_title($title); // elgg_view_title(sprintf(elgg_echo('searchtitle'),$tag));
+
+ // call the old (now-deprecated) search hook here
+ $body .= trigger_plugin_hook('search','',$tag, '');
+
+ $body .= elgg_view('search/startblurb', array('tag' => $tag));
+
+ if ($results->total > 0) {
+
+
+ $body .= elgg_view('search/entity_list', array('entities' => $results->entities,
+ 'count' => $results->total,
+ 'offset' => $offset,
+ 'limit' => $limit,
+ 'baseurl' => $_SERVER['REQUEST_URI'],
+ 'fullview' => false,
+ 'context' => 'search',
+ 'viewtypetoggle' => true,
+ 'viewtype' => $viewtype,
+ 'pagination' => true
+ ));
+ } else {
+ $body .= elgg_view('page_elements/contentwrapper', array('body' => elgg_echo('search:noresults')));
+ }
+
+
+
+
+ elgg_view_entity_list($results->entities, count($results->entities), 0, count($results->entities), false);
+} else {
+ // if no tag was given, give the user a box to input a search term
+ $body .= elgg_view_title(elgg_echo('search:enterterm'));
+ $body .= elgg_view('page_elements/contentwrapper', array('body' => '<div>' . elgg_view('page_elements/searchbox') . '</div>'));
+
+
+}
+$layout = elgg_view_layout('two_column_left_sidebar','',$body);
+
+
+page_draw($title, $layout);
+
+
+?> \ No newline at end of file