+ static $backend_classes;
+ if (!isset($backend_classes)) {
+ $backend_classes = array();
+ }
+ if (!isset($backend_classes[$backend])) {
+ /**
+ * Support backend provided by plugins. Plugin function must
+ * return an associative array with as key the backend name ($backend)
+ * and as value the file including the path containing the backend class.
+ * i.e.: $aBackend = array('backend_template' => SM_PATH . 'plugins/abook_backend_template/functions.php')
+ *
+ * NB: Because the backend files are included from within this function they DO NOT have access to
+ * vars in the global scope. This function is the global scope for the included backend !!!
+ */
+ $aBackend = do_hook('abook_add_class');
+ if (isset($aBackend) && is_array($aBackend) && isset($aBackend[$backend])) {
+ require_once($aBackend[$backend]);
+ } else {
+ require_once(SM_PATH . 'functions/abook_'.$backend.'.php');
+ }
+ $backend_classes[$backend] = true;
+ }