예제 #1
0
파일: revision.php 프로젝트: staabm/redaxo
 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;
 }
예제 #2
0
 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();
 }
예제 #3
0
파일: role.php 프로젝트: staabm/redaxo
 /**
  * {@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;
 }
예제 #7
0
파일: util.php 프로젝트: staabm/redaxo
 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;
 }
예제 #8
0
 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;
 }
예제 #9
0
파일: cronjob.php 프로젝트: skerbis/redaxo
 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;
 }
예제 #11
0
 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;
 }
예제 #12
0
파일: cronjob.php 프로젝트: staabm/redaxo
 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;
 }
예제 #13
0
 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;
 }
예제 #14
0
 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;
 }
예제 #15
0
 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;
 }
예제 #16
0
 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;
 }
예제 #17
0
/**
 * 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');
}
예제 #18
0
 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;
 }
예제 #19
0
 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;
 }
예제 #20
0
 $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;
예제 #21
0
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);
}
예제 #22
0
$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;');
예제 #23
0
            $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);
예제 #24
0
파일: table.php 프로젝트: xong/redaxo_yform
 public static function table()
 {
     return rex::getTablePrefix() . 'yform_table';
 }
예제 #25
0
파일: handler.php 프로젝트: DECAF/redaxo
 /**
  * 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;
 }
예제 #26
0
파일: media.php 프로젝트: alsahh/redaxo
     $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');
예제 #27
0
            <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###']);
예제 #28
0
파일: boot.php 프로젝트: redaxo/redaxo
            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());
        }
예제 #29
0
파일: import.php 프로젝트: alsahh/redaxo
 private static function getRequiredTables()
 {
     return [rex::getTablePrefix() . 'clang', rex::getTablePrefix() . 'user', rex::getTablePrefix() . 'config'];
 }
예제 #30
0
 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;
 }