protected function getRelationTableFields() { $table = rex_xform_manager_table::get($this->getElement('relation_table')); $source = $table->getRelationsTo($this->params['main_table']); $target = $table->getRelationsTo($this->getElement('table')); if (!empty($source) && !empty($target)) { return array('source' => reset($source)->getName(), 'target' => reset($target)->getName()); } return array('source' => null, 'target' => null); }
public static function setTableField($table_name, array $table_field) { unset($table_field['id']); if ($table_name == '') { throw new Exception('table_name must be set'); } if (count($table_field) == 0) { throw new Exception('field must be a filled array'); } $fieldIdentifier = array('type_id' => $table_field['type_id'], 'type_name' => $table_field['type_name'], 'name' => $table_field['name']); $currentFields = rex_xform_manager_table::get($table_name)->getFields($fieldIdentifier); // validate specials if ($table_field['type_id'] == 'validate') { $table_field['list_hidden'] = 1; $table_field['search'] = 0; } self::createMissingFieldColumns($table_field); if (count($currentFields) > 1) { throw new Exception('more than one field found for table: ' . $table_name . ' with Fieldidentifier: ' . implode(', ', $fieldIdentifier) . ''); } elseif (count($currentFields) == 0) { // Insert $field_insert = new rex_sql(); $field_insert->debugsql = self::$debug; $field_insert->setTable(rex_xform_manager_field::table()); $field_insert->setValue('table_name', $table_name); foreach ($table_field as $field_name => $field_value) { $field_insert->setValue($field_name, $field_value); } if (!isset($table['prio'])) { $field_insert->setValue('prio', rex_xform_manager_table::get($table_name)->getMaximumPrio() + 1); } $field_insert->insert(); } else { // Update $currentField = $currentFields[0]->toArray(); foreach ($table_field as $field_name => $field_value) { $currentField[$field_name] = $field_value; } $field_update = new rex_sql(); $field_update->debugsql = self::$debug; $field_update->setTable(rex_xform_manager_field::table()); $add_where = array(); foreach ($fieldIdentifier as $field => $value) { $add_where[] = '`' . mysql_real_escape_string($field) . '`="' . mysql_real_escape_string($table_name) . '"'; } $where = 'table_name="' . mysql_real_escape_string($table_name) . '"'; if (count($add_where) > 0) { $where .= ' and (' . implode(' and ', $add_where) . ') '; } $field_update->setWhere($where); foreach ($table_field as $field_name => $field_value) { $field_update->setValue($field_name, $field_value); } $field_update->update(); } }
public function getDataPage() { global $REX, $I18N; rex_register_extension_point('XFORM_MANAGER_DATA_PAGE', $this); // ********************************************* DATA ADD/EDIT/LIST $func = rex_request('func', 'string', ''); $data_id = rex_request('data_id', 'int', ''); $show_list = true; // -------------- rex_xform_manager_filter and sets $rex_xform_filter = rex_request('rex_xform_filter', 'array'); $rex_xform_set = rex_request('rex_xform_set', 'array'); // -------------- opener - popup for selection $popup = false; $rex_xform_manager_opener = rex_request('rex_xform_manager_opener', 'array'); if (count($rex_xform_manager_opener) > 0) { if (isset($rex_xform_manager_opener['id']) && $rex_xform_manager_opener['id'] != '') { $popup = true; // id, field, multiple } } // -------------- filter - popup for selection if (count($rex_xform_filter) > 0) { $popup = true; } if (is_bool($p = rex_request('popup', 'bool', null))) { $popup = $p; $this->setLinkVars(array('popup' => $p ? 1 : 0)); } // SearchObject $searchObject = new rex_xform_manager_search($this->table); $searchObject->setLinkVars(array("list" => rex_request('list', 'string', ''))); $searchObject->setLinkVars(array("start" => rex_request('start', 'string', ''))); $searchObject->setLinkVars(array("sort" => rex_request('sort', 'string', ''))); $searchObject->setLinkVars(array("sorttype" => rex_request('sorttype', 'string', ''))); $searchObject->setLinkVars($this->getLinkVars()); if (count($rex_xform_filter) > 0) { foreach ($rex_xform_filter as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { $searchObject->setLinkVars(array('rex_xform_filter[' . $k . '][' . $k2 . ']' => $v2)); } } else { $searchObject->setLinkVars(array('rex_xform_filter[' . $k . ']' => $v)); } } } if (count($rex_xform_set) > 0) { foreach ($rex_xform_set as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { $searchObject->setLinkVars(array('rex_xform_set[' . $k . '][' . $k2 . ']' => $v2)); } } else { $searchObject->setLinkVars(array('rex_xform_set[' . $k . ']' => $v)); } } } if (count($rex_xform_manager_opener) > 0) { foreach ($rex_xform_manager_opener as $k => $v) { $searchObject->setLinkVars(array('rex_xform_manager_opener[' . $k . ']' => $v)); } } $searchform = ''; if ($this->hasDataPageFunction('search')) { $searchform = '<div class="rex-addon-output"> <h3 class="rex-hl2">' . $I18N->msg('xform_manager_search') . '</h3> <div class="rex-addon-content"> <div class="xform" id="rex-xform">' . $searchObject->getForm() . '</div> </div> </div>'; } // -------------- DEFAULT - LISTE AUSGEBEN $link_vars = ''; foreach ($this->getLinkVars() as $k => $v) { $link_vars .= '&' . urlencode($k) . '=' . urlencode($v); } rex_title($I18N->msg('xform_table') . ': ' . rex_translate($this->table->getName()) . ' <span class="table-name">[' . $this->table->getTablename() . ']</span>', ''); echo rex_register_extension_point('XFORM_MANAGER_REX_INFO', ''); $show_editpage = true; $show_editpage = rex_register_extension_point('XFORM_MANAGER_DATA_EDIT_FUNC', $show_editpage, array('table' => $this->table, 'link_vars' => $this->getLinkVars())); if ($show_editpage) { // -------------- DB FELDER HOLEN $field_names = array(); foreach ($this->table->getValueFields() as $field) { $field_names[] = $field->getName(); } // -------------- DB DATA HOLEN $data = array(); if ($data_id != '') { $gd = rex_sql::factory(); $gd->setQuery('select * from ' . $this->table->getTableName() . ' where id=' . $data_id); if ($gd->getRows() == 1) { $datas = $gd->getArray(); $data = current($datas); } else { $data_id = ''; } } // -------------- Opener foreach ($rex_xform_manager_opener as $k => $v) { $link_vars .= '&rex_xform_manager_opener[' . $k . ']=' . urlencode($v); } // -------------- Searchfields / Searchtext $link_vars .= '&' . http_build_query($searchObject->getSearchVars()); // -------------- FILTER UND SETS PRFEN $em_url_filter = ''; if (count($rex_xform_filter) > 0) { foreach ($rex_xform_filter as $k => $v) { if (!in_array($k, $field_names)) { unset($rex_xform_filter[$k]); } } $em_url_filter .= '&' . http_build_query(compact('rex_xform_filter')); } $em_url_set = ''; if (count($rex_xform_set) > 0) { foreach ($rex_xform_set as $k => $v) { if (!in_array($k, $field_names)) { unset($rex_xform_set[$k]); } } $em_url_filter .= '&' . http_build_query(compact('rex_xform_set')); } $em_url = $em_url_filter . $em_url_set; $em_rex_list = ''; $em_rex_list .= '&list=' . urlencode(rex_request('list', 'string')); $em_rex_list .= '&sort=' . urlencode(rex_request('sort', 'string')); $em_rex_list .= '&sorttype=' . urlencode(rex_request('sorttype', 'string')); $em_rex_list .= '&start=' . urlencode(rex_request('start', 'string')); // ---------- Popup - no menue, header ... if ($popup) { echo '<link rel="stylesheet" type="text/css" href="../files/addons/xform/popup.css" media="screen, projection, print" />'; } // -------------- Import if (!$popup && $func == 'import' && $this->hasDataPageFunction('import')) { include $REX['INCLUDE_PATH'] . '/addons/xform/plugins/manager/pages/data_import.inc.php'; echo rex_content_block('<a href="index.php?' . $link_vars . $em_url . $em_rex_list . '"><b>« ' . $I18N->msg('xform_back_to_overview') . '</b></a>'); } // -------------- delete entry if ($func == 'delete' && $data_id != '' && $this->hasDataPageFunction('delete')) { $delete = true; if (rex_register_extension_point('XFORM_DATA_DELETE', $delete, array('id' => $data_id, 'value' => $data, 'table' => $this->table))) { $query = 'delete from ' . $this->table->getTablename() . ' where id=' . $data_id; $delsql = new rex_sql(); $delsql->debugsql = self::$debug; $delsql->setQuery($query); echo rex_info($I18N->msg('xform_datadeleted')); $func = ''; $this->table->removeRelationTableRelicts(); rex_register_extension_point('XFORM_DATA_DELETED', '', array('id' => $data_id, 'value' => $data, 'table' => $this->table)); } } // -------------- delete dataset if ($func == 'dataset_delete' && $this->hasDataPageFunction('truncate_table')) { $delete = true; $query = 'delete from `' . $this->table->getTablename() . '` ' . $this->getDataListQueryWhere($rex_xform_filter, $searchObject); if (rex_register_extension_point('XFORM_DATA_DATASET_DELETE', $delete, array('table' => $this->table, 'query' => &$query))) { $delsql = new rex_sql(); $delsql->debugsql = self::$debug; $delsql->setQuery($query); echo rex_info($I18N->msg('xform_dataset_deleted')); $func = ''; $this->table->removeRelationTableRelicts(); rex_register_extension_point('XFORM_DATA_DATASET_DELETED', '', array('table' => $this->table)); } } // -------------- truncate table if ($func == 'truncate_table' && $this->hasDataPageFunction('truncate_table')) { $truncate = true; if (rex_register_extension_point('XFORM_DATA_TABLE_TRUNCATE', $truncate, array('table' => $this->table))) { $query = 'truncate table ' . $this->table->getTablename(); $trunsql = new rex_sql(); $trunsql->setQuery($query); echo rex_info($I18N->msg('xform_table_truncated')); $func = ''; $this->table->removeRelationTableRelicts(); rex_register_extension_point('XFORM_DATA_TABLE_TRUNCATED', '', array('table' => $this->table)); } } // -------------- export dataset if ($func == 'dataset_export' && $this->hasDataPageFunction('export')) { ob_end_clean(); $sql = $this->getDataListQuery($rex_xform_filter, $searchObject); $data = ''; $fields = array(); $g = rex_sql::factory(); $g->setQuery($sql); foreach ($g->getArray() as $d) { if ($data == '') { foreach ($d as $a => $b) { $fields[] = '"' . $a . '"'; } $data = implode(';', $fields); } foreach ($d as $a => $b) { $d[$a] = '"' . str_replace('"', '""', $b) . '"'; } $data .= "\n" . implode(';', $d); } // ----- download - save as $filename = 'export_data_' . date('YmdHis') . '.csv'; $filesize = strlen($data); $filetype = 'application/octetstream'; $expires = 'Mon, 01 Jan 2000 01:01:01 GMT'; $last_modified = 'Mon, 01 Jan 2000 01:01:01 GMT'; header('Expires: ' . $expires); // Date in the past header('Last-Modified: ' . $last_modified); // always modified header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Pragma: private'); header('Cache-control: private, must-revalidate'); header('Content-Type: ' . $filetype . '; name="' . $filename . '"'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Description: "' . $filename . '"'); header('Content-Length: ' . $filesize); echo $data; exit; } // -------------- form if ($func == 'add' && $this->hasDataPageFunction('add') || $func == 'edit') { $back = rex_content_block('<a href="index.php?' . $link_vars . $em_url . $em_rex_list . '"><b>« ' . $I18N->msg('xform_back_to_overview') . '</b></a>'); $xform = new rex_xform(); $xform->setDebug(self::$debug); foreach ($this->getLinkVars() as $k => $v) { $xform->setHiddenField($k, $v); } if (count($rex_xform_manager_opener) > 0) { foreach ($rex_xform_manager_opener as $k => $v) { $xform->setHiddenField('rex_xform_manager_opener[' . $k . ']', $v); } } if (count($rex_xform_filter) > 0) { foreach ($rex_xform_filter as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { $xform->setHiddenField('rex_xform_filter[' . $k . '][' . $k2 . ']', $v2); } } else { $xform->setHiddenField('rex_xform_filter[' . $k . ']', $v); } } } if (count($rex_xform_set) > 0) { foreach ($rex_xform_set as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { $xform->setHiddenField('rex_xform_set[' . $k . '][' . $k2 . ']', $v2); } } else { $xform->setHiddenField('rex_xform_set[' . $k . ']', $v); } } } foreach ($searchObject->getSearchVars() as $s_var => $values) { foreach ($values as $k => $v) { $xform->setHiddenField($s_var . '[' . $k . ']', $v); } } // for rexlist $xform->setHiddenField('list', rex_request('list', 'string')); $xform->setHiddenField('sort', rex_request('sort', 'string')); $xform->setHiddenField('sorttype', rex_request('sorttype', 'string')); $xform->setHiddenField('start', rex_request('start', 'string')); foreach ($this->table->getFields() as $field) { $classname = rex_xform::includeClass($field->getType(), $field->getTypeName()); $cl = new $classname(); $definitions = $cl->getDefinitions(); $values = array(); $i = 1; foreach ($definitions['values'] as $key => $_) { $key = $this->getFieldName($key, $field->getType()); /*if ($field->getElement($key)) { $values[] = $field->getElement($key); } elseif ($field->getElement('f' . $i)) { $values[] = $field->getElement('f' . $i); } else { $values[] = ''; }*/ $values[] = $field->getElement($key); $i++; } if ($field->getType() == 'value') { if (in_array($values[1], $this->getFilterFields())) { // Feld vorhanden -> ignorieren -> hidden feld machen // TODO: Feld trotzdem noch aufnehmen, damit validierungen etc noch funktionieren } else { $xform->setValueField($field->getTypeName(), $values); } } elseif ($field->getType() == 'validate') { $xform->setValidateField($field->getTypeName(), $values); } elseif ($field->getType() == 'action') { $xform->setActionField($field->getTypeName(), $values); } } if (rex_request('rex_xform_show_formularblock', 'string') != '') { // Optional .. kann auch geloescht werden. Dient nur zu Hilfe beim Aufbau // von XForm-Formularen über php // Textblock gibt den formalarblock als text aus, um diesen in das xform modul einsetzen zu können. // rex_xform_show_formularblock=1 $text_block = ''; foreach ($this->table->getFields() as $field) { $classname = rex_xform::includeClass($field['type_id'], $field['type_name']); $cl = new $classname(); $definitions = $cl->getDefinitions(); $values = array(); $i = 1; foreach ($definitions['values'] as $key => $_) { $key = $this->getFieldName($key, $field->getType()); if (isset($field[$key])) { $values[] = $field[$key]; } elseif (isset($field['f' . $i])) { $values[] = $field['f' . $i]; } else { $values[] = ''; } $i++; } if ($field->getType() == 'value') { $text_block .= "\n" . '$xform->setValueField("' . $field->getTypeName() . '",array("' . implode('","', $values) . '"));'; } else { if ($field->getType() == 'validate') { $text_block .= "\n" . '$xform->setValidateField("' . $field->getTypeName() . '",array("' . implode('","', $values) . '"));'; } else { if ($field->getType() == 'action') { $text_block .= "\n" . '$xform->setActionField("' . $field->getTypeName() . '",array("' . implode('","', $values) . '"));'; } } } // $text_block .= "\n".$field["type_name"].'|'.implode("|",$values); } echo '<pre>' . $text_block . '</pre>'; } $xform->setObjectparams('main_table', $this->table->getTablename()); // für db speicherungen und unique abfragen $xform->setObjectparams('rex_xform_set', $rex_xform_set); $xform_clone = clone $xform; $xform->setHiddenField('func', $func); // damit es neu im clone gesetzt werden kann if ($func == 'edit') { $xform->setHiddenField('data_id', $data_id); $xform->setActionField('db', array($this->table->getTablename(), "id={$data_id}")); $xform->setObjectparams('main_id', $data_id); $xform->setObjectparams('main_where', "id={$data_id}"); $xform->setObjectparams('getdata', true); $xform->setValueField('submits', array("name" => "submit", "labels" => $I18N->msg('xform_save') . "," . $I18N->msg('xform_save_apply'), "values" => "1,2", "no_db" => true, "css_classes" => ",submit_short")); } elseif ($func == 'add') { $xform->setActionField('db', array($this->table->getTablename())); //$xform->setValueField('submits', array("name"=>"submit", "labels" => $I18N->msg('xform_add').",".$I18N->msg('xform_add_apply'), "values"=>"1,2", "no_db" => true, "css_classes" => ",submit_short")); $xform->setValueField('submits', array("name" => "submit", "labels" => $I18N->msg('xform_add') . "," . $I18N->msg('xform_add_apply'), "values" => "1,2", "no_db" => true, "css_classes" => ",submit_short")); } if ($func == 'edit') { $xform = rex_register_extension_point('XFORM_DATA_UPDATE', $xform, array('table' => $this->table, 'data_id' => $data_id, 'data' => $data)); } elseif ($func == 'add') { $xform = rex_register_extension_point('XFORM_DATA_ADD', $xform, array('table' => $this->table)); } $xform->executeFields(); $submit_type = 1; // normal, 2=apply foreach ($xform->objparams["values"] as $f) { if ($f->getName() == "submit") { if ($f->getValue() == 2) { // apply $xform->setObjectparams('form_showformafterupdate', 1); $xform->executeFields(); $submit_type = 2; } } } $form = $xform->executeActions(); if ($xform->objparams['actions_executed']) { if ($func == 'edit') { echo rex_info($I18N->msg('xform_thankyouforupdate')); $xform = rex_register_extension_point('XFORM_DATA_UPDATED', $xform, array('table' => $this->table, 'data_id' => $data_id, 'data' => $data)); } elseif ($func == 'add') { echo rex_info($I18N->msg('xform_thankyouforentry')); $xform = rex_register_extension_point('XFORM_DATA_ADDED', $xform, array('table' => $this->table)); if ($submit_type == 2) { $data_id = $xform->objparams['main_id']; $func = "edit"; $xform = $xform_clone; $xform->setHiddenField('func', $func); $xform->setHiddenField('data_id', $data_id); $xform->setActionField('db', array($this->table->getTablename(), "id={$data_id}")); $xform->setObjectparams('main_id', $data_id); $xform->setObjectparams('main_where', "id={$data_id}"); $xform->setObjectparams('getdata', true); $xform->setValueField('submits', array("name" => "submit", "labels" => $I18N->msg('xform_save') . "," . $I18N->msg('xform_save_apply'), "values" => "1,2", "no_db" => true, "css_classes" => ",submit_short")); $xform->setObjectparams('form_showformafterupdate', 1); $xform->executeFields(); $form = $xform->executeActions(); } } } if ($xform->objparams['form_show'] || $xform->objparams['form_showformafterupdate']) { echo $back; if ($func == 'edit') { echo ' <div class="rex-addon-output"> <h3 class="rex-hl2">' . $I18N->msg('xform_editdata') . '</h3> <div class="rex-addon-content">' . $form . '</div> </div>'; } else { echo ' <div class="rex-addon-output"> <h3 class="rex-hl2">' . $I18N->msg('xform_adddata') . '</h3> <div class="rex-addon-content">' . $form . '</div> </div>'; } echo rex_register_extension_point('XFORM_DATA_FORM', '', array('form' => $form, 'func' => $func, 'this' => $this, 'table' => $this->table)); echo $back; $show_list = false; } } // ********************************************* LIST if ($show_list) { $sql = $this->getDataListQuery($rex_xform_filter, $searchObject); // ---------- LISTE AUSGEBEN /** @type rex_list $list */ $list = rex_list::factory($sql, $this->table->getListAmount()); $list->setColumnFormat('id', 'Id'); foreach ($this->getLinkVars() as $k => $v) { $list->addParam($k, $v); } $list->addParam('table_name', $this->table->getTablename()); if (count($rex_xform_filter) > 0) { foreach ($rex_xform_filter as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { $list->addParam('rex_xform_filter[' . $k . '][' . $k2 . ']', $v2); } } else { $list->addParam('rex_xform_filter[' . $k . ']', $v); } } } if (count($rex_xform_set) > 0) { foreach ($rex_xform_set as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { $list->addParam('rex_xform_set[' . $k . '][' . $k2 . ']', $v2); } } else { $list->addParam('rex_xform_set[' . $k . ']', $v); } } } if (count($rex_xform_manager_opener) > 0) { foreach ($rex_xform_manager_opener as $k => $v) { $list->addParam('rex_xform_manager_opener[' . $k . ']', $v); } } foreach ($searchObject->getSearchVars() as $s_var => $values) { foreach ($values as $k => $v) { $list->addParam($s_var . '[' . $k . ']', $v); } } $list->setColumnParams('id', array('data_id' => '###id###', 'func' => 'edit')); $list->setColumnSortable('id'); $list->setColumnLabel('id', 'ID'); foreach ($this->table->getFields() as $field) { if (!$field->isHiddenInList() && $field->getTypeName()) { if (!class_exists('rex_xform_' . $field->getTypeName())) { rex_xform::includeClass($field->getType(), $field->getTypeName()); } if (method_exists('rex_xform_' . $field->getTypeName(), 'getListValue')) { $list->setColumnFormat($field->getName(), 'custom', array('rex_xform_' . $field->getTypeName(), 'getListValue'), array('field' => $field->toArray(), 'fields' => $this->table->getFields())); } } if ($field->getType() == 'value') { if ($field->isHiddenInList()) { $list->removeColumn($field->getName()); } else { $list->setColumnSortable($field->getName()); $list->setColumnLabel($field->getName(), $field->getLabel()); } } } if (isset($rex_xform_manager_opener['id'])) { $list->addColumn($I18N->msg('xform_data_select'), ''); $list->setColumnFormat($I18N->msg('xform_data_select'), 'custom', function ($params) { global $I18N; $value = ''; list($table_name, $field_name) = explode(".", $params["params"]["opener_field"]); $table = rex_xform_manager_table::get($table_name); if ($table) { $fields = $table->getValueFields(array("name" => $field_name)); if (isset($fields[$field_name])) { $target_table = $fields[$field_name]->getElement('table'); $target_field = $fields[$field_name]->getElement('field'); $values = rex_xform_be_manager_relation::getListValues($target_table, $target_field); $value = $values[$params['list']->getValue('id')]; } } return '<a href="javascript:xform_manager_setData(' . $params["params"]["opener_id"] . ',###id###,\'' . htmlspecialchars($value) . ' [id=###id###]\',' . $params["params"]["opener_multiple"] . ')">' . $I18N->msg('xform_data_select') . '</a>'; }, array("opener_id" => $rex_xform_manager_opener["id"], "opener_field" => $rex_xform_manager_opener["field"], "opener_multiple" => $rex_xform_manager_opener["multiple"])); } else { $list->addColumn($I18N->msg('xform_edit'), $I18N->msg('xform_edit')); $list->setColumnParams($I18N->msg('xform_edit'), array('data_id' => '###id###', 'func' => 'edit', 'start' => rex_request('start', 'string'), 'sort' => rex_request('sort', 'string'), 'sorttype' => rex_request('sorttype', 'string'), 'list' => rex_request('list', 'string'))); if ($this->hasDataPageFunction('delete')) { $list->addColumn($I18N->msg('xform_delete'), $I18N->msg('xform_delete')); $list->setColumnParams($I18N->msg('xform_delete'), array('data_id' => '###id###', 'func' => 'delete', 'start' => rex_request('start', 'string'), 'sort' => rex_request('sort', 'string'), 'sorttype' => rex_request('sorttype', 'string'), 'list' => rex_request('list', 'string'))); $list->addLinkAttribute($I18N->msg('xform_delete'), 'onclick', 'return confirm(\' id=###id### ' . $I18N->msg('xform_delete') . ' ?\')'); } } // ********************************************* $list = rex_register_extension_point('XFORM_DATA_LIST', $list, array('table' => $this->table)); if ($rex_xform_filter) { $filter = array(); $getFilter = function (rex_xform_manager_field $field, $value) { if ('be_manager_relation' == $field->getTypeName()) { $listValues = rex_xform_be_manager_relation::getListValues($field->getElement('table'), $field->getElement('field'), array('id' => $value)); if (isset($listValues[$value])) { $value = $listValues[$value]; } } return '<b>' . rex_translate($field->getLabel()) . ':</b> ' . $value; }; foreach ($rex_xform_filter as $key => $value) { if (is_array($value)) { $relTable = rex_xform_manager_table::get($this->table->getValueField($key)->getElement('table')); foreach ($value as $k => $v) { $filter[] = $getFilter($relTable->getValueField($k), $v); } } else { $filter[] = $getFilter($this->table->getValueField($key), $value); } } echo rex_content_block(implode('<br>', $filter)); } $data_links = array(); if ($this->hasDataPageFunction('add')) { $data_links['add'] = '<a href="index.php?' . $link_vars . '&func=add&' . $em_url . $em_rex_list . '">' . $I18N->msg('xform_add') . '</a>'; } if ($this->table->isSearchable() && $this->hasDataPageFunction('search')) { $data_links['search'] = '<a href="#" id="searchtoggler">' . $I18N->msg('xform_search') . '</a>'; } echo ' <div class="rex-addon-output"> <div class="rex-hl2" style="font-size:12px;font-weight:bold;">'; if (count($data_links) > 0) { echo '<span style="float:left;">' . $I18N->msg('xform_data') . ': ' . implode(" | ", $data_links) . '</span>'; } // INFO LINK echo '<span style="float:right;">'; $dataset_links = array(); if ($this->hasDataPageFunction('truncate_table')) { $dataset_links[] = '<a href="index.php?' . $link_vars . '&func=dataset_delete&' . $em_url . $em_rex_list . '" id="dataset-delete" onclick="return confirm(\'' . $I18N->msg('xform_dataset_delete_confirm') . '\');">' . $I18N->msg('xform_delete') . '</a>'; } if ($this->table->isExportable() == 1 && $this->hasDataPageFunction('export')) { $dataset_links[] = '<a href="index.php?' . $link_vars . '&func=dataset_export&' . $em_url . $em_rex_list . '">' . $I18N->msg('xform_export') . '</a>'; } if (count($dataset_links) > 0) { echo " " . $I18N->msg('xform_dataset') . ': ' . implode(' | ', $dataset_links) . ''; } $table_links = array(); if (!$popup && $this->table->isImportable() && $this->hasDataPageFunction('import')) { $table_links[] = '<a href="index.php?' . htmlspecialchars($link_vars) . '&func=import">' . $I18N->msg('xform_import') . '</a>'; } if ($this->hasDataPageFunction('truncate_table')) { $table_links[] = '<a href="index.php?' . $link_vars . '&func=truncate_table&' . $em_url . $em_rex_list . '" id="truncate-table" onclick="return confirm(\'' . $I18N->msg('xform_truncate_table_confirm') . '\');">' . $I18N->msg('xform_truncate_table') . '</a>'; } if ($REX['USER']->isAdmin()) { $table_links[] = '<a href="index.php?page=xform&subpage=manager&table_id=' . $this->table->getId() . '&func=edit">' . $I18N->msg('xform_edit') . '</a>'; } if (count($table_links) > 0) { echo ' ' . $I18N->msg('xform_table') . ': ' . implode(' | ', $table_links); } $field_links = array(); if ($REX['USER']->isAdmin()) { $field_links[] = '<a href="index.php?page=xform&subpage=manager&tripage=table_field&table_name=' . $this->table->getTableName() . '">' . $I18N->msg('xform_edit') . '</a>'; } if (count($field_links) > 0) { echo ' ' . $I18N->msg('xform_manager_fields') . ': ' . implode(' | ', $field_links); } echo '</span><br style="clear:both;" /></div></div>'; // SEARCHBLOCK $searchVars = $searchObject->getSearchVars(); $display = count($searchVars["rex_xform_searchvars"]) > 0 ? 'block' : 'none'; echo '<div id="searchblock" style="display:' . $display . ';">' . $searchform . '</div>'; echo $list->get(); echo ' <script type="text/javascript">/* <![CDATA[ */ jQuery("#searchtoggler").click(function(){jQuery("#searchblock").slideToggle("fast");}); jQuery("#xform_help_empty_toggler").click(function(){jQuery("#xform_help_empty").slideToggle("fast");}); jQuery("#xform_search_reset").click(function(){window.location.href = "index.php?page=xform&subpage=manager&tripage=data_edit&table_name=' . $this->table->getTableName() . '";}); jQuery("#truncate-table").click(function(){if(confirm("' . $I18N->msg('xform_truncate_table_confirm') . '")){return true;} else {return false;}}); jQuery("#dataset-delete").click(function(){if(confirm("' . $I18N->msg('xform_dataset_delete_confirm') . '")){return true;} else {return false;}}); /* ]]> */</script>'; } } // end: $show_editpage }
if ($xform->objparams['form_show']) { if ($func == 'edit') { echo '<div class="rex-addon-output"><h3 class="rex-hl2">' . $I18N->msg('xform_manager_edit_table') . '</h3><div class="rex-addon-content">'; } else { echo '<div class="rex-addon-output"><h3 class="rex-hl2">' . $I18N->msg('xform_manager_add_table') . '</h3><div class="rex-addon-content">'; } echo $form; echo '</div></div>'; echo rex_content_block('<a href="index.php?page=' . $page . '&subpage=' . $subpage . '"><b>« ' . $I18N->msg('xform_back_to_overview') . '</b></a>'); $show_list = false; } else { if ($func == 'edit') { echo rex_info($I18N->msg('xform_manager_table_updated')); } elseif ($func == 'add') { $table_name = $xform->objparams['value_pool']['sql']['table_name']; $table = rex_xform_manager_table::get($table_name); if ($table) { $t = new rex_xform_manager(); $t->setTable($table); $t->generateAll(); echo rex_info($I18N->msg('xform_manager_table_added')); } } } } } } } if ($func == 'delete' && $REX['USER']->isAdmin()) { $table_name = rex_request('table_name', 'string'); echo rex_xform_manager_table_api::removeTable($table_name);