Permit LSaddon to provide ajax callable function
authorBenjamin Renard <brenard@easter-eggs.com>
Wed, 12 Aug 2015 12:16:25 +0000 (14:16 +0200)
committerBenjamin Renard <brenard@easter-eggs.com>
Wed, 12 Aug 2015 12:16:25 +0000 (14:16 +0200)
public_html/includes/class/class.LSsession.php
public_html/index_ajax.php

index 5e0ad3b..559dddf 100644 (file)
@@ -2353,7 +2353,9 @@ class LSsession {
     LSerror :: defineError('LSsession_20',
     _("LSsession : Error during password recovery. Contact administrators.(Step : %{step})")
     );
-    // 21 : not yet used
+    LSerror :: defineError('LSsession_21',
+    _("LSsession : call function %{func} do not provided from LSaddon %{addon}.")
+    );
     LSerror :: defineError('LSsession_22',
     _("LSsession : problem during initialisation.")
     );
index 837ab27..d4a4f95 100644 (file)
@@ -14,15 +14,30 @@ else {
 
 $data=NULL;
 if (!isset($_ERRORS)) {
-  $class = $_REQUEST['template'];
-  if (LSsession :: loadLSclass($class)) {
-    $meth = 'ajax_'.$_REQUEST['action'];
-    if (method_exists($class,$meth)) {
-       $class :: $meth($data);
+  if (isset($_REQUEST['template'])) {
+    $class = $_REQUEST['template'];
+    if (LSsession :: loadLSclass($class)) {
+      $meth = 'ajax_'.$_REQUEST['action'];
+      if (method_exists($class,$meth)) {
+         $class :: $meth($data);
+      }
+    }
+  }
+  elseif (isset($_REQUEST['addon'])) {
+    $addon = $_REQUEST['addon'];
+    if (LSsession :: loadLSaddon($addon)) {
+      $func = 'ajax_'.$_REQUEST['action'];
+      if (function_exists($func)) {
+        $func = new ReflectionFunction($func);
+        if (basename($func->getFileName())=="LSaddons.$addon.php") {
+          $func->invokeArgs(array(&$data));
+        }
+        else {
+          LSerror :: addErrorCode('LSsession_21',array('func' => $func -> getName(),'addon' => $addon));
+        }
+      }
     }
   }
 }
 
 LSsession :: displayAjaxReturn($data);
-
-?>