Example #1
0
 public function joinQuery($languageCode = null)
 {
     $joinQuery = false;
     if ($languageCode == null) {
         $languageCode = $this->getDefaultLanguageCode();
     }
     if ($this->config->isMultilingual()) {
         // join language table
         $languageTable = $this->config->languageTableName();
         $idField = $this->config->tableName() . '.`' . $this->config->idField() . '`';
         $languageReferenceField = $languageTable . '.`' . $this->config->languageForeignKeyField() . '`';
         $languageCodeField = $languageTable . '.`' . $this->config->languageCodeField() . '`';
         $joinQuery .= " LEFT OUTER JOIN {$languageTable} ON {$idField} = {$languageReferenceField} AND {$languageCodeField} = " . ipDb()->getConnection()->quote($languageCode) . "";
     }
     if ($this->config->joinQuery()) {
         if ($joinQuery != '') {
             $joinQuery .= ' ';
         }
         $joinQuery .= $this->config->joinQuery();
     }
     return $joinQuery;
 }
Example #2
0
 public function updateForm($id)
 {
     $db = new Db($this->subgridConfig, $this->statusVariables);
     $form = new \Ip\Form();
     $form->addAttribute('autocomplete', 'off');
     $curData = $db->fetchRow($id);
     $curDataMultilingual = array();
     if ($this->subgridConfig->isMultilingual()) {
         //fetch multilingual data
         $languages = ipContent()->getLanguages();
         foreach ($languages as $language) {
             $langDb = new Db($this->subgridConfig, $this->statusVariables);
             $langDb->setDefaultLanguageCode($language->getCode());
             $curDataMultilingual[$language->getCode()] = $langDb->fetchRow($id);
         }
     }
     foreach ($this->subgridConfig->fields() as $key => $fieldData) {
         if (isset($fieldData['allowUpdate']) && !$fieldData['allowUpdate']) {
             continue;
         }
         if (!empty($fieldData['type']) && $fieldData['type'] == 'Tab') {
             //tabs (fieldsets)
             $title = '';
             if (!empty($fieldData['label'])) {
                 $title = $fieldData['label'];
             }
             if ($key == 0) {
                 $fieldsets = $form->getFieldsets();
                 $fieldset = $fieldsets[0];
                 $fieldset->setLabel($title);
             } else {
                 $fieldset = new \Ip\Form\Fieldset($title);
                 $form->addFieldset($fieldset);
             }
             $fieldset->addAttribute('id', 'autoGridTabId' . rand(0, 100000000000));
             if ($key == 0) {
                 $fieldset->addAttribute('class', 'tab-pane active');
             } else {
                 $fieldset->addAttribute('class', 'tab-pane');
             }
         } else {
             //fields
             if (!empty($fieldData['multilingual'])) {
                 $languages = ipContent()->getLanguages();
                 foreach ($languages as $language) {
                     $tmpFieldData = $fieldData;
                     $field = $this->updateField($tmpFieldData, $curDataMultilingual[$language->getCode()]);
                     $field->setName($field->getName() . '_' . $language->getCode());
                     if ($field) {
                         $field->setLabel($field->getLabel() . ' ' . $language->getAbbreviation());
                         $form->addField($field);
                     }
                 }
             } else {
                 $field = $this->updateField($fieldData, $curData);
                 if ($field) {
                     $form->addField($field);
                 }
             }
         }
     }
     $field = new \Ip\Form\Field\Hidden(array('name' => $this->subgridConfig->idField(), 'value' => $id));
     $form->addField($field);
     $field = new \Ip\Form\Field\Hidden(array('name' => 'method', 'value' => 'update'));
     $form->addField($field);
     $field = new \Ip\Form\Field\HiddenSubmit();
     $form->addField($field);
     if (count($form->getFieldsets()) > 1) {
         $form->addClass('tab-content');
     }
     if ($this->subgridConfig->updateFormFilter()) {
         $form = call_user_func($this->subgridConfig->updateFormFilter(), $form);
     }
     return $form;
 }