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
 }
Ejemplo n.º 4
0
    //  $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');
Ejemplo n.º 5
0
 /**
  * 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;
 }
Ejemplo n.º 6
0
 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;
     }
 }
Ejemplo n.º 7
0
 /**
  * @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;
 }
Ejemplo n.º 8
0
<?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());
}
Ejemplo n.º 9
0
<?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">&nbsp;</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')]);
Ejemplo n.º 11
0
            $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 = [];
Ejemplo n.º 12
0
                            } 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');
    ?>
Ejemplo n.º 13
0
    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;
Ejemplo n.º 14
0
 */
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;
Ejemplo n.º 15
0
 $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);
Ejemplo n.º 16
0
    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;
    }
Ejemplo n.º 17
0
         $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>&laquo; ' . 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'));
Ejemplo n.º 18
0
        $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>&laquo; ' . 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'));
Ejemplo n.º 19
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'));
    }
}
Ejemplo n.º 20
0
 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 . '&amp;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 . '&amp;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;
         }
     }
 }
Ejemplo n.º 21
0
            $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 .= '