Rules feltételben cck

fecske95 képe

Egy CCK fájl mezőt szeretnék rulesben a "Kiváltott szabályoknál" felhasználni feltételként.
Azt akarom vizsgálni tartalom mentésnél vagy frissítésnél van e értéke vagy nincs...
Valaki csatol e fájlt vagy nem.

Updated content field_csatolt mezejének van értéke...

Valami miatt nem veszi figyelembe az üres beállítást. Vagy éppen Negate nem üres állapotot.

Ezért arra gondoltam hogy esetleg php -ban, de azt nem igazán tudom hogy értéknek mit adjak meg:
próbálta 0 és ""' is de így sem működik.

 
return array(
 0 => array(„fid” => fid értéke?,list=> list értéke?, „data” => data értéke?),
);

Van valakinek tapasztalata ötlete?

Drupal verzió: 
gazsesz képe

Nézd meg, hogy az adatbázisban mi szerepel a mezőben, ha nincs fájl feltöltve. Ha NULL szerepel, akkor sztem az is NULL kifejezéssel kell operálni, mert az ha jól tudom, egy különleges érték. Talán itt a hu-n volt erről egy értekezés.

0
0

Gazsesz

fecske95 képe

Megnéztem NULL van az adatbázisban a tábla nézetben de ha megnyitom szerkesztésre nincs semmi a mezőkben...
Mindenesetre kipróbáltam

return array(
  0 => array(„fid” => NULL,list=> NULL, „data” => NULL),
 
);

meg így is és az eredménye

return array(
  0 => array(„fid” => 0,list=> 0, „data” => 0),
 
);

a témára az oldalon próbáltam rá keresni de nem találta konkrétan ilyesmit

egyáltalán jól írom be a dolgokat a 0 => array( itt a nul a sor elején az OK?

0
0
gazsesz képe

Sajnos nem vagyok programozó guru.
A NULL érték egy különleges cucc, ezért külenlegesen kell kezelni, vannak rá külön függvények, feltételek: is_NULL, is_not_NULL, de keress rá a googliban, php, sql null, némeg itt: http://php.net/manual/en/function.is-null.php

0
0

Gazsesz

fecske95 képe

Ja közben én is bogarásztam és találtam ezt az issues-t
http://drupal.org/node/997112

a pachet kipróbáltam de hibaüzenetet adott vissza

warning: array_diff_assoc() [function.array-diff-assoc]: Argument #2 is not an array in /home1/valami/public_html/sites/all/modules/cck/includes/content.rules.inc on line 338.

ezután átvarázsoltam a cck/includes/content.rules.inc fájl alját (ugyanis az utolsó függvényről van szó ebben a fájlban) valami ilyesmire és ez most úgy tűnik működik.
Figyelembe veszi a filefiled állapotát üres nem üres...
A change eseményre továbbra sem reagál a file mező de... valahol itt lesz annak is a megoldása...
A többi eseményem, amelyek a rules kezel úgy tűnik a helyén maradt, működik.
A change és értékhez kötöttek is.

Azért engem megnyugtatna ha egy profi drupalos programozó rá tudna nézni erre a kódra... Ami igazából csak + egy feltétellel bővült:
if (is_array($sub_value) && is_array($node_value[$delta])) {

 
 
function _content_rules_field_has_value($node_value, $value) {
  if (count($value) != count($node_value)) {
    return FALSE;
  }
   // Loop over multiple fields
   foreach ($value as $delta => $sub_value) {
     // Check if all properties of the value are there in the node value too
    if (is_array($sub_value) && is_array($node_value[$delta])) { 
      if (count(array_diff_assoc($sub_value, $node_value[$delta])) != 0) {
        if (gettype($sub_value) != gettype($node_value[$delta])) {
      return FALSE;
    }
 
    if (is_array($sub_value) && is_array($node_value[$delta]) && count(array_diff_assoc($sub_value, $node_value[$delta])) != 0) {
       return FALSE;
     }
   }
    elseif ($sub_value !== $node_value[$delta]) {
      return FALSE;
    }       
   }
  } 
  return TRUE;
}  
 
 
0
0