Fájlrendszer költöztetése

biggabo19 képe

Sziasztok, lenne pár kérdésem és bizok benne, hogy sikerül is rá megoldást találni
A régi rendszeremet D5ről D6ra cseréltem le. A gyökér könyvtárban található site és files mappát nem bántottam. Azonban most tervezem, hogy a D6nak megfelelő könyvtárszerkezet szerint beteszem a sites/default/files könyvtárba a csatolmányokat képző fájlokat. Azonban az átmozgatással nem is lenne semmi gond, az természetes és triviális. Hanem ugyebár a már feltöltött régebbi csatolmányok a gyökérkönyvtárban található files mappára hivatkoznak. Hogyan lehetne megoldani, hogy az sql adatbázisban,- ugyebár ott kellene frissíteni, gondolom én - a csatolmányok linkjei az új útvonalra mutassanak. És ne kelljen az összes, majdnem 350 node-omat egyesével frissítenek, azok csatolmányait. Elég vacila lenne. Járom a javaslatokat.

Drupal verzió: 
Fórum: 
eMeLA képe

Úgy, hogy írsz egy script-et, ami a files táblában lévő útvonalakat átírja az új útvonalakra.
"Véletlenül" volt kéznél egy ilyen script:

include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
$sql = db_query('SELECT * FROM {files}');
 
while ($t = db_fetch_object($sql)) {
 
    if(strpos($t->filepath, 'iles/')) { // na igen ez bénuska, meg ciki is ha van iles/ alkönyvtár :)
    	$ki = 'UPDATE {files} SET filepath = "sites/all/'.$t->filepath).'" WHERE fid = '.$t->fid;    	
    	print $t->filepath." ----> ".$ki."<br>";
    	//db_query($ki);
    }    
}

1. előtte adatbázis mentés
2. lefuttat, és megnéz, hogy az adatbázis műveletek megfelelőek-e
3. a //db_query($ki); elöl kiveszi a kommentet, és újra fottat
4. megnézi az oldalon, hogy minden jó-e, ha nem adatbázis vissza, script javít és 2. ponttól újra

(nem vagyok programozó, bizonyára lehet szebben is megírni a scriptet, aki tudja szépítse ;)

0
0

...mit tudok: http://web.termuves.hu

biggabo19 képe

Hibát talált benne a phpMyAdmin,íme:

Hiba

SQL-kérés:

include_once './includes/bootstrap.inc';

MySQL jelzi: Dokumentáció
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'include_once './includes/bootstrap.inc'' at line 1

0
0
Pál úr képe

Szóval ez egy PHP szkript, nem kell hozzá phpMyAdmin...

Persze, ha ragaszkodsz az SQL felülethez, meg lehet írni, de az picit macerás...

0
0
eMeLA képe

Ööööö bocsi :)

<?php
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
$sql = db_query('SELECT * FROM {files}');
 
while ($t = db_fetch_object($sql)) {
 
    if(strpos($t->filepath, 'iles/')) { // na igen ez bénuska, meg ciki is ha van iles/ alkönyvtár :)
    $ki = 'UPDATE {files} SET filepath = "sites/all/'.$t->filepath).'" WHERE fid = '.$t->fid;   
    print $t->filepath." ----> ".$ki."<br>";
    //db_query($ki);
    }   
}
?>

Létrehozod az akarmi.php nevű fájt, majd a scriptet belmásolod. Felöltöd a fájlt a Drupal alapkönyvtárba, majd beírod a címsorba http://www.domainom.hu/akarmi.php :)

0
0

...mit tudok: http://web.termuves.hu

biggabo19 képe

Elvégeztem.

Alábbi hiba van:

Parse error: syntax error, unexpected ')' in E:\XAMP\xampp\htdocs\ngportal\script.php on line 11

A kódot átrendeztem csak:

include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
$sql = db_query('SELECT * FROM {files}');
 
while ($t = db_fetch_object($sql)) {
 
    if(strpos($t->filepath, 'files/'))
	// na igen ez bénuska, meg ciki is ha van files/ alkönyvtár :)
    {$ki = 'UPDATE {files} SET filepath = "sites/all/'.$t->filepath).'" WHERE fid = '.$t->fid;  
    print $t->filepath." ----> ".$ki."<br>";
    //db_query($ki);
    }  
}
0
0