content_menu_domain_filter.php in Content Menu 8
File
filters/content_menu_domain_filter.php
View source
<?php
require_once 'content_menu_filter.php';
class content_menu_domain_filter implements content_menu_filter {
private $active;
private $domain;
function __construct() {
$this->domain = $this
->_content_menu_domainacccess();
$this->active = $this->domain ? TRUE : FALSE;
}
public function addFilterWidget(&$form, &$form_state, $form_id) {
if ($this->active) {
foreach ($this
->_content_menu_domain_list() as $did => $dom) {
$options[$did] = $dom['sitename'];
}
$form['domainselect'] = array(
'#type' => 'select',
'#title' => t('Filter menu by domain'),
'#options' => $options,
'#default_value' => $this->domain['domain_id'],
'#ajax' => array(
'callback' => '_content_menu_filter_elements_by_domain',
),
);
$form['#content_menu_filter_widget'][] = 'domainselect';
}
}
public function hideElement($el) {
if ($this->active) {
if (isset($el['#item']['options']['domain_menu_access'])) {
if (isset($el['#item']['options']['domain_menu_access']['hide']) && in_array('d' . $this->domain['domain_id'], $el['#item']['options']['domain_menu_access']['hide'])) {
return TRUE;
}
if (!empty($el['#item']['options']['domain_menu_access']['show']) && !in_array('d' . $this->domain['domain_id'], $el['#item']['options']['domain_menu_access']['show'])) {
return TRUE;
}
}
}
return FALSE;
}
private function _content_menu_domainacccess() {
if (module_exists('domain')) {
$domains = $this
->_content_menu_domain_list();
if (isset($_SESSION['content_menu_domain_filter'])) {
return $domains[$_SESSION['content_menu_domain_filter']];
}
if (count($domains) > 1) {
return domain_default(FALSE, FALSE);
}
}
return FALSE;
}
private function _content_menu_domain_list() {
$cache =& drupal_static(__FUNCTION__, array());
if (empty($cache['domains'])) {
$domains = array();
$query = db_select('domain', 'd')
->fields('d', array(
'domain_id',
'sitename',
'subdomain',
'scheme',
'valid',
'weight',
'is_default',
))
->orderBy('weight');
$result = $query
->execute();
while ($domain = $result
->fetchAssoc()) {
$domains[$domain['domain_id']] = domain_api($domain);
}
$cache['domains'] = $domains;
return $domains;
}
return $cache['domains'];
}
}
function _content_menu_filter_elements_by_domain($form, &$form_state) {
$domain = $form_state['values']['domainselect'];
ctools_include('ajax');
$_SESSION['content_menu_domain_filter'] = $domain;
$commands[] = ctools_ajax_command_reload();
print ajax_render($commands);
exit;
}