Saját kód futtatás függvény után - szép megoldás?

bimbo000 képe

Sziasztok!

Mi a legszebb megoldás saját kód futtatására minden alkalommal, amikor lefut egy függvény?

A függvény neve: webform_submission_insert

Próbáltam trigger akcióval, de ott ha jól tudom csak node,comment,user,taxonomy-khoz lehet triggert definiálni.
Olyan megoldás érdekel, ami nem igényli a modul változtatás (ezt mindenképpen szeretném elkerülni update-ek miatt). Ha van erre szép megoldás, segítsétek légyszi. Előre is köszönöm.

Zoli

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Fórum: 
pp képe

Mivel elég ködösen fogalmaztál választ adni nehéz. Csak olyan függvénybe tudsz beleépülni ami erre lehetőséget teremt. Ha a webform_submission_insert nem ilyen akkor nem tudsz beleépülni. Mivel gyanítom ez egy form elküldésekor hívódik meg ajánlom a form_alter hook-ot, talán azzal meg lehet oldani azt amit szeretnél.

pp

0
0
bimbo000 képe

Köszönöm a válaszod. Sajnos nem lehet beépülni a modulni. Legalábbis én nem találtam rá módot. Nincsen sem hook, sem theme függvény. Igazából a form_alter sem jó, mert nem a form adatain szerettem volna változtatni. Az említett függvényben van egy global $user parancs, es ezzel a user adatokkal menti a webform a kerdoiv egy példányát... ide szerettem volna beépülni, hogy én mondhassam meg, milyen user alá mentse.
Az új igények mértéke sajnos már mindenképpen azt igényelte, hogy minimálisan ugyan, de bele nyúljak a kódba, így a téma is felejtős.
"Csak olyan függvénybe tudsz beleépülni ami erre lehetőséget teremt" - Ha jól tudom ezek a hook_, theme_ függvények, igaz? Ezen kívül van még olyan típusú függvény ami engedélyezi a függvény testreszabását?

0
0
aboros képe

http://api.drupal.org/api/file/developer/topics/forms_api_reference.html...
ezzel a kulcsal a form tömbben megadhatod, hogy mi hívódjon meg beküldéskor. ez kell neked.

új igények mértéke.. ..hogy minimálisan ugyan, de bele nyúljak a kódba

a hook_form_alterrel szinte bármilyen módosítást elvégezhetsz akármilyen űrlapon. jól gondold át ezt a kódba nyúlkálást, általában ríl péjn in di essz. mi az ami miatt a webform kódjába kell nyúlnod?

0
0

-
clear: both;

bimbo000 képe

Sikeres kérdőív kitöltés végén a következő webform funkció hívódik meg:

function webform_submission_insert($node, $submitted) {
  global $user;
 
  $result = db_query("INSERT INTO {webform_submissions} (nid, uid, submitted, remote_addr) VALUES (%d, %d, %d, '%s')", $node->nid, $user->uid, time(), ip_address());
 
  $sid = db_last_insert_id('webform_submissions', 'sid');
 
  foreach ($submitted as $cid => $value) {
    // Don't save pagebreaks as submitted data.
    if ($node->webform['components'][$cid]['type'] == 'pagebreak') {
      continue;
    }
 
    if (is_array($value)) {
      $delta = 0;
      foreach ($value as $k => $v) {
        db_query("INSERT INTO {webform_submitted_data} (nid, sid, cid, no, data) VALUES (%d, %d, %d, %d, '%s')", $node->nid, $sid, $cid, $delta, $v);
        $delta++;
      }
    }
    else {
      db_query("INSERT INTO {webform_submitted_data} (nid, sid, cid, no, data) VALUES (%d, %d, %d, %d, '%s')", $node->nid, $sid, $cid, 0, $value);
    }
  }

Itt az első sorban betöltjük az aktuális user-t, és ehhez rendeli a webform a submission-t. Ez az amin változtatni szerettem volna, vagyis hogy egy általam meghatározott user-hez rendelje a submission-t, és ne az aktuális felhasználóhoz.

0
0
pp képe

form_alter-ben betolsz egy új submit függvényt és ott egyszerűen beállítod a usert a tábla minden sorára:
$USER_ID változóba tedd bele a kívánt azonosítót.

db_query("UPDATE {webform_submissions} uid=%d", $USER_ID);

pp

0
0