예제 #1
0
 public function execute()
 {
     if (!rex::getUser()->isAdmin()) {
         throw new rex_api_exception('user has no permission for this operation!');
     }
     $type = rex_get('type', 'string');
     switch ($type) {
         case 'articles':
             $prefix = 'art\\_%';
             $defaultFields = [['translate:online_from', 'art_online_from', '1', '', '10', ''], ['translate:online_to', 'art_online_to', '2', '', '10', ''], ['translate:description', 'art_description', '3', '', '2', '']];
             break;
         case 'media':
             $prefix = 'med\\_%';
             $defaultFields = [['translate:pool_file_description', 'med_description', '1', '', '2', ''], ['translate:pool_file_copyright', 'med_copyright', '2', '', '1', '']];
             break;
         default:
             throw new rex_api_exception(sprintf('metainfo type "%s" does not have default field.', $type));
     }
     $existing = rex_sql::factory()->getArray('SELECT name FROM ' . rex::getTable('metainfo_field') . ' WHERE name LIKE ?', [$prefix]);
     $existing = array_column($existing, 'name', 'name');
     foreach ($defaultFields as $field) {
         if (!isset($existing[$field[1]])) {
             $return = call_user_func_array('rex_metainfo_add_field', $field);
             if (is_string($return)) {
                 throw new rex_api_exception($return);
             }
         }
     }
     return new rex_api_result(true, rex_i18n::msg('minfo_default_fields_created'));
 }
예제 #2
0
파일: var_link.php 프로젝트: DECAF/redaxo
 public static function getWidget($id, $name, $value, array $args = [])
 {
     $art_name = '';
     $art = rex_article::get($value);
     $category = 0;
     // Falls ein Artikel vorausgewählt ist, dessen Namen anzeigen und beim öffnen der Linkmap dessen Kategorie anzeigen
     if ($art instanceof rex_article) {
         $art_name = $art->getName();
         $category = $art->getCategoryId();
     }
     $open_params = '&clang=' . rex_clang::getCurrentId();
     if ($category || isset($args['category']) && ($category = (int) $args['category'])) {
         $open_params .= '&category_id=' . $category;
     }
     $class = ' rex-disabled';
     $open_func = '';
     $delete_func = '';
     if (rex::getUser()->getComplexPerm('structure')->hasStructurePerm()) {
         $class = '';
         $open_func = 'openLinkMap(\'REX_LINK_' . $id . '\', \'' . $open_params . '\');';
         $delete_func = 'deleteREXLink(' . $id . ');';
     }
     $e = [];
     $e['field'] = '<input class="form-control" type="text" name="REX_LINK_NAME[' . $id . ']" value="' . htmlspecialchars($art_name) . '" id="REX_LINK_' . $id . '_NAME" readonly="readonly" /><input type="hidden" name="' . $name . '" id="REX_LINK_' . $id . '" value="' . $value . '" />';
     $e['functionButtons'] = '
                     <a href="#" class="btn btn-popup' . $class . '" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_link_open') . '"><i class="rex-icon rex-icon-open-linkmap"></i></a>
                     <a href="#" class="btn btn-popup' . $class . '" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_link_delete') . '"><i class="rex-icon rex-icon-delete-link"></i></a>';
     $fragment = new rex_fragment();
     $fragment->setVar('elements', [$e], false);
     $media = $fragment->parse('core/form/widget.php');
     return $media;
 }
예제 #3
0
 /**
  * @param rex_be_page[] $blockPages
  *
  * @return array
  */
 private function _getNavigation(array $blockPages)
 {
     $navigation = [];
     foreach ($blockPages as $page) {
         if ($page->isHidden() || !$page->checkPermission(rex::getUser())) {
             continue;
         }
         $n = [];
         $n['linkClasses'] = [];
         $n['itemClasses'] = [];
         $n['linkAttr'] = [];
         $n['itemAttr'] = [];
         $n['itemClasses'][] = $page->getItemAttr('class');
         $n['linkClasses'][] = $page->getItemAttr('class');
         foreach ($page->getItemAttr(null) as $name => $value) {
             $n['itemAttr'][$name] = trim($value);
         }
         foreach ($page->getLinkAttr(null) as $name => $value) {
             $n['linkAttr'][$name] = trim($value);
         }
         $n['href'] = str_replace('&', '&amp;', $page->getHref());
         $n['title'] = $page->getTitle();
         $n['active'] = $page->isActive();
         $subpages = $page->getSubpages();
         if (is_array($subpages) && !empty($subpages)) {
             $n['children'] = $this->_getNavigation($subpages);
         }
         $navigation[] = $n;
     }
     return $navigation;
 }
예제 #4
0
 public static function wildcardFormControlElement(\rex_extension_point $ep)
 {
     if (!\rex::getUser()->getComplexPerm('clang')->hasAll()) {
         $subject = $ep->getSubject();
         unset($subject['delete']);
         $ep->setSubject($subject);
     }
 }
예제 #5
0
파일: rex_test.php 프로젝트: staabm/redaxo
 public function testGetUser()
 {
     // there is no user, when tests are run from CLI
     if (PHP_SAPI === 'cli') {
         return;
     }
     $this->assertNotNull(rex::getUser(), 'user is not null');
     $this->assertInstanceOf('rex_user', rex::getUser(), 'returns a user of correct class');
 }
예제 #6
0
 public static function getWidget($id, $name, $value, array $args = [])
 {
     $open_params = '';
     if (isset($args['category']) && ($category = (int) $args['category'])) {
         $open_params .= '&amp;rex_file_category=' . $category;
     }
     foreach ($args as $aname => $avalue) {
         $open_params .= '&amp;args[' . $aname . ']=' . urlencode($avalue);
     }
     $wdgtClass = ' rex-js-widget-medialist';
     if (isset($args['preview']) && $args['preview']) {
         $wdgtClass .= ' rex-js-widget-preview';
         if (rex_addon::get('media_manager')->isAvailable()) {
             $wdgtClass .= ' rex-js-widget-preview-media-manager';
         }
     }
     $options = '';
     $medialistarray = explode(',', $value);
     if (is_array($medialistarray)) {
         foreach ($medialistarray as $file) {
             if ($file != '') {
                 $options .= '<option value="' . $file . '">' . $file . '</option>';
             }
         }
     }
     $disabled = ' disabled';
     $open_func = '';
     $add_func = '';
     $delete_func = '';
     $view_func = '';
     if (rex::getUser()->getComplexPerm('media')->hasMediaPerm()) {
         $disabled = '';
         $open_func = 'openREXMedialist(' . $id . ',\'' . $open_params . '\');';
         $add_func = 'addREXMedialist(' . $id . ',\'' . $open_params . '\');';
         $delete_func = 'deleteREXMedialist(' . $id . ');';
         $view_func = 'viewREXMedialist(' . $id . ',\'' . $open_params . '\');';
     }
     $e = [];
     $e['before'] = '<div class="rex-js-widget' . $wdgtClass . '">';
     $e['field'] = '<select class="form-control" name="REX_MEDIALIST_SELECT[' . $id . ']" id="REX_MEDIALIST_SELECT_' . $id . '" size="8">' . $options . '</select><input type="hidden" name="' . $name . '" id="REX_MEDIALIST_' . $id . '" value="' . $value . '" />';
     $e['moveButtons'] = '
             <a href="#" class="btn btn-popup" onclick="moveREXMedialist(' . $id . ',\'top\');return false;" title="' . rex_i18n::msg('var_medialist_move_top') . '"><i class="rex-icon rex-icon-top"></i></a>
             <a href="#" class="btn btn-popup" onclick="moveREXMedialist(' . $id . ',\'up\');return false;" title="' . rex_i18n::msg('var_medialist_move_up') . '"><i class="rex-icon rex-icon-up"></i></a>
             <a href="#" class="btn btn-popup" onclick="moveREXMedialist(' . $id . ',\'down\');return false;" title="' . rex_i18n::msg('var_medialist_move_down') . '"><i class="rex-icon rex-icon-down"></i></a>
             <a href="#" class="btn btn-popup" onclick="moveREXMedialist(' . $id . ',\'bottom\');return false;" title="' . rex_i18n::msg('var_medialist_move_bottom') . '"><i class="rex-icon rex-icon-bottom"></i></a>';
     $e['functionButtons'] = '
             <a href="#" class="btn btn-popup" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_media_open') . '"' . $disabled . '><i class="rex-icon rex-icon-open-mediapool"></i></a>
             <a href="#" class="btn btn-popup" onclick="' . $add_func . 'return false;" title="' . rex_i18n::msg('var_media_new') . '"' . $disabled . '><i class="rex-icon rex-icon-add-media"></i></a>
             <a href="#" class="btn btn-popup" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_media_remove') . '"' . $disabled . '><i class="rex-icon rex-icon-delete-media"></i></a>
             <a href="#" class="btn btn-popup" onclick="' . $view_func . 'return false;" title="' . rex_i18n::msg('var_media_view') . '"' . $disabled . '><i class="rex-icon rex-icon-view-media"></i></a>';
     $e['after'] = '<div class="rex-js-media-preview"></div></div>';
     $fragment = new rex_fragment();
     $fragment->setVar('elements', [$e], false);
     $media = $fragment->parse('core/form/widget_list.php');
     return $media;
 }
예제 #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
 protected function addCatOption(rex_media_category $mediacat)
 {
     if (!$this->check_perms || $this->check_perms && rex::getUser()->getComplexPerm('media')->hasCategoryPerm($mediacat->getId())) {
         $mid = $mediacat->getId();
         $mname = $mediacat->getName() . ' [' . $mid . ']';
         $this->addOption($mname, $mid, $mid, $mediacat->getParentId());
         $childs = $mediacat->getChildren();
         if (is_array($childs)) {
             foreach ($childs as $child) {
                 $this->addCatOption($child);
             }
         }
     }
 }
예제 #9
0
 public function setUp()
 {
     if (rex::getUser()) {
         $this->skipped = true;
         $this->markTestSkipped('The rex_backend_login class can not be tested when test suite is running in redaxo backend.');
     }
     $adduser = rex_sql::factory();
     $adduser->setTable(rex::getTablePrefix() . 'user');
     $adduser->setValue('name', 'test user');
     $adduser->setValue('login', $this->login);
     $adduser->setValue('password', rex_login::passwordHash($this->password));
     $adduser->setValue('status', '1');
     $adduser->setValue('login_tries', '0');
     $adduser->setValue('cookiekey', $this->cookiekey);
     $adduser->insert();
 }
예제 #10
0
 public function execute()
 {
     if (!rex::getUser()->isAdmin()) {
         throw new rex_api_exception('You do not have the permission!');
     }
     $addonkey = rex_request('addonkey', 'string');
     try {
         rex_install_webservice::delete(rex_install_packages::getPath('?package=' . $addonkey . '&file_id=' . rex_request('file', 'int', 0)));
     } catch (rex_functional_exception $e) {
         throw new rex_api_exception($e->getMessage());
     }
     unset($_REQUEST['addonkey']);
     unset($_REQUEST['file']);
     rex_install_packages::deleteCache();
     return new rex_api_result(true, rex_i18n::msg('install_info_addon_deleted', $addonkey));
 }
예제 #11
0
 public function execute()
 {
     // check if a new category was folded
     $category_id = rex_request('toggle_category_id', 'int', -1);
     $category_id = rex_category::get($category_id) ? $category_id : -1;
     /**
      * @var rex_user
      */
     $user = rex::getUser();
     if (!$user->getComplexPerm('structure')->hasCategoryPerm($category_id)) {
         throw new rex_api_exception('user has no permission for this category!');
     }
     $context = rex_context::fromGet();
     $categoryTree = new rex_sitemap_category_tree($context);
     $tree = $categoryTree->getTree($category_id);
     $result = new rex_api_result(true);
     return $result;
 }
예제 #12
0
 public static function getWidget($id, $name, $value, array $args = [])
 {
     $open_params = '&clang=' . rex_clang::getCurrentId();
     if (isset($args['category']) && ($category = (int) $args['category'])) {
         $open_params .= '&amp;category_id=' . $category;
     }
     $options = '';
     $linklistarray = explode(',', $value);
     if (is_array($linklistarray)) {
         foreach ($linklistarray as $link) {
             if ($link != '') {
                 if ($article = rex_article::get($link)) {
                     $options .= '<option value="' . $link . '">' . htmlspecialchars($article->getName()) . '</option>';
                 }
             }
         }
     }
     $disabled = ' disabled';
     $open_func = '';
     $delete_func = '';
     if (rex::getUser()->getComplexPerm('structure')->hasStructurePerm()) {
         $disabled = '';
         $open_func = 'openREXLinklist(' . $id . ', \'' . $open_params . '\');';
         $delete_func = 'deleteREXLinklist(' . $id . ');';
     }
     $e = [];
     $e['field'] = '
             <select class="form-control" name="REX_LINKLIST_SELECT[' . $id . ']" id="REX_LINKLIST_SELECT_' . $id . '" size="10">
                 ' . $options . '
             </select>
             <input type="hidden" name="' . $name . '" id="REX_LINKLIST_' . $id . '" value="' . $value . '" />';
     $e['moveButtons'] = '
                 <a href="#" class="btn btn-popup" onclick="moveREXLinklist(' . $id . ',\'top\');return false;" title="' . rex_i18n::msg('var_linklist_move_top') . '"><i class="rex-icon rex-icon-top"></i></a>
                 <a href="#" class="btn btn-popup" onclick="moveREXLinklist(' . $id . ',\'up\');return false;" title="' . rex_i18n::msg('var_linklist_move_up') . '"><i class="rex-icon rex-icon-up"></i></a>
                 <a href="#" class="btn btn-popup" onclick="moveREXLinklist(' . $id . ',\'down\');return false;" title="' . rex_i18n::msg('var_linklist_move_down') . '"><i class="rex-icon rex-icon-down"></i></a>
                 <a href="#" class="btn btn-popup" onclick="moveREXLinklist(' . $id . ',\'bottom\');return false;" title="' . rex_i18n::msg('var_linklist_move_bottom') . '"><i class="rex-icon rex-icon-bottom"></i></a>';
     $e['functionButtons'] = '
                 <a href="#" class="btn btn-popup" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_link_open') . '"' . $disabled . '><i class="rex-icon rex-icon-open-linkmap"></i></a>
                 <a href="#" class="btn btn-popup" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_link_delete') . '"' . $disabled . '><i class="rex-icon rex-icon-delete-link"></i></a>';
     $fragment = new rex_fragment();
     $fragment->setVar('elements', [$e], false);
     $link = $fragment->parse('core/form/widget_list.php');
     return $link;
 }
예제 #13
0
파일: var_media.php 프로젝트: staabm/redaxo
 public static function getWidget($id, $name, $value, array $args = [])
 {
     $open_params = '';
     if (isset($args['category']) && ($category = (int) $args['category'])) {
         $open_params .= '&amp;rex_file_category=' . $category;
     }
     foreach ($args as $aname => $avalue) {
         $open_params .= '&amp;args[' . urlencode($aname) . ']=' . urlencode($avalue);
     }
     $wdgtClass = ' rex-js-widget-media';
     if (isset($args['preview']) && $args['preview']) {
         $wdgtClass .= ' rex-js-widget-preview';
         if (rex_addon::get('media_manager')->isAvailable()) {
             $wdgtClass .= ' rex-js-widget-preview-media-manager';
         }
     }
     $disabled = ' disabled';
     $open_func = '';
     $add_func = '';
     $delete_func = '';
     $view_func = '';
     if (rex::getUser()->getComplexPerm('media')->hasMediaPerm()) {
         $disabled = '';
         $open_func = 'openREXMedia(' . $id . ',\'' . $open_params . '\');';
         $add_func = 'addREXMedia(' . $id . ',\'' . $open_params . '\');';
         $delete_func = 'deleteREXMedia(' . $id . ');';
         $view_func = 'viewREXMedia(' . $id . ',\'' . $open_params . '\');';
     }
     $e = [];
     $e['before'] = '<div class="rex-js-widget' . $wdgtClass . '">';
     $e['field'] = '<input class="form-control" type="text" name="' . $name . '" value="' . $value . '" id="REX_MEDIA_' . $id . '" readonly />';
     $e['functionButtons'] = '
             <a href="#" class="btn btn-popup" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_media_open') . '"' . $disabled . '><i class="rex-icon rex-icon-open-mediapool"></i></a>
             <a href="#" class="btn btn-popup" onclick="' . $add_func . 'return false;" title="' . rex_i18n::msg('var_media_new') . '"' . $disabled . '><i class="rex-icon rex-icon-add-media"></i></a>
             <a href="#" class="btn btn-popup" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_media_remove') . '"' . $disabled . '><i class="rex-icon rex-icon-delete-media"></i></a>
             <a href="#" class="btn btn-popup" onclick="' . $view_func . 'return false;" title="' . rex_i18n::msg('var_media_view') . '"' . $disabled . '><i class="rex-icon rex-icon-view-media"></i></a>';
     $e['after'] = '<div class="rex-js-media-preview"></div></div>';
     $fragment = new rex_fragment();
     $fragment->setVar('elements', [$e], false);
     $media = $fragment->parse('core/form/widget.php');
     return $media;
 }
예제 #14
0
 public function execute()
 {
     if (!rex::getUser()->isAdmin()) {
         throw new rex_api_exception('You do not have the permission!');
     }
     $addonkey = rex_request('addonkey', 'string');
     $upload = rex_request('upload', [['upload_file', 'bool'], ['oldversion', 'string'], ['redaxo', 'array[string]'], ['description', 'string'], ['status', 'int'], ['replace_assets', 'bool'], ['ignore_tests', 'bool']]);
     $file = [];
     $archive = null;
     $file['version'] = $upload['upload_file'] ? rex_addon::get($addonkey)->getVersion() : $upload['oldversion'];
     $file['redaxo_versions'] = $upload['redaxo'];
     $file['description'] = $upload['description'];
     $file['status'] = $upload['status'];
     try {
         if ($upload['upload_file']) {
             $archive = rex_path::addonCache('install', md5($addonkey . time()) . '.zip');
             $exclude = [];
             if ($upload['replace_assets']) {
                 $exclude[] = 'assets';
             }
             if ($upload['ignore_tests']) {
                 $exclude[] = 'tests';
             }
             rex_install_archive::copyDirToArchive(rex_path::addon($addonkey), $archive, null, $exclude);
             if ($upload['replace_assets']) {
                 rex_install_archive::copyDirToArchive(rex_url::addonAssets($addonkey), $archive, $addonkey . '/assets');
             }
             $file['checksum'] = md5_file($archive);
         }
         rex_install_webservice::post(rex_install_packages::getPath('?package=' . $addonkey . '&file_id=' . rex_request('file', 'int', 0)), ['file' => $file], $archive);
     } catch (rex_functional_exception $e) {
         throw new rex_api_exception($e->getMessage());
     }
     if ($archive) {
         rex_file::delete($archive);
     }
     unset($_REQUEST['addonkey']);
     unset($_REQUEST['file']);
     rex_install_packages::deleteCache();
     return new rex_api_result(true, rex_i18n::msg('install_info_addon_uploaded', $addonkey));
 }
예제 #15
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;
 }
예제 #16
0
 public function execute()
 {
     if (!rex::getUser()->isAdmin()) {
         throw new rex_api_exception('You do not have the permission!');
     }
     $this->addonkey = rex_request('addonkey', 'string');
     $function = static::GET_PACKAGES_FUNCTION;
     $packages = rex_install_packages::$function();
     $this->fileId = rex_request('file', 'int');
     if (!isset($packages[$this->addonkey]['files'][$this->fileId])) {
         return null;
     }
     $this->file = $packages[$this->addonkey]['files'][$this->fileId];
     $this->checkPreConditions();
     try {
         $archivefile = rex_install_webservice::getArchive($this->file['path']);
     } catch (rex_functional_exception $e) {
         throw new rex_api_exception($e->getMessage());
     }
     $message = '';
     $this->archive = $archivefile;
     if ($this->file['checksum'] != md5_file($archivefile)) {
         $message = rex_i18n::msg('install_warning_zip_wrong_checksum');
     } elseif (!$this->isCorrectFormat($archivefile)) {
         $message = rex_i18n::msg('install_warning_zip_wrong_format');
     } elseif (is_string($msg = $this->doAction())) {
         $message = $msg;
     }
     rex_file::delete($archivefile);
     if ($message) {
         $message = rex_i18n::msg('install_warning_addon_not_' . static::VERB, $this->addonkey) . '<br />' . $message;
         $success = false;
     } else {
         $message = rex_i18n::msg('install_info_addon_' . static::VERB, $this->addonkey) . (static::SHOW_LINK ? ' <a href="' . rex_url::backendPage('packages') . '">' . rex_i18n::msg('install_to_addon_page') . '</a>' : '');
         $success = true;
         unset($_REQUEST['addonkey']);
     }
     return new rex_api_result($success, $message);
 }
 public function show_counter()
 {
     $counter = 0;
     $current_user = rex::getUser()->getId();
     $sql_counter = rex_sql::factory();
     //$sql_counter->setDebug();
     $sql_counter->setQuery('SELECT counter FROM rex_aufgaben_user_settings WHERE user = '******'</i> Aufgaben <span class="label label-default">' . $counter . '</span></a>';
         $counter = $sql_counter->getValue('counter');
         if ($counter > 0) {
             $ersetzen = '</i> Aufgaben <span class="label label-danger">' . $counter . '</span></a>';
         } else {
             $ersetzen = '</i> Aufgaben <span class="label label-default">' . $counter . '</span></a>';
         }
         rex_extension::register('OUTPUT_FILTER', function (rex_extension_point $ep) use($ersetzen) {
             $suchmuster = '</i> Aufgaben';
             $ersetzen = $ersetzen;
             $ep->setSubject(str_replace($suchmuster, $ersetzen, $ep->getSubject()));
         });
     }
 }
예제 #18
0
         $aufgabe = $list->getValue('title');
     }
     if ($list->getValue('description')) {
         $text = $list->getValue('description');
         if (rex_addon::get('textile')->isAvailable()) {
             $text = str_replace('<br />', '', $text);
             $text = rex_textile::parse($text);
             $text = str_replace('###', '&#x20;', $text);
         }
         if (rex_addon::get('rex_markitup')->isAvailable()) {
             $text = rex_markitup::parseOutput('textile', $text);
         }
         if (!rex_addon::get('rex_markitup')->isAvailable() and !rex_addon::get('textile')->isAvailable()) {
             $text = str_replace(PHP_EOL, '<br/>', $text);
         }
         $user_name = rex::getUser()->getValue('login');
         $beschreibung = '<div id="collapse###id###" class="collapse"><br/>' . $text . '</div>';
     } else {
         $beschreibung = '';
     }
     $aufgabe .= $beschreibung;
     return $aufgabe;
 });
 // --------------------
 //
 //  UpdateDate
 //
 // --------------------
 $list->setColumnLabel('updatedate', $this->i18n('aufgaben_last_update'));
 $list->setColumnLayout('updatedate', ['<th>###VALUE###</th>', '<td data-title="' . $this->i18n('aufgaben_last_update') . '" class="td_updatedate">###VALUE###</td>']);
 $list->setColumnFormat('updatedate', 'custom', function ($params) {
예제 #19
0
 public function getDataPage()
 {
     rex_extension::registerPoint(new rex_extension_point('YFORM_MANAGER_DATA_PAGE', $this));
     // ********************************************* DATA ADD/EDIT/LIST
     $func = rex_request('func', 'string', '');
     $data_id = rex_request('data_id', 'int', '');
     $show_list = true;
     // -------------- rex_yform_manager_filter and sets
     $rex_yform_filter = rex_request('rex_yform_filter', 'array');
     $rex_yform_set = rex_request('rex_yform_set', 'array');
     // -------------- opener - popup for selection
     $popup = false;
     $rex_yform_manager_opener = rex_request('rex_yform_manager_opener', 'array');
     if (count($rex_yform_manager_opener) > 0) {
         if (isset($rex_yform_manager_opener['id']) && $rex_yform_manager_opener['id'] != '') {
             $popup = true;
             // id, field, multiple
         }
     }
     // -------------- filter - popup for selection
     if (count($rex_yform_filter) > 0) {
         $popup = true;
     }
     if (is_bool($p = rex_request('popup', 'bool', null))) {
         $popup = $p;
         $this->setLinkVars(array('popup' => $p ? 1 : 0));
     }
     // SearchObject
     $searchObject = new rex_yform_manager_search($this->table);
     $searchObject->setLinkVars(array("list" => rex_request('list', 'string', '')));
     $searchObject->setLinkVars(array("start" => rex_request('start', 'string', '')));
     $searchObject->setLinkVars(array("sort" => rex_request('sort', 'string', '')));
     $searchObject->setLinkVars(array("sorttype" => rex_request('sorttype', 'string', '')));
     $searchObject->setLinkVars($this->getLinkVars());
     if (count($rex_yform_filter) > 0) {
         foreach ($rex_yform_filter as $k => $v) {
             if (is_array($v)) {
                 foreach ($v as $k2 => $v2) {
                     $searchObject->setLinkVars(array('rex_yform_filter[' . $k . '][' . $k2 . ']' => $v2));
                 }
             } else {
                 $searchObject->setLinkVars(array('rex_yform_filter[' . $k . ']' => $v));
             }
         }
     }
     if (count($rex_yform_set) > 0) {
         foreach ($rex_yform_set as $k => $v) {
             if (is_array($v)) {
                 foreach ($v as $k2 => $v2) {
                     $searchObject->setLinkVars(array('rex_yform_set[' . $k . '][' . $k2 . ']' => $v2));
                 }
             } else {
                 $searchObject->setLinkVars(array('rex_yform_set[' . $k . ']' => $v));
             }
         }
     }
     if (count($rex_yform_manager_opener) > 0) {
         foreach ($rex_yform_manager_opener as $k => $v) {
             $searchObject->setLinkVars(array('rex_yform_manager_opener[' . $k . ']' => $v));
         }
     }
     $searchform = '';
     if ($this->hasDataPageFunction('search')) {
         $searchform = '<div class="rex-addon-output">
                          <h3 class="rex-hl2">' . rex_i18n::msg('yform_manager_search') . '</h3>
                          <div class="rex-addon-content">
                         <div class="yform" id="rex-yform">' . $searchObject->getForm() . '</div>
                       </div>
                       </div>';
     }
     // -------------- DEFAULT - LISTE AUSGEBEN
     $link_vars = '';
     foreach ($this->getLinkVars() as $k => $v) {
         $link_vars .= '&' . urlencode($k) . '=' . urlencode($v);
     }
     echo rex_view::title(rex_i18n::msg('yform_table') . ': ' . rex_i18n::translate($this->table->getName()) . ' <small>[' . $this->table->getTablename() . ']</small>', '');
     echo rex_extension::registerPoint(new rex_extension_point('YFORM_MANAGER_REX_INFO', ''));
     $show_editpage = true;
     $show_editpage = rex_extension::registerPoint(new rex_extension_point('YFORM_MANAGER_DATA_EDIT_FUNC', $show_editpage, ['table' => $this->table, 'link_vars' => $this->getLinkVars()]));
     if ($show_editpage) {
         // -------------- DB FELDER HOLEN
         $field_names = array();
         foreach ($this->table->getValueFields() as $field) {
             $field_names[] = $field->getName();
         }
         // -------------- DB DATA HOLEN
         $data = array();
         if ($data_id != '') {
             $gd = rex_sql::factory();
             $gd->setQuery('select * from ' . $this->table->getTableName() . ' where id=' . $data_id);
             if ($gd->getRows() == 1) {
                 $datas = $gd->getArray();
                 $data = current($datas);
             } else {
                 $data_id = '';
             }
         }
         // -------------- Opener
         foreach ($rex_yform_manager_opener as $k => $v) {
             $link_vars .= '&rex_yform_manager_opener[' . $k . ']=' . urlencode($v);
         }
         // -------------- Searchfields / Searchtext
         $link_vars .= '&' . http_build_query($searchObject->getSearchVars());
         // -------------- FILTER UND SETS PR†FEN
         $em_url_filter = '';
         if (count($rex_yform_filter) > 0) {
             foreach ($rex_yform_filter as $k => $v) {
                 if (!in_array($k, $field_names)) {
                     unset($rex_yform_filter[$k]);
                 }
             }
             $em_url_filter .= '&' . http_build_query(compact('rex_yform_filter'));
         }
         $em_url_set = '';
         if (count($rex_yform_set) > 0) {
             foreach ($rex_yform_set as $k => $v) {
                 if (!in_array($k, $field_names)) {
                     unset($rex_yform_set[$k]);
                 }
             }
             $em_url_filter .= '&' . http_build_query(compact('rex_yform_set'));
         }
         $em_url = $em_url_filter . $em_url_set;
         $em_rex_list = '';
         $em_rex_list .= '&list=' . urlencode(rex_request('list', 'string'));
         $em_rex_list .= '&sort=' . urlencode(rex_request('sort', 'string'));
         $em_rex_list .= '&sorttype=' . urlencode(rex_request('sorttype', 'string'));
         $em_rex_list .= '&start=' . urlencode(rex_request('start', 'string'));
         // ---------- Popup - no menue, header ...
         if ($popup) {
             echo '<link rel="stylesheet" type="text/css" href="' . rex_plugin::get('yform', 'manager')->getAssetsUrl('popup.css') . '" />';
         }
         // -------------- Import
         if (!$popup && $func == 'import' && $this->hasDataPageFunction('import')) {
             include rex_path::plugin('yform', 'manager', 'pages/data_import.php');
             echo rex_view::info('<a href="index.php?' . $link_vars . $em_url . $em_rex_list . '"><b>&laquo; ' . rex_i18n::msg('yform_back_to_overview') . '</b></a>');
         }
         // -------------- delete entry
         if ($func == 'delete' && $data_id != '' && $this->hasDataPageFunction('delete')) {
             $delete = true;
             if (rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_DELETE', $delete, array('id' => $data_id, 'value' => $data, 'table' => $this->table)))) {
                 $query = 'delete from ' . $this->table->getTablename() . ' where id=' . $data_id;
                 $delsql = rex_sql::factory();
                 $delsql->debugsql = self::$debug;
                 $delsql->setQuery($query);
                 echo rex_view::success(rex_i18n::msg('yform_datadeleted'));
                 $func = '';
                 $this->table->removeRelationTableRelicts();
                 rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_DELETED', '', array('id' => $data_id, 'value' => $data, 'table' => $this->table)));
             }
         }
         // -------------- delete dataset
         if ($func == 'dataset_delete' && $this->hasDataPageFunction('truncate_table')) {
             $delete = true;
             $query = 'delete from `' . $this->table->getTablename() . '` ' . $this->getDataListQueryWhere($rex_yform_filter, $searchObject);
             if (rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_DATASET_DELETE', $delete, array('table' => $this->table, 'query' => &$query)))) {
                 $delsql = rex_sql::factory();
                 $delsql->debugsql = self::$debug;
                 $delsql->setQuery($query);
                 echo rex_view::success(rex_i18n::msg('yform_dataset_deleted'));
                 $func = '';
                 $this->table->removeRelationTableRelicts();
                 rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_DATASET_DELETED', '', array('table' => $this->table)));
             }
         }
         // -------------- truncate table
         if ($func == 'truncate_table' && $this->hasDataPageFunction('truncate_table')) {
             $truncate = true;
             if (rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_TABLE_TRUNCATE', $truncate, array('table' => $this->table)))) {
                 $query = 'truncate table ' . $this->table->getTablename();
                 $trunsql = rex_sql::factory();
                 $trunsql->setQuery($query);
                 echo rex_view::info(rex_i18n::msg('yform_table_truncated'));
                 $func = '';
                 $this->table->removeRelationTableRelicts();
                 rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_TABLE_TRUNCATED', '', array('table' => $this->table)));
             }
         }
         // -------------- export dataset
         if ($func == 'dataset_export' && $this->hasDataPageFunction('export')) {
             ob_end_clean();
             $sql = $this->getDataListQuery($rex_yform_filter, $searchObject);
             $data = '';
             $fields = array();
             $g = rex_sql::factory();
             $g->setQuery($sql);
             $array = rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_TABLE_EXPORT', $g->getArray(), array('table' => $this->table)));
             foreach ($array as $d) {
                 if ($data == '') {
                     foreach ($d as $a => $b) {
                         $fields[] = '"' . $a . '"';
                     }
                     $data = implode(';', $fields);
                 }
                 foreach ($d as $a => $b) {
                     $d[$a] = '"' . str_replace('"', '""', $b) . '"';
                 }
                 $data .= "\n" . implode(';', $d);
             }
             // ----- download - save as
             $filename = 'export_data_' . date('YmdHis') . '.csv';
             $filesize = strlen($data);
             $filetype = 'application/octetstream';
             $expires = 'Mon, 01 Jan 2000 01:01:01 GMT';
             $last_modified = 'Mon, 01 Jan 2000 01:01:01 GMT';
             header('Expires: ' . $expires);
             // Date in the past
             header('Last-Modified: ' . $last_modified);
             // always modified
             header('Cache-Control: no-store, no-cache, must-revalidate');
             // HTTP/1.1
             header('Cache-Control: post-check=0, pre-check=0', false);
             header('Pragma: no-cache');
             header('Pragma: private');
             header('Cache-control: private, must-revalidate');
             header('Content-Type: ' . $filetype . '; name="' . $filename . '"');
             header('Content-Disposition: attachment; filename="' . $filename . '"');
             header('Content-Description: "' . $filename . '"');
             header('Content-Length: ' . $filesize);
             echo $data;
             exit;
         }
         // -------------- form
         if ($func == 'add' && $this->hasDataPageFunction('add') || $func == 'edit') {
             $back = rex_view::info('<a href="index.php?' . $link_vars . $em_url . $em_rex_list . '"><b>&laquo; ' . rex_i18n::msg('yform_back_to_overview') . '</b></a>');
             $yform = new rex_yform();
             $yform->setDebug(self::$debug);
             foreach ($this->getLinkVars() as $k => $v) {
                 $yform->setHiddenField($k, $v);
             }
             if (count($rex_yform_manager_opener) > 0) {
                 foreach ($rex_yform_manager_opener as $k => $v) {
                     $yform->setHiddenField('rex_yform_manager_opener[' . $k . ']', $v);
                 }
             }
             if (count($rex_yform_filter) > 0) {
                 foreach ($rex_yform_filter as $k => $v) {
                     if (is_array($v)) {
                         foreach ($v as $k2 => $v2) {
                             $yform->setHiddenField('rex_yform_filter[' . $k . '][' . $k2 . ']', $v2);
                         }
                     } else {
                         $yform->setHiddenField('rex_yform_filter[' . $k . ']', $v);
                     }
                 }
             }
             if (count($rex_yform_set) > 0) {
                 foreach ($rex_yform_set as $k => $v) {
                     if (is_array($v)) {
                         foreach ($v as $k2 => $v2) {
                             $yform->setHiddenField('rex_yform_set[' . $k . '][' . $k2 . ']', $v2);
                         }
                     } else {
                         $yform->setHiddenField('rex_yform_set[' . $k . ']', $v);
                     }
                 }
             }
             foreach ($searchObject->getSearchVars() as $s_var => $values) {
                 foreach ($values as $k => $v) {
                     $yform->setHiddenField($s_var . '[' . $k . ']', $v);
                 }
             }
             // for rexlist
             $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'));
             foreach ($this->table->getFields() 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->getType());
                     /*if ($field->getElement($key)) {
                           $values[] = $field->getElement($key);
                       } elseif ($field->getElement('f' . $i)) {
                           $values[] = $field->getElement('f' . $i);
                       } else {
                           $values[] = '';
                       }*/
                     $values[] = $field->getElement($key);
                     $i++;
                 }
                 if ($field->getType() == 'value') {
                     if (in_array($values[1], $this->getFilterFields())) {
                         // Feld vorhanden -> ignorieren -> hidden feld machen
                         // TODO: Feld trotzdem noch aufnehmen, damit validierungen etc noch funktionieren
                     } else {
                         $yform->setValueField($field->getTypeName(), $values);
                     }
                 } elseif ($field->getType() == 'validate') {
                     $yform->setValidateField($field->getTypeName(), $values);
                 } elseif ($field->getType() == 'action') {
                     $yform->setActionField($field->getTypeName(), $values);
                 }
             }
             if (rex_request('rex_yform_show_formularblock', 'string') != '') {
                 // Optional .. kann auch geloescht werden. Dient nur zu Hilfe beim Aufbau
                 // von yform-Formularen über php
                 // Textblock gibt den formalarblock als text aus, um diesen in das yform modul einsetzen zu können.
                 //  rex_yform_show_formularblock=1
                 $text_block = '';
                 foreach ($this->table->getFields() 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->getType());
                         if (isset($field[$key])) {
                             $values[] = $field[$key];
                         } elseif (isset($field['f' . $i])) {
                             $values[] = $field['f' . $i];
                         } else {
                             $values[] = '';
                         }
                         $i++;
                     }
                     if ($field->getType() == 'value') {
                         $text_block .= "\n" . '$yform->setValueField("' . $field->getTypeName() . '",array("' . implode('","', $values) . '"));';
                     } else {
                         if ($field->getType() == 'validate') {
                             $text_block .= "\n" . '$yform->setValidateField("' . $field->getTypeName() . '",array("' . implode('","', $values) . '"));';
                         } else {
                             if ($field->getType() == 'action') {
                                 $text_block .= "\n" . '$yform->setActionField("' . $field->getTypeName() . '",array("' . implode('","', $values) . '"));';
                             }
                         }
                     }
                     // $text_block .= "\n".$field["type_name"].'|'.implode("|",$values);
                 }
                 echo '<pre>' . $text_block . '</pre>';
             }
             $yform->setObjectparams('main_table', $this->table->getTablename());
             // für db speicherungen und unique abfragen
             $yform->setObjectparams('rex_yform_set', $rex_yform_set);
             $yform_clone = clone $yform;
             $yform->setHiddenField('func', $func);
             // damit es neu im clone gesetzt werden kann
             if ($func == 'edit') {
                 $yform->setHiddenField('data_id', $data_id);
                 $yform->setActionField('db', array($this->table->getTablename(), "id={$data_id}"));
                 $yform->setObjectparams('main_id', $data_id);
                 $yform->setObjectparams('main_where', "id={$data_id}");
                 $yform->setObjectparams('getdata', true);
                 $yform->setValueField('submits', array("name" => "submit", "labels" => rex_i18n::msg('yform_save') . "," . rex_i18n::msg('yform_save_apply'), "values" => "1,2", "no_db" => true, "css_classes" => "btn-save,btn-apply"));
             } elseif ($func == 'add') {
                 $yform->setActionField('db', array($this->table->getTablename()));
                 $yform->setValueField('submits', array("name" => "submit", "labels" => rex_i18n::msg('yform_add') . "," . rex_i18n::msg('yform_add_apply'), "values" => "1,2", "no_db" => true, "css_classes" => "btn-save,btn-apply"));
             }
             if ($func == 'edit') {
                 $yform = rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_UPDATE', $yform, array('table' => $this->table, 'data_id' => $data_id, 'data' => $data)));
             } elseif ($func == 'add') {
                 $yform = rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_ADD', $yform, array('table' => $this->table)));
             }
             $yform->executeFields();
             $submit_type = 1;
             // normal, 2=apply
             foreach ($yform->objparams["values"] as $f) {
                 if ($f->getName() == "submit") {
                     if ($f->getValue() == 2) {
                         // apply
                         $yform->setObjectparams('form_showformafterupdate', 1);
                         $yform->executeFields();
                         $submit_type = 2;
                     }
                 }
             }
             $form = $yform->executeActions();
             if ($yform->objparams['actions_executed']) {
                 if ($func == 'edit') {
                     echo rex_view::info(rex_i18n::msg('yform_thankyouforupdate'));
                     $yform = rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_UPDATED', $yform, array('table' => $this->table, 'data_id' => $data_id, 'data' => $data)));
                 } elseif ($func == 'add') {
                     echo rex_view::info(rex_i18n::msg('yform_thankyouforentry'));
                     $yform = rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_ADDED', $yform, array('table' => $this->table)));
                     if ($submit_type == 2) {
                         $data_id = $yform->objparams['main_id'];
                         $func = "edit";
                         $yform = $yform_clone;
                         $yform->setHiddenField('func', $func);
                         $yform->setHiddenField('data_id', $data_id);
                         $yform->setActionField('db', array($this->table->getTablename(), "id={$data_id}"));
                         $yform->setObjectparams('main_id', $data_id);
                         $yform->setObjectparams('main_where', "id={$data_id}");
                         $yform->setObjectparams('getdata', true);
                         $yform->setValueField('submits', array("name" => "submit", "labels" => rex_i18n::msg('yform_save') . "," . rex_i18n::msg('yform_save_apply'), "values" => "1,2", "no_db" => true, "css_classes" => "btn-save,btn-apply"));
                         $yform->setObjectparams('form_showformafterupdate', 1);
                         $yform->executeFields();
                         $form = $yform->executeActions();
                     }
                 }
             }
             if ($yform->objparams['form_show'] || $yform->objparams['form_showformafterupdate']) {
                 if ($func == 'add') {
                     $title = rex_i18n::msg('yform_adddata');
                 } else {
                     $title = rex_i18n::msg('yform_editdata');
                 }
                 $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;
                 echo rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_FORM', '', array('form' => $form, 'func' => $func, 'this' => $this, 'table' => $this->table)));
                 echo $back;
                 $show_list = false;
             }
         }
         // ********************************************* LIST
         if ($show_list) {
             $sql = $this->getDataListQuery($rex_yform_filter, $searchObject);
             // ---------- LISTE AUSGEBEN
             /** @type rex_list $list */
             $list = rex_list::factory($sql, $this->table->getListAmount());
             if ($this->hasDataPageFunction('add')) {
                 $tdIcon = '<i class="rex-icon rex-icon-table"></i>';
                 $thIcon = '<a href="index.php?' . $link_vars . '&func=add&' . $em_url . $em_rex_list . '"' . 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>']);
                 if (!isset($rex_yform_manager_opener['id'])) {
                     $list->setColumnParams($thIcon, ['data_id' => '###id###', 'func' => 'edit', 'start' => rex_request('start', 'string'), 'sort' => rex_request('sort', 'string'), 'sorttype' => rex_request('sorttype', 'string'), 'list' => rex_request('list', 'string')]);
                 }
             }
             // $list->setColumnFormat('id', 'Id');
             foreach ($this->getLinkVars() as $k => $v) {
                 $list->addParam($k, $v);
             }
             $list->addParam('table_name', $this->table->getTablename());
             if (count($rex_yform_filter) > 0) {
                 foreach ($rex_yform_filter as $k => $v) {
                     if (is_array($v)) {
                         foreach ($v as $k2 => $v2) {
                             $list->addParam('rex_yform_filter[' . $k . '][' . $k2 . ']', $v2);
                         }
                     } else {
                         $list->addParam('rex_yform_filter[' . $k . ']', $v);
                     }
                 }
             }
             if (count($rex_yform_set) > 0) {
                 foreach ($rex_yform_set as $k => $v) {
                     if (is_array($v)) {
                         foreach ($v as $k2 => $v2) {
                             $list->addParam('rex_yform_set[' . $k . '][' . $k2 . ']', $v2);
                         }
                     } else {
                         $list->addParam('rex_yform_set[' . $k . ']', $v);
                     }
                 }
             }
             if (count($rex_yform_manager_opener) > 0) {
                 foreach ($rex_yform_manager_opener as $k => $v) {
                     $list->addParam('rex_yform_manager_opener[' . $k . ']', $v);
                 }
             }
             foreach ($searchObject->getSearchVars() as $s_var => $values) {
                 foreach ($values as $k => $v) {
                     $list->addParam($s_var . '[' . $k . ']', $v);
                 }
             }
             $list->setColumnLabel('id', rex_i18n::msg('yform_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->setColumnParams('id', array('data_id' => '###id###', 'func' => 'edit'));
             $list->setColumnSortable('id');
             foreach ($this->table->getFields() as $field) {
                 if (!$field->isHiddenInList() && $field->getTypeName()) {
                     if (method_exists('rex_yform_value_' . $field->getTypeName(), 'getListValue')) {
                         $list->setColumnFormat($field->getName(), 'custom', array('rex_yform_value_' . $field->getTypeName(), 'getListValue'), array('field' => $field->toArray(), 'fields' => $this->table->getFields()));
                     }
                 }
                 if ($field->getType() == 'value') {
                     if ($field->isHiddenInList()) {
                         $list->removeColumn($field->getName());
                     } else {
                         $list->setColumnSortable($field->getName());
                         $list->setColumnLabel($field->getName(), $field->getLabel());
                     }
                 }
             }
             if (isset($rex_yform_manager_opener['id'])) {
                 $list->addColumn(rex_i18n::msg('yform_data_select'), '');
                 $list->setColumnFormat(rex_i18n::msg('yform_data_select'), 'custom', function ($params) {
                     $value = '';
                     list($table_name, $field_name) = explode(".", $params["params"]["opener_field"]);
                     $table = rex_yform_manager_table::get($table_name);
                     if ($table) {
                         $fields = $table->getValueFields(array("name" => $field_name));
                         if (isset($fields[$field_name])) {
                             $target_table = $fields[$field_name]->getElement('table');
                             $target_field = $fields[$field_name]->getElement('field');
                             $values = rex_yform_value_be_manager_relation::getListValues($target_table, $target_field);
                             $value = $values[$params['list']->getValue('id')];
                         }
                     }
                     return '<a href="javascript:yform_manager_setData(' . $params["params"]["opener_id"] . ',###id###,\'' . htmlspecialchars($value) . ' [id=###id###]\',' . $params["params"]["opener_multiple"] . ')">' . rex_i18n::msg('yform_data_select') . '</a>';
                 }, array("opener_id" => $rex_yform_manager_opener["id"], "opener_field" => $rex_yform_manager_opener["field"], "opener_multiple" => $rex_yform_manager_opener["multiple"]));
             } else {
                 $list->addColumn(rex_i18n::msg('yform_function'), '<i class="rex-icon rex-icon-edit"></i> ' . rex_i18n::msg('yform_edit'));
                 $list->setColumnLayout(rex_i18n::msg('yform_function'), ['<th class="rex-table-action">###VALUE###</th>', '<td class="rex-table-action">###VALUE###</td>']);
                 $list->setColumnParams(rex_i18n::msg('yform_function'), array('data_id' => '###id###', 'func' => 'edit', 'start' => rex_request('start', 'string'), 'sort' => rex_request('sort', 'string'), 'sorttype' => rex_request('sorttype', 'string'), 'list' => rex_request('list', 'string')));
                 if ($this->hasDataPageFunction('delete')) {
                     // Column layout fuer edit neu setzen
                     $list->setColumnLayout(rex_i18n::msg('yform_function'), ['<th class="rex-table-action" colspan="2">###VALUE###</th>', '<td class="rex-table-action">###VALUE###</td>']);
                     $list->addColumn(rex_i18n::msg('yform_delete'), '<i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('yform_delete'));
                     $list->setColumnLayout(rex_i18n::msg('yform_delete'), ['', '<td class="rex-table-action">###VALUE###</td>']);
                     $list->setColumnParams(rex_i18n::msg('yform_delete'), array('data_id' => '###id###', 'func' => 'delete', 'start' => rex_request('start', 'string'), 'sort' => rex_request('sort', 'string'), 'sorttype' => rex_request('sorttype', 'string'), 'list' => rex_request('list', 'string')));
                     $list->addLinkAttribute(rex_i18n::msg('yform_delete'), 'onclick', 'return confirm(\' id=###id### ' . rex_i18n::msg('yform_delete') . ' ?\')');
                 }
             }
             // *********************************************
             $list = rex_extension::registerPoint(new rex_extension_point('YFORM_DATA_LIST', $list, array('table' => $this->table)));
             if ($rex_yform_filter) {
                 $filter = array();
                 $getFilter = function (rex_yform_manager_field $field, $value) {
                     if ('be_manager_relation' == $field->getTypeName()) {
                         $listValues = rex_yform_value_be_manager_relation::getListValues($field->getElement('table'), $field->getElement('field'), array('id' => $value));
                         if (isset($listValues[$value])) {
                             $value = $listValues[$value];
                         }
                     }
                     return '<b>' . rex_i18n::translate($field->getLabel()) . ':</b> ' . $value;
                 };
                 foreach ($rex_yform_filter as $key => $value) {
                     if (is_array($value)) {
                         $relTable = rex_yform_manager_table::get($this->table->getValueField($key)->getElement('table'));
                         foreach ($value as $k => $v) {
                             $filter[] = $getFilter($relTable->getValueField($k), $v);
                         }
                     } else {
                         $filter[] = $getFilter($this->table->getValueField($key), $value);
                     }
                 }
                 echo rex_view::info(implode('<br>', $filter));
             }
             $panel_options = '';
             $data_links = [];
             if ($this->table->isSearchable() && $this->hasDataPageFunction('search')) {
                 $item = [];
                 $item['label'] = rex_i18n::msg('yform_search');
                 $item['attributes']['class'][] = 'btn-search';
                 $item['attributes']['id'] = 'searchtoggler';
                 $data_links[] = $item;
             }
             if (count($data_links) > 0) {
                 $fragment = new rex_fragment();
                 $fragment->setVar('size', 'xs', false);
                 $fragment->setVar('buttons', $data_links, false);
                 $panel_options .= '<small class="rex-panel-option-title">' . rex_i18n::msg('yform_data') . '</small> ' . $fragment->parse('core/buttons/button_group.php');
             }
             // INFO LINK
             $dataset_links = [];
             if ($this->table->isExportable() == 1 && $this->hasDataPageFunction('export')) {
                 $item = [];
                 $item['label'] = rex_i18n::msg('yform_export');
                 $item['url'] = 'index.php?' . $link_vars . '&func=dataset_export&' . $em_url . $em_rex_list;
                 $item['attributes']['class'][] = 'btn-default';
                 $dataset_links[] = $item;
             }
             if ($this->hasDataPageFunction('truncate_table')) {
                 $item = [];
                 $item['label'] = rex_i18n::msg('yform_delete');
                 $item['url'] = 'index.php?' . $link_vars . '&func=dataset_delete&' . $em_url . $em_rex_list;
                 $item['attributes']['class'][] = 'btn-delete';
                 $item['attributes']['id'] = 'dataset-delete';
                 $item['attributes']['onclick'][] = 'return confirm(\'' . rex_i18n::msg('yform_dataset_delete_confirm') . '\');';
                 $dataset_links[] = $item;
             }
             if (count($dataset_links) > 0) {
                 $fragment = new rex_fragment();
                 $fragment->setVar('size', 'xs', false);
                 $fragment->setVar('buttons', $dataset_links, false);
                 $panel_options .= '<small class="rex-panel-option-title">' . rex_i18n::msg('yform_dataset') . '</small> ' . $fragment->parse('core/buttons/button_group.php');
             }
             $table_links = array();
             if (!$popup && $this->table->isImportable() && $this->hasDataPageFunction('import')) {
                 $item = [];
                 $item['label'] = rex_i18n::msg('yform_import');
                 $item['url'] = 'index.php?' . htmlspecialchars($link_vars) . '&amp;func=import';
                 $item['attributes']['class'][] = 'btn-default';
                 $table_links[] = $item;
             }
             if (rex::getUser()->isAdmin()) {
                 $item = [];
                 $item['label'] = rex_i18n::msg('yform_edit');
                 $item['url'] = 'index.php?page=yform/manager&table_id=' . $this->table->getId() . '&func=edit';
                 $item['attributes']['class'][] = 'btn-default';
                 $table_links[] = $item;
             }
             if ($this->hasDataPageFunction('truncate_table')) {
                 $item = [];
                 $item['label'] = rex_i18n::msg('yform_truncate_table');
                 $item['url'] = 'index.php?' . $link_vars . '&func=truncate_table&' . $em_url . $em_rex_list;
                 $item['attributes']['class'][] = 'btn-delete';
                 $item['attributes']['id'] = 'truncate-table';
                 $item['attributes']['onclick'][] = 'return confirm(\'' . rex_i18n::msg('yform_truncate_table_confirm') . '\');';
                 $table_links[] = $item;
             }
             if (count($table_links) > 0) {
                 $fragment = new rex_fragment();
                 $fragment->setVar('size', 'xs', false);
                 $fragment->setVar('buttons', $table_links, false);
                 $panel_options .= '<small class="rex-panel-option-title">' . rex_i18n::msg('yform_table') . '</small> ' . $fragment->parse('core/buttons/button_group.php');
             }
             $field_links = array();
             if (rex::getUser()->isAdmin()) {
                 $item = [];
                 $item['label'] = rex_i18n::msg('yform_edit');
                 $item['url'] = 'index.php?page=yform/manager/table_field&table_name=' . $this->table->getTableName();
                 $item['attributes']['class'][] = 'btn-default';
                 $field_links[] = $item;
             }
             if (count($field_links) > 0) {
                 $fragment = new rex_fragment();
                 $fragment->setVar('size', 'xs', false);
                 $fragment->setVar('buttons', $field_links, false);
                 $panel_options .= '<small class="rex-panel-option-title">' . rex_i18n::msg('yform_manager_fields') . '</small> ' . $fragment->parse('core/buttons/button_group.php');
             }
             // SEARCHBLOCK
             $searchVars = $searchObject->getSearchVars();
             $display = count($searchVars["rex_yform_searchvars"]) > 0 ? 'block' : 'none';
             echo '<div id="searchblock" style="display:' . $display . ';">' . $searchform . '</div>';
             $content = $list->get();
             $fragment = new rex_fragment();
             $fragment->setVar('title', rex_i18n::msg('yform_tabledata_overview'));
             $fragment->setVar('options', $panel_options, false);
             $fragment->setVar('content', $content, false);
             $content = $fragment->parse('core/page/section.php');
             $content .= '
              <script type="text/javascript">/* <![CDATA[ */
                  jQuery("#searchtoggler").click(function(){jQuery("#searchblock").slideToggle("fast");});
                  jQuery("#yform_help_empty_toggler").click(function(){jQuery("#yform_help_empty").slideToggle("fast");});
                  jQuery("#yform_search_reset").click(function(){window.location.href = "index.php?page=yform/manager/data_edit&table_name=' . $this->table->getTableName() . '";});
                  jQuery("#truncate-table").click(function(){if(confirm("' . rex_i18n::msg('yform_truncate_table_confirm') . '")){return true;} else {return false;}});
                  jQuery("#dataset-delete").click(function(){if(confirm("' . rex_i18n::msg('yform_dataset_delete_confirm') . '")){return true;} else {return false;}});
              /* ]]> */</script>';
             echo $content;
         }
     }
     // end: $show_editpage
 }
예제 #20
0
파일: index.php 프로젝트: staabm/redaxo
    }
}
if ($rex_file_category == -1) {
    $rex_file_category = rex_session('media[rex_file_category]', 'int');
}
$gc = rex_sql::factory();
$gc->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'media_category WHERE id=' . $rex_file_category);
if ($gc->getRows() != 1) {
    $rex_file_category = 0;
    $rex_file_category_name = rex_i18n::msg('pool_kats_no');
} else {
    $rex_file_category_name = $gc->getValue('name');
}
rex_set_session('media[rex_file_category]', $rex_file_category);
// -------------- PERMS
$PERMALL = rex::getUser()->getComplexPerm('media')->hasCategoryPerm(0);
// -------------- Header
$subline = rex_be_controller::getPageObject('mediapool')->getSubpages();
foreach ($subline as $sp) {
    $sp->setHref(rex_url::backendPage($sp->getFullKey(), $arg_url, false));
}
echo rex_view::title(rex_i18n::msg('pool_media'), $subline);
// -------------- Messages
if ($success != '') {
    echo rex_view::info($success);
    $success = '';
}
if ($error != '') {
    echo rex_view::error($error);
    $error = '';
}
예제 #21
0
파일: form.php 프로젝트: skerbis/redaxo
 /**
  * Callbackfunktion, damit in subklassen der Value noch beeinflusst werden kann
  * kurz vorm speichern.
  */
 protected function preSave($fieldsetName, $fieldName, $fieldValue, rex_sql $saveSql)
 {
     static $setOnce = false;
     if (!$setOnce) {
         $fieldnames = $this->sql->getFieldnames();
         if (in_array('updateuser', $fieldnames)) {
             $saveSql->setValue('updateuser', rex::getUser()->getValue('login'));
         }
         if (in_array('updatedate', $fieldnames)) {
             $saveSql->setDateTimeValue('updatedate', time());
         }
         if (!$this->isEditMode()) {
             if (in_array('createuser', $fieldnames)) {
                 $saveSql->setValue('createuser', rex::getUser()->getValue('login'));
             }
             if (in_array('createdate', $fieldnames)) {
                 $saveSql->setDateTimeValue('createdate', time());
             }
         }
         $setOnce = true;
     }
     return $fieldValue;
 }
예제 #22
0
 */
$KATout = '';
// Variable definiert und vorbelegt wenn nicht existent
$KAToutARR = [];
// Variable definiert und vorbelegt wenn nicht existent
$navigation = [];
$object_id = $article_id > 0 ? $article_id : $category_id;
$object = rex_article::get($object_id, $clang);
if ($object) {
    $tree = $object->getParentTree();
    if (!$object->isStartarticle()) {
        $tree[] = $object;
    }
    foreach ($tree as $parent) {
        $id = $parent->getId();
        if (rex::getUser()->getComplexPerm('structure')->hasCategoryPerm($id)) {
            $n = [];
            $n['title'] = str_replace(' ', '&nbsp;', htmlspecialchars($parent->getName()));
            if ($parent->isStartarticle()) {
                $n['href'] = rex_url::backendPage('structure', ['category_id' => $id, 'clang' => $clang]);
            }
            $navigation[] = $n;
        }
    }
}
$title = '<a href="' . rex_url::backendPage('structure', ['category_id' => 0, 'clang' => $clang]) . '"><i class="rex-icon rex-icon-sitestartarticle"></i> ' . rex_i18n::msg('homepage') . '</a>';
$fragment = new rex_fragment();
$fragment->setVar('id', 'rex-js-structure-breadcrumb', false);
$fragment->setVar('title', $title, false);
$fragment->setVar('items', $navigation, false);
echo $fragment->parse('core/navigations/breadcrumb.php');
예제 #23
0
 protected function outGroup($parent_id, $level = 0)
 {
     if ($level > 100) {
         // nur mal so zu sicherheit .. man weiss nie ;)
         throw new rex_exception('select->_outGroup overflow');
     }
     $ausgabe = '';
     $group = $this->getGroup($parent_id);
     if (!is_array($group)) {
         return '';
     }
     foreach ($group as $option) {
         $name = $option[0];
         $value = $option[1];
         $id = $option[2];
         if ($id == 0 || !$this->check_perms || $this->check_perms && rex::getUser()->getComplexPerm('structure')->hasCategoryPerm($option[2])) {
             $ausgabe .= $this->outOption($name, $value, $level);
         } elseif ($this->check_perms && rex::getUser()->getComplexPerm('structure')->hasCategoryPerm($option[2])) {
             --$level;
         }
         $subgroup = $this->getGroup($id, true);
         if ($subgroup !== false) {
             $ausgabe .= $this->outGroup($id, $level + 1);
         }
     }
     return $ausgabe;
 }
예제 #24
0
파일: boot.php 프로젝트: redaxo/redaxo
            $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());
        }
        $article_id = $ep->getParam('article_id');
        $clang_id = $ep->getParam('clang_id');
        $slice_revision = $ep->getParam('slice_revision');
        rex_article_slice_history::makeSnapshot($article_id, $clang_id, $type, $slice_revision);
예제 #25
0
 /**
  * checks whether an api function is bound to the current requests. If so, so the api function will be executed.
  */
 public static function handleCall()
 {
     if (static::hasFactoryClass()) {
         return static::callFactoryClass(__FUNCTION__, func_get_args());
     }
     $apiFunc = self::factory();
     if ($apiFunc != null) {
         if ($apiFunc->published !== true) {
             if (rex::isBackend() !== true) {
                 throw new rex_http_exception(new rex_api_exception('the api function ' . get_class($apiFunc) . ' is not published, therefore can only be called from the backend!'), rex_response::HTTP_FORBIDDEN);
             }
             if (!rex::getUser()) {
                 throw new rex_http_exception(new rex_api_exception('missing backend session to call api function ' . get_class($apiFunc) . '!'), rex_response::HTTP_UNAUTHORIZED);
             }
         }
         $urlResult = rex_get(self::REQ_RESULT_PARAM, 'string');
         if ($urlResult) {
             // take over result from url and do not execute the apiFunc
             $result = rex_api_result::fromJSON($urlResult);
             $apiFunc->result = $result;
         } else {
             try {
                 $result = $apiFunc->execute();
                 if (!$result instanceof rex_api_result) {
                     throw new rex_exception('Illegal result returned from api-function ' . rex_get(self::REQ_CALL_PARAM) . '. Expected a instance of rex_api_result but got "' . (is_object($result) ? get_class($result) : gettype($result)) . '".');
                 }
                 $apiFunc->result = $result;
                 if ($result->requiresReboot()) {
                     $context = rex_context::fromGet();
                     // add api call result to url
                     $context->setParam(self::REQ_RESULT_PARAM, $result->toJSON());
                     // and redirect to SELF for reboot
                     rex_response::sendRedirect($context->getUrl([], false));
                 }
             } catch (rex_api_exception $e) {
                 $message = $e->getMessage();
                 $result = new rex_api_result(false, $message);
                 $apiFunc->result = $result;
             }
         }
     }
 }
예제 #26
0
     $list = $params['list'];
     if ($list->getValue('beschreibung') != '') {
         $aufgabe = '<div class="collapsetitel" data-toggle="collapse" data-target="#collapse###id###">' . $list->getValue('titel') . '</div>';
     } else {
         $aufgabe = $list->getValue('titel');
     }
     if ($list->getValue('beschreibung')) {
         $text = htmlspecialchars_decode($list->getValue('beschreibung'));
         if (rex_addon::get('textile')->isAvailable()) {
             $text = str_replace('<br />', '', $text);
             $text = rex_textile::parse($text);
             $text = str_replace('###', '&#x20;', $text);
         } else {
             $text = str_replace(PHP_EOL, '<br/>', $text);
         }
         $user_name = rex::getUser()->getValue('name') != '' ? rex::getUser()->getValue('name') : rex::getUser()->getValue('login');
         $text = str_replace('*****', '<div class="aufgabentrenner">' . date("d.m.y") . ' - ' . htmlspecialchars($user_name) . '</div>', $text);
         $beschreibung = '<div id="collapse###id###" class="collapse"><br/>' . $text . '</div>';
     } else {
         $beschreibung = '';
     }
     $aufgabe .= $beschreibung;
     return $aufgabe;
 });
 // --------------------
 //
 //  Edit
 //
 // --------------------
 /*
 
예제 #27
0
파일: media.php 프로젝트: alsahh/redaxo
            }
        }
    } else {
        $error = rex_i18n::msg('pool_selectedmedia_error');
    }
}
if ($PERMALL && $media_method == 'delete_selectedmedia') {
    $selectedmedia = rex_post('selectedmedia', 'array');
    if (count($selectedmedia) != 0) {
        $error = [];
        $success = [];
        $countDeleted = 0;
        foreach ($selectedmedia as $file_name) {
            $media = rex_media::get($file_name);
            if ($media) {
                if ($PERMALL || rex::getUser()->getComplexPerm('media')->hasCategoryPerm($media->getCategoryId())) {
                    $return = rex_mediapool_deleteMedia($file_name);
                    if ($return['ok']) {
                        ++$countDeleted;
                    } else {
                        $error[] = $return['msg'];
                    }
                } else {
                    $error[] = rex_i18n::msg('no_permission');
                }
            } else {
                $error[] = rex_i18n::msg('pool_file_not_found');
            }
        }
        if ($countDeleted) {
            $success[] = rex_i18n::msg('pool_files_deleted', $countDeleted);
예제 #28
0
파일: boot.php 프로젝트: DECAF/redaxo
 * @author Umsetzung
 * @author thomas[dot]blum[at]redaxo[dot]org Thomas Blum
 *
 * @package redaxo5
 *
 * @var rex_plugin $this
 */
$mypage = 'redaxo';
if (rex::isBackend()) {
    rex_extension::register('BE_STYLE_SCSS_FILES', function (rex_extension_point $ep) use($mypage) {
        $subject = $ep->getSubject();
        $file = rex_plugin::get('be_style', $mypage)->getPath('scss/default.scss');
        array_unshift($subject, $file);
        return $subject;
    }, rex_extension::EARLY);
    if (rex::getUser() && $this->getProperty('compile')) {
        rex_addon::get('be_style')->setProperty('compile', true);
        rex_extension::register('PACKAGES_INCLUDED', function () {
            $compiler = new rex_scss_compiler();
            $compiler->setRootDir($this->getPath('scss/'));
            $compiler->setScssFile($this->getPath('scss/master.scss'));
            // Compile in backend assets dir
            $compiler->setCssFile($this->getPath('assets/css/styles.css'));
            $compiler->compile();
            // Compiled file to copy in frontend assets dir
            rex_file::copy($this->getPath('assets/css/styles.css'), $this->getAssetsPath('css/styles.css'));
        });
    }
    rex_view::addCssFile($this->getAssetsUrl('css/styles.css'));
    rex_view::addJsFile($this->getAssetsUrl('javascripts/redaxo.js'));
    rex_extension::register('PAGE_HEADER', function (rex_extension_point $ep) {
예제 #29
0
파일: package.php 프로젝트: staabm/redaxo
 /**
  * Loads the properties of package.yml.
  */
 private function loadProperties()
 {
     static $cache = null;
     if (is_null($cache)) {
         $cache = rex_file::getCache(rex_path::cache('packages.cache'));
     }
     $id = $this->getPackageId();
     $file = $this->getPath(self::FILE_PACKAGE);
     if (!file_exists($file)) {
         $this->propertiesLoaded = true;
         return;
     }
     if (isset($cache[$id]) && (!rex::isBackend() || !($user = rex::getUser()) || !$user->isAdmin() || $cache[$id]['timestamp'] >= filemtime($file))) {
         $properties = $cache[$id]['data'];
     } else {
         $properties = rex_file::getConfig($file);
         $cache[$id]['timestamp'] = filemtime($file);
         $cache[$id]['data'] = $properties;
         static $registeredShutdown = false;
         if (!$registeredShutdown) {
             $registeredShutdown = true;
             register_shutdown_function(function () use(&$cache) {
                 foreach ($cache as $package => $_) {
                     if (!rex_package::exists($package)) {
                         unset($cache[$package]);
                     }
                 }
                 rex_file::putCache(rex_path::cache('packages.cache'), $cache);
             });
         }
     }
     foreach ($properties as $key => $value) {
         if (!isset($this->properties[$key])) {
             $this->properties[$key] = rex_i18n::translateArray($value, false, [$this, 'i18n']);
         }
     }
     $this->propertiesLoaded = true;
 }
예제 #30
0
파일: handler.php 프로젝트: DECAF/redaxo
 /**
  * Übernimmt die gePOSTeten werte in ein rex_sql-Objekt.
  *
  * @param array   $params
  * @param rex_sql $sqlSave   rex_sql-objekt, in das die aktuellen Werte gespeichert werden sollen
  * @param rex_sql $sqlFields rex_sql-objekt, dass die zu verarbeitenden Felder enthält
  */
 public static function fetchRequestValues(&$params, &$sqlSave, $sqlFields)
 {
     if (rex_request_method() != 'post') {
         return;
     }
     for ($i = 0; $i < $sqlFields->getRows(); $i++, $sqlFields->next()) {
         $fieldName = $sqlFields->getValue('name');
         $fieldType = $sqlFields->getValue('type_id');
         $fieldAttributes = $sqlFields->getValue('attributes');
         // dont save restricted fields
         $attrArray = rex_string::split($fieldAttributes);
         if (isset($attrArray['perm'])) {
             if (!rex::getUser()->hasPerm($attrArray['perm'])) {
                 continue;
             }
             unset($attrArray['perm']);
         }
         // Wert in SQL zum speichern
         $saveValue = self::getSaveValue($fieldName, $fieldType, $fieldAttributes);
         $sqlSave->setValue($fieldName, $saveValue);
         // Werte im aktuellen Objekt speichern, dass zur Anzeige verwendet wird
         if (isset($params['activeItem'])) {
             $params['activeItem']->setValue($fieldName, $saveValue);
         }
     }
 }