search_restrict_apache_solr.module in Search Restrict 6
File
search_restrict_apache_solr/search_restrict_apache_solr.module
View source
<?php
function search_restrict_apache_solr_apachesolr_modify_query(&$query, &$params, $caller) {
global $user;
if ($user->uid == 1) {
return;
}
$excluded_types = search_restrict_apache_solr_excluded($user->roles);
if (!empty($excluded_types)) {
foreach ($excluded_types as $excluded_type) {
$query
->add_filter('type', $excluded_type, TRUE);
}
}
}
function search_restrict_apache_solr_excluded($user_roles) {
$excluded_types = array();
$types = node_get_types();
foreach ($types as $type => $type_info) {
$roles = variable_get('search_restrict_type_' . $type, array());
$access = FALSE;
$access_false = array();
$access_true = array();
foreach ($roles as $role_id => $selected) {
if (empty($selected)) {
$access_false[] = $role_id;
}
else {
$access_true[] = $role_id;
}
}
if (!empty($access_true) && !empty($access_false)) {
foreach ($access_true as $role_selected) {
if (!empty($user_roles[$role_selected])) {
$access = TRUE;
}
}
if (empty($access)) {
$excluded_types[] = $type;
}
}
}
return $excluded_types;
}