Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.29 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Drupal\nordicpaper_custom\Plugin\Block;
  4.  
  5. use Drupal\Core\Block\BlockBase;
  6. use Drupal\node\Entity\Node;
  7. use Drupal\file\Entity\File;
  8. use Drupal\taxonomy\Entity\Term;
  9. use Drupal\Core\Database\Database;
  10. use Drupal\user\Entity\User;
  11.  
  12. /**
  13.  
  14.  * @Block(
  15.  *   id = "nordicpaper_custom_products_filter",
  16.  *   subject = @Translation("Products filter block"),
  17.  *   admin_label = @Translation("Products filter block")
  18.  * )
  19.  */
  20. class ProductsFilterBlock extends BlockBase {
  21.     public function build() {
  22.         $node = \Drupal::routeMatch()->getParameter('node');
  23.         $filterVocabulary = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree('filters');
  24.        
  25.         $filterTerms = array();
  26.         foreach ($filterVocabulary as $term) {
  27.             $filterTerms[$term->name] = array(
  28.                 "id" => $term->tid,
  29.             );
  30.         }
  31.         $filters = array();
  32.         $content = '';
  33.        
  34.         /* Filter config */
  35.         $release = $node->get('field_list_release')->getValue()[0]['value'];
  36.         if($release){
  37.             $releaseValues = explode(',',$release);
  38.             $releaseParts = 100/count($releaseValues);
  39.             $release = array(0);
  40.             $releaseWeight = $node->get('field_list_release_weight')->getValue()[0]['value'];
  41.             $y = 1;
  42.             $x = 0;
  43.             for($i=0;$i<100;$i++){
  44.                 if($i > $releaseParts){
  45.                     $y++;
  46.                     $releaseParts = $releaseParts*$y;
  47.                     $x++;
  48.                 }
  49.                 array_push($release, $releaseValues[$x]);
  50.             }
  51.  
  52.             $releaseInfo = Term::load($filterTerms['Release']['id']);
  53.             $filters[$releaseWeight] = array(
  54.                 'content' => '<div class="filter" data-values="'.implode(',',$release).'"><label>RELEASE:</label><div class="popup"><div class="close"></div><span class="title">'.$releaseInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$releaseInfo->description->value.'"></a><div class="slider" id="release"></div></div>',
  55.             );
  56.         }
  57.  
  58.         $grease = $node->get('field_list_grease_barrier')->getValue()[0]['value'];
  59.         if($grease){
  60.             $greaseValues = explode(',',$grease);
  61.             $greaseParts = 100/count($greaseValues);
  62.             $grease = array(0);
  63.             $greasebarrierWeight = $node->get('field_list_grease_barrier_weight')->getValue()[0]['value'];
  64.             $y = 1;
  65.             $x = 0;
  66.             for($i=0;$i<100;$i++){
  67.                 if($i > $greaseParts){
  68.                     $y++;
  69.                     $greaseParts = $greaseParts*$y;
  70.                     $x++;
  71.                 }
  72.                 array_push($grease, $greaseValues[$x]);
  73.             }
  74.             $greaseInfo = Term::load($filters['Grease barrier']['id']);
  75.             $filters[$greasebarrierWeight] = array(
  76.                 'content' => '<div class="filter" data-values="'.implode(',',$grease).'"><label>GREASE BARRIER:</label><div class="popup"><div class="close"></div>'.$greaseInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$greaseInfo->description->value.'"></a><div class="slider" id="greasebarrier"></div></div>',
  77.             );
  78.         }
  79.        
  80.         $lamination = $node->get('field_list_lamination')->getValue()[0]['value'];
  81.         if($lamination){
  82.             $laminationValues = explode(',',$lamination);
  83.             $laminationParts = 100/count($laminationValues);
  84.             $lamination = array(0);
  85.             $laminationWeight = $node->get('field_list_lamination_weight')->getValue()[0]['value'];
  86.             $y = 1;
  87.             $x = 0;
  88.             for($i=0;$i<100;$i++){
  89.                 if($i > $laminationParts){
  90.                     $y++;
  91.                     $laminationParts = $laminationParts*$y;
  92.                     $x++;
  93.                 }
  94.                 array_push($lamination, $laminationValues[$x]);
  95.             }
  96.             $laminationInfo = Term::load($filters['Lamination']['id']);
  97.             $filters[$laminationWeight] = array(
  98.                 'content' => '<div class="filter" data-values="'.implode(',',$lamination).'"><label>LAMINATION:</label><div class="popup"><div class="close"></div>'.$laminationInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$laminationInfo->description->value.'"></a><div class="slider" id="lamination"></div></div>',
  99.             );
  100.         }
  101.  
  102.         $printability = $node->get('field_list_printability')->getValue()[0]['value'];
  103.         if($printability){
  104.             $printabilityValues = explode(',',$printability);
  105.             $printabilityParts = 100/count($printabilityValues);
  106.             $printability = array(0);
  107.             $printabilityWeight = $node->get('field_list_printability_weight')->getValue()[0]['value'];
  108.             $y = 1;
  109.             $x = 0;
  110.             for($i=0;$i<100;$i++){
  111.                 if($i > $printabilityParts){
  112.                     $y++;
  113.                     $printabilityParts = $printabilityParts*$y;
  114.                     $x++;
  115.                 }
  116.                 array_push($printability, $printabilityValues[$x]);
  117.             }
  118.             $printabilityInfo = Term::load($filters['Printability']['id']);
  119.             $filters[$printabilityWeight] = array(
  120.                 'content' => '<div class="filter" data-values="'.implode(',',$printability).'"><label>PRINTABILITY:</label><div class="popup"><div class="close"></div>'.$printabilityInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$printabilityInfo->description->value.'"></a><div class="slider" id="printability"></div></div>',
  121.             );
  122.         }
  123.  
  124.         $frozen = $node->get('field_list_frozen_foods')->getValue()[0]['value'];
  125.         if($frozen){
  126.             $frozenValues = explode(',',$frozen);
  127.             $frozenParts = 100/count($frozenValues);
  128.             $frozen = array(0);
  129.             $frozenFoodWeight = $node->get('field_list_frozen_food_weight')->getValue()[0]['value'];
  130.             $y = 1;
  131.             $x = 0;
  132.             for($i=0;$i<100;$i++){
  133.                 if($i > $frozenParts){
  134.                     $y++;
  135.                     $frozenParts = $frozenParts*$y;
  136.                     $x++;
  137.                 }
  138.                 array_push($frozen, $frozenValues[$x]);
  139.             }
  140.             $frozenfoodInfo = Term::load($filters['Frozen food']['id']);
  141.             $filters[$frozenFoodWeight] = array(
  142.                 'content' => '<div class="filter" data-values="'.implode(',',$frozen).'"><label>FROZEN FOOD:</label><div class="popup"><div class="close"></div>'.$frozenfoodInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$frozenfoodInfo->description->value.'"></a><div class="slider" id="frozenfoods"></div></div>',
  143.             );
  144.         }
  145.  
  146.         $food = $node->get('field_list_food_interleaving')->getValue()[0]['value'];
  147.         if($food){
  148.             $foodValues = explode(',',$food);
  149.             $foodParts = 100/count($foodValues);
  150.             $food = array(0);
  151.             $foodInterleavingWeight = $node->get('field_food_interleaving_weight')->getValue()[0]['value'];
  152.             $y = 1;
  153.             $x = 0;
  154.             for($i=0;$i<100;$i++){
  155.                 if($i > $foodParts){
  156.                     $y++;
  157.                     $foodParts = $foodParts*$y;
  158.                     $x++;
  159.                 }
  160.                 array_push($food, $foodValues[$x]);
  161.             }
  162.             $foodinterleavingInfo = Term::load($filters['Food interleaving']['id']);
  163.             $filters[$foodInterleavingWeight] = array(
  164.                 'content' => '<div class="filter" data-values="'.implode(',',$food).'"><label>FOOD INTERLEAVING:</label><div class="popup"><div class="close"></div>'.$foodinterleavingInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$foodinterleavingInfo->description->value.'"></a><div class="slider" id="foodinterleaving"></div></div>',
  165.             );
  166.         }
  167.  
  168.         $denesting = $node->get('field_list_denesting')->getValue()[0]['value'];
  169.         if($denesting){
  170.             $denestingValues = explode(',',$denesting);
  171.             $denestingParts = 100/count($denestingValues);
  172.             $denesting = array(0);
  173.             $denestingWeight = $node->get('field_list_denesting_weight')->getValue()[0]['value'];
  174.             $y = 1;
  175.             $x = 0;
  176.             for($i=0;$i<100;$i++){
  177.                 if($i > $denestingParts){
  178.                     $y++;
  179.                     $denestingParts = $denestingParts*$y;
  180.                     $x++;
  181.                 }
  182.                 array_push($denesting, $denestingValues[$x]);
  183.             }
  184.             $denestingInfo = Term::load($filters['Denesting']['id']);
  185.             $filters[$denestingWeight] = array(
  186.                 'content' => '<div class="filter" data-values="'.implode(',',$denesting).'"><label>DENESTING:</label><div class="popup"><div class="close"></div>'.$denestingInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$denestingInfo->description->value.'"></a><div class="slider" id="denesting"></div></div>',
  187.             );
  188.         }
  189.  
  190.         $corrugating = $node->get('field_list_corrugating')->getValue()[0]['value'];
  191.         if($corrugating){
  192.             $corrugatingValues = explode(',',$corrugating);
  193.             $corrugatingParts = 100/count($corrugatingValues);
  194.             $corrugating = array(0);
  195.             $corrugatingWeight = $node->get('field_list_corrugating_weight')->getValue()[0]['value'];
  196.             $y = 1;
  197.             $x = 0;
  198.             for($i=0;$i<100;$i++){
  199.                 if($i > $corrugatingParts){
  200.                     $y++;
  201.                     $corrugatingParts = $corrugatingParts*$y;
  202.                     $x++;
  203.                 }
  204.                 array_push($corrugating, $corrugatingValues[$x]);
  205.             }
  206.             $corrugatingInfo = Term::load($filters['Corrugating']['id']);
  207.             $filters[$corrugatingWeight] = array(
  208.                 'content' => '<div class="filter" data-values="'.implode(',',$corrugating).'"><label>CORRUGATING:</label><div class="popup"><div class="close"></div>'.$corrugatingInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$corrugatingInfo->description->value.'"></a><div class="slider" id="corrugating"></div></div>',
  209.             );
  210.         }
  211.  
  212.         $weight = array();
  213.         for($i=0;$i<101;$i++){
  214.             array_push($weight, $i);
  215.         }
  216.  
  217.  
  218.         $content .= '<a href="javascript:void()" class="filterClear">Clear filter</a><br />';
  219.         $content .= '<div class="filters">';
  220.             $content .= '<div id="amount"></div>';
  221.            
  222.             $content .= $filters[1]['content'];
  223.             $content .= $filters[2]['content'];
  224.            
  225.             $content .= '<div class="showmore"><a href="javascript:void(0)" class="showMoreFilters"><span>More options</span><span style="display:none;">Less options</span></a></div>';
  226.             $content .= '<div class="moreFilters">';
  227.                 for($i=3;$i<count($filters)+1;$i++){
  228.                     $content .= $filters[$i]['content'];
  229.                 }
  230.  
  231.                 $weightInfo = Term::load($filters['Gram weight']['id']);
  232.                 $content .= '<div class="filter" data-values="'.implode(',',$weight).'"><label>GRAM WEIGHT:</label><div class="popup"><div class="close"></div>'.$weightInfo->description->value.'<img src="/themes/nordicpaper/images/popup_point.png" /></div><a class="question" title="'.$weightInfo->description->value.'"></a><div class="slider" id="weight"></div></div>';
  233.             $content .= '</div>';
  234.         $content .= '</div>';
  235.  
  236.         $output = array(
  237.             '#type' => 'markup',
  238.             '#children' => $content,
  239.             '#cache' => array(
  240.                 'max-age' => '0',
  241.             ),
  242.             '#attached' => array(
  243.                 'library' => array(
  244.                     'nordicpaper_custom/nordicpaper-custom',
  245.                 ),
  246.             ),
  247.         );
  248.         return $output;
  249.    
  250.     }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement