Advertisement
Guest User

Untitled

a guest
Mar 24th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.67 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4.  * Модуль, отображающий список выбора города
  5.  */
  6.  
  7. function cityfilters_init()
  8. {
  9.     drupal_add_library('system', 'jquery.cookie');
  10.     drupal_add_css(drupal_get_path('module', 'cityfilters') . '/css/cityfilters_style.css');
  11.     drupal_add_js(drupal_get_path('module', 'cityfilters') . '/js/cityfilters_jfunctions.js');
  12. }
  13.  
  14. function cityfilters_block_info()
  15. {
  16.     $blocks['city_filter'] = array(
  17.         'info' => t('City filter'),
  18.         'cache' => DRUPAL_NO_CACHE,
  19.     );
  20.     $blocks['city_filter_list'] = array(
  21.         'info' => t('Select your City (List)'),
  22.         'cache' => DRUPAL_NO_CACHE,
  23.     );
  24.  
  25.     return $blocks;
  26. }
  27.  
  28. /**
  29.  * @param string $delta
  30.  * @return array|bool
  31.  */
  32. function cityfilters_block_view($delta = '')
  33. {
  34.     $block = array();
  35.     if (user_access('access content')) {
  36.         $block['subject'] = t('Select your city');
  37.         switch ($delta) {
  38.             case 'city_filter':
  39.                 $block['content'] = drupal_get_form('cityfilters_select_city_form');
  40.                 return $block;
  41.             case 'city_filter_list':
  42.                 $block['content'] = cityfilters_select_city_list();
  43.                 return $block;
  44.         }
  45.     }
  46.     return false;
  47. }
  48.  
  49. /**
  50.  * Form constructor for city select form.
  51.  *
  52.  */
  53. function cityfilters_select_city_form($form, &$form_state)
  54. {
  55.     $cities = cityfilters_get_cities();
  56.  
  57.     $form['widget'] = [
  58.         '#type' => 'container',
  59.         '#attributes' => ['class' => ['container-inline']],
  60.     ];
  61.     $form['widget']['city'] = [
  62.         '#type' => 'select',
  63.         '#title' => t('Выберите город'),
  64.         '#title_display' => 'attribute',
  65.         '#options' => $cities,
  66.         '#default_value' => $_COOKIE['clicat_city'],
  67.         '#required' => TRUE,
  68.  
  69.     ];
  70.     $form['widget']['actions'] = ['#type' => 'actions'];
  71.     $form['widget']['actions']['submit'] = [
  72.         '#type' => 'submit',
  73.         '#value' => t('Select'),
  74.         '#id' => 'selectcity-submit',
  75.     ];
  76.     return $form;
  77. }
  78.  
  79. function cityfilters_select_city_form_submit($form, &$form_state)
  80. {
  81. // установка coocies в JS.
  82. //    dpm($_COOKIE);
  83. }
  84.  
  85. /**
  86.  * Form constructor for city select form.
  87.  *
  88.  */
  89. function cityfilters_select_city_list()
  90. {
  91.     $cities = cityfilters_get_cities();
  92.     $res = '<ul class="cities">';
  93.     foreach ($cities as $key => $city){
  94.         $classes = 'cityfilters-list-item' . ($key === $_COOKIE['clicat_city'] ? ' selected' : '');
  95.         $res .= '<li><a class="' . $classes . '" data-city="' . $key . '">' . $city . '</a></li>';
  96.     }
  97.     $res .= '</ul>';
  98.     return $res;
  99. }
  100.  
  101. /*
  102.  *  Выбираем список городов
  103.  */
  104. function cityfilters_get_cities()
  105. {
  106.     $query = db_select('node', 'n');
  107.     $query->leftJoin('field_data_field_address', 'a', 'n.nid = a.entity_id');
  108.     $query->fields('a', ['field_address_locality']);
  109.     $query->addExpression('COUNT(*)', 'count');
  110.     $query->condition('n.status', '1');
  111.     $query->condition('n.type', 'clinic');
  112.     $query->groupBy('a.field_address_locality');
  113.     $query->orderBy('count', 'DESC');
  114.     $all = $query->execute()->fetchAll();
  115.     $cities['all'] = 'Все';
  116.     foreach ($all as $city) {
  117.         $city_name = $city->field_address_locality . ' (' . $city->count . ')';
  118.         $cities[$city->field_address_locality] = $city_name;
  119.     }
  120.     return $cities;
  121. }
  122.  
  123.  
  124. //    $block['subject'] = t('City filter');
  125. //    // Load the view.
  126. //    $view = views_embed_view('catalog', 'attachment_cities');
  127. //    if ($view) {
  128. //      $block['content'] = $view;
  129. //    }
  130. //    else {
  131. //      $block['content'] = t('The view is empty');
  132. //    }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement