Source for file class.acBlockType_multi_input.php

Documentation is available at class.acBlockType_multi_input.php

  1. <?php
  2. {
  3.     function __construct(&$content_obj, $params = array())
  4.     {
  5.         $params['block_type'] = 'multi_input';
  6.         parent::__construct($content_obj, $params);
  7.         
  8.         $this->SetProperty('inputs', isset($params['inputs']) ? $params['inputs'] : '');
  9.         $this->SetProperty('value_delimiter', isset($params['value_delimiter']) ? $params['value_delimiter'] : '<!-- multi_input_value_delimiter -->');
  10.         $this->SetProperty('input_delimiter', isset($params['input_delimiter']) ? $params['input_delimiter'] : '<!-- multi_input_delimiter -->');
  11.     }
  12.     
  13.     public function GetInput()
  14.     {
  15.         $AC = &ac_utils::get_module('AdvancedContent');
  16.         $multi_input_ids = ac_utils::CleanArray(explode(',', $this->GetProperty('inputs')));
  17.         $input_values    = array();
  18.         $multi_input     = '';
  19.         
  20.         foreach(explode($this->GetProperty('input_delimiter'), $this->GetContent()) as $input_data)
  21.             $input_values[] = explode($this->GetProperty('value_delimiter'),$input_data);
  22.         
  23.         $blockType        = &acContentBlockManager::GetBlockType('multi_input');
  24.         $multiInput_props = $blockType['props'];
  25.         foreach($multi_input_ids as $k1=>$multi_input_id)
  26.         {
  27.             if(isset($multiInput_props[$multi_input_id]))
  28.             {
  29.                 if(!isset($multiInput_props[$multi_input_id]['template']))
  30.                 {
  31.                     $multiInput_props[$multi_input_id]['template'] = $AC->GetTemplate($multiInput_props[$multi_input_id]['tpl_name']);
  32.                     acContentBlockManager::SetBlockTypeProperty('multi_input', $multi_input_id, $multiInput_props[$multi_input_id]);
  33.                 }
  34.                 $inputs = array();
  35.                 foreach ($multiInput_props[$multi_input_id]['elements'] as $k2=>$inputBlock)
  36.                 {
  37.                     if($inputBlock->GetProperty('smarty'))
  38.                     {
  39.                         foreach($inputBlock->GetProperties() as $propName=>$propValue)
  40.                             $inputBlock->SetProperty($propName, ac_utils::DoSmarty($content_obj, $propValue));
  41.                     }
  42.                     $inputBlock->SetProperty('id', 'multiInput-' . $this->GetProperty('id') . '-' . $multi_input_id . '-' . $k1 . '-' . $k2);
  43.                     $inputBlock->SetContent(isset($input_values[$k1][$k2]) ? $input_values[$k1][$k2] : '');
  44.                     $inputs[$inputBlock->GetProperty('id')] = $inputBlock;
  45.                 }
  46.                 $AC->smarty->assign_by_ref('inputs', $inputs);
  47.                 #$multi_input .= $AC->ProcessTemplateFromData($multiInput_props[$multi_input_id]['template']);
  48.                 $multi_input .= $AC->smarty->fetch('string:' . $multiInput_props[$multi_input_id]['template']);
  49.             }
  50.         }
  51.         return $multi_input;
  52.     }
  53.     
  54.     public function SetBlockTypeProperties()
  55.     {
  56.         if(ac_utils::cms_access() == 'backend')
  57.         {
  58.             $AC = &ac_utils::get_module('AdvancedContent');
  59.             $multi_input_ids  = ac_utils::CleanArray(explode(',',$this->GetProperty('inputs')));
  60.             $blockType        = &acContentBlockManager::GetBlockType('multi_input');
  61.             $multiInput_props = $blockType['props'];
  62.             
  63.             foreach($multi_input_ids as $k1=>$multi_input_id)
  64.             {
  65.                 if(!isset($multiInput_props[$multi_input_id]))
  66.                 {
  67.                     $multiInput_props = array_merge($multiInput_props, ac_admin_ops::GetMultiInputFull($multi_input_ids));
  68.                     if(!isset($multiInput_props[$multi_input_id]))
  69.                         continue;
  70.                     
  71.                     $multiInput_props[$multi_input_id]['template'] = $AC->GetTemplate($multiInput_props[$multi_input_id]['tpl_name']);
  72.                     $matches = array();
  73.                     $result  = preg_match_all(AC_BLOCK_PATTERN, $multiInput_props[$multi_input_id]['input_fields'], $matches);
  74.                     
  75.                     if ($result && count($matches[1]) > 0)
  76.                     {
  77.                         foreach ($matches[1] as $k2=>$wholetag)
  78.                         {
  79.                             if(!$inputBlock = acContentBlockManager::CreateContentBlock($this->content_obj, $wholetag))
  80.                                 continue;
  81.                             
  82.                             if($inputBlock->GetProperty('type') == 'multi_input')
  83.                                 continue; # ToDo: display message?
  84.                             
  85.                             $multiInput_props[$multi_input_id]['elements'][$k2] = $inputBlock;
  86.                         }
  87.                     }
  88.                 }
  89.             }
  90.             acContentBlockManager::SetBlockTypeProperties('multi_input', $multiInput_props);
  91.         }
  92.     }
  93.     
  94.     public function FillParams(&$params, $editing = false)
  95.     {
  96.         $blockId          = $this->GetProperty('id');
  97.         $multi_inputs     = array();
  98.         $value            = '';
  99.         $blockType        = &acContentBlockManager::GetBlockType('multi_input');
  100.         $multiInput_props = $blockType['props'];
  101.         foreach(ac_utils::CleanArray(explode(',',$this->GetProperty('inputs'))) as $k1=>$multi_input_id)
  102.         {
  103.             $multi_input_values = array();
  104.             foreach($multiInput_props[$multi_input_id]['elements'] as $k2=>$inputBlock)
  105.             {
  106.                 if(isset($params['multiInput-' . $blockId . '-' . $multi_input_id . '-' . $k1 . '-' . $k2]))
  107.                 {
  108.                     $inputBlock->SetProperty('id', 'multiInput-' . $blockId . '-' . $multi_input_id . '-' . $k1 . '-' . $k2);
  109.                     $multi_input_values[] = $inputBlock->FillParams($params, $editing);
  110.                 }
  111.             }
  112.             $multi_inputs[] = implode($this->GetProperty('value_delimiter'),$multi_input_values);
  113.         }
  114.         if(!ac_utils::IsVarEmpty($multi_inputs))
  115.             $value = implode($this->GetProperty('input_delimiter'), $multi_inputs);
  116.         
  117.         return $value;
  118.     }
  119. }
  120. ?>

Documentation generated on Tue, 09 Oct 2012 16:57:04 +0200 by phpDocumentor 1.4.1