Example #1
0
 public static function getAll()
 {
     if (self::$loadedAllTables) {
         return self::$tables;
     }
     self::$loadedAllTables = true;
     $table_array = rex_sql::factory();
     if (self::$debug) {
         $table_array->setDebug();
     }
     $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;
 }
Example #2
0
 static function checkMediaInUse($params)
 {
     $warning = $params['subject'];
     $sql = rex_sql::factory();
     $sql->setQuery('SELECT `table_name`, `type_name`, `name` FROM `' . rex_yform_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_yform_manager_table::table() . '` WHERE `table_name`="' . $table . '"');
             $tupel .= '<li><a href="javascript:openPage(\'index.php?page=yform/manager/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;
 }
Example #3
0
    $list->setColumnLayout(rex_i18n::msg('yform_edit'), ['<th class="rex-table-action" colspan="3">###VALUE###</th>', '<td class="rex-table-action">###VALUE###</td>']);
    $list->setColumnParams(rex_i18n::msg('yform_edit'), array('table_id' => '###id###', 'func' => 'edit'));
    $list->addColumn(rex_i18n::msg('yform_delete'), '<i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('yform_delete'));
    $list->setColumnLayout(rex_i18n::msg('yform_delete'), ['', '<td class="rex-table-action">###VALUE###</td>']);
    $list->setColumnParams(rex_i18n::msg('yform_delete'), array('table_name' => '###table_name###', 'func' => 'delete'));
    $list->addLinkAttribute(rex_i18n::msg('yform_delete'), 'onclick', 'return confirm(\' [###table_name###] ' . rex_i18n::msg('yform_delete') . ' ?\')');
    $list->addColumn(rex_i18n::msg('yform_editfields'), rex_i18n::msg('yform_editfields'));
    $list->setColumnLayout(rex_i18n::msg('yform_editfields'), ['', '<td class="rex-table-action">###VALUE###</td>']);
    $list->setColumnParams(rex_i18n::msg('yform_editfields'), array('page' => 'yform/manager/table_field', 'table_name' => '###table_name###'));
    $content = $list->get();
    $fragment = new rex_fragment();
    $fragment->setVar('title', rex_i18n::msg('yform_table_overview'));
    $fragment->setVar('options', $panel_options, false);
    $fragment->setVar('content', $content, false);
    $content = $fragment->parse('core/page/section.php');
    echo $content;
}
// ********************************************* LISTE OF TABLES TO EDIT FOR NOt ADMINS
if (!rex::getUser()->isAdmin()) {
    echo '<div class="rex-addon-output">';
    echo '<h2 class="rex-hl2">' . rex_i18n::msg('yform_table_overview') . '</h2>';
    echo '<div class="rex-addon-content"><ul>';
    $tables = rex_yform_manager_table::getAll();
    foreach ($tables as $table) {
        if ($table->isActive() && !$table->isHidden() && (rex::getUser()->isAdmin() || rex::getUser()->hasPerm($table->getPermKey()))) {
            echo '<li><a href="index.php?page=yform/manager/data_edit&table_name=' . $table->getTableName() . '">' . rex_i18n::translate($table->getName()) . '</a></li>';
        }
    }
    echo '</ul></div>';
    echo '</div>';
}
Example #4
0
<?php

/**
 * yform
 * @author jan.kristinus[at]redaxo[dot]org Jan Kristinus
 * @author <a href="http://www.yakamara.de">www.yakamara.de</a>
 */
// echo rex_view::title(rex_i18n::msg('yform'));
$table_name = rex_request('table_name', 'string');
$table = rex_yform_manager_table::get($table_name);
if ($table && rex::getUser() && (rex::getUser()->isAdmin() || rex::getUser()->hasPerm('yform[table:' . $table_name . ']'))) {
    try {
        $page = new rex_yform_manager();
        $page->setTable($table);
        $page->setLinkVars(array('page' => 'yform/manager/data_edit', 'table_name' => $table->getTableName()));
        echo $page->getDataPage();
    } catch (Exception $e) {
        $message = nl2br($e->getMessage() . "\n" . $e->getTraceAsString());
        echo rex_view::warning($message);
    }
} else {
    if (!$table) {
        echo rex_view::warning(rex_i18n::msg('yform_table_not_found'));
    }
}
 protected function getRelationTableFields()
 {
     $table = rex_yform_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);
 }
Example #6
0
 static function generateTablesAndFields($delete_old = false)
 {
     rex_yform_manager_table::reload();
     $types = rex_yform::getTypeArray();
     foreach (rex_yform_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'] . '` ');
                 }
             }
         }
     }
 }
<?php

/**
 * yform
 * @author jan.kristinus[at]redaxo[dot]org Jan Kristinus
 * @author <a href="http://www.yakamara.de">www.yakamara.de</a>
 */
echo rex_view::title(rex_i18n::msg('yform'));
$page = rex_request('page', 'string', '');
$yform_tables = array();
foreach (rex_yform_manager_table::getAll() as $g_table) {
    $table_name = $g_table->getTableName();
    if ('[translate:' . $table_name . ']' != rex_i18n::msg($table_name)) {
        $table_name = rex_i18n::msg($table_name);
    }
    $yform_tables[$g_table->getTableName()] = $table_name . ' [' . $g_table->getTableName() . ']';
}
$yform = new rex_yform();
$yform->setHiddenField('page', $page);
$yform->setObjectparams('real_field_names', true);
$yform->setObjectparams('hide_top_warning_messages', true);
$yform->setValueField('select', array('table_names', rex_i18n::msg('yform_manager_tables'), $yform_tables, 'multiple' => 1));
$yform->setValidateField('empty', array('table_names', ''));
$form = $yform->getForm();
if ($yform->objparams['actions_executed']) {
    try {
        $table_names = rex_request("table_names");
        $return = rex_yform_manager_table_api::exportTablesets($table_names);
        $file_name = 'yform_manager_tableset_export_tables_' . date("YmdHis") . '.json';
        ob_end_clean();
        header('Content-Type: application/json');