hozzászólás létrehozása modulból

nevergone képe

Sziasztok!

Még mindig a Freeblog importálónál tartok, a hozzászólások importálását szerezném megoldani.
Mivel nem szeretek az adatbázisban "túrkálni" a rendszer megkerülésével, megpróbálom felhasználni a rendszer által nyújtott függvényeket.

Viszont lehet, hogy itt egy hibát fogtam, ugyanis első próbám az volt, hogy betöltöttem egy már létező kommentet, átírtam a node-azonosító és a komment-azonosító értékét, és el akartam menteni újra. Arra számítottam, hogy ezzel a másik node is kap egy ugyanolyan tartalmú hozzászólást:

  $comm = _comment_load(1);
  $comm->nid = 11;
  $comm->cid = 7;
  comment_save ($comm);

Viszont a comment_save függvény szintaktikai hibára fut:

Fatal error: Unsupported operand types in C:\xampp\htdocs\drupal6\modules\comment\comment.module on line 699

Próbálkoztam egy ilyen megoldással, de ez is ugyanazt a fenti hibaüzenetet adja:

  $comm->cid = 7;
  $comm->pid = 0;
  $comm->nid =11;
  $comm->uid = 1;
  $comm->subject = 'targy01';
  $comm->comment = 'torzs01';
  $comm->hostname = '100.100.100.100';
  $comm->timestamp = time();
  $comm->status = COMMENT_PUBLISHED;
  $comm->format = 1;
  $comm->thread = '01/';

Mivel erről a függvényről szinte semmi példát nem találtam, tudna valaki mutatni egyet a helyes használatára?

Ezzel kapcsolatban még egy kérdés: Van valamilyen mód arra, hogy megszerezzem az egy node -hoz tartozó hozzászólásokat egy objektumban, esetleg úgy, hogy megőrízze a thread-sorrendet, vagyis a hozzászólások egymáshoz való kapcsolatát?

Ui.: A tesztrendszer, amelyen próbálkozom Drupal 6.3

aries képe

A $comm-nak tömbnek kell lennie, nem objektumnak!

0
0
nevergone képe

Azóta már nem igazán tudtam várni, úgy néz ki, hogy sikeresen megoldottam adatbázisból. :)

Ui.: Köszönöm az infót, a hozzászólások felvitele megvolt már, viszont éppen a 'node_comment_statistics' táblával szenvedtem... viszont a comment_save() azt is frissíti. :)

0
0
nevergone képe

Jól működik a comment_save() függvény, valóban tömböt vár paraméterként.
Viszont a modulban létrehozott hozzászólások időbélyegét nem tudtam beállítani... már kezdtem bosszankodni, mikor megláttam ezt a comment_save forráskódjában:

$edit['timestamp'] = time();

És ezt nem értem. Mármint azt, hogy ha a paraméterként átadott tömbben már beállítottam a 'timestamp' értékét, amikor új hozzászólást akarok készíteni, miért kell abban az időbélyeget kötelezően "agyoncsapni" az aktuális időbélyeggel? Vagyis ha én állítok össze egy új hozzászólást, akkor miért nem állíthatom szabadon a létrehozás dátumát?

Most megint ott vagyok, hogy gyakorlatilag mégis ki kell "dobnom" a comment_save() függvény használatát, marad az adatbázis közvetlen piszkálgatása, bár tény, hogy a függvény forráskódjából merítettem pár hasznos ötletet. :)

Ha minden jól megy, nemsokára elkészül a modulba a hozzászólások importálásának első megvalósítása.

0
0
Illyés Edit képe

Vagyis ha én állítok össze egy új hozzászólást, akkor miért nem állíthatom szabadon a létrehozás dátumát?

Most megint ott vagyok, hogy gyakorlatilag mégis ki kell "dobnom" a comment_save() függvény használatát, marad az adatbázis közvetlen piszkálgatása, bár tény, hogy a függvény forráskódjából merítettem pár hasznos ötletet. :)

Nem kell, csak fogod a comment_save() visszatérési értékét (comment id), és teszel még egy rövid kört az adatbázishoz, ahol felülírod a timestamp mezőt. Bár tényleg jobb lenne, ha előbb rákérdezne, van-e már timestamp beállítva.

0
0
nevergone képe

Mivel amikor a választ kaptam, már volt egy elég jól működő, közvetlenül az adatbázist használó megoldásom, inkább azt fejlesztettem tovább. Csak szebbnek, elegánsabbnak éreztem volna a Drupal API -n keresztül megoldani.

0
0
Pasqualle képe

közvetlenül az adatbázist használó megoldásom

nem ajanlott. ilyen hozzaallassal a comment_save()-et is atirhatod..

0
0
nevergone képe

Több helyen is láttam ilyen megoldást, és mivel a táblaszerkezet nem változik (remélhetőleg) a 6.x -es sorozat alverziói között, ezért megfelelő körültekintéssel és alapossággal használható szerintem.
Végülis az adatbázis-piszkálgatás jelen esetben csak új rekordok beszúrását jelenti a táblába. Mint látod, szerettem volna az API -t használni, de nem túl nyerő, a függvényt pedig inkább nem írnám át. :)

0
0
aries képe

$edit['timestamp'] = time();

Küldd be feature requestként a drupal.org-on. Mellékelhetsz hozzá patch-et is, könnyű préda :)

0
0
nevergone képe

Nem rossz ötlet, sőt... megpróbálkozom vele, csak még sohasem csináltam ilyent. :)

0
0
nevergone képe

Megtaláltam már a rendszerben:
http://drupal.org/node/175516

Ahhoz képest, hogy mióta ott van, és ott a működő patch is, baromira nem foglalkoznak vele.

0
0
Pasqualle képe

amig nem kerul RTBC statuszba nem is fog bekerulni..

0
0
nevergone képe

És mikor vagy mitől kerül olyan státuszba?

0
0
Pasqualle képe

az ugy mukodik, hogy valaki megirja a patchet, es valaki mas meg leellenorzi, hogy tenyleg mukodik es atteszi RTBC statuszba.
D7-es modositasoknal kovetelmeny mar, hogy a simpletest tesztek se dobjanak hibat a modositas utan, vagy ha nincs olyan simpletest ami tesztelne a modositast, akkor irni kell hozza..

0
0
nevergone képe

valaki mas meg leellenorzi, hogy tenyleg mukodik es atteszi RTBC statuszba.

Leellenőriztem és áttettem, elvileg.

0
0
Pasqualle képe

sajnos nem jutott at elso probalkozasra..

0
0
nevergone képe

De a 7.x alatt javították is, ott is megnéztem. Csak a 6.x alatt hibás. Szóval nem is értettem, hogy miért tetted át 7.x-dev -re.

0
0
Pasqualle képe

mert mindent eloszor a legfrissebb verzioban kell megoldani. lattam, hogy nem stimmel a verzio, gondolkozas nelkul atkapcsoltam..
meg tudod keresni mikor kerult bele a 7es verzioba?

0
0
nevergone képe

Ezt a listát átnézve azt találtam, hogy itt még nem javították, de ebben (a következő) már igen.
Mit lehetne még tenni az ügy érdekében? Nem bánnám, ha a Drupal 6.4 hibajavító kiadásban ezt is javítanák.

0
0
Pasqualle képe

koszi, hogy megkerested. igy megsporolhatsz egy simletest-et

a masik issuet kell csak backport-olni D6ra es rogton RTBC-be is lehet tenni..

0
0
nevergone képe

Most nem tudom pontosan, hogy mit csináltam, de talán jól. :)

0
0
Pasqualle képe

ez igy nem eleg. patch-et is kellene mellekelni, mert az ugy latom lemaradt. nem hinnem, hogy a D7es patchet csuszasmentesen ra lehet huzni D6ra..

0
0
nevergone képe

Készítettem patch -et Drupal 6.3 -hoz, mellékeltem is, többet nem tudtam tenni.

0
0