X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fhooks.inc;h=515bcccf3c9f72a22f4bbf79439a3d1a4973c2b8;hb=2203238ce87a2d6ebc641256caaed44ac40915d8;hp=669a5ce8e2bec0d737ba354d075b32f411bbd50e;hpb=187fc607b6bd649b8d5937e05d78df7061681954;p=fa-stable.git diff --git a/includes/hooks.inc b/includes/hooks.inc index 669a5ce8..515bcccf 100644 --- a/includes/hooks.inc +++ b/includes/hooks.inc @@ -66,24 +66,33 @@ class hooks { // // Install additional tabs provided by extension // - function install_tabs($app) { -// set_ext_domain('modules/example'); // set text domain for gettext + function install_tabs($app) + { // $app->add_application(new example_class); // add menu tab defined by example_class -// set_ext_domain(); } // // Install additonal menu options provided by extension // - function install_options($app) { + function install_options($app) + { // global $path_to_root; -// set_ext_domain('modules/example'); +// // switch($app->id) { // case 'orders': // $app->add_rapp_function( 0, _("&Example option"), // $path_to_root.'/modules/example/example.php?', 'SA_OPEN'); // } -// set_ext_domain(); } + + function install_access() + { +// $security_areas['SA_EXAMPLE'] = array(SS_EXAMPLE|100, _("Example security area.")); +// +// $security_sections = array(SS_EXAMPLE => _("Example module implementation")); +// +// return array($security_areas, $security_sections); + } + // // Price in words. $doc_type is set to document type and can be used to suppress // price in words printing for selected document types. @@ -94,7 +103,6 @@ class hooks { 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 @@ -109,6 +117,12 @@ class hooks { 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 @@ -168,7 +182,8 @@ class hooks { /* Installs hooks provided by extension modules */ -function install_hooks() { +function install_hooks() +{ global $path_to_root, $Hooks, $installed_extensions; $Hooks = array(); @@ -194,7 +209,8 @@ function install_hooks() { Non active hooks are not included in $Hooks array, so we can use special function to activate. */ -function activate_hooks($ext, $comp) { +function activate_hooks($ext, $comp) +{ global $Hooks; $hooks = @$Hooks[$ext]; @@ -213,7 +229,8 @@ function activate_hooks($ext, $comp) { /* Calls hook $method defined in extension $ext (if any) */ -function hook_invoke($ext, $method, &$data, $opts=null) { +function hook_invoke($ext, $method, &$data, $opts=null) +{ global $Hooks; @@ -229,11 +246,12 @@ function hook_invoke($ext, $method, &$data, $opts=null) { /* Calls hook $methods defined in all extensions (if any) */ -function hook_invoke_all($method, &$data, $opts=null) { +function hook_invoke_all($method, &$data, $opts=null) +{ global $Hooks; - $result = array(); + $return = array(); foreach($Hooks as $ext => $hook) if (method_exists($hook, $method)) { set_ext_domain('modules/'.$ext); @@ -243,14 +261,15 @@ function hook_invoke_all($method, &$data, $opts=null) { } else if (isset($result)) { $return[] = $result; } + set_ext_domain(); } - set_ext_domain(); - return $result; + return $return; } /* Returns first non-null result returned from hook. */ -function hook_invoke_first($method, &$data, $opts=null) { +function hook_invoke_first($method, &$data, $opts=null) +{ global $Hooks; @@ -259,35 +278,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) { +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. @@ -373,3 +391,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); +}