Funktion zum Rechte Kopieren!?

Gesperrt
franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Funktion zum Rechte Kopieren!?

Beitrag von franky » Mo 24. Okt 2005, 13:34

Hallo, kennt einer eine Funktion die mir Rechte von einem Bestehenden Verzeichnis auf ein anderes dupliziert? Also zb. copyRichts(FromIdcat, $toIdCat,$UserId)... Finde so eine nicht.. Die Funktion copyRightsForElement (in der functions.rights.php) kann ich so leider nicht gebrauchen.. Aber mal am Rande zusätzlich gefragt, wofür ist der Übergabewert $area und die Tabelle con_area?

mfg franky

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 24. Okt 2005, 14:02

hmm...

was willst du denn genau wohin kopieren ?

$area wird benötigt um die rechte zuortenbar zu machen...
content zb wäre con
kategorien zb str
*** make your own tools (wishlist :: thx)

franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky » Mo 24. Okt 2005, 14:38

ist eine anlehnung an meinen vorherigen Forum beitrag, wo es darum ging eine Kategorie inkl. Rechte und Einstellungen ohne das "Kopie von" zu kopieren.. Alles andere klappt jetzt soweit wie ich das möchte, jedoch benötige ich noch eine Funktion welche die Rechte an die neue Kategorie von der vorhandenen übernimmt und diese an die neue weitergibt. mfg franky

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 24. Okt 2005, 16:19

ähm, dieses code stück würde genau das machen was du willst:

Code: Alles auswählen

    // set correct rights for element
    cInclude ("includes", "functions.rights.php");
    copyRightsForElement("str", $sourceidcat, $targetidcat, $lang);
    copyRightsForElement("con", $sourceidcat, $targetidcat, $lang);
$sourceidcat = von welcher idcat die rechte übernommen werden sollen
$targetidcat = die ziel idcat wohin die rechte kopiert werden sollen
$lang = die id der aktuellen sprache
*** make your own tools (wishlist :: thx)

franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky » Mo 24. Okt 2005, 17:03

Hallo, ja die Funktion habe ich schon ausprobiert leider funktioniert diese nicht bei mir (funktionieren wohl, also kein error, aber kein effekt)

hier mal der source der mir kategorien mit unterkategorien füllen soll, und dann bestehende artikel hineinkopieren:

Code: Alles auswählen

		
		// Pressespiegel Kategorien anlegen
		$PressespiegelCat = strNewCategory($TreeIdCat, "Pressespiegel", true);
		$PressespiegelAktuellCat = strNewCategory($PressespiegelCat, "aktuell", true);
		$PressespiegelArchivCat = strNewCategory($PressespiegelCat, "Archiv", true);
		// Kategorien mit Inhalt (Artikelvorlagen) füllen
		conCopyArticle(86, $PressespiegelCat, "Pressespiegel - Startseite","1");
		conCopyArticle(87, $PressespiegelAktuellCat, "Pressespiegel - aktuell - Startseite","1");
		conCopyArticle(88, $PressespiegelAktuellCat, "Pressespiegel - Vorlage");
		conCopyArticle(89, $PressespiegelArchivCat, "Pressespiegel - Archiv - Startseite","1");
		// Rechte für die Kategorie koprieren
		copyRightsForElement("con", "100", $PressespiegelCat, "1");
		copyRightsForElement("con", "101", $PressespiegelAktuellCat, "1");
		copyRightsForElement("con", "102", $PressespiegelArchivCat, "1");
		copyRightsForElement("str", "100", $PressespiegelCat, "1");
		copyRightsForElement("str", "101", $PressespiegelAktuellCat, "1");
		copyRightsForElement("str", "102", $PressespiegelArchivCat, "1");
Artikel kopieren klappt sowei super, kategorien inkl. unterkategorien erstellen auch. Nur die Rechtevergabe und Artikel als Startartikel setzen klappt nicht. Die zahlen 100-103 sind die referenz catid's welche die erforderlichen rechte für die neuen kategorien enthalten.

nächste frage / anmerkung:
kann ich die Function so benutzen? db->f ist richtig gesetzt, nur leider hat auch diese Funktion keine Auswirkung :(...

conMakeStart($db->f("idcatart"),1);

mfg franky

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 24. Okt 2005, 17:41

gibt es in der con_rights einträge die beim feld idcat einträge die 100,101,102 enthalten ?

Code: Alles auswählen

conMakeStart($idcatart,1);
müsste genau so funktionieren...

ich würd mir einfach mal die ganzen werte vor benutzung mit echo ausgeben lassen...
zb -> $db->f("idcatart")

sonst wird es etwas schwer zu debuggen für dich...
*** make your own tools (wishlist :: thx)

franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky » Di 25. Okt 2005, 08:11

Alles so wie es sein müsste... Die Datenbank Tabelle enthält die Werte..:
121 3d033a1fa6bff346a57ad27c538a1c6e 2 56 100 1 1 0
Bearbeiten Löschen 122 3d033a1fa6bff346a57ad27c538a1c6e 1 2 101 1 1 0
Bearbeiten Löschen 123 3d033a1fa6bff346a57ad27c538a1c6e 1 3 101 1 1 0
Bearbeiten Löschen 124 3d033a1fa6bff346a57ad27c538a1c6e 1 57 101 1 1 0
Bearbeiten Löschen 125 3d033a1fa6bff346a57ad27c538a1c6e 1 404 101 1 1 0
Bearbeiten Löschen 126 3d033a1fa6bff346a57ad27c538a1c6e 2 56 101 1 1 0
Bearbeiten Löschen 127 3d033a1fa6bff346a57ad27c538a1c6e 3 5 101 1 1 0
Bearbeiten Löschen 128 3d033a1fa6bff346a57ad27c538a1c6e 3 54 101 1 1 0
Bearbeiten Löschen 129 3d033a1fa6bff346a57ad27c538a1c6e 1 2 102 1 1 0
Bearbeiten Löschen 130 3d033a1fa6bff346a57ad27c538a1c6e 1 3 102 1 1 0
Bearbeiten Löschen 131 3d033a1fa6bff346a57ad27c538a1c6e 1 57 102 1 1 0
Bearbeiten Löschen 132 3d033a1fa6bff346a57ad27c538a1c6e 1 404 102 1 1 0
Bearbeiten Löschen 133 3d033a1fa6bff346a57ad27c538a1c6e 2 56 102 1 1 0
Bearbeiten Löschen 134 3d033a1fa6bff346a57ad27c538a1c6e 3 5 102 1 1 0
Bearbeiten Löschen 135 3d033a1fa6bff346a57ad27c538a1c6e 3 54 102 1 1 0
Bearbeiten Löschen 136 3d033a1fa6bff346a57ad27c538a1c6e 2 56 103 1 1 0
Und er kopiert keine Rechte :(...


Hier ist die Funktion zum Rechte kopieren aus Contenido, vielleicht ist da ja ein Fehler drin. Habe da aber nichts geändert..:

Code: Alles auswählen

function copyRightsForElement ($area, $iditem, $newiditem, $idlang=false) {

   global $cfg, $perm, $auth, $area_tree;

   $db = new DB_Contenido;
   $db2 = new DB_Contenido;

   // get all user_id values for con_rights

   $userIDContainer = $perm->getGroupsForUser($auth->auth["uid"]); // add groups if available
   $userIDContainer[] = $auth->auth["uid"]; // add user_id of current user
   
   // long way start
   /*
      $sql = "SELECT
            group_id
         FROM
            ".$cfg["tab"]["groupmembers"]."
         WHERE
            user_id = '".$userIDContainer[0]."'";

   $db->query($sql);

   while ($db->next_record()) {
      $userIDContainer[] = $db->f("group_id"); // add group_ids
   }
   */
   // long way end

   foreach ($userIDContainer as $key) {
      $statement_where2[] = "user_id = '".$key."' ";
   }

   $where_users =   "(".implode(" OR ", $statement_where2 ) .")"; // only duplicate on user and where user is member of

   // get all idarea values for $area
   // short way
   $AreaContainer = $area_tree[$perm->showareas($area)];

   // long way
   /*
   $AreaContainer[0] = $perm->getIDForArea($area);
   $sql = "SELECT
            idarea
         FROM
            ".$cfg["tab"]["area"]."
         WHERE
            parent_id = '".$area."'";

   $db->query($sql);

   while ($db->next_record()) {
      $AreaContainer[] = $db->f("idarea");
   }
   */

   // long version start
   // get all actions for corresponding area
   $AreaActionContainer = array();
   $sql = "SELECT
            idarea, idaction
         FROM
            ".$cfg["tab"]["actions"]."
         WHERE
            idarea IN (".implode (',', $AreaContainer).")";
   $db->query($sql);

   while ($db->next_record()) {
      $AreaActionContainer[] = Array ("idarea"=>$db->f("idarea"), "idaction"=>$db->f("idaction"));
   }

   // build sql statement for con_rights
   foreach ($AreaActionContainer as $key) {
      $statement_where[] = "( idarea = ".$key["idarea"]." AND idaction = ".$key["idaction"]." )";
   }

   $where_area_actions = "(".implode(" OR ", $statement_where ) .")"; // only correct area action pairs possible

   // final sql statement to get all effected elements in con_right
   $sql = "SELECT
            *
         FROM
            ".$cfg["tab"]["rights"]."
         WHERE
            {$where_area_actions} AND
            {$where_users} AND
            idcat = {$iditem}";
   // long version end

   /*
   // short version start
   $sql = "SELECT
            *
         FROM
            ".$cfg["tab"]["rights"]."
         WHERE
            idarea IN (".implode (',', $AreaContainer).") AND
            idaction != 0 AND
            {$where_users} AND
            idcat = {$iditem}";
   // short version end
   */

   if ($idlang) {
      $sql.= " AND idlang='$idlang'";
   }

   $db->query($sql);

   while ($db->next_record()) {
      $sql = "INSERT INTO ".$cfg["tab"]["rights"]." (idright,user_id,idarea,idaction,idcat,idclient,idlang,`type`) VALUES ('".$db2->nextid($cfg["tab"]["rights"])."','".$db->f("user_id")."','".$db->f("idarea")."','".$db->f("idaction")."','".$newiditem."','".$db->f("idclient")."','".$db->f("idlang")."','".$db->f("type")."');";
      $db2->query($sql);
   }

   // permissions reloaded...
   $perm->load_permissions(true);

}


Desweiteren Funktioniert es mit den Startartikeln auch nicht. Habe die Werte ausgegeben die Stimmen jetzt, aber er ändert trotzdem nichts :(.. Hier mal der Code von der Funktion die ich bearbeitet habe:

Code: Alles auswählen

function conCopyArticle ($srcidart, $targetcat = 0, $newtitle = "", $startart = "")
{
	global $cfg, $_cecRegistry;
	
	$db = new DB_Contenido;
	$db2 = new DB_Contenido;
	
	$sql = "SELECT idclient FROM ".$cfg["tab"]["art"] ." WHERE idart = '$srcidart'";
	
	$db->query($sql); 

	if (!$db->next_record())
	{
		return false;
	}
	
	$idclient = $db->f("idclient");
	$dstidart = $db->nextid($cfg["tab"]["art"]);
	
	$sql = "INSERT INTO ".$cfg["tab"]["art"]." (idart, idclient) VALUES ('$dstidart', '$idclient')";
	$db->query($sql);
	
	conCopyArtLang($srcidart, $dstidart, $newtitle);
	 
	/* Update category */
	$sql = "SELECT idcat FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '$srcidart'";
	$db->query($sql);
	while ($db->next_record())
	{
		$nextid = $db2->nextid($cfg["tab"]["cat_art"]);
		
		$idcatart = $nextid;
		if ($targetcat != 0)
		{
			$idcat = $targetcat;
		} else {
			$idcat = $db->f("idcat");
		}
		
		$idart = $dstidart;
		$status = $db->f("status");
		$createcode = 1;
		
		$sql = "INSERT INTO ".$cfg["tab"]["cat_art"]
			  ." (idcatart, idcat, idart, is_start, status,
					createcode) VALUES ('$idcatart', '$idcat',
                    '$idart', '0', '$status', '$createcode')";
        $db->query($sql); 
		// added!!!! Das hief funktioniert nicht
        if(($startart != "")&&($startart != "0")){
			conMakeStart($idcatart,1);
		}		
	}
vielleicht wirst du da ja raus schlau... ich verstehs langsam nicht mehr...[/code]

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 25. Okt 2005, 08:24

kann es mir erst später etwas ansehen... momentan keine zeit
*** make your own tools (wishlist :: thx)

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 25. Okt 2005, 10:07

hmm...

was sagt das errorlog ?
bzw. wie rufst du dein script auf ?
*** make your own tools (wishlist :: thx)

franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky » Di 25. Okt 2005, 10:43

also im errorlog steht überhaupt nichts was in dieser zeit in frage kommen könnte..

Ich ruft die Funktionen auf, wie ich es oben beschrieben habe.. Das ist meine Funktion um einen neuen Standort mit der entspechenden Kategoriestruktur und den Artikeln zu erstellen:

Code: Alles auswählen

	function NewStandort($StandortName){
		cInclude("includes", "functions.str.php");
		cInclude("includes", "functions.con.php");
		cInclude("includes", "functions.rights.php");
		
		global $str;
		$db = new DB_Contenido();
		strRemakeTreeTable();
		
		// Neuen Tree zusammenbauen
		$TreeIdCat = strNewTree($StandortName);
		conCopyArticle(38, $TreeIdCat, "Vorlage - Startseite");
				
		// News & Termine Kategorien anlegen
		$NewsTermineCat = strNewCategory($TreeIdCat, "News & Termine", true);
		$NewsTermineAktuellCat = strNewCategory($NewsTermineCat, "aktuell", true);
		$NewsTermineArchivCat = strNewCategory($NewsTermineCat, "Archiv", true);
		// Kategorien mit Inhalt (Artikelvorlagen) füllen
		conCopyArticle(75, $NewsTermineCat, "News & Termine - Startseite","1");
		conCopyArticle(80, $NewsTermineAktuellCat, "News & Termine - aktuell - Startseite","1");
		conCopyArticle(132, $NewsTermineAktuellCat, "News & Termine - Vorlage");
		conCopyArticle(81, $NewsTermineArchivCat, "News & Termine - Archiv - Startseite","1");
		// Rechte für die Kategorie koprieren
		copyRightsForElement("con", "100", $NewsTermineCat, "1");
		copyRightsForElement("con", "101", $NewsTermineAktuellCat, "1");
		copyRightsForElement("con", "102", $NewsTermineArchivCat, "1");
		copyRightsForElement("str", "100", $NewsTermineCat, "1");
		copyRightsForElement("str", "101", $NewsTermineAktuellCat, "1");
		copyRightsForElement("str", "102", $NewsTermineArchivCat, "1");
		// Startartikel festlegen
		
		// Stellenmarkt Kategorien anlegen
		$StellenmarktCat = strNewCategory($TreeIdCat, "Stellenmarkt", true);
		$StellenmarktAktuellCat = strNewCategory($StellenmarktCat, "aktuell", true);
		$StellenmarktArchivCat = strNewCategory($StellenmarktCat, "Archiv", true);
		// Kategorien mit Inhalt (Artikelvorlagen) füllen
		conCopyArticle(82, $StellenmarktCat, "Stellenmarkt - Startseite","1");
		conCopyArticle(83, $StellenmarktAktuellCat, "Stellenmarkt - aktuell - Startseite","1");
		conCopyArticle(84, $StellenmarktAktuellCat, "Stellenmarkt - Vorlage");
		conCopyArticle(85, $StellenmarktArchivCat, "Stellenmarkt - Archiv - Startseite","1");
		// Rechte für die Kategorie koprieren
		copyRightsForElement("con", "100", $StellenmarktCat, "1");
		copyRightsForElement("con", "101", $StellenmarktAktuellCat, "1");
		copyRightsForElement("con", "102", $StellenmarktArchivCat, "1");
		copyRightsForElement("str", "100", $StellenmarktCat, "1");
		copyRightsForElement("str", "101", $StellenmarktAktuellCat, "1");
		copyRightsForElement("str", "102", $StellenmarktArchivCat, "1");
				
		
		// Pressespiegel Kategorien anlegen
		$PressespiegelCat = strNewCategory($TreeIdCat, "Pressespiegel", true);
		$PressespiegelAktuellCat = strNewCategory($PressespiegelCat, "aktuell", true);
		$PressespiegelArchivCat = strNewCategory($PressespiegelCat, "Archiv", true);
		// Kategorien mit Inhalt (Artikelvorlagen) füllen
		conCopyArticle(86, $PressespiegelCat, "Pressespiegel - Startseite","1");
		conCopyArticle(87, $PressespiegelAktuellCat, "Pressespiegel - aktuell - Startseite","1");
		conCopyArticle(88, $PressespiegelAktuellCat, "Pressespiegel - Vorlage");
		conCopyArticle(89, $PressespiegelArchivCat, "Pressespiegel - Archiv - Startseite","1");
		// Rechte für die Kategorie koprieren
		copyRightsForElement("con", "100", $PressespiegelCat, "1");
		copyRightsForElement("con", "101", $PressespiegelAktuellCat, "1");
		copyRightsForElement("con", "102", $PressespiegelArchivCat, "1");
		copyRightsForElement("str", "100", $PressespiegelCat, "1");
		copyRightsForElement("str", "101", $PressespiegelAktuellCat, "1");
		copyRightsForElement("str", "102", $PressespiegelArchivCat, "1");
		
		echo("Datenbaum wurde erfolgreich erstellt");
		return($TreeIdCat);
	}
Finde einfach nicht meinen Fehler :(...

franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky » Di 25. Okt 2005, 13:46

was mir noch aufgefallen ist, wäre wenn ich manuell in der categorie-übersicht eine kategorie dublizeire werden die artikel und kategorie eigenschaften auch nicht mit übergeben!?!? hätte einer vielleicht eine lösung zu dem Problem?? :? :? :? :?

Gesperrt