public static function getEntriesByTimeline() { //Start - get all timelines from the database $sql = rex_sql::factory(); $timelines = $sql->getArray('SELECT `user_id` FROM `' . rex::getTablePrefix() . 'socialhub_facebook_timeline`'); unset($sql); if (empty($timelines)) { return false; } //End - get all timelines from the database //Start - get all accounts from the database $sql = rex_sql::factory(); $accounts = $sql->getArray('SELECT * FROM `' . rex::getTablePrefix() . 'socialhub_facebook_account` ORDER BY `id` ASC'); unset($sql); if (empty($accounts)) { return false; } //End - get all accounts from the database //Start - get entries by timeline from twitter foreach ($timelines as $timeline) { $fb = new Facebook\Facebook(['app_id' => $accounts[0]['app_id'], 'app_secret' => $accounts[0]['app_secret'], 'default_graph_version' => 'v2.5', 'default_access_token' => $accounts[0]['app_id'] . '|' . $accounts[0]['app_secret']]); try { $response = $fb->get('/' . $timeline['user_id'] . '/posts'); } catch (Facebook\Exceptions\FacebookResponseException $e) { echo rex_view::error('Graph returned an error: ' . $e->getMessage()); } catch (Facebook\Exceptions\FacebookSDKException $e) { echo rex_view::error('Facebook SDK returned an error: ' . $e->getMessage()); } if (empty($response)) { return; } $response = json_decode($response->getBody(), true); foreach ($response['data'] as $post) { list($userID, $postID) = explode('_', $post['id']); $newPost = rex_sql::factory(); $newPost->setTable(rex::getTablePrefix() . 'socialhub_entry_timeline'); $newPost->setWhere(['post_id' => $postID]); $newPost->select(); if ($newPost->getRows() === 0) { $newPost->reset(); $newPost->setTable(rex::getTablePrefix() . 'socialhub_entry_timeline'); $newPost->setValue('source', 'facebook'); $newPost->setValue('post_id', $postID); $newPost->setValue('message', $post['message']); $newPost->setValue('author_id', $userID); $newPost->setValue('created_time', date('Y-m-d H:i:s', strtotime($post['created_time']))); $newPost->setValue('query', '/' . $timeline['user_id'] . '/posts'); try { $newPost->insert(); } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); } } } } //End - get entries by timeline from twitter }
public static function getEntriesByHashtag() { //Start - get all hashtags from the database $sql = rex_sql::factory(); $hashtags = $sql->getArray('SELECT `hashtag`, `twitter_next_id` FROM `' . rex::getTablePrefix() . 'socialhub_twitter_hashtag`'); unset($sql); if (empty($hashtags)) { return false; } //End - get all hashtags from the database //Start - get all accounts from the database $sql = rex_sql::factory(); $accounts = $sql->getArray('SELECT * FROM `' . rex::getTablePrefix() . 'socialhub_twitter_account` ORDER BY `id` ASC'); unset($sql); if (empty($accounts)) { return false; } //End - get all accounts from the database //Start - get entries by hashtag from twitter foreach ($hashtags as $hashtag) { $connection = new Abraham\TwitterOAuth\TwitterOAuth($accounts[0]['consumer_token'], $accounts[0]['consumer_secret_token'], $accounts[0]['access_token'], $accounts[0]['secret_token']); if ($hashtag['twitter_next_id'] != 0) { $response = $connection->get("search/tweets", ['q' => '#' . $hashtag['hashtag'], 'since_id' => $hashtag['twitter_next_id']]); } else { $response = $connection->get("search/tweets", ['q' => '#' . $hashtag['hashtag']]); } foreach ($response->statuses as $data) { $lastId = $data->id; if (empty($data->retweeted_status)) { $sql = rex_sql::factory(); $sql->setTable(rex::getTablePrefix() . 'socialhub_entry_hashtag'); $sql->setValue('source', 'twitter'); $sql->setValue('source_id', $data->id); $sql->setValue('caption', urlencode($data->text ? addslashes($data->text) : '')); if (!empty($data->entities->media)) { $sql->setValue('image', $data->entities->media[0]->media_url); } $sql->setValue('created_time', date('Y-m-d H:i:s', strtotime($data->created_at))); $sql->setValue('author_id', $data->user->id); $sql->setValue('author_name', $data->user->screen_name); $sql->setValue('query', $hashtag['hashtag']); try { $sql->insert(); } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); } unset($sql); } } //Start - update next_id $sql = rex_sql::factory(); $sql->setTable(rex::getTablePrefix() . 'socialhub_twitter_hashtag'); $sql->setWhere('hashtag = "' . addslashes($hashtag['hashtag']) . '"'); $sql->setValue('twitter_next_id', $lastId); try { $sql->update(); } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); } unset($sql); //End - update next_id } //End - get entries by hashtag from twitter }
public static function getEntriesByHashtag() { //Start - get all hashtags from the database $sql = rex_sql::factory(); $hashtags = $sql->getArray('SELECT `hashtag`, `instagram_next_id` FROM `' . rex::getTablePrefix() . 'socialhub_instagram_hashtag`'); unset($sql); if (empty($hashtags)) { return false; } //End - get all hashtags from the database //Start - get all accounts from the database $sql = rex_sql::factory(); $accounts = $sql->getArray('SELECT * FROM `' . rex::getTablePrefix() . 'socialhub_instagram_account` ORDER BY `id` ASC'); unset($sql); if (empty($accounts)) { return false; } //End - get all accounts from the database //Start - get entries by hashtag from instagram foreach ($hashtags as $hashtag) { if ($hashtag['instagram_next_id'] != 0) { $url = 'https://api.instagram.com/v1/tags/' . $hashtag['hashtag'] . '/media/recent?count=100&client_id=' . $accounts[0]['client_id'] . '&min_tag_id=' . $hashtag['instagram_next_id']; } else { $url = 'https://api.instagram.com/v1/tags/' . $hashtag['hashtag'] . '/media/recent?count=100&client_id=' . $accounts[0]['client_id']; } $response = self::curlURL($url); $response = json_decode($response); foreach ($response->data as $data) { $sql = rex_sql::factory(); $sql->setTable(rex::getTablePrefix() . 'socialhub_entry_hashtag'); $sql->setValue('source', 'instagram'); $sql->setValue('source_id', $data->id); $sql->setValue('caption', urlencode($data->caption->text)); if (!empty($data->images->standard_resolution->url)) { $sql->setValue('image', $data->images->standard_resolution->url); } $sql->setValue('created_time', date('Y-m-d H:i:s', $data->created_time)); $sql->setValue('author_id', $data->user->id); $sql->setValue('author_name', $data->user->username); $sql->setValue('query', $hashtag['hashtag']); try { $sql->insert(); } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); } unset($sql); } //Start - update next_id $sql = rex_sql::factory(); $sql->setTable(rex::getTablePrefix() . 'socialhub_instagram_hashtag'); $sql->setWhere('hashtag = "' . addslashes($hashtag['hashtag']) . '"'); $sql->setValue('instagram_next_id', $response->pagination->min_tag_id); try { $sql->update(); } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); } unset($sql); //End - update next_id } //End - get entries by hashtag from instagram }
// $sql->setDebug(); $sql->setTable(rex::getTablePrefix() . 'media_manager_type_effect'); $sql->setWhere(['id' => $effect_id]); try { $sql->delete(); $info = rex_i18n::msg('media_manager_effect_deleted'); } catch (rex_sql_exception $e) { $warning = $sql->getError(); } $func = ''; } if ($info != '') { echo rex_view::info($info); } if ($warning != '') { echo rex_view::warning($warning); } if ($func == '' && $type_id > 0) { echo rex_view::info(rex_i18n::msg('media_manager_effect_list_header', htmlspecialchars($typeName))); $query = 'SELECT * FROM ' . rex::getTablePrefix() . 'media_manager_type_effect WHERE type_id=' . $type_id . ' ORDER BY priority'; $list = rex_list::factory($query); $list->addTableAttribute('class', 'table-striped'); $list->addParam('effects', 1); $list->setNoRowsMessage(rex_i18n::msg('media_manager_effect_no_effects')); $list->removeColumn('id'); $list->removeColumn('type_id'); $list->removeColumn('parameters'); $list->removeColumn('updatedate'); $list->removeColumn('updateuser'); $list->removeColumn('createdate'); $list->removeColumn('createuser');
/** * Erstellt den Tabellen Quellcode. * * @return string */ public function get() { $s = "\n"; // Form vars $this->addFormAttribute('action', $this->getUrl()); $this->addFormAttribute('method', 'post'); // Table vars $caption = $this->getCaption(); $tableColumnGroups = $this->getTableColumnGroups(); $class = 'table'; if (isset($this->tableAttributes['class'])) { $class .= ' ' . $this->tableAttributes['class']; } $this->addTableAttribute('class', $class); // Columns vars $columnFormates = []; $columnNames = []; foreach ($this->getColumnNames() as $columnName) { if (!in_array($columnName, $this->columnDisabled)) { $columnNames[] = $columnName; } } // List vars $sortColumn = $this->getSortColumn(); $sortType = $this->getSortType(); $warning = $this->getWarning(); $message = $this->getMessage(); $nbRows = $this->getRows(); $header = $this->getHeader(); $footer = $this->getFooter(); if ($warning != '') { $s .= rex_view::warning($warning) . "\n"; } elseif ($message != '') { $s .= rex_view::info($message) . "\n"; } if ($header != '') { $s .= $header . "\n"; } $s .= '<form' . $this->_getAttributeString($this->getFormAttributes()) . '>' . "\n"; $s .= ' <table' . $this->_getAttributeString($this->getTableAttributes()) . '>' . "\n"; if ($caption != '') { $s .= ' <caption>' . htmlspecialchars($caption) . '</caption>' . "\n"; } if (count($tableColumnGroups) > 0) { foreach ($tableColumnGroups as $tableColumnGroup) { $tableColumns = $tableColumnGroup['columns']; unset($tableColumnGroup['columns']); $s .= ' <colgroup' . $this->_getAttributeString($tableColumnGroup) . '>' . "\n"; foreach ($tableColumns as $tableColumn) { $s .= ' <col' . $this->_getAttributeString($tableColumn) . ' />' . "\n"; } $s .= ' </colgroup>' . "\n"; } } $s .= ' <thead>' . "\n"; $s .= ' <tr>' . "\n"; foreach ($columnNames as $columnName) { $columnHead = $this->getColumnLabel($columnName); if ($this->hasColumnOption($columnName, REX_LIST_OPT_SORT)) { if ($columnName == $sortColumn) { $columnSortType = $sortType == 'desc' ? 'asc' : 'desc'; } else { $columnSortType = $this->getColumnOption($columnName, REX_LIST_OPT_SORT_DIRECTION, 'asc'); } $columnHead = '<a href="' . $this->getUrl(['start' => $this->pager->getCursor(), 'sort' => $columnName, 'sorttype' => $columnSortType]) . '">' . $columnHead . '</a>'; } $layout = $this->getColumnLayout($columnName); $s .= ' ' . str_replace('###VALUE###', $columnHead, $layout[0]) . "\n"; // Formatierungen hier holen, da diese Schleife jede Spalte nur einmal durchläuft $columnFormates[$columnName] = $this->getColumnFormat($columnName); } $s .= ' </tr>' . "\n"; $s .= ' </thead>' . "\n"; if ($footer != '') { $s .= ' <tfoot>' . "\n"; $s .= $footer; $s .= ' </tfoot>' . "\n"; } if ($nbRows > 0) { $maxRows = $nbRows - $this->pager->getCursor(); $s .= ' <tbody>' . "\n"; for ($i = 0; $i < $this->pager->getRowsPerPage() && $i < $maxRows; ++$i) { $s .= ' <tr>' . "\n"; foreach ($columnNames as $columnName) { $columnValue = $this->formatValue($this->getValue($columnName), $columnFormates[$columnName], !isset($this->customColumns[$columnName]), $columnName); if (!$this->isCustomFormat($columnFormates[$columnName]) && $this->hasColumnParams($columnName)) { $columnValue = $this->getColumnLink($columnName, $columnValue); } $layout = $this->getColumnLayout($columnName); $columnValue = str_replace('###VALUE###', $columnValue, $layout[1]); $columnValue = $this->replaceVariables($columnValue); $s .= ' ' . $columnValue . "\n"; } $s .= ' </tr>' . "\n"; $this->sql->next(); } $s .= ' </tbody>' . "\n"; } else { $s .= '<tr class="table-no-results"><td colspan="' . count($columnNames) . '">' . $this->getNoRowsMessage() . '</td></tr>'; } $s .= ' </table>' . "\n"; $s .= '</form>' . "\n"; return $s; }
public static function addSlice() { $article_id = rex_request('article_id', 'int'); $function = rex_request('page', 'string'); $cut_slice_id = $slice_id = $_SESSION['slice_ui']['slice_id']; $module_id = $_SESSION['slice_ui']['module_id']; $clang = rex_get('clang'); $ctype = rex_get('ctype'); $category_id = rex_get('category_id'); if (!self::checkPermissions(array('article_id' => $article_id, 'clang' => $clang, 'ctype' => $ctype, 'module_id' => $module_id))) { // Alle OBs schließen while (@ob_end_clean()) { } header("Location: " . rex_url::backendController() . '?article_id=' . $article_id . '&clang=' . $clang . '&page=content/edit&ctype=' . $ctype); exit; } $slice_revision = 0; $template_attributes = []; $newsql = rex_sql::factory(); // $newsql->setDebug(); $sliceTable = rex::getTablePrefix() . 'article_slice'; $newsql->setTable($sliceTable); if (strpos($function, 'content/paste') !== false && !empty($_SESSION['slice_ui'])) { $priority = '0'; // $prevSlice->setDebug(); if ($function === 'content/paste') { $priority = 1; } else { $prevSlice = rex_sql::factory(); $prevSlice->setTable($sliceTable); $prevSlice->setWhere(array('id' => rex_get('slice_id'))); $prevSlice->select(); $priority = $prevSlice->getValue('priority') + 1; } $copiedSlice = rex_sql::factory(); $copiedSlice->setTable($sliceTable); $copiedSlice->setWhere(array('id' => $cut_slice_id)); $copiedSlice->select(); $exclude = array('id', 'createdate', 'updatedate', 'createuser', 'updateuser', 'priority'); // print_r($copiedSlice->getRow()); foreach ($copiedSlice->getRow() as $key => $value) { if (empty($value)) { continue; } $field = end(explode('.', $key)); if (in_array($field, $exclude)) { continue; } $newsql->setValue($field, $value); } $newsql->setValue('article_id', $article_id); $newsql->setValue('module_id', $module_id); $newsql->setValue('clang_id', $clang); $newsql->setValue('ctype_id', $ctype); $newsql->setValue('revision', $slice_revision); $newsql->setValue('priority', $priority); $newsql->addGlobalUpdateFields(); $newsql->addGlobalCreateFields(); try { $newsql->insert(); $slice_id = $newsql->getLastId(); if ($slice_id !== 0) { $_SESSION['slice_ui']['new_slice_id'] = $slice_id; } rex_sql_util::organizePriorities(rex::getTable('article_slice'), 'priority', 'article_id=' . $article_id . ' AND clang_id=' . $clang . ' AND ctype_id=' . $ctype . ' AND revision=' . $slice_revision, 'priority, updatedate DESC'); $function = ''; // ----- EXTENSION POINT rex_extension::registerPoint(new rex_extension_point('SLICE_PASTED', '', ['article_id' => $article_id, 'clang' => $clang, 'function' => $function, 'slice_id' => $slice_id, 'page' => rex_be_controller::getCurrentPage(), 'ctype' => $ctype, 'category_id' => $category_id, 'module_id' => $module_id, 'article_revision' => 0, 'slice_revision' => 0])); if ($_SESSION['slice_ui']['cut'] == 1) { $curr = rex_sql::factory(); $curr->setDebug(); $curr->setTable($sliceTable); $curr->setWhere(array('id' => $cut_slice_id)); $curr->delete(); rex_sql_util::organizePriorities(rex::getTable('article_slice'), 'priority', 'article_id=' . $_SESSION['slice_ui']['article_id'] . ' AND clang_id=' . $clang . ' AND ctype_id=' . $ctype . ' AND revision=' . $slice_revision, 'priority, updatedate DESC'); } } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); } // die(); // Alle OBs schließen while (@ob_end_clean()) { } header("Location: " . rex_url::backendController() . '?article_id=' . $article_id . '&clang=' . $clang . '&page=content/edit&ctype=' . $ctype); exit; } }
/** * @return string */ public function get() { $this->init(); $this->setApplyUrl($this->getUrl(['func' => ''], false)); if (($controlElement = $this->getControlElement()) !== null) { if ($controlElement->saved()) { $this->processPostValues(); // speichern und umleiten // Nachricht in der Liste anzeigen if (($result = $this->validate()) === true && ($result = $this->save()) === true) { $this->redirect(rex_i18n::msg('form_saved')); } elseif (is_int($result) && isset($this->errorMessages[$result])) { $this->setWarning($this->errorMessages[$result]); } elseif (is_string($result) && $result != '') { $this->setWarning($result); } else { $this->setWarning(rex_i18n::msg('form_save_error')); } } elseif ($controlElement->applied()) { $this->processPostValues(); // speichern und wiederanzeigen // Nachricht im Formular anzeigen if (($result = $this->validate()) === true && ($result = $this->save()) === true) { $this->setMessage(rex_i18n::msg('form_applied')); } elseif (is_int($result) && isset($this->errorMessages[$result])) { $this->setWarning($this->errorMessages[$result]); } elseif (is_string($result) && $result != '') { $this->setWarning($result); } else { $this->setWarning(rex_i18n::msg('form_save_error')); } } elseif ($controlElement->deleted()) { // speichern und wiederanzeigen // Nachricht in der Liste anzeigen if (($result = $this->delete()) === true) { $this->redirect(rex_i18n::msg('form_deleted')); } elseif (is_string($result) && $result != '') { $this->setWarning($result); } else { $this->setWarning(rex_i18n::msg('form_delete_error')); } } elseif ($controlElement->resetted()) { // verwerfen und wiederanzeigen // Nachricht im Formular anzeigen $this->setMessage(rex_i18n::msg('form_resetted')); } elseif ($controlElement->aborted()) { // verwerfen und umleiten // Nachricht in der Liste anzeigen $this->redirect(rex_i18n::msg('form_resetted')); } } $actionParams = []; if ('get' == strtolower($this->method)) { // Parameter dem Formular hinzufügen foreach ($this->getParams() as $name => $value) { $this->addHiddenField($name, $value, ['internal::useArraySyntax' => 'none']); } } else { $actionParams = $this->getParams(); } $s = "\n"; $warning = $this->getWarning(); $message = $this->getMessage(); if ($warning != '') { $s .= ' ' . rex_view::warning($warning) . "\n"; } elseif ($message != '') { $s .= ' ' . rex_view::info($message) . "\n"; } $i = 0; $addHeaders = true; $fieldsets = $this->getFieldsetElements(); $last = count($fieldsets); $s .= '<form id="' . $this->divId . '" action="' . rex_url::backendController($actionParams) . '" method="' . $this->method . '">' . "\n"; foreach ($fieldsets as $fieldsetName => $fieldsetElements) { $s .= '<fieldset>' . "\n"; if ($fieldsetName != '') { $s .= '<legend>' . htmlspecialchars($fieldsetName) . '</legend>' . "\n"; } // Die HeaderElemente nur im 1. Fieldset ganz am Anfang einfügen if ($i == 0 && $addHeaders) { foreach ($this->getHeaderElements() as $element) { // Callback $element->setValue($this->preView($fieldsetName, $element->getFieldName(), $element->getValue())); // HeaderElemente immer ohne <p> $s .= $element->formatElement(); } $addHeaders = false; } foreach ($fieldsetElements as $element) { // Callback $element->setValue($this->preView($fieldsetName, $element->getFieldName(), $element->getValue())); $s .= $element->get(); } // Die FooterElemente nur innerhalb des letzten Fieldsets if ($i + 1 == $last) { foreach ($this->getFooterElements() as $element) { // Callback $element->setValue($this->preView($fieldsetName, $element->getFieldName(), $element->getValue())); $s .= $element->get(); } } $s .= '</fieldset>' . "\n"; ++$i; } $s .= '</form>' . "\n"; return $s; }
<?php $newCron = rex_sql::factory(); $newCron->setTable(REX_CRONJOB_TABLE); $newCron->setWhere(array('name' => 'Update Instagram-Timelines')); try { $newCron->delete(); } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); } $newCron = rex_sql::factory(); $newCron->setTable(REX_CRONJOB_TABLE); $newCron->setWhere(array('name' => 'Update Instagram-Hashtags')); try { $newCron->delete(); } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); }
<?php /** @var rex_addon $this */ $core = rex_request('core', 'boolean'); $addonkey = rex_request('addonkey', 'string'); $coreVersions = []; $addons = []; $message = rex_api_function::getMessage(); try { $coreVersions = rex_api_install_core_update::getVersions(); $addons = rex_install_packages::getUpdatePackages(); } catch (rex_functional_exception $e) { $message .= rex_view::warning($e->getMessage()); $addonkey = ''; } if ($core && !empty($coreVersions)) { $panel = ' <table class="table table-striped table-hover"> <thead> <tr> <th class="rex-table-icon"> </th> <th>' . $this->i18n('version') . '</th> <th>' . $this->i18n('description') . '</th> <th class="rex-table-action"></th> </tr> </thead> <tbody>'; foreach ($coreVersions as $id => $version) { $panel .= ' <tr> <td class="rex-table-icon"><i class="rex-icon rex-icon-package"></i></td>
ob_start(); $addon = rex_addon::get('yrewrite'); $article_id = $params['article_id']; $clang = $params['clang']; $ctype = $params['ctype']; // $yrewrite_url = stripslashes(rex_request('yrewrite_url')); $domain = rex_yrewrite::getDomainByArticleId($article_id, $clang); $isStartarticle = rex_yrewrite::isDomainStartArticle($article_id, $clang); $autoUrl = rex_getUrl(); if (0 === strpos($autoUrl, $domain->getUrl())) { $autoUrl = substr($autoUrl, strlen($domain->getUrl())); } else { $autoUrl = substr($autoUrl, strlen($domain->getPath())); } if ($isStartarticle) { echo rex_view::warning($addon->i18n('startarticleisalways', $domain->getName())); } else { $yform = new rex_yform(); $yform->setObjectparams('form_action', rex_url::backendController(['page' => 'content/edit', 'article_id' => $article_id, 'clang' => $clang, 'ctype' => $ctype], false)); $yform->setObjectparams('form_id', 'yrewrite-url'); $yform->setObjectparams('form_name', 'yrewrite-url'); $yform->setHiddenField('yrewrite_func', 'url'); $yform->setObjectparams('form_showformafterupdate', 1); $yform->setObjectparams('main_table', rex::getTable('article')); $yform->setObjectparams('main_id', $article_id); $yform->setObjectparams('main_where', 'id=' . $article_id . ' and clang_id=' . $clang); $yform->setObjectparams('getdata', true); $yform->setValueField('text', ['yrewrite_url', $addon->i18n('customurl'), 'notice' => $autoUrl]); $yform->setValidateField('customfunction', ['name' => 'yrewrite_url', 'function' => function ($func, $yrewrite_url) { return substr($yrewrite_url, 0, 1) == '/' || substr($yrewrite_url, -1) == '/'; }, 'params' => [], 'message' => rex_i18n::msg('yrewrite_warning_noslash')]);
$warnings[] = rex_i18n::msg('user_login_exists'); } if (!$userlogin) { $warnings[] = rex_i18n::msg('user_missing_login'); } if (!$userpsw) { $warnings[] = rex_i18n::msg('user_missing_password'); } } } // ---------------------------------- ERR MSG if ($info != '') { $message .= rex_view::info($info); } if (!empty($warnings)) { $message .= rex_view::warning(implode('<br/>', $warnings)); } // --------------------------------- FORMS $SHOW = true; if ($FUNC_ADD != '' || $user_id > 0) { $SHOW = false; if ($FUNC_ADD != '') { $statuschecked = 'checked="checked"'; } $buttons = ''; if ($user_id > 0) { // User Edit $form_label = rex_i18n::msg('edit_user'); $add_hidden = '<input type="hidden" name="user_id" value="' . $user_id . '" />'; $add_user_login = '******' . htmlspecialchars($sql->getValue(rex::getTablePrefix() . 'user.login')) . '</p>'; $formElements = [];
} else { $dcounter++; echo rex_view::warning(rex_i18n::msg('yform_manager_import_error_dataimport', $error)); } } } } $show_list = true; } rex_extension::registerPoint(new rex_extension_point('yform_DATASET_IMPORTED', '', array('divider' => $div, 'table' => $this->table, 'filename' => $filename, 'replacefield' => $replacefield, 'missing_columns' => $missing_columns, 'debug' => $debug, 'data_imported' => $counter, 'data_not_imported' => $dcounter, 'data_empty_rows' => $ecounter, 'data_replaced' => $rcounter, 'data_inserted' => $icounter, 'data_errors' => $errorcounter))); echo rex_view::info(rex_i18n::msg('yform_manager_import_error_dataimport', $icounter + $rcounter, $icounter, $rcounter)); } else { echo rex_view::info(rex_i18n::msg('yform_manager_import_error_not_started')); } if ($dcounter > 0) { echo rex_view::warning(rex_i18n::msg('yform_manager_import_info_data_imported', $dcounter)); } } } if ($show_importform) { ?> <div class="rex-addon-output"><h3 class="rex-hl2"><?php echo rex_i18n::msg('yform_manager_import_csv'); ?> </h3><div class="rex-addon-content"><div id="rex-yform-import" class="yform"> <form action="index.php" method="post" enctype="multipart/form-data"> <p class="rex-tx1"><?php echo rex_i18n::msg('yform_manager_import_csv_info'); ?>
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'); header('Charset: UTF-8'); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header('Content-Disposition: attachment; filename="' . basename($file_name) . '"'); header('Content-Length: ' . strlen($return)); header('Pragma: public'); header('Expires: 0'); header('Content-Transfer-Encoding: binary'); echo $return; exit; } catch (Exception $e) { echo rex_view::warning($this->msg('table_export_failed', '', $e->getMessage())); } } else { if ($yform->objparams['send']) { echo rex_view::warning(rex_i18n::msg('yform_manager_export_error_empty')); } } $fragment = new rex_fragment(); $fragment->setVar('class', 'edit', false); $fragment->setVar('title', rex_i18n::msg('yform_manager_tableset_export')); $fragment->setVar('body', $form, false); // $fragment->setVar('buttons', $buttons, false); $form = $fragment->parse('core/page/section.php'); echo $form;
*/ echo rex_view::title(rex_i18n::msg('yform')); $page = rex_request('page', 'string', ''); $yform = new rex_yform(); $yform->setHiddenField('page', $page); $yform->setObjectparams('real_field_names', true); $yform->setObjectparams('hide_top_warning_messages', true); $yform->setObjectparams('form_showformafterupdate', 1); $yform->setValueField('upload', array('name' => 'importfile', 'label' => rex_i18n::msg('yform_manager_tableset_import_jsonimportfile'), 'max_size' => '1000', 'types' => '.json', 'required' => 1, 'messages' => array(rex_i18n::msg('yform_manager_table_importset_warning_min'), rex_i18n::msg('yform_manager_table_importset_warning_max'), rex_i18n::msg('yform_manager_table_importset_warning_type'), rex_i18n::msg('yform_manager_table_importset_warning_selectfile')), 'modus' => 'no_save', 'no_db' => 'no_db')); $form = $yform->getForm(); if ($yform->objparams['actions_executed']) { try { $content = file_get_contents(rex_path::addonData('yform', 'uploads/' . $yform->objparams['value_pool']['email']['importfile'])); rex_yform_manager_table_api::importTablesets($content); echo rex_view::success(rex_i18n::msg('yform_manager_tableset_import_success')); } catch (Exception $e) { echo rex_view::warning(rex_i18n::msg('yform_manager_tableset_import_failed', '', $e->getMessage())); } rex_file::delete(rex_path::addonData('yform', 'uploads/' . $yform->objparams['value_pool']['email']['importfile'])); } else { if ($yform->objparams['send']) { echo rex_view::warning(rex_i18n::msg('yform_manager_tableset_import_warning_selectfile')); } } $fragment = new rex_fragment(); $fragment->setVar('class', 'edit', false); $fragment->setVar('title', rex_i18n::msg('yform_manager_tableset_import')); $fragment->setVar('body', $form, false); // $fragment->setVar('buttons', $buttons, false); $form = $fragment->parse('core/page/section.php'); echo $form;
$fragment->setVar('id', 'rex-js-structure-content-nav', false); $fragment->setVar('left', $content_navi_left, false); $fragment->setVar('right', $content_navi_right, false); $contentMain = $fragment->parse('core/navigations/content.php'); // ------------------------------------------ END: CONTENT HEAD MENUE // ------------------------------------------ WARNING if ($global_warning != '') { $contentMain .= rex_view::warning($global_warning); } if ($global_info != '') { $contentMain .= rex_view::success($global_info); } // --------------------------------------------- API MESSAGES $contentMain .= rex_api_function::getMessage(); if ($warning != '') { $contentMain .= rex_view::warning($warning); } if ($info != '') { $contentMain .= rex_view::success($info); } // ----- EXTENSION POINT $contentMain .= rex_extension::registerPoint(new rex_extension_point('STRUCTURE_CONTENT_BEFORE_SLICES', '', ['article_id' => $article_id, 'clang' => $clang, 'function' => $function, 'slice_id' => $slice_id, 'page' => rex_be_controller::getCurrentPage(), 'ctype' => $ctype, 'category_id' => $category_id, 'article_revision' => &$article_revision, 'slice_revision' => &$slice_revision])); // ------------------------------------------ START: MODULE EDITIEREN/ADDEN ETC. $contentMain .= (include rex_be_controller::getCurrentPageObject()->getSubPath()); // ------------------------------------------ END: AUSGABE // ----- EXTENSION POINT $contentMain .= rex_extension::registerPoint(new rex_extension_point('STRUCTURE_CONTENT_AFTER_SLICES', '', ['article_id' => $article_id, 'clang' => $clang, 'function' => $function, 'slice_id' => $slice_id, 'page' => rex_be_controller::getCurrentPage(), 'ctype' => $ctype, 'category_id' => $category_id, 'article_revision' => &$article_revision, 'slice_revision' => &$slice_revision])); // ----- EXTENSION POINT $contentSidebar = rex_extension::registerPoint(new rex_extension_point('STRUCTURE_CONTENT_SIDEBAR', '', ['article_id' => $article_id, 'clang' => $clang, 'function' => $function, 'slice_id' => $slice_id, 'page' => rex_be_controller::getCurrentPage(), 'ctype' => $ctype, 'category_id' => $category_id, 'article_revision' => &$article_revision, 'slice_revision' => &$slice_revision])); $fragment = new rex_fragment(); $fragment->setVar('content', $contentMain, false);
protected function addSlice($sliceId, $moduleIdToAdd) { $MOD = rex_sql::factory(); $MOD->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'module WHERE id="' . $moduleIdToAdd . '"'); if ($MOD->getRows() != 1) { $slice_content = rex_view::warning(rex_i18n::msg('module_doesnt_exist')); } else { $initDataSql = rex_sql::factory(); // ----- PRE VIEW ACTION [ADD] $action = new rex_article_action($moduleIdToAdd, 'add', $initDataSql); $action->setRequestValues(); $action->exec(rex_article_action::PREVIEW); // ----- / PRE VIEW ACTION $moduleInput = $this->replaceVars($initDataSql, $MOD->getValue('input')); $moduleInput = $this->getStreamOutput('module/' . $moduleIdToAdd . '/input', $moduleInput); $msg = ''; if ($this->warning != '') { $msg .= rex_view::warning($this->warning); } if ($this->info != '') { $msg .= rex_view::success($this->info); } $formElements = []; $n = []; $n['field'] = '<a class="btn btn-abort" href="' . rex_url::currentBackendPage(['article_id' => $this->article_id, 'slice_id' => $sliceId, 'clang' => $this->clang, 'ctype' => $this->ctype]) . '#slice' . $sliceId . '">' . rex_i18n::msg('form_abort') . '</a>'; $formElements[] = $n; $n = []; $n['field'] = '<button class="btn btn-save" type="submit" name="btn_save" value="1"' . rex::getAccesskey(rex_i18n::msg('add_block'), 'save') . '>' . rex_i18n::msg('add_block') . '</button>'; $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $slice_footer = $fragment->parse('core/form/submit.php'); $panel = ' <fieldset> <legend>' . rex_i18n::msg('add_block') . '</legend> <input type="hidden" name="function" value="add" /> <input type="hidden" name="module_id" value="' . $moduleIdToAdd . '" /> <input type="hidden" name="save" value="1" /> <div class="rex-slice-input"> ' . $moduleInput . ' </div> </fieldset> '; $fragment = new rex_fragment(); $fragment->setVar('before', $msg, false); $fragment->setVar('class', 'add', false); $fragment->setVar('title', rex_i18n::msg('module') . ': ' . rex_i18n::translate($MOD->getValue('name')), false); $fragment->setVar('body', $panel, false); $fragment->setVar('footer', $slice_footer, false); $slice_content = $fragment->parse('core/page/section.php'); $slice_content = ' <li class="rex-slice rex-slice-add" id="slice' . $sliceId . '"> <form action="' . rex_url::currentBackendPage(['article_id' => $this->article_id, 'slice_id' => $sliceId, 'clang' => $this->clang, 'ctype' => $this->ctype]) . '#slice' . $sliceId . '" method="post" id="REX_FORM" enctype="multipart/form-data"> ' . $slice_content . ' </form> <script type="text/javascript"> <!-- jQuery(function($) { $(":input:visible:enabled:not([readonly]):first", $("#REX_FORM")).focus(); }); //--> </script> </li> '; } return $slice_content; }
$fragment->setVar('title', rex_i18n::msg('yform_manager_table_migrate')); $fragment->setVar('body', $form, false); // $fragment->setVar('buttons', $buttons, false); $form = $fragment->parse('core/page/section.php'); echo $form; echo rex_view::info('<a href="index.php?page=' . $page . '"><b>« ' . rex_i18n::msg('yform_back_to_overview') . '</b></a>'); $show_list = false; } else { $table_name = $yform->objparams['value_pool']['sql']['table_name']; $convert_id = $yform->objparams['value_pool']['sql']['convert_id']; try { rex_yform_manager_table_api::migrateTable($table_name, $convert_id); // with convert id / auto_increment finder echo rex_view::info(rex_i18n::msg('yform_manager_table_migrated_success')); } catch (Exception $e) { echo rex_view::warning(rex_i18n::msg('yform_manager_table_migrated_failed', $table_name, $e->getMessage())); } } } else { if (($func == 'add' || $func == 'edit') && rex::getUser()->isAdmin()) { $yform = new rex_yform(); // $yform->setDebug(TRUE); $yform->setHiddenField('page', $page); $yform->setHiddenField('func', $func); $yform->setHiddenField('list', rex_request('list', 'string')); $yform->setHiddenField('sort', rex_request('sort', 'string')); $yform->setHiddenField('sorttype', rex_request('sorttype', 'string')); $yform->setHiddenField('start', rex_request('start', 'string')); $yform->setActionField('showtext', array('', rex_i18n::msg('yform_manager_table_entry_saved'))); $yform->setObjectparams('main_table', rex_yform_manager_table::table()); $yform->setValueField('prio', array('prio', rex_i18n::msg('yform_manager_table_prio'), 'name'));
$fragment = new rex_fragment(); $fragment->setVar('class', 'edit', false); $fragment->setVar('title', rex_i18n::msg('yform_manager_tableset_import')); $fragment->setVar('body', $form, false); // $fragment->setVar('buttons', $buttons, false); $form = $fragment->parse('core/page/section.php'); echo $form; echo rex_view::info('<a href="index.php?page=' . $page . '"><b>« ' . rex_i18n::msg('yform_back_to_overview') . '</b></a>'); $show_list = false; } else { try { $content = file_get_contents($yform->objparams['value_pool']['email']['importfile']); rex_yform_manager_table_api::importTablesets($content); echo rex_view::info(rex_i18n::msg('yform_manager_table_import_success')); } catch (Exception $e) { echo rex_view::warning(rex_i18n::msg('yform_manager_table_import_failed', '', $e->getMessage())); } } } else { if (($func == 'add' || $func == 'edit') && rex::getUser()->isAdmin()) { $yform = new rex_yform(); // $yform->setDebug(TRUE); $yform->setHiddenField('page', $page); $yform->setHiddenField('func', $func); $yform->setHiddenField('list', rex_request('list', 'string')); $yform->setHiddenField('sort', rex_request('sort', 'string')); $yform->setHiddenField('sorttype', rex_request('sorttype', 'string')); $yform->setHiddenField('start', rex_request('start', 'string')); $yform->setActionField('showtext', array('', rex_i18n::msg('yform_manager_table_entry_saved'))); $yform->setObjectparams('main_table', rex_yform_manager_table::table()); $yform->setValueField('prio', array('prio', rex_i18n::msg('yform_manager_table_prio'), 'name'));
<?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')); } }
function getFieldPage() { // ********************************************* FIELD ADD/EDIT/LIST $func = rex_request('func', 'string', 'list'); $type_id = rex_request('type_id', 'string'); $type_name = rex_request('type_name', 'string'); $field_id = rex_request('field_id', 'int'); $link_vars = ''; foreach ($this->getLinkVars() as $k => $v) { $link_vars .= '&' . urlencode($k) . '=' . urlencode($v); } $TYPE = array('value' => rex_i18n::msg('yform_values'), 'validate' => rex_i18n::msg('yform_validates'), 'action' => rex_i18n::msg('yform_action')); // ********************************** TABELLE HOLEN $table = $this->table; $table_info = '<b>' . rex_i18n::translate($table->getName()) . ' [' . $table->getTableName() . ']</b> '; echo rex_view::info($table_info); // ********************************************* Missing Fields $mfields = $table->getMissingFields(); // 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 != '') { $panel = ''; $panel .= '<dl class="dl-horizontal text-left">'; $rfields = $this->table->getColumns(); foreach ($rfields[$type_real_field] as $k => $v) { $panel .= '<dt>' . ucfirst($k) . ':</dt><dd>' . $v . '</dd>'; } $panel .= '</dl>'; $fragment = new rex_fragment(); $fragment->setVar('class', 'info'); $fragment->setVar('title', 'Folgendes Feld wird verwendet: ' . $type_real_field); $fragment->setVar('body', $panel, false); echo $fragment->parse('core/page/section.php'); } // ********************************************* CHOOSE FIELD $types = rex_yform::getTypeArray(); if ($func == 'choosenadd') { $link = 'index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '&func=add&'; $content = []; $panels = []; if (!$table->hasId()) { $content[] = rex_i18n::msg('yform_id_is_missing') . '' . rex_i18n::msg('yform_id_missing_info'); } else { if ($type_real_field == '' && count($mfields) > 0) { $tmp = ''; $d = 0; foreach ($mfields as $k => $v) { $d++; $l = 'index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '&func=choosenadd&type_real_field=' . $k . '&type_layout=t'; $tmp .= '<a class="btn btn-default" href="' . $l . '">' . $k . '</a> '; } $fragment = new rex_fragment(); $fragment->setVar('class', 'info'); $fragment->setVar('title', 'Es gibt noch Felder in der Tabelle welche nicht zugewiesen sind.'); $fragment->setVar('body', $tmp, false); echo $fragment->parse('core/page/section.php'); } $tmp = ''; if (isset($types['value'])) { ksort($types['value']); $tmp .= '<table class="table table-hover">'; foreach ($types['value'] as $k => $v) { $tmp .= '<tr><th><a class="btn btn-default btn-block" href="' . $link . 'type_id=value&type_name=' . $k . '&type_real_field=' . $type_real_field . '"><code>' . $k . '</code></a></th><td class="vertical-middle">' . $v['description'] . '</td></tr>'; } $tmp .= '</table>'; } $fragment = new rex_fragment(); $fragment->setVar('title', $TYPE['value']); $fragment->setVar('content', $tmp, false); $panels[] = $fragment->parse('core/page/section.php'); $tmp = ''; if (isset($types['validate'])) { ksort($types['validate']); $tmp .= '<table class="table table-hover">'; foreach ($types['validate'] as $k => $v) { $tmp .= '<tr><th><a class="btn btn-default btn-block" href="' . $link . 'type_id=validate&type_name=' . $k . '"><code>' . $k . '</code></a></th><td class="vertical-middle">' . $v['description'] . '</td></tr>'; } $tmp .= '</table>'; } $fragment = new rex_fragment(); $fragment->setVar('title', $TYPE['validate']); $fragment->setVar('content', $tmp, false); $panels[] = $fragment->parse('core/page/section.php'); } $fragment = new rex_fragment(); $fragment->setVar('title', rex_i18n::msg('yform_choosenadd')); $fragment->setVar('body', rex_i18n::msg('yform_choosenadd_description'), false); echo $fragment->parse('core/page/section.php'); $fragment = new rex_fragment(); $fragment->setVar('content', $panels, false); echo $fragment->parse('core/page/grid.php'); $table_echo = '<a class="btn btn-default" href="index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '">' . rex_i18n::msg('yform_back_to_overview') . '</a>'; $fragment = new rex_fragment(); $fragment->setVar('footer', $table_echo, false); echo $fragment->parse('core/page/section.php'); } // ********************************************* FORMULAR if (($func == 'add' || $func == 'edit') && isset($types[$type_id][$type_name])) { $yform = new rex_yform(); $yform->setDebug(false); foreach ($this->getLinkVars() as $k => $v) { $yform->setHiddenField($k, $v); } $yform->setHiddenField('func', $func); $yform->setHiddenField('table_name', $table->getTableName()); $yform->setHiddenField('type_real_field', $type_real_field); $yform->setHiddenField('list', rex_request('list', 'string')); $yform->setHiddenField('sort', rex_request('sort', 'string')); $yform->setHiddenField('sorttype', rex_request('sorttype', 'string')); $yform->setHiddenField('start', rex_request('start', 'string')); $yform->setValueField('hidden', array('table_name', $table->getTableName())); $yform->setValueField('hidden', array('type_name', $type_name, 'REQUEST')); $yform->setValueField('hidden', array('type_id', $type_id, 'REQUEST')); $yform->setValueField('prio', array('prio', 'Prioritaet', array('name', 'type_id', 'type_name'), array('table_name'))); $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') { $yform->setValueField('showvalue', array($field, 'Name')); } else { if (!isset($v['value']) && $type_real_field != '') { $v['value'] = $type_real_field; } elseif (!isset($v['value'])) { $v['value'] = ''; } $yform->setValueField('text', array($field, 'Name', $v['value'])); $yform->setValidateField('empty', array($field, rex_i18n::msg('yform_validatenamenotempty'))); $yform->setValidateField('preg_match', array($field, "/(([a-zA-Z])+([a-zA-Z0-9\\_])*)/", rex_i18n::msg('yform_validatenamepregmatch'))); $yform->setValidateField('customfunction', array($field, 'rex_yform_manager_checkField', array('table_name' => $table->getTableName()), rex_i18n::msg('yform_validatenamecheck'))); } break; case 'no_db': if (!isset($v['default']) || $v['default'] != 1) { $v['default'] = 0; } $yform->setValueField('checkbox', array($field, rex_i18n::msg('yform_donotsaveindb'), 'no_db', $v['default'])); break; case 'boolean': // checkbox|check_design|Bezeichnung|Value|1/0|[no_db] if (!isset($v['default'])) { $v['default'] = ''; } $yform->setValueField('checkbox', array($field, $v['label'], '', $v['default'])); break; case 'select': // select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|multiple=1 $yform->setValueField('select', array($field, $v['label'], $v['options'], '', $v['default'], 0)); break; case 'table': // ist fest eingetragen, damit keine Dinge durcheinandergehen if ($func == 'edit') { $yform->setValueField('showvalue', array($field, $v['label'])); } else { $_tables = rex_yform_manager_table::getAll(); $_options = array(); if (isset($v['empty_option']) && $v['empty_option']) { $_options[0] = '–='; } foreach ($_tables as $_table) { $_options[$_table['table_name']] = str_replace('=', '-', rex_i18n::translate($_table['name']) . ' [' . $_table['table_name'] . ']') . '=' . $_table['table_name']; $_options[$_table['table_name']] = str_replace(',', '.', $_options[$_table['table_name']]); } if (!isset($v['default'])) { $v['default'] = ''; } $yform->setValueField('select', array($field, $v['label'], implode(',', $_options), '', $v['default'], 0)); } break; case 'textarea': $yform->setValueField('textarea', array($field, $v['label'])); break; case 'table.field': // Todo: // Todo: case 'select_name': $_fields = array(); foreach ($table->getValueFields() as $_k => $_v) { $_fields[] = $_k; } $yform->setValueField('select', array($field, $v['label'], implode(',', $_fields), '', '', 0)); break; case 'select_names': $_fields = array(); foreach ($table->getValueFields() as $_k => $_v) { $_fields[] = $_k; } $yform->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'] = ''; } $yform->setValueField('text', array($field, $v['label'], $v['value'])); } } $yform->setActionField('showtext', array('', '<p>' . rex_i18n::msg('yform_thankyouforentry') . '</p>')); $yform->setObjectparams('main_table', rex_yform_manager_field::table()); if ($func == 'edit') { $yform->setObjectparams('submit_btn_label', rex_i18n::msg('yform_save')); $yform->setHiddenField('field_id', $field_id); $yform->setActionField('manage_db', array(rex_yform_manager_field::table(), "id={$field_id}")); $yform->setObjectparams('main_id', $field_id); $yform->setObjectparams('main_where', "id={$field_id}"); $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . rex_yform_manager_field::table() . " WHERE id={$field_id}"); foreach ($selectFields as $alias => $field) { if ($alias != $field) { if ((!$sql->hasValue($field) || null === $sql->getValue($field) || '' === $sql->getValue($field)) && $sql->hasValue($alias)) { $sql->setValue($field, $sql->getValue($alias)); } $yform->setValueField('hidden', array($alias, '')); } } $yform->setObjectparams('sql_object', $sql); $yform->setObjectparams('getdata', true); } elseif ($func == 'add') { $yform->setObjectparams('submit_btn_label', rex_i18n::msg('yform_add')); $yform->setActionField('manage_db', array(rex_yform_manager_field::table())); } if ($type_id == 'value') { $yform->setValueField('checkbox', array('list_hidden', rex_i18n::msg('yform_hideinlist'), 1, '1')); $yform->setValueField('checkbox', array('search', rex_i18n::msg('yform_useassearchfieldalidatenamenotempty'), 1, '1')); } elseif ($type_id == 'validate') { $yform->setValueField('hidden', array('list_hidden', 1)); } $form = $yform->getForm(); if ($yform->objparams['form_show']) { if ($func == 'add') { $title = rex_i18n::msg('yform_addfield') . ' "' . $type_name . '"'; } else { $title = rex_i18n::msg('yform_editfield') . ' "' . $type_name . '"'; } $fragment = new rex_fragment(); $fragment->setVar('class', 'edit', false); $fragment->setVar('title', $title); $fragment->setVar('body', $form, false); // $fragment->setVar('buttons', $buttons, false); $form = $fragment->parse('core/page/section.php'); echo $form; $table_echo = '<a class="btn btn-default" href="index.php?' . $link_vars . '&table_name=' . $table->getTableName() . '">' . rex_i18n::msg('yform_back_to_overview') . '</a>'; $fragment = new rex_fragment(); $fragment->setVar('footer', $table_echo, false); echo $fragment->parse('core/page/section.php'); $func = ''; } else { if ($func == 'edit') { $this->generateAll(); echo rex_view::success(rex_i18n::msg('yform_thankyouforupdate')); } elseif ($func == 'add') { $this->generateAll(); echo rex_view::success(rex_i18n::msg('yform_thankyouforentry')); } $func = 'list'; } } // ********************************************* LOESCHEN if ($func == 'delete') { $sf = rex_sql::factory(); $sf->debugsql = self::$debug; $sf->setQuery('select * from ' . rex_yform_manager_field::table() . ' where table_name="' . $table->getTableName() . '" and id=' . $field_id); $sfa = $sf->getArray(); if (count($sfa) == 1) { $query = 'delete from ' . rex_yform_manager_field::table() . ' where table_name="' . $table->getTableName() . '" and id=' . $field_id; $delsql = rex_sql::factory(); $delsql->debugsql = self::$debug; $delsql->setQuery($query); echo rex_view::success(rex_i18n::msg('yform_tablefielddeleted')); $this->generateAll(); } else { echo rex_view::warning(rex_i18n::msg('yform_tablefieldnotfound')); } $func = 'list'; } // ********************************************* CREATE/UPDATE FIELDS if ($func == 'updatetable') { $this->generateAll(); echo rex_view::info(rex_i18n::msg('yform_tablesupdated')); $func = 'list'; } if ($func == 'updatetablewithdelete') { $this->generateAll(array('delete_fields' => true)); echo rex_view::info(rex_i18n::msg('yform_tablesupdated')); $func = 'list'; } if ($func == 'show_form_notation') { $formbuilder_fields = $table->getFields(); $notation_php = ''; $notation_pipe = ''; $notation_email = ''; $notation_php_pre = array('$yform = new rex_yform();', '$yform->setObjectparams(\'form_skin\', \'default\');', '$yform->setObjectparams(\'form_showformafterupdate\', 0);', '$yform->setObjectparams(\'real_field_names\', true);'); $notation_php .= implode("\n", $notation_php_pre) . "\n"; $notation_pipe_pre = array('objparams|form_skin|bootstrap', 'objparams|form_showformafterupdate|0', 'objparams|real_field_names|true'); $notation_pipe .= implode("\n", $notation_pipe_pre) . "\n"; foreach ($formbuilder_fields as $field) { $class = 'rex_yform_' . $field->getType() . '_' . $field->getTypeName(); $cl = new $class(); $definitions = $cl->getDefinitions(); $values = array(); $i = 1; foreach ($definitions['values'] as $key => $_) { $key = $this->getFieldName($key, $field['type_id']); if (isset($field[$key])) { $values[] = $field[$key]; } elseif (isset($field['f' . $i])) { $values[] = $field['f' . $i]; } else { $values[] = ''; } $i++; } if ($field['type_id'] == 'value') { $notation_php .= "\n" . '$yform->setValueField(\'' . $field['type_name'] . '\', array("' . rtrim(implode('","', $values), '","') . '"));'; $notation_pipe .= "\n" . $field['type_name'] . '|' . rtrim(implode('|', $values), '|') . '|'; $notation_email .= "\n" . $field['label'] . ': ###' . $field['name'] . '###'; } elseif ($field['type_id'] == 'validate') { $notation_php .= "\n" . '$yform->setValidateField(\'' . $field['type_name'] . '\', array("' . rtrim(implode('","', $values), '","') . '"));'; $notation_pipe .= "\n" . $field['type_id'] . '|' . $field['type_name'] . '|' . rtrim(implode('|', $values), '|') . '|'; } elseif ($field['type_id'] == 'action') { $notation_php .= "\n" . '$yform->setActionField(\'' . $field['type_name'] . '\', array("' . rtrim(implode('","', $values), '","') . '"));'; $notation_pipe .= "\n" . $field['type_id'] . '|' . $field['type_name'] . '|' . rtrim(implode('|', $values), '|') . '|'; } } $notation_php .= "\n\n" . '$yform->setActionField(\'email\', array(\'emailtemplate\', \'emaillabel\', \'email@domain.de\'));'; $notation_php .= "\n" . 'echo $yform->getForm();'; $notation_pipe .= "\n\n" . 'action|email|emailtemplate|emaillabel|email@domain.de'; $fragment = new rex_fragment(); $fragment->setVar('title', 'PHP'); $fragment->setVar('body', '<pre class="pre-scrollable">' . $notation_php . '</pre>', false); $content = $fragment->parse('core/page/section.php'); echo $content; $fragment = new rex_fragment(); $fragment->setVar('title', 'Pipe'); $fragment->setVar('body', '<pre class="pre-scrollable">' . $notation_pipe . '</pre>', false); $content = $fragment->parse('core/page/section.php'); echo $content; $fragment = new rex_fragment(); $fragment->setVar('title', 'E-Mail'); $fragment->setVar('body', '<pre class="pre-scrollable">' . $notation_email . '</pre>', false); $content = $fragment->parse('core/page/section.php'); echo $content; $func = 'list'; } // ********************************************* LIST if ($func == 'list') { $show_list = true; $show_list = rex_extension::registerPoint(new rex_extension_point('YFORM_MANAGER_TABLE_FIELD_FUNC', $show_list, ['table' => $table, 'link_vars' => $this->getLinkVars()])); if ($show_list) { function rex_yform_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_yform_list_edit_format($p) { return rex_yform_list_format($p, $p['list']->getColumnLink(rex_i18n::msg('yform_function'), '<i class="rex-icon rex-icon-edit"></i> ' . rex_i18n::msg('yform_edit'))); } function rex_yform_list_delete_format($p) { return rex_yform_list_format($p, $p['list']->getColumnLink(rex_i18n::msg('yform_delete'), '<i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('yform_delete'))); } $context = new rex_context($this->getLinkVars()); $items = []; $item = []; $item['label'] = rex_i18n::msg('yform_manager_show_form_notation'); $item['url'] = $context->getUrl(['table_name' => $table->getTableName(), 'func' => 'show_form_notation']); $item['attributes']['class'][] = 'btn-default'; if (rex_request('func', 'string') == 'show_form_notation') { $item['attributes']['class'][] = 'active'; } $items[] = $item; $item = []; $item['label'] = rex_i18n::msg('yform_updatetable'); $item['url'] = $context->getUrl(['table_name' => $table->getTableName(), 'func' => 'updatetable']); $item['attributes']['class'][] = 'btn-default'; if (rex_request('func', 'string') == 'updatetable') { $item['attributes']['class'][] = 'active'; } $items[] = $item; $item = []; $item['label'] = rex_i18n::msg('yform_updatetable_with_delete'); $item['url'] = $context->getUrl(['table_name' => $table->getTableName(), 'func' => 'updatetablewithdelete']); $item['attributes']['class'][] = 'btn-default'; if (rex_request('func', 'string') == 'updatetablewithdelete') { $item['attributes']['class'][] = 'active'; } $item['attributes']['onclick'][] = 'return confirm(\'' . rex_i18n::msg('yform_updatetable_with_delete_confirm') . '\')'; $items[] = $item; $fragment = new rex_fragment(); $fragment->setVar('buttons', $items, false); $fragment->setVar('size', 'xs', false); $panel_options = $fragment->parse('core/buttons/button_group.php'); $sql = 'select id, prio, type_id, type_name, name from ' . rex_yform_manager_field::table() . ' where table_name="' . $table->getTableName() . '" order by prio'; $list = rex_list::factory($sql, 30); // $list->debug = 1; // $list->setColumnFormat('id', 'Id'); $tdIcon = '<i class="rex-icon rex-icon-table"></i>'; $thIcon = '<a href="' . $list->getUrl(['table_name' => $table->getTableName(), 'func' => 'choosenadd']) . '"' . rex::getAccesskey(rex_i18n::msg('add'), 'add') . '><i class="rex-icon rex-icon-add"></i></a>'; $list->addColumn($thIcon, $tdIcon, 0, ['<th class="rex-table-icon">###VALUE###</th>', '<td class="rex-table-icon">###VALUE###</td>']); $list->setColumnParams($thIcon, ['field_id' => '###id###', 'func' => 'edit', 'type_name' => '###type_name###', 'type_id' => '###type_id###']); foreach ($this->getLinkVars() as $k => $v) { $list->addParam($k, $v); } $list->addParam('start', rex_request('start', 'int')); $list->addParam('table_name', $table->getTableName()); $list->removeColumn('id'); $list->setColumnLabel('prio', rex_i18n::msg('yform_manager_table_prio_short')); //$list->setColumnLayout('prio', ['<th class="rex-table-priority">###VALUE###</th>', '<td class="rex-table-priority" data-title="' . rex_i18n::msg('yform_manager_table_prio_short') . '">###VALUE###</td>']); $list->setColumnLayout('prio', array('<th>###VALUE###</th>', '###VALUE###')); $list->setColumnFormat('prio', 'custom', 'rex_yform_list_format'); $list->setColumnLabel('type_id', rex_i18n::msg('yform_manager_type_id')); $list->setColumnLayout('type_id', array('<th>###VALUE###</th>', '###VALUE###')); $list->setColumnFormat('type_id', 'custom', 'rex_yform_list_format'); $list->setColumnLabel('type_name', rex_i18n::msg('yform_manager_type_name')); $list->setColumnLayout('type_name', array('<th>###VALUE###</th>', '###VALUE###')); $list->setColumnFormat('type_name', 'custom', 'rex_yform_list_format'); $list->setColumnLabel('name', rex_i18n::msg('yform_manager_name')); $list->setColumnLayout('name', array('<th>###VALUE###</th>', '###VALUE###')); // ###VALUE### $list->setColumnFormat('name', 'custom', 'rex_yform_list_format'); $list->addColumn(rex_i18n::msg('yform_function'), '<i class="rex-icon rex-icon-edit"></i> ' . rex_i18n::msg('yform_edit')); $list->setColumnParams(rex_i18n::msg('yform_function'), array('field_id' => '###id###', 'func' => 'edit', 'type_name' => '###type_name###', 'type_id' => '###type_id###')); $list->setColumnLayout(rex_i18n::msg('yform_function'), array('<th class="rex-table-action" colspan="2">###VALUE###</th>', '###VALUE###')); $list->setColumnFormat(rex_i18n::msg('yform_function'), 'custom', 'rex_yform_list_edit_format'); $list->addColumn(rex_i18n::msg('yform_delete'), '<i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('yform_delete')); $list->setColumnParams(rex_i18n::msg('yform_delete'), array('field_id' => '###id###', 'func' => 'delete')); $list->setColumnLayout(rex_i18n::msg('yform_delete'), array('', '###VALUE###')); $list->setColumnFormat(rex_i18n::msg('yform_delete'), 'custom', 'rex_yform_list_delete_format'); $list->addLinkAttribute(rex_i18n::msg('yform_delete'), 'onclick', 'return confirm(\' [###type_id###, ###type_name###, ###name###] ' . rex_i18n::msg('yform_delete') . ' ?\')'); $content = $list->get(); $fragment = new rex_fragment(); $fragment->setVar('title', rex_i18n::msg('yform_manager_tablefield_overview')); $fragment->setVar('options', $panel_options, false); $fragment->setVar('content', $content, false); $content = $fragment->parse('core/page/section.php'); echo $content; } } }
$form_tmp .= '<input type="file" name="FORM[' . $form_ID . '][el_' . $i . ']" id="FORM[' . $form_ID . '][el_' . $i . ']" /></div>' . "\n"; $formoutput[] = $form_tmp; $form_enctype = 'enctype="multipart/form-data"'; break; } } // pruefe Pfad auf Vorhandensein und Schreibrechte, Wenn Pfad nicht vorhanden, ignoriere die weitere Verarbeitung. if (isset($form_upload_folder) and $form_upload_folder != '' and rex::isBackend()) { // ... dum die dum ... Pfadpruefung erfolgt hier ...beginnt der Uploadpfad nicht mit einem Slash, muss es sich um einen lokalen Ordner handeln der vom Backend aus erweitert werden muss if (substr($form_upload_folder, 0, 1) != '/') { $form_upload_folder_tmp = '../' . $form_upload_folder; } else { $form_upload_folder_tmp = $form_upload_folder; } if (rex_dir::isWritable($form_upload_folder_tmp) !== true) { echo rex_view::warning('Der Uploadpfad "' . $form_upload_folder_tmp . '" ist nicht beschreibbar.<br /> Pruefe die Schreibrechte oder lasse die Angaben zum Uploadordner leer, wenn kein Uploadfeld genutzt wird.'); } } // =================AUSGABE-KOPF============================ $out = ' <form class="' . $form_tag_class . '" id="' . $form_ID . '" action="' . rex_getUrl(REX_ARTICLE_ID) . '#doformREX_SLICE_ID" accept-charset="UTF-8" method="post" ' . $form_enctype . '> <div><input type="hidden" name="FORM[' . $form_ID . '][' . $form_ID . 'send]" value="1" /><input type="hidden" name="ctype" value="ctype" /></div> <input type="hidden" name="token" value="' . $token . '" />'; // =================Formular-generieren===================== foreach ($formoutput as $fields) { $out .= $fields; } // =================AUSGABE-FUSS============================ $out .= '