/**
  * share perform search
  *
  * @access public
  * @return
  */
 public function sharePerformSearch()
 {
     global $ilTabs;
     $this->lng->loadLanguageModule('search');
     if (!$_GET['category_id']) {
         ilUtil::sendFailure($this->lng->txt('select_one'), true);
         $this->ctrl->returnToParent($this);
     }
     $this->ctrl->saveParameter($this, 'category_id');
     if (!isset($_POST['query'])) {
         $query = $_SESSION['cal_query'];
         $type = $_SESSION['cal_type'];
     } elseif ($_POST['query']) {
         $query = $_SESSION['cal_query'] = $_POST['query'];
         $type = $_SESSION['cal_type'] = $_POST['query_type'];
     }
     if (!$query) {
         ilUtil::sendFailure($this->lng->txt('msg_no_search_string'));
         $this->shareSearch();
         return false;
     }
     include_once 'Services/Search/classes/class.ilQueryParser.php';
     include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
     include_once 'Services/Search/classes/class.ilSearchResult.php';
     $res_sum = new ilSearchResult();
     $query_parser = new ilQueryParser(ilUtil::stripSlashes($query));
     $query_parser->setCombination(QP_COMBINATION_OR);
     $query_parser->setMinWordLength(3);
     $query_parser->parse();
     switch ($type) {
         case self::SEARCH_USER:
             $search = ilObjectSearchFactory::_getUserSearchInstance($query_parser);
             $search->enableActiveCheck(true);
             $search->setFields(array('login'));
             $res = $search->performSearch();
             $res_sum->mergeEntries($res);
             $search->setFields(array('firstname'));
             $res = $search->performSearch();
             $res_sum->mergeEntries($res);
             $search->setFields(array('lastname'));
             $res = $search->performSearch();
             $res_sum->mergeEntries($res);
             $res_sum->filter(ROOT_FOLDER_ID, QP_COMBINATION_OR);
             break;
         case self::SEARCH_ROLE:
             include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
             $search = new ilLikeObjectSearch($query_parser);
             $search->setFilter(array('role'));
             $res = $search->performSearch();
             $res_sum->mergeEntries($res);
             $res_sum->filter(ROOT_FOLDER_ID, QP_COMBINATION_OR);
             break;
     }
     if (!count($res_sum->getResults())) {
         ilUtil::sendFailure($this->lng->txt('search_no_match'));
         $this->shareSearch();
         return true;
     }
     $ilTabs->clearTargets();
     $ilTabs->setBackTarget($this->lng->txt("cal_back_to_search"), $this->ctrl->getLinkTarget($this, "shareSearch"));
     switch ($type) {
         case self::SEARCH_USER:
             $this->showUserList($res_sum->getResultIds());
             break;
         case self::SEARCH_ROLE:
             $this->showRoleList($res_sum->getResultIds());
             break;
     }
 }
Ejemplo n.º 2
0
 public function showResults()
 {
     global $lng, $ilUser, $rbacreview, $ilObjDataCache;
     $form = $this->initSearchForm();
     $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.mail_search.html", "Services/Contact");
     $this->tpl->setVariable("ACTION", $this->ctrl->getFormAction($this));
     $this->tpl->setTitle($this->lng->txt("mail"));
     $this->tpl->setVariable('SEARCHFORM', $form->getHtml());
     // #14109
     if (strlen($_SESSION['mail_search_search']) < 3) {
         if ($_GET["ref"] != "wsp") {
             $this->tpl->show();
         }
         return;
     }
     $abook = new ilAddressbook($ilUser->getId());
     $entries = $abook->searchUsers(addslashes(urldecode($_SESSION['mail_search_search'])));
     // remove all contacts who are not registered users for personal workspace
     if ($_GET["ref"] == "wsp") {
         foreach ($entries as $idx => $entry) {
             if (!$entry["login"]) {
                 unset($entries[$idx]);
             }
         }
     }
     if (count($entries)) {
         $tbl_addr = new ilTable2GUI($this);
         $tbl_addr->setTitle($lng->txt('mail_addressbook'));
         $tbl_addr->setRowTemplate('tpl.mail_search_addr_row.html', 'Services/Contact');
         $result = array();
         $counter = 0;
         foreach ($entries as $entry) {
             if ($_GET["ref"] != "wsp") {
                 $result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_addr[]', $entry['login'] ? $entry['login'] : $entry['email']) . ilUtil::formCheckbox(0, 'search_name_cc[]', $entry['login'] ? $entry['login'] : $entry['email']) . ilUtil::formCheckbox(0, 'search_name_bcc[]', $entry['login'] ? $entry['login'] : $entry['email']);
             } else {
                 $user_id = ilObjUser::_loginExists($entry["login"]);
                 $result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_addr[]', $user_id);
             }
             $result[$counter]['login'] = $entry['login'];
             $result[$counter]['firstname'] = $entry['firstname'];
             $result[$counter]['lastname'] = $entry['lastname'];
             $id = ilObjUser::_lookupId($entry['login']);
             if (ilObjUser::_lookupPref($id, 'public_email') == 'y' || !$entry['login']) {
                 $has_mail_addr = true;
                 $result[$counter]['email'] = $entry['email'];
             }
             ++$counter;
         }
         if ($_GET["ref"] != "wsp") {
             $tbl_addr->addColumn($this->lng->txt('mail_to') . '/' . $this->lng->txt('cc') . '/' . $this->lng->txt('bc'), 'check', '10%');
         } else {
             $tbl_addr->addColumn("", "", "1%");
         }
         $tbl_addr->addColumn($this->lng->txt('login'), 'login', "15%");
         $tbl_addr->addColumn($this->lng->txt('firstname'), 'firstname', "15%");
         $tbl_addr->addColumn($this->lng->txt('lastname'), 'lastname', "15%");
         if ($has_mail_addr) {
             foreach ($result as $key => $val) {
                 if ($val['email'] == '') {
                     $result[$key]['email'] = '&nbsp;';
                 }
             }
             $tbl_addr->addColumn($this->lng->txt('email'), 'email', "15%");
         }
         $tbl_addr->setData($result);
         $tbl_addr->setDefaultOrderField('login');
         $tbl_addr->setPrefix('addr_');
         $tbl_addr->enable('select_all');
         $tbl_addr->setSelectAllCheckbox('search_name_to_addr');
         $tbl_addr->setFormName('recipients');
         $this->tpl->setVariable('TABLE_ADDR', $tbl_addr->getHTML());
     }
     include_once 'Services/Search/classes/class.ilQueryParser.php';
     include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
     include_once 'Services/Search/classes/class.ilSearchResult.php';
     $all_results = new ilSearchResult();
     $query_parser = new ilQueryParser(addcslashes($_SESSION['mail_search_search'], '%_'));
     $query_parser->setCombination(QP_COMBINATION_AND);
     $query_parser->setMinWordLength(3);
     $query_parser->parse();
     $user_search =& ilObjectSearchFactory::_getUserSearchInstance($query_parser);
     $user_search->enableActiveCheck(true);
     $user_search->setFields(array('login'));
     $result_obj = $user_search->performSearch();
     $all_results->mergeEntries($result_obj);
     $user_search->setFields(array('firstname'));
     $result_obj = $user_search->performSearch();
     $all_results->mergeEntries($result_obj);
     $user_search->setFields(array('lastname'));
     $result_obj = $user_search->performSearch();
     $all_results->mergeEntries($result_obj);
     $all_results->setMaxHits(100000);
     $all_results->preventOverwritingMaxhits(true);
     $all_results->filter(ROOT_FOLDER_ID, true);
     // Filter users (depends on setting in user accounts)
     include_once 'Services/User/classes/class.ilUserFilter.php';
     $users = ilUserFilter::getInstance()->filter($all_results->getResultIds());
     if (count($users)) {
         $tbl_users = new ilTable2GUI($this);
         $tbl_users->setTitle($lng->txt('system') . ': ' . $lng->txt('persons'));
         $tbl_users->setRowTemplate('tpl.mail_search_users_row.html', 'Services/Contact');
         $result = array();
         $counter = 0;
         foreach ($users as $user) {
             $login = ilObjUser::_lookupLogin($user);
             if ($_GET["ref"] != "wsp") {
                 $result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_usr[]', $login) . ilUtil::formCheckbox(0, 'search_name_cc[]', $login) . ilUtil::formCheckbox(0, 'search_name_bcc[]', $login);
             } else {
                 $result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_usr[]', $user);
             }
             $result[$counter]['login'] = $login;
             if (in_array(ilObjUser::_lookupPref($user, 'public_profile'), array('y', "g"))) {
                 $name = ilObjUser::_lookupName($user);
                 $result[$counter]['firstname'] = $name['firstname'];
                 $result[$counter]['lastname'] = $name['lastname'];
             } else {
                 $result[$counter]['firstname'] = '';
                 $result[$counter]['lastname'] = '';
             }
             if (ilObjUser::_lookupPref($user, 'public_email') == 'y') {
                 $has_mail_usr = true;
                 $result[$counter]['email'] = ilObjUser::_lookupEmail($user);
             }
             ++$counter;
         }
         if ($_GET["ref"] != "wsp") {
             $tbl_users->addColumn($this->lng->txt('mail_to') . '/' . $this->lng->txt('cc') . '/' . $this->lng->txt('bc'), 'check', '10%');
         } else {
             $tbl_users->addColumn("", "", "1%");
         }
         $tbl_users->addColumn($this->lng->txt('login'), 'login', '15%');
         $tbl_users->addColumn($this->lng->txt('firstname'), 'firstname', '15%');
         $tbl_users->addColumn($this->lng->txt('lastname'), 'lastname', '15%');
         if ($has_mail_usr == true) {
             foreach ($result as $key => $val) {
                 if ($val['email'] == '') {
                     $result[$key]['email'] = '&nbsp;';
                 }
             }
             $tbl_users->addColumn($this->lng->txt('email'), 'email', '15%');
         }
         $tbl_users->setData($result);
         $tbl_users->setDefaultOrderField('login');
         $tbl_users->setPrefix('usr_');
         $tbl_users->enable('select_all');
         $tbl_users->setSelectAllCheckbox('search_name_to_usr');
         $tbl_users->setFormName('recipients');
         $this->tpl->setVariable('TABLE_USERS', $tbl_users->getHTML());
     }
     include_once 'Services/Search/classes/class.ilQueryParser.php';
     include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
     include_once 'Services/Search/classes/class.ilSearchResult.php';
     include_once 'Services/Membership/classes/class.ilParticipants.php';
     $group_results = new ilSearchResult();
     $query_parser = new ilQueryParser(addcslashes($_SESSION['mail_search_search'], '%_'));
     $query_parser->setCombination(QP_COMBINATION_AND);
     $query_parser->setMinWordLength(3);
     $query_parser->parse();
     $search = ilObjectSearchFactory::_getObjectSearchInstance($query_parser);
     $search->setFilter(array('grp'));
     $result = $search->performSearch();
     $group_results->mergeEntries($result);
     $group_results->setMaxHits(PHP_INT_MAX);
     $group_results->preventOverwritingMaxhits(true);
     $group_results->setRequiredPermission('read');
     $group_results->filter(ROOT_FOLDER_ID, true);
     $visible_groups = array();
     if ($group_results->getResults()) {
         $tbl_grp = new ilTable2GUI($this);
         $tbl_grp->setTitle($lng->txt('system') . ': ' . $lng->txt('groups'));
         $tbl_grp->setRowTemplate('tpl.mail_search_groups_row.html', 'Services/Contact');
         $result = array();
         $counter = 0;
         $ilObjDataCache->preloadReferenceCache(array_keys($group_results->getResults()));
         $groups = $group_results->getResults();
         foreach ($groups as $grp) {
             if (!ilParticipants::hasParticipantListAccess($grp['obj_id'])) {
                 continue;
             }
             if ($_GET["ref"] != "wsp") {
                 $members = array();
                 $roles = $rbacreview->getAssignableChildRoles($grp['ref_id']);
                 foreach ($roles as $role) {
                     if (substr($role['title'], 0, 14) == 'il_grp_member_' || substr($role['title'], 0, 13) == 'il_grp_admin_') {
                         // does not work if Pear is enabled and Mailbox Address contain special chars!!
                         //array_push($members, $rbacreview->getRoleMailboxAddress($role['obj_id']));
                         // FIX for Mantis: 7523
                         array_push($members, '#' . $role['title']);
                     }
                 }
                 $str_members = implode(',', $members);
                 $result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_grp[]', $str_members) . ilUtil::formCheckbox(0, 'search_name_cc[]', $str_members) . ilUtil::formCheckbox(0, 'search_name_bcc[]', $str_members);
             } else {
                 $result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_grp[]', $grp['obj_id']);
             }
             $result[$counter]['title'] = $ilObjDataCache->lookupTitle($grp['obj_id']);
             $result[$counter]['description'] = $ilObjDataCache->lookupDescription($grp['obj_id']);
             ++$counter;
             $visible_groups[] = $grp;
         }
         if ($visible_groups) {
             $tbl_grp->setData($result);
             if ($_GET["ref"] != "wsp") {
                 $tbl_grp->addColumn($this->lng->txt('mail_to') . '/' . $this->lng->txt('cc') . '/' . $this->lng->txt('bc'), 'check', '10%');
             } else {
                 $tbl_grp->addColumn("", "", "1%");
             }
             $tbl_grp->addColumn($this->lng->txt('title'), 'title', '15%');
             $tbl_grp->addColumn($this->lng->txt('description'), 'description', '15%');
             $tbl_grp->setDefaultOrderField('title');
             $tbl_grp->setPrefix('grp_');
             $tbl_grp->enable('select_all');
             $tbl_grp->setSelectAllCheckbox('search_name_to_grp');
             $tbl_grp->setFormName('recipients');
             $this->tpl->setVariable('TABLE_GRP', $tbl_grp->getHTML());
         }
     }
     if (count($users) || count($visible_groups) || count($entries)) {
         $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.svg"));
         $this->tpl->setVariable("ALT_ARROW", '');
         if ($_GET["ref"] != "wsp") {
             $this->tpl->setVariable('BUTTON_ADOPT', $this->lng->txt('adopt'));
         } else {
             $this->tpl->setVariable('BUTTON_ADOPT', $this->lng->txt('wsp_share_with_users'));
         }
     } else {
         $this->lng->loadLanguageModule('search');
         ilUtil::sendInfo($this->lng->txt('search_no_match'));
     }
     if ($_GET["ref"] != "wsp") {
         $this->tpl->show();
     }
 }
 /**
  * parse query string, using query parser instance
  * @return object of query parser or error message if an error occured
  * @access public
  */
 function &__parseQueryString($a_string, $a_combination_or = true)
 {
     $query_parser = new ilQueryParser(ilUtil::stripSlashes($a_string));
     $query_parser->setCombination($a_combination_or ? QP_COMBINATION_OR : QP_COMBINATION_AND);
     $query_parser->setMinWordLength(1, true);
     $query_parser->parse();
     if (!$query_parser->validate()) {
         return $query_parser->getMessage();
     }
     return $query_parser;
 }
 /**
  * This function is only used by the ajax request if searching for ILIAS references. It builds the html for the search results.
  */
 public function searchObjects()
 {
     global $lng;
     $search = $_POST['search_for'];
     $dest = $_POST['dest'];
     $html = "";
     include_once './Services/Search/classes/class.ilQueryParser.php';
     $query_parser = new ilQueryParser($search);
     $query_parser->setMinWordLength(1, true);
     $query_parser->setCombination(QP_COMBINATION_AND);
     $query_parser->parse();
     if (!$query_parser->validate()) {
         $html .= $query_parser->getMessage() . "<br />";
     }
     // only like search since fulltext does not support search with less than 3 characters
     include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
     $object_search = new ilLikeObjectSearch($query_parser);
     $res = $object_search->performSearch();
     //$res->setRequiredPermission('copy');
     $res->filter(ROOT_FOLDER_ID, true);
     if (!count($results = $res->getResultsByObjId())) {
         $html .= $lng->txt('dcl_no_search_results_found_for') . ' ' . $search . "<br />";
     }
     $results = $this->parseSearchResults($results);
     foreach ($results as $entry) {
         $tpl = new ilTemplate("tpl.dcl_tree.html", true, true, "Modules/DataCollection");
         foreach ((array) $entry['refs'] as $reference) {
             include_once './Services/Tree/classes/class.ilPathGUI.php';
             $path = new ilPathGUI();
             $tpl->setCurrentBlock('result');
             $tpl->setVariable('RESULT_PATH', $path->getPath(ROOT_FOLDER_ID, $reference) . " > " . $entry['title']);
             $tpl->setVariable('RESULT_REF', $reference);
             $tpl->setVariable('FIELD_ID', $dest);
             $tpl->parseCurrentBlock();
         }
         $html .= $tpl->get();
     }
     echo $html;
     exit;
 }
Ejemplo n.º 5
0
 /**
  * parse query string, using query parser instance
  * @return object of query parser or error message if an error occured
  * @access public
  */
 function &__parseQueryString($a_string)
 {
     include_once 'Services/Search/classes/class.ilQueryParser.php';
     $query_parser = new ilQueryParser(ilUtil::stripSlashes($a_string));
     $query_parser->setCombination(QP_COMBINATION_OR);
     $query_parser->setMinWordLength(1, true);
     $query_parser->parse();
     if (!$query_parser->validate()) {
         return $query_parser->getMessage();
     }
     return $query_parser;
 }
Ejemplo n.º 6
0
 public function performSearch($oResult = null)
 {
     if (!is_object($oResult)) {
         $oResult = ilShopSearchResult::_getInstance(SHOP_CONTENT);
         if ((bool) $this->settings->get('topics_allow_custom_sorting')) {
             ilShopTopics::_getInstance()->setIdFilter((int) $this->getTopicId());
             ilShopTopics::_getInstance()->enableCustomSorting(true);
             ilShopTopics::_getInstance()->setSortingType((int) $this->getSortingTypeTopics());
             ilShopTopics::_getInstance()->setSortingDirection(strtoupper($this->getSortingDirectionTopics()));
             ilShopTopics::_getInstance()->read();
         } else {
             ilShopTopics::_getInstance()->setIdFilter((int) $this->getTopicId());
             ilShopTopics::_getInstance()->enableCustomSorting(false);
             ilShopTopics::_getInstance()->setSortingType((int) $this->settings->get('topics_sorting_type'));
             ilShopTopics::_getInstance()->setSortingDirection(strtoupper($this->settings->get('topics_sorting_direction')));
             ilShopTopics::_getInstance()->read();
         }
         $topics = ilShopTopics::_getInstance()->getTopics();
         $oResult->setTopics($topics);
         $oResult->setResultPageNumber((int) $_GET['page_number']);
     }
     // query parser
     include_once 'Services/Search/classes/class.ilQueryParser.php';
     $query_parser = new ilQueryParser(ilUtil::stripSlashes($this->getString()));
     $query_parser->setMinWordLength(0);
     $query_parser->setCombination(QP_COMBINATION_AND);
     $query_parser->parse();
     if (!$query_parser->validate()) {
         ilUtil::sendInfo($query_parser->getMessage());
     }
     // search
     $types = array('crs', 'lm', 'sahs', 'htlm', 'file', 'tst', 'exc', 'glo');
     if ($this->getType() == '' || $this->getType() == 'title' || $query_parser->getQueryString() == '') {
         include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
         $object_search = ilObjectSearchFactory::_getShopObjectSearchInstance($query_parser);
         $object_search->setFields(array('title'));
         $object_search->setFilter($types);
         $object_search->setCustomSearchResultObject($oResult);
         $object_search->setFilterShopTopicId((int) $this->getTopicId());
         $res = $object_search->performSearch();
     } else {
         if ($this->getType() == 'author') {
             include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
             $meta_search = ilObjectSearchFactory::_getShopMetaDataSearchInstance($query_parser);
             $meta_search->setMode('contribute');
             $meta_search->setFilter($types);
             $meta_search->setFilterShopTopicId((int) $this->getTopicId());
             $meta_search->setCustomSearchResultObject($oResult);
             $res = $meta_search->performSearch();
         } else {
             include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
             $meta_search = ilObjectSearchFactory::_getShopMetaDataSearchInstance($query_parser);
             $meta_search->setMode('title');
             $meta_search->setFilter($types);
             $meta_search->setCustomSearchResultObject($oResult);
             $meta_search->setFilterShopTopicId((int) $this->getTopicId());
             $res = $meta_search->performSearch();
             $meta_search = ilObjectSearchFactory::_getShopMetaDataSearchInstance($query_parser);
             $meta_search->setMode('keyword');
             $meta_search->setFilter($types);
             $meta_search->setCustomSearchResultObject($oResult);
             $meta_search->setFilterShopTopicId((int) $this->getTopicId());
             $res->mergeEntries($meta_search->performSearch());
         }
     }
     $res->filter(ROOT_FOLDER_ID, true);
     $res->save();
     if (!count($res->getResults())) {
         ilUtil::sendInfo($this->lng->txt('payment_shop_not_objects_found'));
     }
     $this->showTopicsContent($res);
     $this->addPager($res);
     return;
 }
 /**
  * Load input from form
  * @return 
  * @param object $a_rule_id
  */
 protected function loadRoleAssignmentRule($a_rule_id, $a_from_form = true)
 {
     if (is_object($this->rule)) {
         return true;
     }
     include_once './Services/LDAP/classes/class.ilLDAPRoleAssignmentRule.php';
     $this->rule = ilLDAPRoleAssignmentRule::_getInstanceByRuleId($a_rule_id);
     if ($a_from_form) {
         if ($this->form->getInput('role_name') == 0) {
             $this->rule->setRoleId($this->form->getInput('role_id'));
         } elseif ($this->form->getInput('role_search')) {
             // Search role
             include_once './Services/Search/classes/class.ilQueryParser.php';
             $parser = new ilQueryParser($this->form->getInput('role_search'));
             // TODO: Handle minWordLength
             $parser->setMinWordLength(1, true);
             $parser->setCombination(QP_COMBINATION_AND);
             $parser->parse();
             include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
             $object_search = new ilLikeObjectSearch($parser);
             $object_search->setFilter(array('role'));
             $res = $object_search->performSearch();
             $entries = $res->getEntries();
             if (count($entries) == 1) {
                 $role = current($entries);
                 $this->rule->setRoleId($role['obj_id']);
             } elseif (count($entries) > 1) {
                 $this->rule->setRoleId(-1);
             }
         }
         $this->rule->setAttributeName($this->form->getInput('name'));
         $this->rule->setAttributeValue($this->form->getInput('value'));
         $this->rule->setDN($this->form->getInput('dn'));
         $this->rule->setMemberAttribute($this->form->getInput('at'));
         $this->rule->setMemberIsDN($this->form->getInput('isdn'));
         $this->rule->enableAddOnUpdate($this->form->getInput('add_missing'));
         $this->rule->enableRemoveOnUpdate($this->form->getInput('remove_deprecated'));
         $this->rule->setPluginId($this->form->getInput('plugin_id'));
         $this->rule->setType($this->form->getInput('type'));
         return true;
     }
     // LOAD from session
     $this->rule = ilLDAPRoleAssignmentRule::_getInstanceByRuleId($a_rule_id);
     $this->rule->setServerId(0);
     $this->rule->enableAddOnUpdate((int) $_SESSION['ldap_role_ass']['add_missing']);
     $this->rule->enableRemoveOnUpdate((int) $_SESSION['ldap_role_ass']['remove_deprecated']);
     $this->rule->setType(ilUtil::stripSlashes($_SESSION['ldap_role_ass']['type']));
     $this->rule->setDN(ilUtil::stripSlashes($_SESSION['ldap_role_ass']['dn']));
     $this->rule->setMemberAttribute(ilUtil::stripSlashes($_SESSION['ldap_role_ass']['at']));
     $this->rule->setMemberIsDN(ilUtil::stripSlashes($_SESSION['ldap_role_ass']['isdn']));
     $this->rule->setAttributeName(ilUtil::stripSlashes($_SESSION['ldap_role_ass']['name']));
     $this->rule->setAttributeValue(ilUtil::stripSlashes($_SESSION['ldap_role_ass']['value']));
     $this->rule->setPluginId(ilUtil::stripSlashes($_SESSION['ldap_role_ass']['plugin_id']));
     return true;
 }
 /**
  *  Search content that belongs to the current user and that meet the search criteria
  *
  */
 public function searchContentFile()
 {
     /**
      * @var $ilAccess ilAccessHandler
      */
     global $ilAccess;
     $this->initContentSearchForm();
     if ($this->csform->checkInput()) {
         $allowedExt = array('ppt', 'pptx', 'flv', 'swf', 'pdf', 'gif', 'jpg', 'png', 'mp3', 'html');
         $result = array();
         include_once './Services/Search/classes/class.ilSearchSettings.php';
         if (ilSearchSettings::getInstance()->enabledLucene()) {
             include_once './Services/Search/classes/Lucene/class.ilLuceneSearcher.php';
             include_once './Services/Search/classes/Lucene/class.ilLuceneQueryParser.php';
             $qp = new ilLuceneQueryParser('+(type:file) ' . $this->csform->getInput('search_query'));
             $qp->parse();
             $searcher = ilLuceneSearcher::getInstance($qp);
             $searcher->search();
             include_once './Services/Search/classes/Lucene/class.ilLuceneSearchResultFilter.php';
             include_once './Services/Search/classes/Lucene/class.ilLucenePathFilter.php';
             $filter = ilLuceneSearchResultFilter::getInstance($this->user->getId());
             $filter->addFilter(new ilLucenePathFilter(ROOT_FOLDER_ID));
             $filter->setCandidates($searcher->getResult());
             $filter->filter();
             foreach ($filter->getResultIds() as $refId => $objId) {
                 $obj = ilObjectFactory::getInstanceByRefId($refId);
                 if (!in_array(strtolower($obj->getFileExtension()), $allowedExt)) {
                     continue;
                 }
                 if (!$ilAccess->checkAccessOfUser($this->user->getId(), 'read', '', $refId, '', $objId)) {
                     continue;
                 }
                 $result[$obj->getId()] = $obj->getId();
             }
         } else {
             include_once 'Services/Search/classes/class.ilQueryParser.php';
             $query_parser = new ilQueryParser($this->csform->getInput('search_query'));
             $query_parser->setCombination(QP_COMBINATION_OR);
             $query_parser->parse();
             if (!$query_parser->validate()) {
                 ilUtil::sendInfo($query_parser);
                 $this->csform->setValuesByPost();
                 return $this->showAddContent();
             }
             include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
             $object_search = new ilLikeObjectSearch($query_parser);
             $object_search->setFilter(array('file'));
             $res = $object_search->performSearch();
             $res->setUserId($this->user->getId());
             $res->setMaxHits(999999);
             $res->filter(ROOT_FOLDER_ID, false);
             $res->setRequiredPermission('read');
             foreach ($res->getUniqueResults() as $entry) {
                 $obj = ilObjectFactory::getInstanceByRefId($entry['ref_id']);
                 if (!in_array(strtolower($obj->getFileExtension()), $allowedExt)) {
                     continue;
                 }
                 $result[$obj->getId()] = $obj->getId();
             }
         }
         if (count($result) > 0) {
             $this->showFileSearchResult($result);
             $_SESSION['contents']['search_result'] = $result;
         } else {
             ilUtil::sendInfo($this->txt('files_matches_in_no_results'));
             $this->csform->setValuesByPost();
             $this->showAddContent();
         }
     } else {
         $this->csform->setValuesByPost();
         return $this->showAddContent();
     }
 }
 private function parseQueryString()
 {
     include_once 'Services/Search/classes/class.ilQueryParser.php';
     $query_parser = new ilQueryParser(ilUtil::stripSlashes($this->getString()));
     $query_parser->setCombination($this->getCombination());
     $query_parser->parse();
     if (!$query_parser->validate()) {
         return $query_parser->getMessage();
     }
     return $query_parser;
 }
 function &__performKeywordSearch()
 {
     // Return if 'any'
     if (!$this->options['lom_keyword']) {
         return false;
     }
     include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
     include_once 'Services/Search/classes/class.ilQueryParser.php';
     $query_parser = new ilQueryParser(ilUtil::stripSlashes($this->options['lom_keyword']));
     #$query_parser->setCombination($this->options['keyword_ao']);
     $query_parser->setCombination(QP_COMBINATION_OR);
     $query_parser->parse();
     $meta_search =& ilObjectSearchFactory::_getAdvancedSearchInstance($query_parser);
     $meta_search->setFilter($this->filter);
     $meta_search->setMode('keyword');
     $meta_search->setOptions($this->options);
     $res =& $meta_search->performSearch();
     return $res;
 }
Ejemplo n.º 11
0
 /**
  * Search in Wiki
  */
 static function _performSearch($a_wiki_id, $a_searchterm)
 {
     // query parser
     include_once 'Services/Search/classes/class.ilQueryParser.php';
     $query_parser = new ilQueryParser($a_searchterm);
     $query_parser->setCombination("or");
     $query_parser->parse();
     include_once 'Services/Search/classes/class.ilSearchResult.php';
     $search_result = new ilSearchResult();
     if ($query_parser->validate()) {
         include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
         $wiki_search =& ilObjectSearchFactory::_getWikiContentSearchInstance($query_parser);
         $wiki_search->setFilter(array('wpg'));
         $search_result->mergeEntries($wiki_search->performSearch());
     }
     $entries = $search_result->getEntries();
     $found_pages = array();
     foreach ($entries as $entry) {
         if ($entry["obj_id"] == $a_wiki_id && is_array($entry["child"])) {
             foreach ($entry["child"] as $child) {
                 $found_pages[] = array("page_id" => $child);
             }
         }
     }
     return $found_pages;
 }
 protected function chooseRole()
 {
     $this->tabs_gui->setSubTabActive('shib_role_assignment');
     include_once './Services/Search/classes/class.ilQueryParser.php';
     $parser = new ilQueryParser($_SESSION['shib_role_ass']['search']);
     $parser->setMinWordLength(1, true);
     $parser->setCombination(QP_COMBINATION_AND);
     $parser->parse();
     include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
     $object_search = new ilLikeObjectSearch($parser);
     $object_search->setFilter(array('role'));
     $res = $object_search->performSearch();
     $entries = $res->getEntries();
     include_once './Services/AccessControl/classes/class.ilRoleSelectionTableGUI.php';
     $table = new ilRoleSelectionTableGUI($this, 'chooseRole');
     $table->setTitle($this->lng->txt('shib_role_selection'));
     $table->addMultiCommand('saveRoleSelection', $this->lng->txt('shib_choose_role'));
     $table->addCommandButton('roleAssignment', $this->lng->txt('cancel'));
     $table->parse($entries);
     $this->tpl->setContent($table->getHTML());
     return true;
 }
Ejemplo n.º 13
0
 /**
  * Search source
  * @return 
  */
 protected function searchSource()
 {
     global $tree, $ilObjDataCache, $lng, $ilCtrl, $tpl;
     if (isset($_POST['tit'])) {
         ilUtil::sendInfo($this->lng->txt('wizard_search_list'));
         $_SESSION['source_query'] = $_POST['tit'];
     } else {
         $_POST['tit'] = $_SESSION['source_query'];
     }
     $this->initFormSearch();
     $this->form->setValuesByPost();
     if (!$this->form->checkInput()) {
         ilUtil::sendFailure($lng->txt('msg_no_search_string'), true);
         $ilCtrl->returnToParent($this);
         return false;
     }
     include_once './Services/Search/classes/class.ilQueryParser.php';
     $query_parser = new ilQueryParser($this->form->getInput('tit'));
     $query_parser->setMinWordLength(1, true);
     $query_parser->setCombination(QP_COMBINATION_AND);
     $query_parser->parse();
     if (!$query_parser->validate()) {
         ilUtil::sendFailure($query_parser->getMessage(), true);
         $ilCtrl->returnToParent($this);
     }
     // only like search since fulltext does not support search with less than 3 characters
     include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
     $object_search = new ilLikeObjectSearch($query_parser);
     $object_search->setFilter(array($_REQUEST['new_type']));
     $res = $object_search->performSearch();
     $res->setRequiredPermission('copy');
     $res->filter(ROOT_FOLDER_ID, true);
     if (!count($results = $res->getResultsByObjId())) {
         ilUtil::sendFailure($this->lng->txt('search_no_match'), true);
         $ilCtrl->returnToParent($this);
     }
     include_once './Services/Object/classes/class.ilObjectCopySearchResultTableGUI.php';
     $table = new ilObjectCopySearchResultTableGUI($this, 'searchSource', $_REQUEST['new_type']);
     $table->setSelectedReference($this->getSource());
     $table->parseSearchResults($results);
     $tpl->setContent($table->getHTML());
 }
 private function parseQueryString($query_string)
 {
     $oQueryParser = new ilQueryParser($query_string);
     $oQueryParser->setCombination('or');
     $oQueryParser->parse();
     if (!$oQueryParser->validate()) {
         return $oQueryParser->getMessage();
     }
     return $oQueryParser;
 }