Help modr8 modul gond van!

GaBy képe

Sziasztok! Nagyon nagy segitség kellene most ezt ki tudná ki gobozni nekem mi lehet a gond ha ezt a modult bekapcsolom a tagoknál csak ez jelenik meg minden lapon a szöveg:

user warning: Unknown column 'n.moderate' in 'where clause' query: SELECT DISTINCT(n.nid) FROM node_comment_statistics n INNER JOIN node_access na ON na.nid = n.nid WHERE ((n.moderate != 1 OR n.uid = 12)) AND (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 2 AND na.realm = 'nodeaccess_rid') OR (na.gid = 12 AND na.realm = 'nodeaccess_uid') OR (na.gid = 12 AND na.realm = 'nodeaccess_author') OR (na.gid = 2 AND na.realm = 'forum_access'))) AND ( n.comment_count > 0 ) ORDER BY n.last_comment_timestamp DESC LIMIT 0, 10 in /home/d/domainname/public_html/domainname/mappa/includes/database.mysql.inc on line 172.

és se moderátor se az adminoknak nincs gond csak a tagoknak ha valaki rá jönne jó lenne mert ez egy fontos modul lenn épp e helyett meg nem találtam még jobbat.

ez a modul: http://drupal.org/node/167770

pp képe

a hiba oka, hogy valamelyik másik modul nem megfelelően használja a db_rewrite_sql hívást.
Egy olyat kell keresned, hogy:

SELECT DISTINCT(n.nid) FROM node_comment_statistics n

Ha megvan ez a lekérdezés, innen lehet tovább menni, ugyanis nem tudom mit is csinálhat az a lekérdezés. (valószínűleg teljesen át kell írni) Legjobb lenne ezt a hibát jelezni a modul írójának. Nem a modr8 modul írójának, mert nem ott van a hiba. A dolog bája, hogy a node_access modul is belepakol egy csomó dolgot a lekérdezésbe, de neki csak a nid mező kell, ami mind a node, mind a node_comment_statistics táblában megtalálható, tehát azzal nem akad össze.(és valószínűleg a legtöbb modullal nem akad össze, mivel általában a nid mező kell a kapcsolódáshoz.)

pp

0
0
Hojtsy Gábor képe

Vagy másképp fogalmazva a moder8 db_rewrite_sql() hívása okozza a problémát, de ez azért jelentkezik, mert a másik modul, aki a node_comment_statistics táblát nevezi n-nek hibásan jár el (a node táblát kell n-re aliaszolni Drupal konvenciók szerint). Tehát ahogy PP mondta, azt kellene megtalálni, hogy melyik modul nevezi n-nek a node_comment_statistics táblát.

0
0
pp képe

a modr8 hook_db_rewrite_sql függvényben van a "hiba", ugyanis a modr8-ban nincs distinct rész sehol, ha rákeresel, ugye.

Tehát valahol van egy db_rewrite_sql hívás, ami hibás(ugyanis olyan táblánál használják aminél nem kéne, vagy nem így kéne, ha azt akarják, hogy a node-ra vonatkozó jogosultságok érvényre jussanak, de ugye mivel nem tudjuk mi az eredeti sql, és hogy hol van ezért nehéz megmondani, hogy mit és hol változtass). Mint írtam is, ez csak akkor probléma, ha nem a nid-et használják, hanem másik mezőt, pl moderated, sticky, stb. (ilyen mező ugye nincs, ez a satöbbi, ami itt nem egy popegyüttes ugye... remélem most már elég korrekt a megfogalmazásom...:D)

pp
ja és ne keressétek a hook_db_rewrite_sql függvényt, mert olyan ugye nincs, csak modr8_db...

0
0
Hojtsy Gábor képe

function modr8_db_rewrite_sql($query, $primary_table, $primary_field, $args) {
  switch ($primary_field) {
    case 'nid':
      // this query deals with node objects
      $access = (user_access('administer nodes') || user_access('moderate content'));
      if (!$access) {
        global $user;
        $return = array();
        if ($primary_table != 'n') {
          $return['join'] = "LEFT JOIN {node} n ON $primary_table.nid = n.nid";
        }
        if ($user->uid == 0) {
          $return['where'] = "(n.moderate != 1)";
        }
        else {
          $return['where'] = "(n.moderate != 1 OR n.uid = ". (int)$user->uid .")";
        }
        return $return;
      }
      break;
 
  }
}

Ez itt a kódunk. Namost ha a tábla nem n, akkor JOIN-olja a node táblát, ha viszont n, akkor felteszi, hogy node, és teszi bele a feltételt. Tehát a hiba máshol van :) Mert egy lekérdezésben n van megadva aliaszként, pedig nem a node táblára vonatkozik a lekérdezés.

Rákerestem ilyen lekérdezésekre a kiegészítő modulokban, és a Drupalban. A comment modulban találtam rá. Drupal 5.3-ban ez van:

SELECT nc.nid FROM {node_comment_statistics} nc WHERE nc.comment_count > 0 ORDER BY nc.last_comment_timestamp DESC

A fent beküldött lekérdezés ennek a felturbózott változata modr8 és más jogosultság kezelő kiegészítőkkel, amiket a többi modul ráaggat.

Ez a CVS logok alapján a Drupal 5.1 és 5.2 között lett kijavítva, hogy az nc tábla aliaszt használja, előtte az n aliaszt használta hibásan. Magyarul kedves GaBy: tessék frissíteni a Drupal újabb kiadására, és a probléma megoldódik. (Ez még sok más potenciális hibát is megold és pár biztonsági rés befoltozását is jelenti).

0
0
pp képe

1. Van a db_rewrite_sql. Ha én egy olyan lekérdezést csinálok, ami a node táblából kérdez le, és szeretném, hogy a Drupal hozzáfárás szabályozási rendszerén keresztül menjen akkor nekem a db_query függvény hívása előtt, a db_rewrite_sql függvényt meg kell hívnom. (ami végighivogatja a megfelelő modulok függvényeit és kiegészí az sql lekérdezésemet a megfelelő cuccokkal)

2. Ha én szeretnék ilyen lekérdezésekbe beépülni akkor meg kell valósítanom a hook_db_rewrite_sql kampót ahol aztán kibővíthetem az ilyen sqleket a saját hozzáférés szabályozásommal.

Én azt írtam a hiba máshol van mert 2. eset áll elő(ezt írtad Te is a második hozzászólásodban ;)) Te az első hozzászólásodban az 1. esetre hivatkoztál, mint pontosítás, holott szerintem pont az a zagyválás ;) Lehet rosszul értelmeztem a hozzászólásodat mindjárt elolvasom mégegyszer!
Natehát a kifogásolt rész:

a moder8 db_rewrite_sql() hívása okozza a problémát

Ez írtad pontosításkén az én következő mondatomra:

valamelyik másik modul nem megfelelően használja a db_rewrite_sql hívást.

Én azon problémázom, hogy nem a modr8 db_rewrite_sql hívása okozza a problémát, hanem valamelyik másik modul. Ebbe a hibás hívásba épül bele a modr8 a hook-kal, ami a hibát kiváltja.

Szóval ugyan arról beszélünk, de nekem van igazam :D

pp

Elvileg, de javíts ki, ha tévedek a node_comment_statistics táblával nem is lehetne db_rewrite_sql-t hívni :

$primary_table Name or alias of the table which has the primary key field for this query. Possible values are: {comments}, {forum}, {node}, {menu}, {term_data}, {vocabulary}.

Az már egy másik történet, hogy az alapértelmezett érték az 'n' ami ugye nincs itt a lehetésges értékek között :D Tehát valami nagyon nem úgy van ahogyan van. (na megyek forrást túrni, hogy választ kapjak a kérdésemre...)

0
0
Hojtsy Gábor képe

A comment modulban a hozzászólások megjelenítése is lehet jogosultság függő (például hozzászólás egy általad nem látható node-hoz), ezért ott a statisztikát is ugyanúgy kell szűrni. Így van a node_comment_statistics táblán ilyen hívás. Elvileg bármilyen lekérdezésen lehet ilyen hívás, bár kétségtelen, hogy gyakorlatilag a felsorolt táblákra korlátozzák legtöbbször.

0
0
GaBy képe

Hát ugy látom valamibe bele trafáltam de ez nekem megas :D De szivesen át adom az admin logint aki jelentkezik és átt nézze a rendszert persze ha érdekli (na engem biztos ) , hogy végül is mi okozza a problémát jogok vagy modulok veszekednek együtt :D

gabywap(kukac)freemail(pont)hu az msn- is ez :) És köszönöm ez eddigieket is. :)

0
0
Hojtsy Gábor képe

Tudjuk, hogy az a gond, hogy nem frissítettél még a Drupal újabb kiadásaira. Most már 5.4-re kellene. Különben nem csak ez a hiba marad meg, hanem mindenféle biztonsági rések is.

0
0
GaBy képe

Okés frissités de hogyan kell még azt nem csináltam, ha leirnátok szivesen veszem, vagy csak az updatere megyek és akkor is lefrissitem akkor? :) Köszi eddigi hozzászólásotakat is :)

Egy nem ide illő kérdés láttam Hojtsy Gábor az ubuntuban is nagyon ott vagy (ha nem tévedek) én most a 7.04 telepitettem először (linux kezdő, de nagyon érdekel és szeretném azt is meg tanulni és nem tudom mi hogyan megy:D) és php-t kakrok futattni azt hogyan tudom rajta a win-en tudom. :) appservet használok.. ja és ugy kéne irni mint akinek gőze nincs még igazából hozzá :D

0
0
pp képe

a frissítés nagyon jól le van írva, pl a readme.txt-ben, úgy, hogy a hülye is megértse. (pl én is mindig azt olvasom el és verem a fejem a falba, hogy áááá vazzeg hát ezt is elfelejtettem. ;))

Az ubuntunak meg van saját weboldala. (Rendszer/Adminisztráció/Synaptic csomagkezelő. Itt rákeresel a apache2, php, mysql szavakra és szépen bepipálod, hogy telepítse.)

ennyi.

pp

0
0