Hallo,
ich schreibe derzeit an einer Extension, die mit DAM zusammenarbeiten muss. Ich lasse Dateien von DAM indexieren, um sie ähnlich wie dam_downloads dann anzuzeigen. Dummerweise kann ich nicht indexieren, solange ich nicht im Backend eingeloggt bin, weil TYPO3 mir die Schreibrechte auf die Tabelle tx_dam verweigert.
Wie kann ich FrontEnd-Usern die Rechte geben, in die Tabelle zu schreiben?
mit SQL ?
was wird verweigert ? welche Funktionen nutzt Du ?
Mir wird das Indexing verweigert, folgenden Code verwende ich:
require_once(PATH_txdam.'lib/class.tx_dam_indexing.php');
$index = t3lib_div::makeInstance('tx_dam_indexing');
$index->init();
$index->initEnabledRules();
$index->setRunType('auto');
$indexedFiles = $index->indexFiles($file, 18-);
Der Code stammt aus dem Indexing-Modul von DAM selbst. Solange ich im BE eingeloggt bin, funktioniert es, andernfalls nicht.
schau dir mal die extension dam_index an,
da gibt es einen cronjob, der über das cli arbeitet.
ich habe es auchschonmal ohne cli geschafft, bin aber nicht mehr sicher, wo der knackpunkt war.
der code von damals, falls dir das hilft.
require_once(PATH_txdam.'lib/class.tx_dam_scbase.php');
require_once(PATH_txdam.'lib/class.tx_dam_indexing.php');
require_once(PATH_txdam.'lib/class.tx_dam_db.php');
$this->index = t3lib_div::makeInstance('tx_dam_indexing');
$this->index->init();
$this->index->setRunType('auto');
$this->setupFile = t3lib_div::getIndpEnv('TYPO3_SITE_URL').'typo3conf/ext/t3quixplorer/damrulses.xml';
if (!$this->index->restoreSerializedSetup(t3lib_div::getUrl($this->setupFile))) {
die ('Setup file is not a valid indexing setup: '.$this->setupFile."\n");
}
$this->index->setPID(3);
$filePreprocessingCallback = NULL;
if ($this->fileProcessingScript) $filePreprocessingCallback = array(&$this, 'filePreprocessingCallback');
$this->index->setDryRun(false);
$this->index->enableMetaCollect(true);
$this->index->enableReindexing(true);
$this->index->setPathsList(array($reldam));
$this->index->recursive = true;
$this->index->indexUsingCurrentSetup(NULL, NULL, NULL);
if($this->index->stat['totalCount']) {
#echo (string)$this->index->stat['totalCount'].' files indexed in '.max(1,ceil($this->index->stat['totalTime']/1000)).' sec.'."\n";
#$this->dam = t3lib_div::makeInstance('tx_dam_db');
#print_r($this->index->getFileMetaInfo($reldam,''));
#exit();
#$this->dam->insertUpdateData($this->index->getFileMetaInfo($reldam,''));
} else {
#echo 'No files indexed.'."\n";
}
Was macht dieser Code genau? Sehe ich das richtig, dass Du damit das Indexing für mehrere Pfade startest?
Das würde mir nicht allzuviel bringen, da ich ganz bestimmte Dateien indexieren lassen muss und danach auch die UID des dam-Eintrages brauche. Genau das liefert mir im Moment mein Code, nur funktioniert er eben nur bei eingeloggtem BE-User.
Die UID brauche ich, damit ich direkt danach die gewünschte Kategorie zuweisen kann.