Forums / Setup & design / Auto update users
Steve P
Saturday 09 July 2005 2:31:09 am
I wonder if anyone can suggest a way for me to update my users from a script? I would like to update a field "payment_status" automatically on completion of a shop transaction ie to "paid_o5" or similar.
Best
Steve
Marco Zinn
Saturday 09 July 2005 3:28:39 am
Sounds to me as you would need some "Workflow event", which is triggered by some shop trigger. This will involve PHP coding, AFAIK. You will either need to changed an attribute value of some existing (user) object or create a new version of this. You cannot do this with pure template mechanims or so. But: aren't there enough shop things available?"Payment status" shouldn't be stored with a user, but with some order, i think. I'd expect, that this is availabe in ezPublish anyway (I never used shops myself yet).
Marco http://www.hyperroad-design.com
Saturday 09 July 2005 3:56:47 am
Thanks. In this case I am using the "shop" for a number of custom products including paid access to some areas of the site.
I was hoping for a short cut/example of using the store() function to update a single field in my [adapted] user group - I have not tried to use store() yet & need to get my head round the syntax.
Best wishes
Pål J Didriksen
Saturday 09 July 2005 5:26:38 am
I have used the following code to change an attribute value and store the change. Found most of the code somewhere on ez.no, so you should probaly thank someone else ;)
// Fetch current version of the object (provided you have the objectID) $contentObject =& eZContentObject::fetch( $objectID ); $contentObjectVersion =& $contentObject->version( $contentObject->attribute( 'current_version' ) ); $contentObjectAttributes =& $contentObjectVersion->contentObjectAttributes(); // Loop through the attributes, to find the right one (in this example, contentclassattribute_id=232) foreach (array_keys($contentObjectAttributes) as $key) { $contentObjectAttribute =& $contentObjectAttributes[$key]; $contentClassAttribute =& $contentObjectAttribute->contentClassAttribute(); if ($contentClassAttribute->attribute("id") == 232) { // Found it! $oldVal = $contentObjectAttribute->attribute("data_int"); $newVal = $oldVal + 1; // Insert new value and store it $contentObjectAttribute->setAttribute("data_int", $newVal); $contentObjectAttribute->store(); } }
Monday 11 July 2005 1:58:32 am
Great. I'll give it a try. Yhanks Pål
Tuesday 12 July 2005 4:09:23 am
OK. Had a look at the code. I can see the logic but had hoped to use some code on a modified template [this looks like extension code?] simply to update one field without any action from the user ie when the page loads. Think i need more help :(