Sziasztok!
Pár napja kínlódok egy olyan megoldáson, hogy amikor nem regisztrált felhasználók feltöltenek egy tartalmat (node-ot), akkor a rendszer az adataik alapján regisztrálja is őket. A regisztráció után pedig az újonnan létrejött node author értékéhez az új felhasználót kellene társítani, mert akkor később tudná módosítani a megadott adatokat. Erre felépítettem egy szabályt:
0. Node mentése után.
1. Feltételek: a felhasználó szerepköre regisztrálatlan, valamint legyen kitöltve az e-mail mező a tartalomnál.
2. Hozzon létre egy új entitást, ami egy felhasználó, a node vonatkozó mezőit társítsa az user mezőihez. Az entitás változóértéke: newuser.
3. Az újonnan létrehozott felhasználó alapesetben blokkolt, ezért feloldom a blokkolást. - eddig minden pöpec, létrejön a felhasználó, jók az értékei.
4. Adatérték beállítása: node:author = newuser. Na ez nem megy. A node-author:uid sajnos az entity modul által védett érték, nem lehet módosítani. Ha a node:author:name értéket akarom megadni, akkor hibaüzenet, nem jön létre sem a node, sem az user, mert még node-authorom sincs, nemhogy neve.
Itt a pontos szabályom eddig:
{ "rules_lazy_reg" : { "LABEL" : "Lazy reg", "PLUGIN" : "reaction rule", "OWNER" : "rules", "REQUIRES" : [ "rules" ], "ON" : { "node_insert--bringak" : { "bundle" : "bringak" } }, "IF" : [ { "user_has_role" : { "account" : [ "node:author" ], "roles" : { "value" : { "1" : "1" } } } }, { "NOT data_is_empty" : { "data" : [ "node:field-email" ] } } ], "DO" : [ { "entity_create" : { "USING" : { "type" : "user", "param_field_user_lakcim" : [ "node:field-lakcim" ], "param_name" : "[node:field-email]", "param_mail" : "[node:field-email]" }, "PROVIDE" : { "entity_created" : { "newuser" : "L\u00e9trej\u00f6tt entit\u00e1s" } } } }, { "data_set" : { "data" : [ "newuser:field-user-telefon" ], "value" : "[node:field-telefonszam]" } }, { "data_set" : { "data" : [ "newuser:field-user-lakcim" ], "value" : [ "node:field-lakcim" ] } }, { "user_unblock" : { "account" : [ "newuser" ] } }, { "data_set" : { "data" : [ "node:author" ], "value" : [ "newuser" ] } } ] } }
Van valakinek ötlete, arra, hogy hogyan lehetne az új node szerzője az új user?
Most gyorban
Most gyorban összekattingattam egy rule-t, ami a termék tipusú tartalmakat mentésük után átadja egy másik felhasználó tulajdonába, ez gond nélkül működik.
Lehet hogy mert én a fethed entityvel töltöm be a user entitást és annak át tudja adni a tartalmat. Esetleg próbáld ki hogy az account-ból számazó userid-t betöltöd fetch entity by id-vel és az így kapott objektumot teszted a node:author-ba
Nem jött be
A fenti módon sem sikerül authort beállítani. Az a legérdekesebb, hogy a newuser-nek nincs UID-je, ha kiíratom, akkor üres az érték.