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')); }
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; }
/** * @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('&', '&', $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; }
public static function wildcardFormControlElement(\rex_extension_point $ep) { if (!\rex::getUser()->getComplexPerm('clang')->hasAll()) { $subject = $ep->getSubject(); unset($subject['delete']); $ep->setSubject($subject); } }
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'); }
public static function getWidget($id, $name, $value, array $args = []) { $open_params = ''; if (isset($args['category']) && ($category = (int) $args['category'])) { $open_params .= '&rex_file_category=' . $category; } foreach ($args as $aname => $avalue) { $open_params .= '&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; }
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; }
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); } } } }
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(); }
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)); }
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; }
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 .= '&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; }
public static function getWidget($id, $name, $value, array $args = []) { $open_params = ''; if (isset($args['category']) && ($category = (int) $args['category'])) { $open_params .= '&rex_file_category=' . $category; } foreach ($args as $aname => $avalue) { $open_params .= '&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; }
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)); }
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; }
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())); }); } }
$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('###', ' ', $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) {
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 PRFEN $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>« ' . 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>« ' . 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) . '&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 }
} } 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 = ''; }
/** * 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; }
*/ $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(' ', ' ', 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');
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; }
$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);
/** * 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; } } } }
$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('###', ' ', $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 // // -------------------- /*
} } } 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);
* @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) {
/** * 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; }
/** * Ü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); } } }