Hey,
I would like to work with the community to achieve a plugin that seems to be needed for a big part of the community and where no good up to date and efficient alternatives are available for at the moment.
We have 2 very good frameworks atm to make our work very easy.
First we have Arck's Roles framework.
Secondly we have Mark Hardings Payment framework.
It should be fairly easy to develop a premium user plugin that let's users subscribe and pay via the Elgg Pay plugin and let their role to be set by the Roles framework.
What do we need?
Back-end
Front-end
About the plugin
I would like to donate this plugin to the community when it's ready with a requirement for the roles plugin, as an addon, we could maybe inplement the payment plugin and use it as the base for this plugin, so the only requirements would be Elgg 1.8/1.9 and the Roles Framework.
I am willing to spend a big amount of my sparetime on this.
Although I'm not the greatest coder yet, I learn fast and I am starting to have a good understandig of Elgg.
I'm a profesional Graphic Designer, so I could definately help with the UI of this plugin.
I will code and bugix as much as I can.
I've forked Mark Hardings Elgg Pay plugin on Github, who is with me?
If nobody helps me, I will do it on myself, but it's gonna take a while and some "help needed" topics ;-)
Thanks, Dries
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by Raül Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.
- moneya@sociabie

moneya - 0 likes
- Dries@driesdk

Dries - 0 likes
- Dries@driesdk

Dries - 0 likes
- moneya@sociabie

moneya - 0 likes
- moneya@sociabie

moneya - 0 likes
- Dries@driesdk

Dries - 0 likes
- Whenever a user buy's a 'pro membersip' with the pay plugin I added a piece of code to the callback then when it's payment is complete, it changes it's role into 'PRO'.
- The second thing I did was to add an expiration-metadata field to the pay object (this object is made with the user as owner and has some metadata about his purchase)
- One of the other metadatafields of the pay object is 'status' where the value is now 'complete' (before the payment is done, it's 'awaiting payment' and it changes to complete when the paypal callback is triggered.
- I have a working rolechanging purchasing system now, but I needed to set the users back to the default role when their expirationdate is expired, so I wrote a piece of code that needs to be ran as a cron every day at midnight.
- This code gets all the pay objects and checks their expirationdate, if it is lower then the current time, it set's the 'status' metadata of the object from 'complete' to 'expired' and it takes the owners entity and changes their role back to 'default'. Below the code that needs to be executed every night to set expired users back to default:
- Next thing to add to this cron is to send a notification or a mail to each user who just got turned back to the default rule with a link to the page where they can subscribe for a year again.
- Another thing to do is to write a small piece to run as a cron as well that just checks if the current time is a week before the expirationdate and send the users a mail that they will expire in a week and should pay if they still want their pro account.
- Matt Beckett@Beck24

Matt Beckett - 0 likes
- Dries@driesdk

Dries - 0 likes
You must log in to post replies.add other payments gateway i.e.......payza......not all countrys is supported by paypal
i am in
Ok, this went better then expected, I have a full working payment system which charges the user.
After payment there is an object with the subtype 'pay' with all the metadata I want (expirationdate,if the payment is complete or pending,what the amount was, what the plan was he/she bought,...)
Now my question is how I use the most efficient way of checking wheter the user can have the pro_role or not.
Is it ok if I just put a little snippit of code in the startfile doing this:
if the user is not a pro_role (so default_role), then check if there is an object with the subtype pay, the owner_guid = logged_in_user_guid and has metadata: 'status=payment_completed', if there is, set it's role to 'pro_user', else, (this means the role is already pro_user, check if the object with subtype 'pay' is there with the right metadata, if it isn't, set role back to default, if it is, do nothing.
Later I want to let a cron check once a day if there are any expirationdates expired, and let it remove the object if it is. So next time the user load a page on my site my script above will check if he is a pro_user, seems like he is so I check the desired object, but that doesn't seem to be there anymore, so it makes the user back to default.
I am pretty new at this, so I'd like to hear from somebody who knows better if this is the right and most efficient approach. I appreciate any thoughts
@moneya: Later, I want to make it work with paypal first before I start adding gateways. But since you're in, you could maybe check out the pay plugin code and see if you can take care of extra gateways.
Thanks
It's probably more effective if I just check if the object is there, where the owner_guid is the same as the logged in user guid, if it is, then check the users role, and set it to pro when it's default, else, do nothing! much simpler :-)
please whats the github link i could add other payment gate way i.e mobile and payza etc
i think this is the real deal , where the owner_guid is the same as the logged in user guid, if it is, then check the users role, and set it to pro when it's default
Well, change of method...
I got a fully working system now working with both the Elgg pay plugin and the roles framework.
The method is:
The expirationdate metadata is a timestamp (+12 months in this case).
So, thats what I've done so far.
It's far from ready, but I'll post what I have as soon as possible on github.
It's not yet userfriendly as a plugin, I'm still reading and learning elgg's in and outs, so it's gonna take some time before I can make this into a very userfriendly plugin, but I will do it eventually.
For now I will incorporate the modified pay plugin to work only for this purpose, and nothing else, and rewrite/rename and remove all functions that need to.
It will depend on the roles framework of course.
Anyone who has advice, or sees something I shouldnt really do, please shout.
That code will cause out of memory issues when you get enough entities. You should use ElggBatch
Allright, thank a lot for mentioning.
Ill look into it. Elgg is one great adventure ;-)