public static function getAll() { if (self::$loadedAllTables) { return self::$tables; } self::$loadedAllTables = true; $table_array = rex_sql::factory(); $table_array->debugsql = self::$debug; $table_array = $table_array->getArray('select * from ' . self::table() . ' order by prio'); self::$tables = array(); foreach ($table_array as $t) { self::$tables[$t['table_name']] = new self($t); } return self::$tables; }
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); }
<?php /** * XForm * @author jan.kristinus[at]redaxo[dot]org Jan Kristinus * @author <a href="http://www.yakamara.de">www.yakamara.de</a> */ $table = $params['table']; // ist feld google_geocode vorhanden ? $fields = rex_xform_manager_table::getXFormFields($table['table_name'], array('type_id' => 'value', 'type_name' => 'google_geocode')); if (count($fields) > 0) { $func = rex_request('geo_func', 'string'); $field = rex_request('geo_field', 'string'); if ($func == 'get_data') { $data = array(); ob_end_clean(); if (array_key_exists($field, $fields)) { $address_fields = explode(',', $fields[$field]['f3']); $fs = array(); foreach ($address_fields as $f) { $fs[] = '`' . mysql_real_escape_string(trim($f)) . '`'; } $concat = 'CONCAT(' . implode(' , ",", ', $fs) . ') as address'; $pos_fields = explode(',', $fields[$field]['label']); if (count($pos_fields) == 2) { $pos_lng = $pos_fields[0]; $pos_lat = $pos_fields[1]; $gd = rex_sql::factory(); // $gd->debugsql = 1; $gd->setQuery('select id, ' . $concat . ' from ' . $table['table_name'] . ' where ' . $pos_lng . '="" or ' . $pos_lng . ' IS NULL or ' . $pos_lat . '="" or ' . $pos_lat . ' IS NULL LIMIT 200'); // 1000
static function checkMediaInUse($params) { global $REX, $I18N; $warning = $params['subject']; $sql = rex_sql::factory(); $sql->setQuery('SELECT `table_name`, `type_name`, `name` FROM `' . rex_xform_manager_field::table() . '` WHERE `type_id`="value" AND `type_name` IN("be_medialist","be_mediapool","mediafile")'); $rows = $sql->getRows(); if ($rows == 0) { return $warning; } $where = array(); $filename = addslashes($params['filename']); while ($sql->hasNext()) { $table = $sql->getValue('table_name'); switch ($sql->getValue('type_name')) { case 'be_mediapool': case 'mediafile': $where[$table][] = $sql->getValue('name') . '="' . $filename . '"'; break; case 'be_medialist': $where[$table][] = 'FIND_IN_SET("' . $filename . '", ' . $sql->getValue('name') . ')'; break; default: trigger_error('Unexpected fieldtype "' . $sql->getValue('type_name') . '"!', E_USER_ERROR); } $sql->next(); } $tupel = ''; foreach ($where as $table => $cond) { $sql->setQuery('SELECT id FROM ' . $table . ' WHERE ' . implode(' OR ', $cond)); while ($sql->hasNext()) { $sql_tupel = rex_sql::factory(); $sql_tupel->setQuery('SELECT name FROM `' . rex_xform_manager_table::table() . '` WHERE `table_name`="' . $table . '"'); $tupel .= '<li><a href="javascript:openPage(\'index.php?page=xform&subpage=manager&tripage=data_edit&table_name=' . $table . '&data_id=' . $sql->getValue('id') . '&func=edit\')">' . $sql_tupel->getValue('name') . ' [id=' . $sql->getValue('id') . ']</a></li>'; $sql->next(); } } if ($tupel != '') { $warning[] = 'Tabelle<br /><ul>' . $tupel . '</ul>'; } return $warning; }
static function generateTablesAndFields($delete_old = false) { rex_xform_manager_table::reload(); $types = rex_xform::getTypeArray(); foreach (rex_xform_manager_table::getAll() as $table) { $c = rex_sql::factory(); $c->debugsql = self::$debug; $c->setQuery('CREATE TABLE IF NOT EXISTS `' . $table['table_name'] . '` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY )'); // remember fields, create and in case delete $c->setQuery('SHOW COLUMNS FROM `' . $table['table_name'] . '`'); $saved_columns = $c->getArray(); foreach ($table->getFields() as $field) { $type_name = $field['type_name']; $type_id = $field['type_id']; if ($type_id == 'value') { $type_label = $field['name']; $dbtype = $types[$type_id][$type_name]['dbtype']; if ($dbtype != 'none' && $dbtype != '') { if (isset($types[$type_id][$type_name]['hooks']['preCreate'])) { $result = call_user_func($types[$type_id][$type_name]['hooks']['preCreate'], $field); if (false === $result) { continue; } elseif (is_string($result)) { $dbtype = $result; } } $add_column = true; foreach ($saved_columns as $uu => $vv) { if ($vv['Field'] == $type_label) { $add_column = false; unset($saved_columns[$uu]); break; } } if ($add_column) { $null = isset($types[$type_id][$type_name]['null']) && $types[$type_id][$type_name]['null']; $null = $null ? '' : ' NOT NULL'; $c->setQuery('ALTER TABLE `' . $table['table_name'] . '` ADD `' . $type_label . '` ' . $dbtype . $null); } } } } if ($delete_old === true) { foreach ($saved_columns as $uu => $vv) { if ($vv['Field'] != 'id') { $c->setQuery('ALTER TABLE `' . $table['table_name'] . '` DROP `' . $vv['Field'] . '` '); } } } } }
function getFieldPage() { global $REX, $I18N; // TODO: function rex_xform_manager_checkField // ********************************************* FIELD ADD/EDIT/LIST $func = rex_request('func', 'string', 'list'); $page = rex_request('page', 'string', ''); $subpage = rex_request('subpage', 'string', ''); $tripage = rex_request('tripage', 'string', ''); $type_id = rex_request('type_id', 'string'); $type_name = rex_request('type_name', 'string'); $field_id = rex_request('field_id', 'int'); $show_list = true; $link_vars = ''; foreach ($this->getLinkVars() as $k => $v) { $link_vars .= '&' . urlencode($k) . '=' . urlencode($v); } $TYPE = array('value' => $I18N->msg('values'), 'validate' => $I18N->msg('validates'), 'action' => $I18N->msg('action')); // ********************************** TABELLE HOLEN unset($table); $tables = $this->getTables(); if (!isset($table)) { if (count($tables) > 0) { $table = current($tables); } else { echo 'Keine Tabelle gefunden'; exit; } } foreach ($tables as $t) { if ($t['table_name'] == rex_request('table_name')) { $table = $t; break; } } $table_echo = ''; //echo '<table cellpadding="5" class="rex-table" id="xform-alltables">'; //echo '<tr><td>'; foreach ($tables as $t) { if ($t['table_name'] == $table['table_name']) { $table_echo .= '<b>' . rex_translate($t['name']) . ' [' . $t['table_name'] . ']</b> '; } else { $table_echo .= ' <a href="index.php?' . $link_vars . '&table_name=' . $t['table_name'] . '">' . rex_translate($t['name']) . ' [' . $t['table_name'] . ']</a> '; } } //echo '</td></tr>'; //echo ''; if ($table['description'] != '') { //echo "<tr><td>".$table["description"].'</td></tr>'; $table_echo .= '<p>' . $table['description'] . '</p>'; } // if($rex_em_opener_info != "") { echo ' - '.$I18N->msg("openerinfo").': '.$rex_em_opener_info; } //echo '</table><br />'; echo rex_content_block($table_echo); $table['fields'] = $this->getTableFields($table['table_name']); // ********************************************* Missing Fields $mfields = rex_xform_manager_table::getMissingFields($table['table_name']); // ksort($mfields); $type_real_field = rex_request('type_real_field', 'string'); if ($type_real_field != '' && !array_key_exists($type_real_field, $mfields)) { $type_real_field = ''; } if ($type_real_field != '') { ?> <div class="rex-addon-output"><h2 class="rex-hl2">Folgendes Feld wird verwendet: <?php echo $type_real_field; ?> </h2><div class="rex-addon-content"><p class="rex-tx1"><?php $rfields = rex_xform_manager_table::getFields($table['table_name']); foreach ($rfields[$type_real_field] as $k => $v) { echo '<b>' . $k . ':</b> ' . $v . '<br />'; } ?> </p></div></div><?php } // ********************************************* CHOOSE FIELD $types = rex_xform::getTypeArray(); if ($func == 'choosenadd') { // type and choose !! $link = 'index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=add&'; if (!rex_xform_manager_table::hasId($table['table_name'])) { ?> <div class="rex-addon-output" id="xform-choosenadd"><h2 class="rex-hl2"><?php echo $I18N->msg('xform_id_is_missing'); ?> </h2><div class="rex-addon-content"> <p class="rex-tx1"><?php echo $I18N->msg('xform_id_missing_info'); ?> </p> </div></div> <?php } else { ?> <div class="rex-addon-output" id="xform-choosenadd"><h2 class="rex-hl2"><?php echo $I18N->msg('choosenadd'); ?> </h2><div class="rex-addon-content"> <p class="rex-tx1"><?php echo $I18N->msg('choosenadd_description'); ?> </p> </div></div> <?php if ($type_real_field == '' && count($mfields) > 0) { ?> <div class="rex-addon-output"><h2 class="rex-hl2">Es gibt noch Felder in der Tabelle welche nicht zugewiesen sind.</h2><div class="rex-addon-content"> <?php $d = 0; foreach ($mfields as $k => $v) { $d++; $l = 'index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=choosenadd&type_real_field=' . $k . '&type_layout=t'; echo '<a href="' . $l . '">' . $k . '</a>, '; } ?> </div></div> <?php } ?> <div class="rex-addon-output xform-table_field"> <div class="rex-area-col-2"> <div class="rex-area-col-a"> <h3 class="rex-hl2">beliebte <?php echo $TYPE['value']; ?> </h3> <div class="rex-area-content"><p class="rex-tx1"><?php if (isset($types['value'])) { ksort($types['value']); foreach ($types['value'] as $k => $v) { if (isset($v['famous']) && $v['famous']) { echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=value&type_name=' . $k . '&type_real_field=' . $type_real_field . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>'; } } } ?> </p></div></div> <div class="rex-area-col-b"><h3 class="rex-hl2">beliebte <?php echo $TYPE['validate']; ?> </h3><div class="rex-area-content"><p class="rex-tx1"><?php if (isset($types['validate'])) { ksort($types['validate']); foreach ($types['validate'] as $k => $v) { if (isset($v['famous']) && $v['famous']) { echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=validate&type_name=' . $k . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>'; } } } ?> </p></div></div> </div></div> <div class="rex-addon-output xform-table_field"> <div class="rex-area-col-2"> <div class="rex-area-col-a"><h3 class="rex-hl2"><?php echo $TYPE['value']; ?> </h3><div class="rex-area-content"><p class="rex-tx1"><?php if (isset($types['value'])) { ksort($types['value']); foreach ($types['value'] as $k => $v) { if (!isset($v['famous']) || $v['famous'] !== true) { echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=value&type_name=' . $k . '&type_real_field=' . $type_real_field . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>'; } } } ?> </p></div></div> <div class="rex-area-col-b"><h3 class="rex-hl2"><?php echo $TYPE['validate']; ?> </h3><div class="rex-area-content"><p class="rex-tx1"><?php if (isset($types['validate'])) { ksort($types['validate']); foreach ($types['validate'] as $k => $v) { if (!isset($v['famous']) || $v['famous'] !== true) { echo '<p class="rex-button"><a class="rex-button" href="' . $link . 'type_id=validate&type_name=' . $k . '">' . $k . '</a> <span>' . $v['description'] . '</span></p>'; } } } ?> </p></div></div> </div></div> <!-- <div class="rex-addon-output"> <h2 class="rex-hl2"><?php echo $TYPE['action']; ?> </h2> <div class="rex-addon-content"> <p class="rex-tx1"><?php if (isset($types['action'])) { ksort($types['action']); foreach ($types['action'] as $k => $v) { echo '<p class="rex-button">"<a href="' . $link . 'type_id=action&type_name=' . $k . '">' . $k . '</a>" - ' . $v['description'] . '</p>'; } } ?> </p> </div> </div> --> <?php } $table_echo = '<a href="index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '"><b>« ' . $I18N->msg('back_to_overview') . '</b></a>'; echo rex_content_block($table_echo); } // ********************************************* FORMULAR if (($func == 'add' || $func == 'edit') && isset($types[$type_id][$type_name])) { $xform = new rex_xform(); $xform->setDebug(false); foreach ($this->getLinkVars() as $k => $v) { $xform->setHiddenField($k, $v); } $xform->setHiddenField('func', $func); $xform->setHiddenField('table_name', $table['table_name']); $xform->setHiddenField('type_real_field', $type_real_field); $xform->setValueField('hidden', array('table_name', $table['table_name'])); $xform->setValueField('hidden', array('type_name', $type_name, 'REQUEST')); $xform->setValueField('hidden', array('type_id', $type_id, 'REQUEST')); $xform->setValueField('text', array('prio', 'Prioritaet', rex_xform_manager_table::getMaximumPrio($table['table_name']) + 10)); $selectFields = array(); $i = 1; foreach ($types[$type_id][$type_name]['values'] as $k => $v) { $field = $this->getFieldName($k, $type_id); $selectFields['f' . $i] = $field; $i++; switch ($v['type']) { case 'name': if ($func == 'edit') { $xform->setValueField('showvalue', array($field, 'Name')); } else { if (!isset($v['value']) && $type_real_field != '') { $v['value'] = $type_real_field; } elseif (!isset($v['value'])) { $v['value'] = ''; } $xform->setValueField('text', array($field, 'Name', $v['value'])); $xform->setValidateField('notEmpty', array($field, $I18N->msg('validatenamenotempty'))); $xform->setValidateField('preg_match', array($field, "/(([a-zA-Z])+([a-zA-Z0-9\\_])*)/", $I18N->msg('validatenamepregmatch'))); $xform->setValidateField('customfunction', array($field, 'rex_xform_manager_checkField', array('table_name' => $table['table_name']), $I18N->msg('validatenamecheck'))); } break; case 'no_db': // ToDo: Default Wert beachten $xform->setValueField('checkbox', array($field, $I18N->msg('donotsaveindb'), 'no_db', $v['default'])); break; case 'boolean': // checkbox|check_design|Bezeichnung|Value|1/0|[no_db] if (!isset($v['default'])) { $v['default'] = ''; } $xform->setValueField('checkbox', array($field, $v['label'], '', $v['default'])); break; case 'select': // select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|multiple=1 $xform->setValueField('select', array($field, $v['label'], $v['definition'], '', $v['default'], 0)); break; case 'table': // ist fest eingetragen, damit keine Dinge durcheinandergehen if ($func == 'edit') { $xform->setValueField('showvalue', array($field, $v['label'])); } else { $_tables = rex_xform_manager_table::getTables(); $_options = array(); foreach ($_tables as $_table) { $_options[$_table->getTableName()] = str_replace('=', '-', $_table->getName() . ' [' . $_table->getTableName() . ']') . '=' . $_table->getTableName(); $_options[$_table->getTableName()] = str_replace(',', '.', $_options[$_table->getTableName()]); } if (!isset($v['default'])) { $v['default'] = ''; } $xform->setValueField('select', array($field, $v['label'], implode(',', $_options), '', $v['default'], 0)); } break; case 'textarea': $xform->setValueField('textarea', array($field, $v['label'])); break; case 'table.field': // Todo: // Todo: case 'select_name': $_fields = array(); foreach (rex_xform_manager_table::getXFormFieldsByType($table['table_name']) as $_k => $_v) { $_fields[] = $_k; } $xform->setValueField('select', array($field, $v['label'], implode(',', $_fields), '', '', 0)); break; case 'select_names': // Todo: Mehrere Namen aus denanderen Federn ziehen und als multiselectbox anbieten $_fields = array(); foreach (rex_xform_manager_table::getXFormFieldsByType($table['table_name']) as $_k => $_v) { $_fields[] = $_k; } $xform->setValueField('select', array($field, $v['label'], implode(',', $_fields), '', '', 1, 5)); break; default: // nur beim "Bezeichnungsfeld" if ($field == 'label' && $type_real_field != '' && !isset($v['value'])) { $v['value'] = $type_real_field; } elseif (!isset($v['value'])) { $v['value'] = ''; } $xform->setValueField('text', array($field, $v['label'], $v['value'])); } } $xform->setActionField('showtext', array('', '<p>' . $I18N->msg('thankyouforentry') . '</p>')); $xform->setObjectparams('main_table', $REX['TABLE_PREFIX'] . 'xform_field'); // f�r db speicherungen und unique abfragen if ($func == 'edit') { $xform->setObjectparams('submit_btn_label', $I18N->msg('save')); $xform->setHiddenField('field_id', $field_id); $xform->setActionField('manage_db', array($REX['TABLE_PREFIX'] . 'xform_field', "id={$field_id}")); $xform->setObjectparams('main_id', $field_id); $xform->setObjectparams('main_where', "id={$field_id}"); $sql = rex_sql::factory(); $sql->setQuery("SELECT * FROM " . $REX['TABLE_PREFIX'] . "xform_field WHERE id={$field_id}"); foreach ($selectFields as $alias => $field) { if ($alias != $field) { if ((!$sql->hasValue($field) || !$sql->getValue($field)) && $sql->hasValue($alias)) { $sql->setValue($field, $sql->getValue($alias)); } $xform->setValueField('hidden', array($alias, '')); } } $xform->setObjectparams('sql_object', $sql); $xform->setObjectparams('getdata', true); } elseif ($func == 'add') { $xform->setObjectparams('submit_btn_label', $I18N->msg('add')); $xform->setActionField('manage_db', array($REX['TABLE_PREFIX'] . 'xform_field')); } if ($type_id == 'value') { $xform->setValueField('checkbox', array('list_hidden', $I18N->msg('hideinlist'), 1, '1')); $xform->setValueField('checkbox', array('search', $I18N->msg('useassearchfieldalidatenamenotempty'), 1, '1')); } elseif ($type_id == 'validate') { $xform->setValueField('hidden', array('list_hidden', 1)); } $form = $xform->getForm(); if ($xform->objparams['form_show']) { if ($func == 'add') { echo '<div class="rex-addon-output"><h3 class="rex-hl2">' . $I18N->msg('addfield') . ' "' . $type_name . '"</h3><div class="rex-addon-content">'; } else { echo '<div class="rex-addon-output"><h3 class="rex-hl2">' . $I18N->msg('editfield') . ' "' . $type_name . '"</h3><div class="rex-addon-content">'; } echo $form; echo '</div></div>'; $table_echo = '<a href="index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '"><b>« ' . $I18N->msg('back_to_overview') . '</b></a>'; echo rex_content_block($table_echo); $func = ''; } else { if ($func == 'edit') { $this->generateAll(); echo rex_info($I18N->msg('thankyouforupdate')); } elseif ($func == 'add') { $this->generateAll(); echo rex_info($I18N->msg('thankyouforentry')); } $func = 'list'; } } // ********************************************* LOESCHEN if ($func == 'delete') { $sf = new rex_sql(); // $sf->debugsql = 1; $sf->setQuery('select * from ' . $REX['TABLE_PREFIX'] . 'xform_field where table_name="' . $table['table_name'] . '" and id=' . $field_id); $sfa = $sf->getArray(); if (count($sfa) == 1) { $query = 'delete from ' . $REX['TABLE_PREFIX'] . 'xform_field where table_name="' . $table['table_name'] . '" and id=' . $field_id; $delsql = new rex_sql(); // $delsql->debugsql=1; $delsql->setQuery($query); echo rex_info($I18N->msg('tablefielddeleted')); $this->generateAll(); } else { echo rex_warning($I18N->msg('tablefieldnotfound')); } $func = 'list'; } // ********************************************* CREATE/UPDATE FIELDS if ($func == 'updatetable') { $this->generateAll(); echo rex_info($I18N->msg('tablesupdated')); $func = 'list'; } if ($func == 'updatetablewithdelete') { $this->generateAll(array('delete_fields' => true)); echo rex_info($I18N->msg('tablesupdated')); $func = 'list'; } // ********************************************* LIST if ($func == 'list') { // ****** EP XFORM_MANAGER_TABLE_FIELD_FUNC $show_list = true; $show_list = rex_register_extension_point('XFORM_MANAGER_TABLE_FIELD_FUNC', $show_list, array('table' => $t, 'link_vars' => $this->getLinkVars())); if ($show_list) { function rex_xform_list_format($p, $value = '') { if ($value != '') { $p['value'] = $value; } switch ($p['list']->getValue('type_id')) { case 'validate': $style = 'color:#aaa;'; // background-color:#cfd9d9; break; case 'action': $style = 'background-color:#cfd9d9;'; break; default: $style = 'background-color:#eff9f9;'; break; } return '<td style="' . $style . '">' . $p['value'] . '</td>'; } function rex_xform_list_edit_format($p) { global $REX, $I18N; return rex_xform_list_format($p, $p['list']->getColumnLink($I18N->msg('edit'), $I18N->msg('edit'))); } function rex_xform_list_delete_format($p) { global $REX, $I18N; return rex_xform_list_format($p, $p['list']->getColumnLink($I18N->msg('delete'), $I18N->msg('delete'))); } $table_echo = ' <div class="rex-area-col-2"> <div class="rex-area-col-a"> <a href="index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=choosenadd"><b>+ ' . $I18N->msg('addtablefield') . '</b></a> </div> <div class="rex-area-col-b rex-algn-rght"> <a href="index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=updatetable"><b>o ' . $I18N->msg('updatetable') . '</b></a> <a href="index.php?' . $link_vars . '&table_name=' . $table['table_name'] . '&func=updatetablewithdelete" onclick="return confirm(\'' . $I18N->msg('updatetable_with_delete_confirm') . '\')"><b>o ' . $I18N->msg('updatetable_with_delete') . '</b></a> </div> </div> <div class="rex-clearer"></div> '; echo rex_content_block($table_echo); $sql = 'select id, prio, type_id, type_name, name from ' . $REX['TABLE_PREFIX'] . 'xform_field where table_name="' . $table['table_name'] . '" order by prio'; $list = rex_list::factory($sql, 30); // $list->debug = 1; $list->setColumnFormat('id', 'Id'); foreach ($this->getLinkVars() as $k => $v) { $list->addParam($k, $v); } $list->addParam('table_name', $table['table_name']); $list->removeColumn('id'); $list->setColumnLayout('prio', array('<th>###VALUE###</th>', '###VALUE###')); $list->setColumnFormat('prio', 'custom', 'rex_xform_list_format'); $list->setColumnLayout('type_id', array('<th>###VALUE###</th>', '###VALUE###')); $list->setColumnFormat('type_id', 'custom', 'rex_xform_list_format'); $list->setColumnLayout('type_name', array('<th>###VALUE###</th>', '###VALUE###')); $list->setColumnFormat('type_name', 'custom', 'rex_xform_list_format'); $list->setColumnLayout('name', array('<th>###VALUE###</th>', '###VALUE###')); // ###VALUE### $list->setColumnFormat('name', 'custom', 'rex_xform_list_format'); $list->addColumn($I18N->msg('edit'), $I18N->msg('edit')); $list->setColumnParams($I18N->msg('edit'), array('field_id' => '###id###', 'func' => 'edit', 'type_name' => '###type_name###', 'type_id' => '###type_id###')); $list->setColumnLayout($I18N->msg('edit'), array('<th>###VALUE###</th>', '###VALUE###')); $list->setColumnFormat($I18N->msg('edit'), 'custom', 'rex_xform_list_edit_format'); $list->addColumn($I18N->msg('delete'), $I18N->msg('delete')); $list->setColumnParams($I18N->msg('delete'), array('field_id' => '###id###', 'func' => 'delete')); $list->setColumnLayout($I18N->msg('delete'), array('<th>###VALUE###</th>', '###VALUE###')); $list->setColumnFormat($I18N->msg('delete'), 'custom', 'rex_xform_list_delete_format'); $list->addLinkAttribute($I18N->msg('delete'), 'onclick', 'return confirm(\' [###type_id###, ###type_name###, ###name###] ' . $I18N->msg('delete') . ' ?\')'); echo $list->get(); } } }
} if (!isset($v['default'])) { $v['default'] = ""; } $xform->setValueField("select", array("f" . $i, $v['label'], implode(",", $_options), "", $v['default'], 0)); } break; case "textarea": $xform->setValueField("textarea", array("f" . $i, $v['label'])); break; case "table.field": // Todo: // Todo: case "select_name": $_fields = array(); foreach (rex_xform_manager_table::getXFormFieldsByType($table["table_name"]) as $_k => $_v) { $_fields[] = $_k; } $xform->setValueField("select", array("f" . $i, $v['label'], implode(",", $_fields), "", "", 0)); break; case "select_names": // Todo: Mehrere Namen aus denanderen Federn ziehen und als multiselectbox anbieten // Todo: Mehrere Namen aus denanderen Federn ziehen und als multiselectbox anbieten default: // nur beim "Bezeichnungsfeld" if ($i == 2 && $type_real_field != "" && !isset($v["value"])) { $v["value"] = $type_real_field; } elseif (!isset($v["value"])) { $v["value"] = ""; } $xform->setValueField("text", array("f" . $i, $v['label'], $v["value"]));
<?php $table = $params["table"]; // echo '<pre>';var_dump($params); echo '</pre>'; // ist feld google_geocode vorhanden ? $fields = rex_xform_manager_table::getXFormFields($table["table_name"], array("type_id" => "value", "type_name" => "google_geocode")); if (count($fields) > 0) { $func = rex_request("geo_func", "string"); $field = rex_request("geo_field", "string"); if ($func == "get_data") { $data = array(); ob_end_clean(); if (array_key_exists($field, $fields)) { $address_fields = explode(",", $fields[$field]["f3"]); $fs = array(); foreach ($address_fields as $f) { $fs[] = '`' . mysql_real_escape_string(trim($f)) . '`'; } $concat = 'CONCAT(' . implode(' , ",", ', $fs) . ') as address'; $pos_fields = explode(",", $fields[$field]["f2"]); if (count($pos_fields) == 2) { $pos_lng = $pos_fields[0]; $pos_lat = $pos_fields[1]; $gd = rex_sql::factory(); // $gd->debugsql = 1; $gd->setQuery('select id, ' . $concat . ' from ' . $table["table_name"] . ' where ' . $pos_lng . '="" or ' . $pos_lng . ' IS NULL or ' . $pos_lat . '="" or ' . $pos_lat . ' IS NULL LIMIT 200'); // 1000 $data = $gd->getArray(); } } echo json_encode($data);
function getMissingFields($table_name) { $xfields = rex_xform_manager_table::getXFormFields($table_name); $rfields = rex_xform_manager_table::getFields($table_name); $c = array(); foreach ($rfields as $k => $v) { if (!array_key_exists($k, $xfields)) { $c[$k] = $k; } } return $c; }
$list->setColumnLabel('name', $I18N->msg('xform_manager_name')); $list->setColumnFormat('name', 'custom', 'rex_xform_list_translate'); $list->setColumnLabel('table_name', $I18N->msg('xform_manager_table_name')); $list->setColumnParams('table_name', array('table_id' => '###id###', 'func' => 'edit')); $list->setColumnLabel('status', $I18N->msg('xform_manager_table_status')); $list->setColumnFormat('status', 'custom', 'rex_xform_status_col'); $list->setColumnLabel('hidden', $I18N->msg('xform_manager_table_hidden')); $list->setColumnFormat('hidden', 'custom', 'rex_xform_hidden_col'); $list->addColumn($I18N->msg('xform_edit'), $I18N->msg('xform_edit')); $list->setColumnParams($I18N->msg('xform_edit'), array('table_id' => '###id###', 'func' => 'edit')); $list->addColumn($I18N->msg('xform_delete'), $I18N->msg('xform_delete')); $list->setColumnParams($I18N->msg('xform_delete'), array('table_name' => '###table_name###', 'func' => 'delete')); $list->addLinkAttribute($I18N->msg('xform_delete'), 'onclick', 'return confirm(\' [###table_name###] ' . $I18N->msg('xform_delete') . ' ?\')'); $list->addColumn($I18N->msg('xform_editfields'), $I18N->msg('xform_editfields')); $list->setColumnParams($I18N->msg('xform_editfields'), array('subpage' => 'manager', 'tripage' => 'table_field', 'table_name' => '###table_name###')); echo $list->get(); } // ********************************************* LISTE OF TABLES TO EDIT FOR NOt ADMINS if (!$REX['USER']->isAdmin()) { echo '<div class="rex-addon-output">'; echo '<h2 class="rex-hl2">' . $I18N->msg('xform_table_overview') . '</h2>'; echo '<div class="rex-addon-content"><ul>'; $tables = rex_xform_manager_table::getAll(); foreach ($tables as $table) { if ($table->isActive() && !$table->isHidden() && ($REX['USER']->isAdmin() || $REX['USER']->hasPerm($table->getPermKey()))) { echo '<li><a href="index.php?page=xform&subpage=manager&tripage=data_edit&table_name=' . $table->getTableName() . '">' . rex_translate($table->getName()) . '</a></li>'; } } echo '</ul></div>'; echo '</div>'; }
<?php /** * XForm * @author jan.kristinus[at]redaxo[dot]org Jan Kristinus * @author <a href="http://www.yakamara.de">www.yakamara.de</a> */ $table_name = rex_request('table_name', 'string'); $table = rex_xform_manager_table::get($table_name); if ($table) { try { $page = new rex_xform_manager(); $page->setTable($table); $page->setLinkVars(array('page' => 'xform', 'subpage' => 'manager', 'tripage' => 'table_field')); echo $page->getFieldPage(); } catch (Exception $e) { echo rex_warning($I18N->msg('xform_table_not_found')); } }
$sql = 'ALTER TABLE `' . $table['table_name'] . '` ADD `' . mysql_real_escape_string($mcc) . '` TEXT NOT NULL;'; $upd = rex_sql::factory(); $upd->setQuery($sql); if ($upd->getError()) { $error = TRUE; echo rex_warning('Feld "' . $mcc . '" konnte nicht angelegt werden: ' . $upd->getError()); } else { echo rex_info('Feld "' . $mcc . '" wurde angelegt'); } } if ($error) { echo rex_warning('Import wurde abgebrochen, da Fehler aufgetaucht sind.'); $show_importform = TRUE; break; } $rfields = rex_xform_manager_table::getFields($table['table_name']); } } } else { if (!$line_array) { break; } else { $counter++; $i->setTable($table['table_name']); $replacevalue = ""; foreach ($line_array as $k => $v) { if ($fieldarray[$k] != "" && array_key_exists($fieldarray[$k], $rfields)) { $i->setValue($fieldarray[$k], mysql_real_escape_string($v)); if ($replacefield == $fieldarray[$k]) { $replacevalue = $v; }
<div class="rex-addon-content"> <p>' . $I18N->msg('xform_setup_install_modul_description') . '</p> <ul> <li><a href="index.php?page=xform&subpage=setup&install=1">' . $I18N->msg('xform_setup_install_xform_modul') . '</a></li>'; if ($module_id > 0) { echo '<li><a href="index.php?page=xform&subpage=setup&install=1&module_id=' . $module_id . '">' . $I18N->msg('xform_setup_update_following_modul', htmlspecialchars($module_name)) . '</a></li>'; } echo ' </ul> </div> </div>'; // ------------------------------- Noch alte Tabellen vorhanden if (OOPlugIn::isAvailable('xform', 'manager')) { $func = rex_request("func", "string"); $table_name = rex_request("table_name", "string"); $current_tables = rex_xform_manager_table::getTablesAsArray(); $gt = rex_sql::factory(); $gt->setQuery('show tables;'); $ts = array(); foreach ($gt->getArray() as $t) { $ts[] = current($t); } $ots = array(); if (in_array('rex_em_table', $ts)) { $gt = rex_sql::factory(); $gt->setQuery('select * from rex_em_table'); $gts = $gt->getArray(); if (count($gts) > 0) { foreach ($gts as $gt) { if (!in_array($gt['table_name'], $current_tables)) { if ($func == 'copyoldtables' && $gt['table_name'] == $table_name) {