Author avatar for chad

Default Searches on List Views

Posted by on January 4, 2013

Today's guest post comes from Andrew Copley, an experienced developer who knows the ins-and-outs of SugarCRM. What we love about this post, besides the obviously cool functionality, is the high level concept of safely customizing the core functionality in a novel way. This translates into a solution that can be easily mass distributed via add-ons.

One of the more common requests I receive from my clients is default searches based on roles and users for ListViews. Of course you can set up predefined searches through the advanced Search panel, but often clients want the convenience of the search already implemented on retrieving the List. A relatively straightforward way is to use a logic_hook on the 'after_login' event to force a search on to the preferences for the module.

Suppose we wish to retrieve only those contacts which belong to a particular account 'ACME Inc.'.

1. If there isnt already a logic_hook.php file, create one in the 'custom/modules/Users' directory and add an entry:

2. The second part is to create the file defaultSearch.php in the same directory, defining the class 'defaultSearch' with the function filterList. We also need to include the StoreQuery class which will be used to force the query onto the list.

Of course, this can be augmented with a conditional statement of user or role, for example. For Advanced searches, you need to replace 'basic' with 'advanced' and multiple list values use an array: e.g. 'assigned_user_id_basic'=>array('1','',').

One of the great advantages of using this method is that if the user changes the search and logs out, on logging in again, the original predefined search is restored.