X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fhooks.inc;h=b27fc35501788654afcd15ab69df50d23d5ad73c;hb=03dbf580a48b9831dfb6fcbf8c34e1315c26a99e;hp=f5cfe2a09c64ffef8beb3dd71b5a7d5a58f2180f;hpb=5045b61ccd1b86932c8b981041a93112c6f9db36;p=fa-stable.git diff --git a/includes/hooks.inc b/includes/hooks.inc index f5cfe2a0..b27fc355 100644 --- a/includes/hooks.inc +++ b/includes/hooks.inc @@ -93,6 +93,19 @@ class hooks { // return array($security_areas, $security_sections); } + // + // Invoked for all modules before page header is displayed + // + function pre_header($fun_args) + { + } + // + // Invoked for all modules before page footer is displayed + // + function pre_footer($fun_args) + { + } + // // Price in words. $doc_type is set to document type and can be used to suppress // price in words printing for selected document types. @@ -100,11 +113,9 @@ class hooks { // // Returns: amount in words as string. -/* commented out in base class to enable use with hook_invoke_last function price_in_words($amount, $doc_type) { } -*/ // // Exchange rate currency $curr as on date $date. // Keep in mind FA has internally implemented 3 exrate providers @@ -112,14 +123,19 @@ class hooks { // with apprioprate provider set, otherwise implement your own. // Returns: $curr value in home currency units as a real number. -/* commented out in base class to enable use with hook_invoke_last function retrieve_exrate($curr, $date) { // $provider = 'ECB'; // 'ECB', 'YAHOO' or 'GOOGLE' // return get_extern_rate($curr, $provider, $date); return null; } -*/ + + // External authentication + // If used should return true after successfull athentication, false otherwise. + function authenticate($login, $password) + { + return null; + } // Generic function called at the end of Tax Report (report 709) // Can be used e.g. for special database updates on every report printing // or to print special tax report footer @@ -249,17 +265,20 @@ function hook_invoke_all($method, &$data, $opts=null) global $Hooks; $return = array(); - foreach($Hooks as $ext => $hook) - if (method_exists($hook, $method)) { - set_ext_domain('modules/'.$ext); - $result = $hook->$method($data, $opts); - if (isset($result) && is_array($result)) { - $return = array_merge_recursive($return, $result); - } else if (isset($result)) { - $return[] = $result; - } - } - set_ext_domain(); + if (isset($Hooks)) + { + foreach($Hooks as $ext => $hook) + if (method_exists($hook, $method)) { + set_ext_domain('modules/'.$ext); + $result = $hook->$method($data, $opts); + if (isset($result) && is_array($result)) { + $return = array_merge_recursive($return, $result); + } else if (isset($result)) { + $return[] = $result; + } + set_ext_domain(); + } + } return $return; } /* @@ -275,36 +294,34 @@ function hook_invoke_first($method, &$data, $opts=null) if (method_exists($hook, $method)) { set_ext_domain('modules/'.$ext); $result = $hook->$method($data, $opts); + set_ext_domain(); if (isset($result)) break; } } - set_ext_domain(); return $result; } /* - Returns result of last hook installed. Helps implement hooks overriding by + Returns last non-null result returned from modules method. Helps implement hooks overriding by extensions installed later. - */ function hook_invoke_last($method, &$data, $opts=null) { global $Hooks; - $found = false; - foreach($Hooks as $ext => $hook) { + $result = null; + $Reverse = array_reverse($Hooks); + foreach($Reverse as $ext => $hook) { if (method_exists($hook, $method)) { - $found = $ext; + set_ext_domain('modules/'.$ext); + $result = $hook->$method($data, $opts); + set_ext_domain(); + if (isset($result)) + break; } } - $ret = null; - if ($found) { - set_ext_domain('modules/'.$found); - $ret = $Hooks[$found]->$method($data, $opts); - set_ext_domain(); - } - return $ret; + return $result; } //------------------------------------------------------------------------------------------ // Database transaction hooks. @@ -390,3 +407,11 @@ function hook_session_start($company) } return false; } +// +// Third party authentication modules. +// Returns true after successfull authentication, false otherwise, null if no login hook is defined. +// +function hook_authenticate($login, $password) +{ + return hook_invoke_last('authenticate', $login, $password); +}