Seite 1 von 1

Kategorie-Abfrage bei hooks

Verfasst: Mo 8. Dez 2014, 12:56
von eSKa
... hallo Zusammen,

ich stehe so ein bisschen auf dem Schlauch. Ich möchte bei Veröffentlichung eines Objekts eine E-Mail versenden.
Das ist auch nicht das Problem.
In dieser E-Mail sollen die Kategorien bzw. Kategorien Pfade des Objekts gelistet werden.
Ich komme über $GLOBALS['we_doc']->Category auch an die ID der Kategorien dran, nur schaffe ich es nicht,
über die "Category"-Datenbanktabelle an die Bezeichung dieser zu gelangen.

Eine Anpassung der folgenden im Forum gefundenen Lösung funktionierte leider nicht.

Code: Alles auswählen

$DocID = $we_doc->ID;
$DocCats = f("SELECT Category FROM tblFile WHERE ID='$DocID'","Category",$DB_WE);
$Cats = explode (",",$DocCats);
$Cats = array_slice ($Cats, 1, -1);
foreach($Cats as $Value)
{
$CatName = f("SELECT Category FROM tblCategorys WHERE ID='$Value'","Category",$DB_WE);
$CatPath = f("SELECT Path FROM tblCategorys WHERE ID='$Value'","Path",$DB_WE);
}
Aber viellleicht hat ja jemand noch einen Tipp oder eine Idee.

Re: Kategorie-Abfrage bei hooks

Verfasst: Mo 8. Dez 2014, 13:20
von e_herrmann
Hi,
wie wäre es, wenn du hierfür we:category nimmst, das kannst du ja auch mit PHP aufrufen. Damit ersparst du dir den direkten Zugriff aus die DB. Und das ist auch sicherer bzgl. Updates.

Grüße Elko

Re: Kategorie-Abfrage bei hooks

Verfasst: Mo 8. Dez 2014, 15:17
von eSKa
... da hatte ich auch schon folgenden Code auf we-devedge.de gefunden, der aber im hook einfach nichts ausspucken will.

Code: Alles auswählen

<?php
  $a_Categories = array();
  $out = (string) '';
  $docID = (int) $GLOBALS['we_doc']->ID;
  // alle Kategorie IDs auslesen für das aktuelle Dokument
  $docCats = (string) f("SELECT Category FROM ".FILE_TABLE." WHERE ID = '$docID'",'Category',$GLOBALS['DB_WE']);
  // String teilen und in eine Array schreiben
  $a_cats = explode(',', $docCats);
  // führendes und letztes Komma entfernen
  $a_cats = array_slice($a_cats, 1, -1);
  // für jeden Array-Eintrag Werte ausgeben
  $a_Categories = array();
  foreach($a_cats as $key => $value)
  {
    $a_result = (array) getHash("SELECT Category,Path FROM ".CATEGORY_TABLE." WHERE ID = '".$value."'",$GLOBALS['DB_WE']);
    $a_Categories[$key]['Name'] = (string) $a_result['Category'];
    $a_Categories[$key]['Path'] = (string) $a_result['Path'];
  }
  // p_r($a_Categories); /* Debug-Ausgabe */
  $out = (string) '';
  foreach($a_Categories as $key => $value)
  {
    $out .= 'Name: ' . $a_Categories[$key]['Name'] . '<br />';
    $out .= 'Pfad + Name: ' . $a_Categories[$key]['Path'] . '<br />';
    $out .= '<hr />';
  }
  echo $out;
?>

Re: Kategorie-Abfrage bei hooks

Verfasst: Mo 8. Dez 2014, 15:29
von eSKa
oh, Korrektur. Es handelt sich ja um Objekte. Habe nun "tblObjectFiles" eingesetzt und es funktioniert.
Danke für den Tipp.

Re: Kategorie-Abfrage bei hooks

Verfasst: Mo 8. Dez 2014, 16:58
von mokraemer
der Kode wird aber nicht (mehr) lange funktionieren. Titel und Beschreibung liegen bald direkt in der DB nicht als serialisiertes Array. Außerdem werden die Kategorien jetzt schon nicht mehr mit führendem/endendem Kommas gespeichert.

Re: Kategorie-Abfrage bei hooks

Verfasst: Mo 8. Dez 2014, 18:18
von eSKa
... und wie rufe ich diese Werte zukünftig dann ab, bzw. ab welcher Version wird das so ein?

Re: Kategorie-Abfrage bei hooks

Verfasst: Di 9. Dez 2014, 16:39
von mokraemer
naja, wie oben bereits geschrieben, bspw. mittels

Code: Alles auswählen

$categories=we_tag('category',array('showpath'=>true,'separator'=>'-'));
falls du sie irgendwie als array brauchst eben dann wieder mit einem explode dazu machen.

Re: Kategorie-Abfrage bei hooks

Verfasst: Mi 10. Dez 2014, 12:26
von eSKa
ah ok, super danke.