What am I working on?

Print

It's that time again! I've begun major work on the next plugin on my task list. Currently it's CB Auto Actions. It is undergoing its major rewrite finally as version 7.0.0. A lot of improvements are on the way. From UX improvements, performance improvements, new functionality for actions, and more. Check out some of the details below.

 

Ok, so the first major change is the API has been properly pulled apart and placed into namespaced autoloader classes. It will no longer load every single modal PHP file when the plugin it self loads, which was draining a lot of memory for no reason. They are all loaded on demand only now. The same applies for the XML, which powers the parameters during auto action edit. It previously loaded all the XML views instead of only what it needed. The result is frontend and backend significant performance improvements.

Next up is an improvement to several actions to target a user other than the user who triggered the action. This means access and condition checks against one user, but substitutions from another. There's a lot of ways this can be utilized for example a field action that has User set to User and Access set to Moderators Only, BUT with the new action User parameter set to [var1_id]. What that means is the action will only change the fields value IF the user triggering the action is a moderator, BUT it will change the field value of the user being edited and not the moderator! This type of usecase can be applied to several other action types as well due to these new parameters.

As triggers become more complex they gain more variables so the 1-10 variable limit has been increased to 1-15 to accommodate more complex triggers. Another big change is how actions output their results. Currently usage output handling is hardcoded into a per-action basis. This will change with 7.0.0. Output will become a part of the auto action instead of the action. This will make it easier to determine if an auto action should echo, print, etc.. its results. In addition to this new behavior is being introduced to be able to insert new tabs into various plugins. For example CB GroupJive group display trigger includes its tabs object. CB Auto Actions will be able to detect this and allow a new tab to be inserted.

So far that's the current progress, but a lot more is planned. Check out what to expect from CB Auto Actions 7.0.0.

https://forge.joomlapolis.com/projects/cb-cbautoactions/issues

There should not be any backwards compatibility issues this release, but as always everyone will be encourage to make a backup and test test test to make sure everything continues to behave as expected once released.



JoaoTapuia's Avatar
JoaoTapuia replied the topic: #297197 6 years 6 months ago
Kyle and Joomlapolis Team, thanks for so many incredible new features.
CB Privacy Actions it was what CB Activity needed to complete.

And much more news for me to test and find out.
CB Auto Actions 7.0 is amazing.

krileon's Avatar
krileon replied the topic: #296908 6 years 6 months ago
Another progress update. I've updated the CB Privacy action to allow it to output, save, and do authorized checks for privacy controls. I've then implemented system actions for CB Activity utilizing this. What this means is per-activity privacy controls is now working with CB Auto Actions 7.0.0. I'll be looking into doing the same for CB Gallery. These new system actions are default enabled.

Additionally I don't see 7.0.0 releasing this week, but very certain next week. Found some issues that need to be addressed while using the new auto action usages. Specifically in CB Activity pages are being lost when filtering out rows and need to figure out why before releasing with the new system actions.
krileon's Avatar
krileon replied the topic: #296652 6 years 7 months ago
Just another update, but it's a big one. To keep it short CB Auto Actions 7.0.0 will finally be able to act on Joomla events. This includes 3rd party Joomla extensions if they're using Joomla API to trigger events. A new system plugin will be included with CB Auto Actions that loads CB Auto Actions early in the framework initialization process, which allows CB Auto Actions to bind to most Joomla events. All you have to do is prefix the trigger with joomla_ and CB Auto Actions will treat it as a Joomla event and bind it using Joomla API.

This means custom content prepare usages with CB Auto Actions. Inserting CB content into other extensions and much much more.

With that said once this is available I urge everyone to be careful. You can block your site by doing this since a lot of these events are wide speeding. For example if you use the module render Joomla event and replace the contents it will block backend since the menus are also modules.
krileon's Avatar
krileon replied the topic: #296508 6 years 7 months ago
CB Auto Actions 7.0.0 is progressing well. So far User object and Variable looping have both been fully implemented as well as new Output functionality.

User object looping basically lets you select a variable and checks if it's an array or a traversable class. It then loops the action through every object of that array and treats them as the user for the action if they're a CB user object. This ideally will be useful in being able to for example send notifications to an array of users via a trigger.

Variable looping is somewhat the same as user looping except it lets you loop the objects of a variable. This could mean you've an array of GJ groups and you want to modify every group of that array in a single action. This is now possible.

Next up is the Output parameters. The output parameters let you specify exactly how the auto action should display its contents. Before this was pretty strict to a action type (e.g. like a Code action). You couldn't for example run the results of an Activity stream through your own PHP to adjust the output. This is now possible though. Under the new Output tab you can specify how the output is displayed (return, echo, etc..) then you've a Layout parameter that works similar to Field layouts in that you can supply your own substitution supported string using [content] to substitute in the contents of the auto action. Once you've done that you can specify the method for the layout. By default the method is to treat the layout like HTML, but you can select PHP to treat the layout like PHP code and execute it accordingly. This is important because some plugins will take the return value and insert it into display while other plugins expect an array of values so you need access to both.

For an example of the new Output functionality check out an Activity stream rendered inside of a CB GroupJive group below.



I know MANY of you are eager to put all this to work, but please hang in there a bit longer. There's still more work to be done and more importantly A LOT more testing to do. Once I've got all of this done the last feature will be new system actions for Gallery and Activity outputs directly in CB GroupJive Groups easily toggled on with a simple click. For now and the forseeable future there's no plans at this time to deprecate the existing photo, video, etc.. integrations since GJ can function without either Gallery or Activity.