예제 #1
0
파일: SearchForm.php 프로젝트: arhe/pwak
 /**
  * Ajoute un element de type creneau de date
  *
  * @access public
  * @param  $begin array pour construire le 1er widget de date
  * @param  $end array pour construire le 2nd widget de date
  * @param  $defaultValues array valeurs par defaut
  * @return void
  */
 public function addDate2DateElement($begin, $end, $defaultValues)
 {
     /*  Construction du formulaire  */
     // L'affichage depend de la langue du user connecte
     if (!isset($begin['Format']['language'])) {
         $begin['Format']['language'] = I18N::getLocaleCode(true);
     }
     if (!isset($begin['Format']['format'])) {
         $begin['Format']['format'] = I18N::getHTMLSelectDateFormat();
     }
     if (!isset($begin['Label'])) {
         $begin['Label'] = _('From');
     }
     if (!isset($begin['Format']['minYear'])) {
         $begin['Format']['minYear'] = date('Y') - 5;
     }
     if (!isset($begin['Format']['maxYear'])) {
         $begin['Format']['maxYear'] = date('Y') + 5;
     }
     /////
     if (!isset($end['Format']['language'])) {
         $end['Format']['language'] = I18N::getLocaleCode(true);
     }
     if (!isset($end['Format']['format'])) {
         $end['Format']['format'] = I18N::getHTMLSelectDateFormat();
     }
     if (!isset($end['Label'])) {
         $end['Label'] = _(' to ');
     }
     if (!isset($end['Format']['minYear'])) {
         $end['Format']['minYear'] = date('Y') - 5;
     }
     if (!isset($end['Format']['maxYear'])) {
         $end['Format']['maxYear'] = date('Y') + 5;
     }
     $addInstruction = "\$this->_form->addElement('date', \$begin['Name'], \$begin['Label'], \$begin['Format']);";
     $addInstruction .= "\$this->_form->addElement('date', \$end['Name'], \$end['Label'], \$end['Format']);";
     eval($addInstruction);
     // le type est dynamique, pour lier ensemble les 2 criteres begin et end
     $types = array_values($this->_elementsToDisplay);
     $nbTypeDate2Date = 0;
     for ($i = 0; $i < count($types); $i++) {
         if (!(false === strpos($types[$i], 'date2date'))) {
             $nbTypeDate2Date += 1;
         }
     }
     $Date2DateIndex = $nbTypeDate2Date / 2 + 1;
     $this->_elementsToDisplay[$begin['Name']] = 'date2date' . $Date2DateIndex;
     $this->_elementsToDisplay[$end['Name']] = 'date2date' . $Date2DateIndex;
     $Default = $this->getDefaultValues();
     // affiche le form avec les valeurs par defaut
     $this->setDefaultValues(array_merge($Default, $defaultValues));
     $smarty = $this->_smarty;
     $smarty->assign('DisplayDate' . $Date2DateIndex, 'none');
     /*  Traitement special pour les creneaux de date  */
     $FilterComponentArray = array();
     if (isset($_REQUEST['DateOrder' . $Date2DateIndex]) || isset($_SESSION['DateOrder' . $Date2DateIndex]) && (!isset($_REQUEST['formSubmitted']) && !$this->isFirstArrival())) {
         $FilterComponentArray = $this->getDate2DateFilterComponent($Date2DateIndex, $begin, $end);
     }
     // n'est pas vide si des creneaux de date
     $initFilterComponentArray = $this->_filterComponentArray;
     $this->_filterComponentArray = array_merge($initFilterComponentArray, $FilterComponentArray);
 }