Drupal szavazatok és felhasználók összeköthetősége

Azt hiszem a következő kép mindent elmond arról, hogy mennyire köthetőek össze egy Drupal szavazás szavazatai az azt leadó felhasználókkal:

Képernyőmentés egy Drupal oldalról, amelyen egy szavazásnál a felhasználók által leadott szavazatok láthatóak felhasználónként listázva.

Szavazáskor érdemes észben tartani, hogy ez megőrződik az idők végezetéig, és valószínűleg ugyanez a helyzet az egyéb szavazós oldalak nagy részével is.

Nyilván, egy egyszerű webes szavazásnál a szerver mindenképp megtudja, hogy mire szavazott a felhasználó, hacsak nem hozunk össze mondjuk JavaScripttel egy teljes anonimitást biztosító szavazást, de ez nem túl jellemző. Mindenesetre jobban örülnék, ha a választott opciót nem a felhasználó nevéhez köthetően tárolná a Drupal (és bármelyik másik webes rendszer sem).

A szavazatok nem összeköthető tárolásához csak két táblára van szükség:

szavazott felhasználók:

  • szavazás azonosítója
  • felhasználó azonosítója

szavazások állása:

  • szavazás azonosítója
  • opció azonosítója
  • leadott szavazatok száma

Szavazáskor a szavazott felhasználók táblába bekerül egy rekord a felhasználó és a szavazás azonosítójával. Így meg lehet akadályozni, hogy egy ember kétszer szavazzon. A szavazatát külön nem rögzítjük, az csak a szavazások állása táblába kerül be, konkrétan a választott opció számlálóját (leadott szavazatok száma attribútum) növeljük eggyel.

A dolog hátránya, hogy nem lehet szavazatot visszavonni (és újra szavazni), csak a szavazás teljes újrakezdésével.

(Biztos vagyok benne, hogy nem én vagyok az első, aki a fenti dolgot leírja, viszont hirtelen nem találtam semmilyen más oldalt, ami ugyanerről a témáról szól. Kapcsolódó linkeket örömmel fogadnék akár kommentben, akár e-mailben.)

Technikai részletek: Drupal 6, beépített Poll modul.

Tartalom átvétel