public static function copyContent($article_id, $clang, $from_revision_id, $to_revision_id) { if ($from_revision_id == $to_revision_id) { return false; } // clear the revision to which we will later copy all slices $dc = rex_sql::factory(); // $dc->setDebug(); $dc->setQuery('delete from ' . rex::getTablePrefix() . 'article_slice where article_id=' . $article_id . ' and clang_id=' . $clang . ' and revision=' . $to_revision_id); $gc = rex_sql::factory(); $gc->setQuery('select * from ' . rex::getTablePrefix() . "article_slice where article_id='{$article_id}' and clang_id='{$clang}' and revision='{$from_revision_id}' ORDER by ctype_id, priority"); $cols = rex_sql::factory(); $cols->setquery('SHOW COLUMNS FROM ' . rex::getTablePrefix() . 'article_slice'); foreach ($gc as $slice) { $ins = rex_sql::factory(); // $ins->setDebug(); $ins->setTable(rex::getTablePrefix() . 'article_slice'); foreach ($cols as $col) { $colname = $col->getValue('Field'); $ins->setValue($colname, $slice->getValue($colname)); } $ins->setValue('id', 0); // trigger auto increment $ins->setValue('revision', $to_revision_id); $ins->addGlobalCreateFields(); $ins->addGlobalUpdateFields(); $ins->insert(); } rex_article_cache::delete($article_id); return true; }
public function tearDown() { $deleteuser = rex_sql::factory(); $deleteuser->setQuery('DELETE FROM ' . rex::getTablePrefix() . "user WHERE login = '******' LIMIT 1"); // make sure we don't mess up the global scope session_destroy(); }
/** * {@inheritdoc} */ public static function get($id) { $sql = rex_sql::factory(); $sql->setQuery('SELECT perms FROM ' . rex::getTablePrefix() . 'user_role WHERE id = ?', [$id]); if ($sql->getRows() == 0) { return null; } return new self($sql->getArrayValue('perms')); }
public function isValid($value) { $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'template WHERE id=' . $value . ' AND active=1'); if ($sql->getRows() != 1 && $value != 0) { return rex_i18n::msg('system_setting_default_template_id_invalid'); } return true; }
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 }
static function getTemplate($name) { $gt = rex_sql::factory(); $gt->setQuery('select * from ' . rex::getTablePrefix() . 'yform_email_template where name=:name', [':name' => $name]); if ($gt->getRows() == 1) { $b = $gt->getArray(); return current($b); } return false; }
private static function prepareQuery($qry) { // rex::getUser() gibts im Setup nicht $user = rex::getUser() ? rex::getUser()->getValue('login') : ''; $qry = str_replace('%USER%', $user, $qry); $qry = str_replace('%TIME%', time(), $qry); $qry = str_replace('%TABLE_PREFIX%', rex::getTablePrefix(), $qry); $qry = str_replace('%TEMP_PREFIX%', rex::getTempPrefix(), $qry); return $qry; }
static function getTemplate($name) { $gt = rex_sql::factory(); $gt->setQuery('select * from ' . rex::getTablePrefix() . 'yform_email_template where name="' . mysql_real_escape_string($name) . '"'); if ($gt->getRows() == 1) { $b = $gt->getArray(); return current($b); } return false; }
public function execute() { $config = rex_plugin::get('cronjob', 'article_status')->getProperty('config'); $from = $config['from']; $to = $config['to']; $from['before'] = (array) $from['before']; $to['before'] = (array) $to['before']; $sql = rex_sql::factory(); // $sql->setDebug(); $sql->setQuery(' SELECT name FROM ' . rex::getTablePrefix() . 'metainfo_field WHERE name="' . $from['field'] . '" OR name="' . $to['field'] . '" '); $rows = $sql->getRows(); if ($rows < 2) { if ($rows == 0) { $msg = 'Metainfo fields "' . $from['field'] . '" and "' . $to['field'] . '" not found'; } else { $field = $sql->getValue('name') == $from['field'] ? $to['field'] : $from['field']; $msg = 'Metainfo field "' . $field . '" not found'; } $this->setMessage($msg); return false; } $time = time(); $sql->setQuery(' SELECT id, clang_id, status FROM ' . rex::getTablePrefix() . 'article WHERE ( ' . $from['field'] . ' > 0 AND ' . $from['field'] . ' < ' . $time . ' AND status IN (' . implode(',', $from['before']) . ') AND (' . $to['field'] . ' > ' . $time . ' OR ' . $to['field'] . ' = 0 OR ' . $to['field'] . ' = "") ) OR ( ' . $to['field'] . ' > 0 AND ' . $to['field'] . ' < ' . $time . ' AND status IN (' . implode(',', $to['before']) . ') ) '); $rows = $sql->getRows(); include_once rex_path::addon('structure', 'functions/function_rex_structure.php'); for ($i = 0; $i < $rows; ++$i) { if (in_array($sql->getValue('status'), $from['before'])) { $status = $from['after']; } else { $status = $to['after']; } rex_article_service::articleStatus($sql->getValue('id'), $sql->getValue('clang_id'), $status); $sql->next(); } $this->setMessage('Updated articles: ' . $rows); return true; }
public function setValue($value) { $value = (int) $value; $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'template WHERE id=' . $value . ' AND active=1'); if ($sql->getRows() != 1 && $value != 0) { return rex_i18n::msg('system_setting_default_template_id_invalid'); } rex_config::set('structure/content', 'default_template_id', $value); return true; }
public static function deleteSlices() { $IDs = rex_get('slices'); $sql = rex_sql::factory(); // $sql->setDebug(); $sql->setTable(rex::getTablePrefix() . 'article_slice'); $sql->setWhere("id IN('" . implode("','", $IDs) . "')", array()); $sql->delete(); $_SESSION[__CLASS__]['active'] = 0; die; }
public function execute() { $tables = rex_sql::showTables(1, rex::getTablePrefix()); if (is_array($tables) && !empty($tables)) { $sql = rex_sql::factory(); // $sql->setDebug(); try { $sql->setQuery('OPTIMIZE TABLE ' . implode(', ', $tables)); return true; } catch (rex_sql_exception $e) { return false; } } return false; }
public function handleSave(array $params, rex_sql $sqlFields) { if (rex_request_method() != 'post' || !isset($params['id'])) { return $params; } $sql = rex_sql::factory(); // $sql->setDebug(); $sql->setTable(rex::getTablePrefix() . 'clang'); $sql->setWhere('id=:id', ['id' => $params['id']]); parent::fetchRequestValues($params, $sql, $sqlFields); // do the save only when metafields are defined if ($sql->hasValues()) { $sql->update(); } rex_clang_service::generateCache(); return $params; }
public function __construct() { parent::__construct(); $tableName = rex::getTablePrefix() . 'user'; $this->setSqlDb(1); $this->setSystemId(self::SYSTEM_ID); $this->setSessionDuration(rex::getProperty('session_duration')); $qry = 'SELECT * FROM ' . $tableName . ' WHERE status=1'; $this->setUserQuery($qry . ' AND id = :id'); $this->setLoginQuery($qry . ' AND login = :login AND (login_tries < ' . self::LOGIN_TRIES_1 . ' OR login_tries < ' . self::LOGIN_TRIES_2 . ' AND UNIX_TIMESTAMP(lasttrydate) < ' . (time() - self::RELOGIN_DELAY_1) . ' OR UNIX_TIMESTAMP(lasttrydate) > ' . (time() - self::RELOGIN_DELAY_2) . ' )'); $this->tableName = $tableName; }
public function handleSave(array $params, rex_sql $sqlFields) { if (rex_request_method() != 'post') { return $params; } $article = rex_sql::factory(); // $article->setDebug(); $article->setTable(rex::getTablePrefix() . 'article'); $article->setWhere('id=:id AND clang_id=:clang', ['id' => $params['id'], 'clang' => $params['clang']]); parent::fetchRequestValues($params, $article, $sqlFields); // do the save only when metafields are defined if ($article->hasValues()) { $article->update(); } // Artikel nochmal mit den zusätzlichen Werten neu generieren rex_article_cache::generateMeta($params['id'], $params['clang']); return $params; }
public function __construct() { parent::__construct(); $tableName = rex::getTablePrefix() . 'user'; $this->setSqlDb(1); $this->setSystemId(self::SYSTEM_ID); $this->setSessionDuration(rex::getProperty('session_duration')); $qry = 'SELECT * FROM ' . $tableName . ' WHERE status=1'; $this->setUserQuery($qry . ' AND id = :id'); // XXX because with concat the time into the sql query, users of this class should use checkLogin() immediately after creating the object. $this->setLoginQuery($qry . ' AND login = :login AND (login_tries < ' . self::LOGIN_TRIES_1 . ' OR login_tries < ' . self::LOGIN_TRIES_2 . ' AND UNIX_TIMESTAMP(lasttrydate) < ' . (time() - self::RELOGIN_DELAY_1) . ' OR UNIX_TIMESTAMP(lasttrydate) < ' . (time() - self::RELOGIN_DELAY_2) . ' )'); $this->tableName = $tableName; }
/** * Alle Metafelder löschen, nicht das nach einem Import in der Parameter Tabelle * noch Datensätze zu Feldern stehen, welche nicht als Spalten in der * rex_article angelegt wurden! */ function rex_metainfo_cleanup($epOrParams) { $params = $epOrParams instanceof rex_extension_point ? $epOrParams->getParams() : $epOrParams; // Cleanup nur durchführen, wenn auch die rex_article Tabelle neu angelegt wird if (isset($params['force']) && $params['force'] != true && strpos($params['content'], 'CREATE TABLE `' . rex::getTablePrefix() . 'article`') === false && strpos($params['content'], 'CREATE TABLE ' . rex::getTablePrefix() . 'article') === false) { return; } // check wheter tables exists $tables = rex_sql::showTables(); if (!isset($tables[rex::getTablePrefix() . 'metainfo_field'])) { return false; } // since this extension may be used also when the addon is not yet installed, // require needed classes manually require_once __DIR__ . '/../lib/table_manager.php'; $sql = rex_sql::factory(); $sql->setQuery('SELECT name FROM ' . rex::getTablePrefix() . 'metainfo_field'); for ($i = 0; $i < $sql->getRows(); ++$i) { if (substr($sql->getValue('name'), 0, 4) == 'med_') { $tableManager = new rex_metainfo_table_manager(rex::getTablePrefix() . 'media'); } else { $tableManager = new rex_metainfo_table_manager(rex::getTablePrefix() . 'article'); } $tableManager->deleteColumn($sql->getValue('name')); $sql->next(); } // evtl reste aufräumen $tablePrefixes = ['article' => ['art_', 'cat_'], 'media' => ['med_']]; foreach ($tablePrefixes as $table => $prefixes) { $table = rex::getTablePrefix() . $table; $tableManager = new rex_metainfo_table_manager($table); foreach (rex_sql::showColumns($table) as $column) { $column = $column['name']; if (in_array(substr($column, 0, 4), $prefixes)) { $tableManager->deleteColumn($column); } } } $sql = rex_sql::factory(); $sql->setQuery('DELETE FROM ' . rex::getTablePrefix() . 'metainfo_field'); }
protected function handleSave(array $params, rex_sql $sqlFields) { // Nur speichern wenn auch das MetaForm ausgefüllt wurde // z.b. nicht speichern wenn über be_search select navigiert wurde if (!rex_post('savemeta', 'boolean')) { return $params; } $article = rex_sql::factory(); // $article->setDebug(); $article->setTable(rex::getTablePrefix() . 'article'); $article->setWhere('id=:id AND clang_id=:clang', ['id' => $params['id'], 'clang' => $params['clang']]); $article->setValue('name', rex_post('meta_article_name', 'string')); parent::fetchRequestValues($params, $article, $sqlFields); // do the save only when metafields are defined if ($article->hasValues()) { $article->update(); } rex_article_cache::deleteMeta($params['id'], $params['clang']); rex_extension::registerPoint(new rex_extension_point('ART_META_UPDATED', '', $params)); return $params; }
public function execute() { $article_id = rex_request('article_id', 'int'); $clang = rex_request('clang', 'int'); $slice_id = rex_request('slice_id', 'int'); $direction = rex_request('direction', 'string'); $ooArt = rex_article::get($article_id, $clang); if (!$ooArt instanceof rex_article) { throw new rex_api_exception('Unable to find article with id "' . $article_id . '" and clang "' . $clang . '"!'); } $category_id = $ooArt->getCategoryId(); /** * @var rex_user */ $user = rex::getUser(); // check permissions if (!$user->hasPerm('moveSlice[]')) { throw new rex_api_exception(rex_i18n::msg('no_rights_to_this_function')); } if (!$user->getComplexPerm('structure')->hasCategoryPerm($category_id)) { throw new rex_api_exception(rex_i18n::msg('no_rights_to_this_function')); } // modul und rechte vorhanden ? $CM = rex_sql::factory(); $CM->setQuery('select * from ' . rex::getTablePrefix() . 'article_slice left join ' . rex::getTablePrefix() . 'module on ' . rex::getTablePrefix() . 'article_slice.module_id=' . rex::getTablePrefix() . 'module.id where ' . rex::getTablePrefix() . "article_slice.id='{$slice_id}' and clang_id={$clang}"); if ($CM->getRows() != 1) { throw new rex_api_exception(rex_i18n::msg('module_not_found')); } else { $module_id = (int) $CM->getValue(rex::getTablePrefix() . 'article_slice.module_id'); // ----- RECHTE AM MODUL ? if ($user->getComplexPerm('modules')->hasPerm($module_id)) { $message = rex_content_service::moveSlice($slice_id, $clang, $direction); } else { throw new rex_api_exception(rex_i18n::msg('no_rights_to_this_function')); } } $result = new rex_api_result(true, $message); return $result; }
$content .= ' <table class="table table-striped table-hover"> <thead> <tr> <th class="rex-table-icon"><a href="' . rex_url::currentBackendPage(['function' => 'add']) . '"' . rex::getAccesskey(rex_i18n::msg('action_create'), 'add') . ' title="' . rex_i18n::msg('action_create') . '"><i class="rex-icon rex-icon-add-action"></i></a></th> <th class="rex-table-id">' . rex_i18n::msg('id') . '</th> <th>' . rex_i18n::msg('action_name') . '</th> <th>' . rex_i18n::msg('action_header_preview') . '</th> <th>' . rex_i18n::msg('action_header_presave') . '</th> <th>' . rex_i18n::msg('action_header_postsave') . '</th> <th class="rex-table-action" colspan="2">' . rex_i18n::msg('action_functions') . '</th> </tr> </thead> '; $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'action ORDER BY name'); $rows = $sql->getRows(); if ($rows > 0) { $content .= '<tbody>' . "\n"; for ($i = 0; $i < $rows; ++$i) { $previewmode = []; $presavemode = []; $postsavemode = []; foreach ([1 => 'ADD', 2 => 'EDIT', 4 => 'DELETE'] as $var => $value) { if (($sql->getValue('previewmode') & $var) == $var) { $previewmode[] = $value; } } foreach ([1 => 'ADD', 2 => 'EDIT', 4 => 'DELETE'] as $var => $value) { if (($sql->getValue('presavemode') & $var) == $var) { $presavemode[] = $value;
function rex_metainfo_delete_field($fieldIdOrName) { // Löschen anhand der FieldId if (is_int($fieldIdOrName)) { $fieldQry = 'SELECT * FROM ' . rex::getTablePrefix() . 'metainfo_field WHERE id=:idOrName LIMIT 2'; $invalidField = rex_i18n::msg('minfo_field_error_invalid_fieldid'); } elseif (is_string($fieldIdOrName)) { $fieldQry = 'SELECT * FROM ' . rex::getTablePrefix() . 'metainfo_field WHERE name=:idOrName LIMIT 2'; $invalidField = rex_i18n::msg('minfo_field_error_invalid_name'); } else { throw new InvalidArgumentException('MetaInfos: Unexpected type for $fieldIdOrName!'); } // Feld existiert? $sql = rex_sql::factory(); $sql->setQuery($fieldQry, [':idOrName' => $fieldIdOrName]); if ($sql->getRows() != 1) { return $invalidField; } $name = $sql->getValue('name'); $field_id = $sql->getValue('id'); $prefix = rex_metainfo_meta_prefix($name); $metaTable = rex_metainfo_meta_table($prefix); // Spalte existiert? $sql->setQuery('SELECT * FROM ' . $metaTable . ' LIMIT 1'); if (!in_array($name, $sql->getFieldnames())) { return rex_i18n::msg('minfo_field_error_invalid_name'); } $sql->setTable(rex::getTablePrefix() . 'metainfo_field'); $sql->setWhere(['id' => $field_id]); $sql->delete(); $tableManager = new rex_metainfo_table_manager($metaTable); return $tableManager->deleteColumn($name); }
$sql = rex_sql::factory(); $sql->setQuery('CREATE TABLE IF NOT EXISTS `' . rex::getTablePrefix() . 'yform_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `status` tinyint(1) NOT NULL, `table_name` varchar(100) NOT NULL, `name` varchar(100) NOT NULL, `description` text NOT NULL, `list_amount` tinyint(3) unsigned NOT NULL DEFAULT 50, `list_sortfield` VARCHAR(255) NOT NULL DEFAULT "id", `list_sortorder` ENUM("ASC","DESC") NOT NULL DEFAULT "ASC", `prio` int(11) NOT NULL, `search` tinyint(1) NOT NULL, `hidden` tinyint(1) NOT NULL, `export` tinyint(1) NOT NULL, `import` tinyint(1) NOT NULL, PRIMARY KEY (`id`), UNIQUE(`table_name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;'); $sql->setQuery('CREATE TABLE IF NOT EXISTS `' . rex::getTablePrefix() . 'yform_field` ( `id` int(11) NOT NULL AUTO_INCREMENT, `table_name` varchar(100) NOT NULL, `prio` int(11) NOT NULL, `type_id` varchar(100) NOT NULL, `type_name` varchar(100) NOT NULL, `list_hidden` tinyint(1) NOT NULL, `search` tinyint(1) NOT NULL, `name` text NOT NULL, `label` text NOT NULL, `not_required` TEXT NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;');
$list->setColumnParams('status', ['func' => 'setstatus', 'id' => '###id###', 'neuerstatus' => $sql->getValue('id')]); $status .= $list->getColumnLink('status', '<i class="rex-icon ' . $current . ' ' . $sql->getValue('icon') . ' "></i>'); $sql->next(); } $status .= "</div>"; return $status; }); $content = '<div id="aufgaben">' . $list->get() . '</div>'; $fragment = new rex_fragment(); $fragment->setVar('title', $this->i18n('aufgaben_title')); $fragment->setVar('content', $content, false); echo $fragment->parse('core/page/section.php'); } elseif ($func == 'edit' || $func == 'add') { $fieldset = $func == 'edit' ? $this->i18n('aufgaben_edit') : $this->i18n('aufgaben_add'); $id = rex_request('id', 'int'); $form = rex_form::factory(rex::getTablePrefix() . 'aufgaben', '', 'id=' . $id); $field = $form->addTextField('title'); $field->setLabel($this->i18n('aufgaben_task')); $field->getValidator()->add('notEmpty', $this->i18n('aufgaben_title_empty')); $field = $form->addTextareaField('description', null, ['class' => 'form-control markitupEditor-simple']); $field->setLabel($this->i18n('aufgaben_description')); $field = $form->addSelectField('category'); $field->setLabel($this->i18n('aufgaben_category')); $field->setPrefix('<div class="rex-select-style">'); $field->setSuffix('</div>'); $field->getValidator()->add('notEmpty', $this->i18n('aufgaben_category_empty')); $select = $field->getSelect(); $select->setSize(1); $query = 'SELECT category as label, id FROM rex_aufgaben_categories ORDER BY category'; $select->addOption($this->i18n('aufgaben_please_choose'), ''); $select->addSqlOptions($query);
public static function table() { return rex::getTablePrefix() . 'yform_table'; }
/** * Ermittelt die metainfo felder mit dem Prefix $prefix limitiert auf die Kategorien $restrictions. * * @param string $prefix Feldprefix * @param string $filterCondition SQL Where-Bedingung zum einschränken der Metafelder * * @return rex_sql Metainfofelder */ protected static function getSqlFields($prefix, $filterCondition = '') { // replace LIKE wildcards $prefix = str_replace(['_', '%'], ['\\_', '\\%'], $prefix); $qry = 'SELECT * FROM ' . rex::getTablePrefix() . 'metainfo_field p, ' . rex::getTablePrefix() . 'metainfo_type t WHERE `p`.`type_id` = `t`.`id` AND `p`.`name` LIKE "' . $prefix . '%" ' . $filterCondition . ' ORDER BY priority'; $sqlFields = rex_sql::factory(); //$sqlFields->setDebug(); $sqlFields->setQuery($qry); return $sqlFields; }
$media_name = str_replace(['_', '%'], ['\\_', '\\%'], $media_name); $where = "(f.filename LIKE '%" . $media_name . "%' OR f.title LIKE '%" . $media_name . "%')"; if (rex_addon::get('mediapool')->getConfig('searchmode', 'local') != 'global' && $rex_file_category != 0) { $addTable = rex::getTablePrefix() . 'media_category c, '; $where .= ' AND f.category_id = c.id '; $where .= " AND (c.path LIKE '%|" . $rex_file_category . "|%' OR c.id=" . $rex_file_category . ') '; } } if (isset($args['types'])) { $types = []; foreach (explode(',', $args['types']) as $type) { $types[] = 'LOWER(RIGHT(f.filename, LOCATE(".", REVERSE(f.filename))-1))="' . strtolower(htmlspecialchars($type)) . '"'; } $where .= ' AND (' . implode(' OR ', $types) . ')'; } $qry = 'SELECT * FROM ' . $addTable . rex::getTablePrefix() . 'media f WHERE ' . $where . ' ORDER BY f.updatedate desc, f.id desc'; // ----- EXTENSION POINT $qry = rex_extension::registerPoint(new rex_extension_point('MEDIA_LIST_QUERY', $qry, ['category_id' => $rex_file_category])); $files = rex_sql::factory(); // $files->setDebug(); $files->setQuery($qry); $panel .= '<tbody>'; for ($i = 0; $i < $files->getRows(); ++$i) { $file_id = $files->getValue('id'); $file_name = $files->getValue('filename'); $file_oname = $files->getValue('originalname'); $file_title = $files->getValue('title'); $file_type = $files->getValue('filetype'); $file_size = $files->getValue('filesize'); $file_stamp = rex_formatter::strftime($files->getDateTimeValue('updatedate'), 'datetime'); $file_updateuser = $files->getValue('updateuser');
<form action="' . rex_url::currentBackendPage() . '" method="post"> ' . $content . ' </form>'; echo $message; echo $content; $OUT = false; } } if ($OUT) { if ($success != '') { $message .= rex_view::success($success); } if ($error != '') { $message .= rex_view::error($error); } $list = rex_list::factory('SELECT id, name FROM ' . rex::getTablePrefix() . 'module ORDER BY name'); $list->addTableAttribute('class', 'table-striped table-hover'); $tdIcon = '<i class="rex-icon rex-icon-module"></i>'; $thIcon = '<a href="' . $list->getUrl(['function' => 'add']) . '"' . rex::getAccesskey(rex_i18n::msg('create_module'), 'add') . ' title="' . rex_i18n::msg('create_module') . '"><i class="rex-icon rex-icon-add-module"></i></a>'; $list->addColumn($thIcon, $tdIcon, 0, ['<th class="rex-table-icon">###VALUE###</th>', '<td class="rex-table-icon">###VALUE###</td>']); $list->setColumnParams($thIcon, ['function' => 'edit', 'module_id' => '###id###']); $list->setColumnLabel('id', rex_i18n::msg('id')); $list->setColumnLayout('id', ['<th class="rex-table-id">###VALUE###</th>', '<td class="rex-table-id" data-title="' . rex_i18n::msg('id') . '">###VALUE###</td>']); $list->setColumnLabel('name', rex_i18n::msg('module_description')); $list->setColumnParams('name', ['function' => 'edit', 'module_id' => '###id###']); $list->addColumn(rex_i18n::msg('module_functions'), '<i class="rex-icon rex-icon-edit"></i> ' . rex_i18n::msg('edit')); $list->setColumnLayout(rex_i18n::msg('module_functions'), ['<th class="rex-table-action" colspan="2">###VALUE###</th>', '<td class="rex-table-action">###VALUE###</td>']); $list->setColumnParams(rex_i18n::msg('module_functions'), ['function' => 'edit', 'module_id' => '###id###']); $list->addColumn(rex_i18n::msg('delete_module'), '<i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('delete')); $list->setColumnLayout(rex_i18n::msg('delete_module'), ['', '<td class="rex-table-action">###VALUE###</td>']); $list->setColumnParams(rex_i18n::msg('delete_module'), ['function' => 'delete', 'module_id' => '###id###']);
if ($article->getArticleId() != 0) { $articleLimit = ' AND ' . rex::getTablePrefix() . 'article_slice.article_id=' . $article->getArticleId(); } $sliceLimit = ''; $escapeSql = rex_sql::factory(); $sliceDate = ' AND ' . rex::getTablePrefix() . 'article_slice.history_date = ' . $escapeSql->escape($history_date); return 'SELECT ' . rex::getTablePrefix() . 'module.id, ' . rex::getTablePrefix() . 'module.name, ' . rex::getTablePrefix() . 'module.output, ' . rex::getTablePrefix() . 'module.input, ' . rex::getTablePrefix() . 'article_slice.*, ' . rex::getTablePrefix() . 'article.parent_id FROM ' . rex_article_slice_history::getTable() . ' as ' . rex::getTablePrefix() . 'article_slice LEFT JOIN ' . rex::getTablePrefix() . 'module ON ' . rex::getTablePrefix() . 'article_slice.module_id=' . rex::getTablePrefix() . 'module.id LEFT JOIN ' . rex::getTablePrefix() . 'article ON ' . rex::getTablePrefix() . 'article_slice.article_id=' . rex::getTablePrefix() . 'article.id WHERE ' . rex::getTablePrefix() . "article_slice.clang_id='" . $article->getClang() . "' AND\n " . rex::getTablePrefix() . "article.clang_id='" . $article->getClang() . "' AND\n " . rex::getTablePrefix() . "article_slice.revision='" . $history_revision . "'\n " . $articleLimit . ' ' . $sliceLimit . ' ' . $sliceDate . ' ORDER BY ' . rex::getTablePrefix() . 'article_slice.priority'; } }); } if (rex::isBackend() && rex::getUser() && rex::getUser()->hasPerm('history[article_rollback]')) { rex_extension::register(['ART_SLICES_COPY', 'SLICE_ADD', 'SLICE_UPDATE', 'SLICE_MOVE', 'SLICE_DELETE'], function (rex_extension_point $ep) { switch ($ep->getName()) { case 'ART_SLICES_COPY': $type = 'slices_copy'; break; case 'SLICE_MOVE': $type = 'slice_' . $ep->getParam('direction'); break; default: $type = strtolower($ep->getName()); }
private static function getRequiredTables() { return [rex::getTablePrefix() . 'clang', rex::getTablePrefix() . 'user', rex::getTablePrefix() . 'config']; }
protected function save() { $fieldName = $this->elementPostValue($this->getFieldsetName(), 'name'); // Den alten Wert aus der DB holen // Dies muss hier geschehen, da in parent::save() die Werte fuer die DB mit den // POST werten ueberschrieben werden! $fieldOldName = ''; $fieldOldPriority = 9999999999999; // dirty, damit die prio richtig l�uft... $fieldOldDefault = ''; if ($this->sql->getRows() == 1) { $fieldOldName = $this->sql->getValue('name'); $fieldOldPriority = $this->sql->getValue('priority'); $fieldOldDefault = $this->sql->getValue('default'); } if (parent::save()) { $this->organizePriorities($this->elementPostValue($this->getFieldsetName(), 'priority'), $fieldOldPriority); $fieldName = $this->addPrefix($fieldName); $fieldType = $this->elementPostValue($this->getFieldsetName(), 'type_id'); $fieldDefault = $this->elementPostValue($this->getFieldsetName(), 'default'); $sql = rex_sql::factory(); $sql->setDebug($this->debug); $result = $sql->getArray('SELECT `dbtype`, `dblength` FROM `' . rex::getTablePrefix() . 'metainfo_type` WHERE id=' . $fieldType); $fieldDbType = $result[0]['dbtype']; $fieldDbLength = $result[0]['dblength']; // TEXT Spalten duerfen in MySQL keine Defaultwerte haben if ($fieldDbType == 'text') { $fieldDefault = null; } if ($this->isEditMode()) { // Spalte in der Tabelle ver�ndern $tmRes = $this->tableManager->editColumn($fieldOldName, $fieldName, $fieldDbType, $fieldDbLength, $fieldDefault); } else { // Spalte in der Tabelle anlegen $tmRes = $this->tableManager->addColumn($fieldName, $fieldDbType, $fieldDbLength, $fieldDefault); } rex_delete_cache(); if ($tmRes) { // DefaultWerte setzen if ($fieldDefault != $fieldOldDefault) { try { $upd = rex_sql::factory(); $upd->setDebug($this->debug); $upd->setTable($this->tableManager->getTableName()); $upd->setWhere([$fieldName => $fieldOldDefault]); $upd->setValue($fieldName, $fieldDefault); $upd->update(); return true; } catch (rex_sql_exception $e) { return false; } } // Default werte haben schon zuvor gepasst, daher true zur�ckgeben return true; } } return false; }