Skip to content

Commit

Permalink
Exception-Messages nicht an User ausgeben (#6059)
Browse files Browse the repository at this point in the history
  • Loading branch information
gharlan committed Mar 22, 2024
1 parent 7a4517a commit 82a25e8
Show file tree
Hide file tree
Showing 8 changed files with 247 additions and 302 deletions.
50 changes: 23 additions & 27 deletions redaxo/src/addons/mediapool/pages/structure.php
Expand Up @@ -20,36 +20,32 @@
if ($PERMALL) {
$editId = rex_request('edit_id', 'int');

try {
if (in_array($mediaMethod, ['edit_file_cat', 'delete_file_cat', 'add_file_cat'])) {
if (!$csrf->isValid()) {
$error = rex_i18n::msg('csrf_token_invalid');
} else {
if ('edit_file_cat' == $mediaMethod) {
$catName = rex_request('cat_name', 'string');
$data = ['name' => $catName];
$success = rex_media_category_service::editCategory($editId, $data);
} elseif ('delete_file_cat' == $mediaMethod) {
try {
$success = rex_media_category_service::deleteCategory($editId);
} catch (rex_functional_exception $e) {
$error = $e->getMessage();
}
} elseif ('add_file_cat' == $mediaMethod) {
$parent = null;
$parentId = rex_request('cat_id', 'int');
if ($parentId) {
$parent = rex_media_category::get($parentId);
}
$success = rex_media_category_service::addCategory(
rex_request('catname', 'string'),
$parent,
);
if (in_array($mediaMethod, ['edit_file_cat', 'delete_file_cat', 'add_file_cat'])) {
if (!$csrf->isValid()) {
$error = rex_i18n::msg('csrf_token_invalid');
} else {
if ('edit_file_cat' == $mediaMethod) {
$catName = rex_request('cat_name', 'string');
$data = ['name' => $catName];
$success = rex_media_category_service::editCategory($editId, $data);
} elseif ('delete_file_cat' == $mediaMethod) {
try {
$success = rex_media_category_service::deleteCategory($editId);
} catch (rex_functional_exception $e) {
$error = $e->getMessage();
}
} elseif ('add_file_cat' == $mediaMethod) {
$parent = null;
$parentId = rex_request('cat_id', 'int');
if ($parentId) {
$parent = rex_media_category::get($parentId);
}
$success = rex_media_category_service::addCategory(
rex_request('catname', 'string'),
$parent,
);
}
}
} catch (rex_sql_exception $e) {
$error = $e->getMessage();
}

$link = rex_url::currentBackendPage(array_merge($argUrl, ['cat_id' => '']));
Expand Down
96 changes: 42 additions & 54 deletions redaxo/src/addons/structure/lib/service_article.php
Expand Up @@ -82,13 +82,9 @@ public static function addArticle($data)
$AART->addGlobalCreateFields($user);
$AART->addGlobalUpdateFields($user);

try {
$AART->insert();
// ----- PRIOR
self::newArtPrio($data['category_id'], $key, 0, $data['priority']);
} catch (rex_sql_exception $e) {
throw new rex_api_exception($e->getMessage(), $e);
}
$AART->insert();
// ----- PRIOR
self::newArtPrio($data['category_id'], $key, 0, $data['priority']);

rex_article_cache::delete($id, $key);

Expand Down Expand Up @@ -170,46 +166,42 @@ public static function editArticle($articleId, $clang, $data)
$EA->setValue('priority', $data['priority']);
$EA->addGlobalUpdateFields(self::getUser());

try {
$EA->update();
$message = rex_i18n::msg('article_updated');
$EA->update();
$message = rex_i18n::msg('article_updated');

// ----- PRIOR
$oldPrio = (int) $thisArt->getValue('priority');

if ($oldPrio != $data['priority']) {
rex_sql::factory()
->setTable(rex::getTable('article'))
->setWhere('id = :id AND clang_id != :clang', ['id' => $articleId, 'clang' => $clang])
->setValue('priority', $data['priority'])
->addGlobalUpdateFields(self::getUser())
->update();

foreach (rex_clang::getAllIds() as $clangId) {
self::newArtPrio($data['category_id'], $clangId, $data['priority'], $oldPrio);
}
}
// ----- PRIOR
$oldPrio = (int) $thisArt->getValue('priority');

rex_article_cache::delete($articleId);
if ($oldPrio != $data['priority']) {
rex_sql::factory()
->setTable(rex::getTable('article'))
->setWhere('id = :id AND clang_id != :clang', ['id' => $articleId, 'clang' => $clang])
->setValue('priority', $data['priority'])
->addGlobalUpdateFields(self::getUser())
->update();

// ----- EXTENSION POINT
$message = rex_extension::registerPoint(new rex_extension_point('ART_UPDATED', $message, [
'id' => $articleId,
'article' => clone $EA,
'article_old' => clone $thisArt,
'status' => $thisArt->getValue('status'),
'name' => $data['name'],
'clang' => $clang,
'parent_id' => $data['category_id'],
'priority' => $data['priority'],
'path' => $data['path'],
'template_id' => $data['template_id'],
'data' => $data,
]));
} catch (rex_sql_exception $e) {
throw new rex_api_exception($e->getMessage(), $e);
foreach (rex_clang::getAllIds() as $clangId) {
self::newArtPrio($data['category_id'], $clangId, $data['priority'], $oldPrio);
}
}

rex_article_cache::delete($articleId);

// ----- EXTENSION POINT
$message = rex_extension::registerPoint(new rex_extension_point('ART_UPDATED', $message, [
'id' => $articleId,
'article' => clone $EA,
'article_old' => clone $thisArt,
'status' => $thisArt->getValue('status'),
'name' => $data['name'],
'clang' => $clang,
'parent_id' => $data['category_id'],
'priority' => $data['priority'],
'path' => $data['path'],
'template_id' => $data['template_id'],
'data' => $data,
]));

return $message;
}

Expand Down Expand Up @@ -357,20 +349,16 @@ public static function articleStatus($articleId, $clang, $status = null)
$EA->setValue('status', $newstatus);
$EA->addGlobalUpdateFields(self::getUser());

try {
$EA->update();
$EA->update();

rex_article_cache::delete($articleId, $clang);
rex_article_cache::delete($articleId, $clang);

// ----- EXTENSION POINT
rex_extension::registerPoint(new rex_extension_point('ART_STATUS', null, [
'id' => $articleId,
'clang' => $clang,
'status' => $newstatus,
]));
} catch (rex_sql_exception $e) {
throw new rex_api_exception($e->getMessage(), $e);
}
// ----- EXTENSION POINT
rex_extension::registerPoint(new rex_extension_point('ART_STATUS', null, [
'id' => $articleId,
'clang' => $clang,
'status' => $newstatus,
]));
} else {
throw new rex_api_exception(rex_i18n::msg('no_such_category'));
}
Expand Down
172 changes: 80 additions & 92 deletions redaxo/src/addons/structure/lib/service_category.php
Expand Up @@ -108,35 +108,31 @@ public static function addCategory($categoryId, array $data)
$AART->addGlobalUpdateFields($user);
$AART->addGlobalCreateFields($user);

try {
$AART->insert();
$AART->insert();

// ----- PRIOR
if (isset($data['catpriority'])) {
self::newCatPrio($categoryId, $key, 0, $data['catpriority']);
}

$message = rex_i18n::msg('category_added_and_startarticle_created');

rex_article_cache::delete($id, $key);

// ----- EXTENSION POINT
// Objekte clonen, damit diese nicht von der extension veraendert werden koennen
$message = rex_extension::registerPoint(new rex_extension_point('CAT_ADDED', $message, [
'category' => clone $AART,
'id' => $id,
'parent_id' => $categoryId,
'clang' => $key,
'name' => $data['catname'],
'priority' => $data['catpriority'],
'path' => $path,
'status' => $data['status'],
'article' => clone $AART,
'data' => $data,
]));
} catch (rex_sql_exception $e) {
throw new rex_api_exception($e->getMessage(), $e);
// ----- PRIOR
if (isset($data['catpriority'])) {
self::newCatPrio($categoryId, $key, 0, $data['catpriority']);
}

$message = rex_i18n::msg('category_added_and_startarticle_created');

rex_article_cache::delete($id, $key);

// ----- EXTENSION POINT
// Objekte clonen, damit diese nicht von der extension veraendert werden koennen
$message = rex_extension::registerPoint(new rex_extension_point('CAT_ADDED', $message, [
'category' => clone $AART,
'id' => $id,
'parent_id' => $categoryId,
'clang' => $key,
'name' => $data['catname'],
'priority' => $data['catpriority'],
'path' => $path,
'status' => $data['status'],
'article' => clone $AART,
'data' => $data,
]));
}

return $message;
Expand Down Expand Up @@ -175,76 +171,72 @@ public static function editCategory($categoryId, $clang, array $data)

$EKAT->addGlobalUpdateFields($user);

try {
$EKAT->update();
$EKAT->update();

// --- Kategorie Kindelemente updaten
if (isset($data['catname'])) {
$ArtSql = rex_sql::factory();
$ArtSql->setQuery('SELECT id FROM ' . rex::getTablePrefix() . 'article WHERE parent_id=? AND startarticle=0 AND clang_id=?', [$categoryId, $clang]);
// --- Kategorie Kindelemente updaten
if (isset($data['catname'])) {
$ArtSql = rex_sql::factory();
$ArtSql->setQuery('SELECT id FROM ' . rex::getTablePrefix() . 'article WHERE parent_id=? AND startarticle=0 AND clang_id=?', [$categoryId, $clang]);

$EART = rex_sql::factory();
for ($i = 0; $i < $ArtSql->getRows(); ++$i) {
$EART->setTable(rex::getTablePrefix() . 'article');
$EART->setWhere(['id' => $ArtSql->getValue('id'), 'startarticle' => '0', 'clang_id' => $clang]);
$EART->setValue('catname', $data['catname']);
$EART->addGlobalUpdateFields($user);
$EART = rex_sql::factory();
for ($i = 0; $i < $ArtSql->getRows(); ++$i) {
$EART->setTable(rex::getTablePrefix() . 'article');
$EART->setWhere(['id' => $ArtSql->getValue('id'), 'startarticle' => '0', 'clang_id' => $clang]);
$EART->setValue('catname', $data['catname']);
$EART->addGlobalUpdateFields($user);

$EART->update();
rex_article_cache::delete((int) $ArtSql->getValue('id'), $clang);
$EART->update();
rex_article_cache::delete((int) $ArtSql->getValue('id'), $clang);

$ArtSql->next();
}
$ArtSql->next();
}
}

// ----- PRIOR
if (isset($data['catpriority'])) {
$parentId = (int) $thisCat->getValue('parent_id');
$oldPrio = (int) $thisCat->getValue('catpriority');
// ----- PRIOR
if (isset($data['catpriority'])) {
$parentId = (int) $thisCat->getValue('parent_id');
$oldPrio = (int) $thisCat->getValue('catpriority');

if ($data['catpriority'] <= 0) {
$data['catpriority'] = 1;
}
if ($data['catpriority'] <= 0) {
$data['catpriority'] = 1;
}

if ($oldPrio != $data['catpriority']) {
rex_sql::factory()
->setTable(rex::getTable('article'))
->setWhere('id = :id AND clang_id != :clang', ['id' => $categoryId, 'clang' => $clang])
->setValue('catpriority', $data['catpriority'])
->addGlobalUpdateFields($user)
->update();
if ($oldPrio != $data['catpriority']) {
rex_sql::factory()
->setTable(rex::getTable('article'))
->setWhere('id = :id AND clang_id != :clang', ['id' => $categoryId, 'clang' => $clang])
->setValue('catpriority', $data['catpriority'])
->addGlobalUpdateFields($user)
->update();

foreach (rex_clang::getAllIds() as $clangId) {
self::newCatPrio($parentId, $clangId, $data['catpriority'], $oldPrio);
}
foreach (rex_clang::getAllIds() as $clangId) {
self::newCatPrio($parentId, $clangId, $data['catpriority'], $oldPrio);
}
}
}

$message = rex_i18n::msg('category_updated');
$message = rex_i18n::msg('category_updated');

rex_article_cache::delete($categoryId);
rex_article_cache::delete($categoryId);

// ----- EXTENSION POINT
// Objekte clonen, damit diese nicht von der extension veraendert werden koennen
$message = rex_extension::registerPoint(new rex_extension_point('CAT_UPDATED', $message, [
'id' => $categoryId,
// ----- EXTENSION POINT
// Objekte clonen, damit diese nicht von der extension veraendert werden koennen
$message = rex_extension::registerPoint(new rex_extension_point('CAT_UPDATED', $message, [
'id' => $categoryId,

'category' => clone $EKAT,
'category_old' => clone $thisCat,
'article' => clone $EKAT,
'category' => clone $EKAT,
'category_old' => clone $thisCat,
'article' => clone $EKAT,

'parent_id' => $thisCat->getValue('parent_id'),
'clang' => $clang,
'name' => $data['catname'] ?? $thisCat->getValue('catname'),
'priority' => $data['catpriority'] ?? $thisCat->getValue('catpriority'),
'path' => $thisCat->getValue('path'),
'status' => $thisCat->getValue('status'),
'parent_id' => $thisCat->getValue('parent_id'),
'clang' => $clang,
'name' => $data['catname'] ?? $thisCat->getValue('catname'),
'priority' => $data['catpriority'] ?? $thisCat->getValue('catpriority'),
'path' => $thisCat->getValue('path'),
'status' => $thisCat->getValue('status'),

'data' => $data,
]));
} catch (rex_sql_exception $e) {
throw new rex_api_exception($e->getMessage(), $e);
}
'data' => $data,
]));

return $message;
}
Expand Down Expand Up @@ -342,20 +334,16 @@ public static function categoryStatus($categoryId, $clang, $status = null)
$EKAT->setValue('status', $newstatus);
$EKAT->addGlobalUpdateFields(self::getUser());

try {
$EKAT->update();
$EKAT->update();

rex_article_cache::delete($categoryId, $clang);
rex_article_cache::delete($categoryId, $clang);

// ----- EXTENSION POINT
rex_extension::registerPoint(new rex_extension_point('CAT_STATUS', null, [
'id' => $categoryId,
'clang' => $clang,
'status' => $newstatus,
]));
} catch (rex_sql_exception $e) {
throw new rex_api_exception($e->getMessage(), $e);
}
// ----- EXTENSION POINT
rex_extension::registerPoint(new rex_extension_point('CAT_STATUS', null, [
'id' => $categoryId,
'clang' => $clang,
'status' => $newstatus,
]));
} else {
throw new rex_api_exception(rex_i18n::msg('no_such_category'));
}
Expand Down

0 comments on commit 82a25e8

Please sign in to comment.