Vielen Dank emergence, das war es aber nicht.
Die Änderung blendet für alle User alle Artikel aus, die er nicht
selber erstellt hat, was imo selten sinnvoll ist. Zumal es an der
Rechtestruktur nichts ändert und alles über die URL manipulierbar
bleibt... Kontrolle ist einfach besser.
Ich habe die Änderungen nun selbst gemacht, falls das jemand benötigt!
Wirkung:
Mit dieser Änderung können Benutzer ALLE Ihre eigenen Artikel editieren,
auch wenn sie sonst keine Editierrechte haben.
Somit ist es möglich externe Redakteure einzusetzen und ihnen keinen
Zugriff auf eigene Daten zu geben.
Artikel Online setzen, Startartikel Option, Löschen etc. bleiben hiervon
unberührt und werden weiterhin über die Rechteverwaltung gesteuert.
Änderung
Jeweils das, was hier mit
BEGIN DELETE und
END DELETE einkommentiert
ist suchen und durch das Gesamte ersetzen, falls nicht anders angegeben.
Schritte:
contenido/includes/functions.general.php
Diesen Block irgendwo in die Datei setzen (wenn es
geht nicht innerhalb einer anderen Funktion

)
Code: Alles auswählen
/** CR016 * BEGIN INSERT:
* Prüft ob aktueller User dem Artikel Author entspricht.
* @param md5-Hash User-ID
* @param int Artikel-ID
* @return true | false
*/
function UserIsAuthor($idUser, $idArt)
{
global $cfg;
$db = new DB_Contenido;
$qry = "SELECT u.user_id
FROM ".$cfg['tab']['phplib_auth_user_md5']." AS u,
".$cfg['tab']['art_lang']." AS a
WHERE a.author = u.username
AND a.idart = '".$idArt."'";
$db->query($qry);
$db->next_record();
if ($db->num_rows() == 1 and $db->f("user_id") == $idUser):
return true; // User is author!
endif;
return false;
}
/** CR016 * END INSERT; */
contenido/includes/include.con_art_overview.php
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($perm->have_perm_area_action( "con_editcontent", "con_editart" ) ||
$perm->have_perm_area_action_item( "con_editcontent", "con_editart" ,$idcat)) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
if ($perm->have_perm_area_action( "con_editcontent", "con_editart" ) or
$perm->have_perm_area_action_item( "con_editcontent", "con_editart" ,$idcat) or
UserIsAuthor($auth->auth["uid"], $idart)) {
/** CR016 * END INSERT; */
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($perm->have_perm_area_action("con_editart","con_edit") ||
$perm->have_perm_area_action_item("con_editart","con_edit",$lidcat)) {
** CR016 * END DELTE; */
/** CR016 * BEGIN INSERT: */
if ($perm->have_perm_area_action("con_editart","con_edit") or
$perm->have_perm_area_action_item("con_editart","con_edit",$lidcat) or
UserIsAuthor($auth->auth["uid"], $idart)) {
/** CR016 * END INSERT; */
contenido/includes/include.con_edit_form.php
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($perm->have_perm_area_action($area, "con_edit") ||
$perm->have_perm_area_action_item($area,"con_edit", $idcat)) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
if ($perm->have_perm_area_action($area, "con_edit") or
$perm->have_perm_area_action_item($area,"con_edit", $idcat) or
UserIsAuthor($auth->auth["uid"], $idart)) {
/** CR016 * END INSERT; */
contenido/classes/class.backend.php
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($perm->have_perm_area_action_item($area, $db->f("name"), $itemid) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
$pAccess = false; //flag
if ($area == 'con_editart' or $area == 'con_editcontent'):
global $idart, $auth;
if (UserIsAuthor($auth->auth["uid"], $idart)) $pAccess = true;
endif;
if ($perm->have_perm_area_action_item($area, $db->f("name"), $itemid) or $pAccess) {
/** CR016 * END INSERT; */
FRONT_CONTENT.PHP der betroffenen Projekte:
Code: Alles auswählen
/** CR016 * BEGIN BELETE: *
if ($perm->have_perm_area_action_item("con_editcontent","con_editart", $idcat) && $inUse == false) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
if (($perm->have_perm_area_action_item("con_editcontent","con_editart", $idcat)
or UserIsAuthor($auth->auth["uid"], $idart)) and $inUse == false) {
/** CR016 * END INSERT; */
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($inUse == false && $view == "edit" && ($perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat)) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
if ($inUse == false and
$view == "edit" and
($perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat)
or UserIsAuthor($auth->auth["uid"], $idart))
) {
/** CR016 * END INSERT; */
Anmerkung: Bei Contenido 4.4.5 funktioniert das, in anderen Versionen ist
es nicht getestet.
Viel Spaß.