Hallo Leute,
ich hab auch lange über den Gruppen-Richtlinien gebrütet und mir immer gedacht, das is doch umständlich, und bei nicht vorkommenden Kombinationen völlig sinnlos.
Mit folgendem PHP-Skript werden die Gruppen und Gruppen-Kombinationen aus der fe_groups- und fe_users-Tabelle ausgelesen und die Konfigurationen in das TSconfig-Feld der root-Seite eingefügt. (D.h. nur Kombinationen die auch bestehen werden verarbeitet.)
!!! das Feld wird mit dieser Methode überschrieben !!!
(diverse Änderungen an IDs sind evtl. natürlich noch nötig) ;-)
# Datenbankverbindung ----------------------------------
list($dbserver,$dbuser,$dbpass,$dbname) = array('localhost','user','password','dbname');
if (!$dbh = mysql_connect($dbserver,$dbuser,$dbpass)) {
die ("Schwerer Fehler!\nVerbindung zum Datenbank-Server fehlgeschlagen.\nMySQL: ".mysql_errno()." - ".mysql_error()."\n");
}
if (!mysql_select_db($dbname,$dbh)) {
die ("Schwerer Fehler!\nKann Datenbank nicht öffnen.\nMySQL: ".mysql_errno()." - ".mysql_error()."\n");
}
# Werteermittlung ----------------------------------
$upd_val = "# !!!! Dieses Feld wird automatisch ueberschrieben !!!!";
$upd_val .= "\ntx_crawler.crawlerCfg.paramSets {";
$upd_val .= "\n content = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]";
$upd_val .= "\n content.procInstrFilter = tx_indexedsearch_reindex, tx_cachemgm_recache, tx_indexedsearch_crawler";
$upd_val .= "\n content.baseUrl = http://address/";
# News ----------------------------------
$upd_val .= "\n\n ttnews = &tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:45]";
$upd_val .= "\n ttnews.procInstrFilter = tx_indexedsearch_reindex, tx_cachemgm_recache";
$upd_val .= "\n ttnews.pidsOnly = 37";
$upd_val .= "\n ttnews.cHash = 1";
$upd_val .= "\n ttnews.baseUrl = http://address/";
$upd_val .= "\n}";
$upd_val .= "\n# Einzelgruppen";
$done = array();
$Q = "SELECT uid FROM fe_groups WHERE deleted=0 ";
if(!$R = mysql_query($Q,$dbh)) {
die("MySQL: ".mysql_errno()." - ".mysql_error()."\n".$Q."\nErr: SELECT Einzelgruppen - Crawler\n");
} else {
if(mysql_num_rows($R) > 0) {
while(list($uid) = mysql_fetch_row($R)) {
$upd_val .= "\ntx_crawler.crawlerCfg.paramSets.grp".$uid." < tx_crawler.crawlerCfg.paramSets.content";
$upd_val .= "\ntx_crawler.crawlerCfg.paramSets.grp".$uid.".userGroups = ".$uid;
$done[] = $uid;
}
} else { $upd_val .= "\n# ! FEHLER ! Keine Einzelgruppe gefunden !"; }
mysql_free_result($R);
}
$upd_val .= "\n# Multigruppen";
$Q = "SELECT DISTINCT usergroup FROM fe_users WHERE deleted=0 ";
if(!$R = mysql_query($Q,$dbh)) {
die("MySQL: ".mysql_errno()." - ".mysql_error()."\n".$Q."\nErr: SELECT Multigruppen - Crawler\n");
} else {
if(mysql_num_rows($R) > 0) {
while(list($grps) = mysql_fetch_row($R)) {
$wert = '';
$gr = array();
$gr = explode(',',$grps);
if(sizeof($gr) > 0 && $gr[0] > 0) {
sort($gr);
$wert = '0,-2,'.implode(',',$gr);
if(!in_array($wert,$done)) {
$upd_val .= "\ntx_crawler.crawlerCfg.paramSets.multi".str_replace(',','',$wert)." < tx_crawler.crawlerCfg.paramSets.content";
$upd_val .= "\ntx_crawler.crawlerCfg.paramSets.multi".str_replace(',','',$wert).".userGroups = ".$wert;
$done[] = $wert;
}
}
}
} else { $upd_val .= "\n# Keine Multigruppe gefunden !"; }
mysql_free_result($R);
}
$upd_val .= "\n";
$U = "UPDATE pages SET TSconfig='$upd_val' WHERE uid=1 ";
if(!$uR = mysql_query($U,$dbh)) { die("MySQL: ".mysql_errno()." - ".mysql_error()."\n".$U."\nErr: UPDATE Gruppenregeln - Crawler\n"); }
exit;
Dieses Skript in eine PHP-Datei und per crontab ausführen und man braucht sich um die Crawler-Config nichtmehr kümmern.
Hoffe das hilft jemandem...