 temporary object caching the ctools object cache is a specialized cache for storing data that is nonvolatile this differs from the standard drupal cache mechanism which is volatile meaning that the data can be cleared at any time and it is expected that any cached data can easily be reconstructed in contrast data stored in this cache is not expected to be reconstructable it is primarily used for storing user input which is retrieved in stages allowing for more complex user interface interactions the object cache consists of 3 normal functions for cache maintenance and 2 additional functions to facilitate locking to use any of these functions you must first use ctoolsinclude ctoolsinclude objectcache get an object from the nonvolatile ctools cache this function caches in memory as well so that multiple calls to this will not result in multiple database reads param obj a 32 character or less string to define what kind of object is being stored primarily this is used to prevent collisions param name the name of the object being stored param skipcache skip the memory cache meaning this must be read from the db again return the data that was cached function ctoolsobjectcacheget obj name skipcache false store an object in the nonvolatile ctools cache param obj a 32 character or less string to define what kind of object is being stored primarily this is used to prevent collisions param name the name of the object being stored param cache the object to be cached this will be serialized prior to writing function ctoolsobjectcacheset obj name cache remove an object from the nonvolatile ctools cache param obj a 32 character or less string to define what kind of object is being stored primarily this is used to prevent collisions param name the name of the object being removed function ctoolsobjectcacheclear obj name to facilitate locking which is the ability to prohibit updates by other users while one user has an object cached this system provides two functions determine if another user has a given object cached this is very useful for locking objects so that only one user can modify them param obj a 32 character or less string to define what kind of object is being stored primarily this is used to prevent collisions param name the name of the object being removed return an object containing the uid and updated date if found null if not function ctoolsobjectcachetest obj name the object returned by ctoolsobjectcachetest can be directly used to determine whether a user should be allowed to cache their own version of an object to allow the concept of breaking a lock that is clearing another users changes remove an object from the nonvolatile ctools cache for all session ids this is useful for clearing a lock param obj a 32 character or less string to define what kind of object is being stored primarily this is used to prevent collisions param name the name of the object being removed function ctoolsobjectcacheclearall obj name typical best practice is to use wrapper functions such as these get the cached changes to a given task handler function delegatorpagegetpagecache name ctoolsinclude objectcache cache ctoolsobjectcacheget delegatorpage name if cache cache delegatorpageload name cache locked ctoolsobjectcachetest delegatorpage name return cache store changes to a task handler in the object cache function delegatorpagesetpagecache name page ctoolsinclude objectcache cache ctoolsobjectcacheset delegatorpage name page remove an item from the object cache function delegatorpageclearpagecache name ctoolsinclude objectcache ctoolsobjectcacheclear delegatorpage name  