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);
 }
Пример #3
0
<?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&amp;subpage=manager&amp;tripage=data_edit&amp;table_name=' . $table . '&amp;data_id=' . $sql->getValue('id') . '&amp;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 . '&amp;table_name=' . $table['table_name'] . '"><b>&laquo; ' . $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 . '&amp;table_name=' . $table['table_name'] . '"><b>&laquo; ' . $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();
            }
        }
    }
Пример #7
0
         }
         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"]));
Пример #8
0
<?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;
 }
Пример #10
0
    $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>';
}
Пример #11
0
<?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'));
    }
}
Пример #12
0
                 $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;
                 }
Пример #13
0
	<div class="rex-addon-content">
	<p>' . $I18N->msg('xform_setup_install_modul_description') . '</p>
	<ul>
		<li><a href="index.php?page=xform&amp;subpage=setup&amp;install=1">' . $I18N->msg('xform_setup_install_xform_modul') . '</a></li>';
if ($module_id > 0) {
    echo '<li><a href="index.php?page=xform&amp;subpage=setup&amp;install=1&amp;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) {