getMethod()) { case "autocompleteResponsibleParty" : $input = $ajaxResponse->getParameter("input"); // get registrars I belong to $myRegistrationOfficeGroups = RegistrationOfficeGroup::getGroupsByUser(Mapbender::session()->get("mb_user_id")); // get registrars that match the search term $filter = new Filter("ILIKE", "mb_group_name", "%" . $input . "%"); $matchedRegistrationOfficeGroups = RegistrationOfficeGroup::getList($filter); // compute and return intersection $matchedRegistrationOfficeGroups = array_intersect($myRegistrationOfficeGroups, $matchedRegistrationOfficeGroups); if (count($matchedRegistrationOfficeGroups) > 0) { // return only these registrars that have metadata sets $vars = array(); $v = array(); $t = array(); $i = 0; foreach ($matchedRegistrationOfficeGroups as $reg) { $vars[]= "$" . ++$i; $v[]= $reg->getId(); $t[]= "i"; } $sql = "SELECT DISTINCT mb_group_name FROM mb_group, mb_metadata " . "WHERE mb_group_id = responsible_party AND " . "responsible_party IN (" . implode(",", $vars) . ")"; $res = db_prep_query($sql, $v, $t); $matchedRegistrationOfficeGroups = array(); while ($row = db_fetch_assoc($res)) { $matchedRegistrationOfficeGroups[]= $row["mb_group_name"]; } } $resultObj = array(); $ajaxResponse->setSuccess(true); $ajaxResponse->setResult(array( "found" => $matchedRegistrationOfficeGroups )); break; case "autocompleteIndividualName" : $input = $ajaxResponse->getParameter("input"); // get registrars I belong to $myRegistrationOfficeGroups = RegistrationOfficeGroup::getGroupsByUser(Mapbender::session()->get("mb_user_id")); // get user $myUsers = array(); foreach ($myRegistrationOfficeGroups as $registrar) { $myUsers = array_merge($myUsers, $registrar->getUser()); } // get user that match the search term $filter = new Filter("ILIKE", "mb_user_name", "%" . $input . "%"); $matchedUsers = User::getList($filter); // compute and return intersection $matchedUsers = array_intersect($myUsers, $matchedUsers); if (count($matchedUsers) > 0) { // return only these users that have metadata sets $vars = array(); $v = array(); $t = array(); $i = 0; foreach ($matchedUsers as $user) { $vars[]= "$" . ++$i; $v[]= $user->id; $t[]= "i"; } $sql = "SELECT DISTINCT mb_user_name FROM mb_user, mb_metadata " . "WHERE mb_user_id = individual_name AND " . "individual_name IN (" . implode(",", $vars) . ")"; $res = db_prep_query($sql, $v, $t); $matchedUsers = array(); while ($row = db_fetch_assoc($res)) { $matchedUsers[]= $row["mb_user_name"]; } } $ajaxResponse->setSuccess(true); $ajaxResponse->setResult(array( "found" => $matchedUsers )); break; case "autocompleteMbUser" : $input = $ajaxResponse->getParameter("input"); // get registrars I belong to $myRegistrationOfficeGroups = RegistrationOfficeGroup::getGroupsByUser(Mapbender::session()->get("mb_user_id")); // get user $myUsers = array(); foreach ($myRegistrationOfficeGroups as $registrar) { $myUsers = array_merge($myUsers, $registrar->getUser()); } // get user that match the search term $filter = new Filter("ILIKE", "mb_user_name", "%" . $input . "%"); $matchedUsers = User::getList($filter); // compute and return intersection $matchedUsers = array_intersect($myUsers, $matchedUsers); if (count($matchedUsers) > 0) { // return only these users that have metadata sets $vars = array(); $v = array(); $t = array(); $i = 0; foreach ($matchedUsers as $user) { $vars[]= "$" . ++$i; $v[]= $user->id; $t[]= "i"; } $sql = "SELECT DISTINCT mb_user_name FROM mb_user, mb_metadata " . "WHERE mb_user_id = fkey_mb_user_id AND " . "fkey_mb_user_id IN (" . implode(",", $vars) . ")"; $res = db_prep_query($sql, $v, $t); $matchedUsers = array(); while ($row = db_fetch_assoc($res)) { $matchedUsers[]= $row["mb_user_name"]; } } $ajaxResponse->setSuccess(true); $ajaxResponse->setResult(array( "found" => $matchedUsers )); break; case "delete": $ids = $ajaxResponse->getParameter("ids"); $deleteIds = array(); $nopermTitles=array(); for($i=0; $i < count($ids);$i++){ $id = $ids[$i]; $metadata = new MdMetadata($id); try { $metadata->remove(); $deleteIds[] = $id; } catch (Exception $e) { $nopermTitles[] = $metadata->title . " (".$id.")"; } } if(count($deleteIds)>0){ $ajaxResponse->setSuccess(true); $message = _mb("Die ausgewählten Metadatensätze wurden gelöscht."); } if(count($nopermTitles) > 0){ $message = $message ." " . _mb("Folgende Metadatensätze konnten nicht gelöscht werden (womöglich keine Schreibberechtigung):\n"); $message .= implode("\n",$nopermTitles); $message .= " "; } $ajaxResponse->setSuccess(true); $ajaxResponse->setMessage($message); break; case "search" : $data = $ajaxResponse->getParameter("data"); $count = $ajaxResponse->getParameter("count"); $type = $ajaxResponse->getParameter("type"); $dataFilter = MdMetadata::getDataFilter($data); $typeArray = explode(",", METADATA_SEARCH_TYPES); $typeFilter = MdMetadata::getTypeFilter($_GET["type"], $typeArray); $filter = new Filter("AND", array($dataFilter, $typeFilter)); $metadataRecordCount = MdMetadata::getCount($filter); $resultObj = array( "iTotalRecords" => $metadataRecordCount, ); $ajaxResponse->setSuccess(true); $ajaxResponse->setResult($resultObj); break; default : $ajaxResponse->setSuccess(false); $ajaxResponse->setMessage(_mb("An unknown error occured.")); break; } $ajaxResponse->send(); ?>