Salut à tous, 

En pièce jointe, le patch pour le backport du ticket 2635 dans la branche 0.78. 


https://forge.indepnet.net/issues/2635 


Peut-on l'intégrer dans le svn courant de cette branche ? 


@+ 
François 

-- 
François Legastelois (flegastel...@teclib.com) 
teclib' - Consultant Applications OpenSource - http://www.teclib.com 
tel : 01 79 97 02 78 / poste : 1103 
diff -Naur --exclude=.svn --exclude=.DS_Store --exclude=plugins glpi_078_svn/inc/common.function.php glpi_078_svn_proposal_patch/inc/common.function.php
--- glpi_078_svn/inc/common.function.php	2011-02-04 10:33:35.000000000 +0100
+++ glpi_078_svn_proposal_patch/inc/common.function.php	2011-02-11 10:55:15.000000000 +0100
@@ -1807,32 +1807,54 @@
             case "helpdesk" :
                switch ($data[0]) {
                   case "plugin":
-                     if (isset($data[3])) {
-                        $forcetab='forcetab='.$data[3];
+                     $plugin = $data[1];
+                     $valid = false;
+                     if (isset($PLUGIN_HOOKS['redirect_page'][$plugin])
+                        && !empty($PLUGIN_HOOKS['redirect_page'][$plugin])) {
+                        // Simple redirect
+                        if (!is_array($PLUGIN_HOOKS['redirect_page'][$plugin])) {
+                           if (isset($data[2]) && $data[2]>0) {
+                              $valid = true;
+                              $id = $data[2];
+                              $page = $PLUGIN_HOOKS['redirect_page'][$plugin];
+                           }
+                           $forcetabnum = 3 ;
+                        } else { // Complex redirect
+                           if (isset($data[2]) && !empty($data[2])
+                              && isset($data[3]) && $data[3]>0
+                              && isset($PLUGIN_HOOKS['redirect_page'][$plugin][$data[2]])
+                              && !empty($PLUGIN_HOOKS['redirect_page'][$plugin][$data[2]])) {
+                              $valid = true;
+                              $id = $data[3];
+                              $page = $PLUGIN_HOOKS['redirect_page'][$plugin][$data[2]];
+                           }
+                           $forcetabnum = 4 ;
+                        }
                      }
 
-                     if (isset($data[2]) && $data[2]>0
-                         && isset($PLUGIN_HOOKS['redirect_page'][$data[1]])
-                         && !empty($PLUGIN_HOOKS['redirect_page'][$data[1]])) {
+                     if (isset($data[$forcetabnum])) {
+                        $forcetab = 'forcetab='.$data[$forcetabnum];
+                     }
 
-                        glpi_header($CFG_GLPI["root_doc"]."/plugins/".$data[1]."/".
-                           $PLUGIN_HOOKS['redirect_page'][$data[1]]."?id=".$data[2]."&$forcetab");
+                     if ($valid) {
+                        glpi_header($CFG_GLPI["root_doc"]."/plugins/$plugin/$page?id=$id&$forcetab");
                      } else {
                         glpi_header($CFG_GLPI["root_doc"]."/front/helpdesk.public.php?$forcetab");
                      }
                      break;
 
                   // Use for compatibility with old name
-                  case "tracking":
-                  case "ticket":
-                     glpi_header($CFG_GLPI["root_doc"]."/front/ticket.form.php?id=".
-                                       $data[1]."&$forcetab");
+                  case "tracking" :
+                  case "ticket" :
+                     glpi_header($CFG_GLPI["root_doc"]."/front/ticket.form.php?id=".$data[1].
+                                 "&$forcetab");
                      break;
-                  case "preference":
+
+                  case "preference" :
                      glpi_header($CFG_GLPI["root_doc"]."/front/preference.php?$forcetab");
                      break;
 
-                  default:
+                  default :
                      glpi_header($CFG_GLPI["root_doc"]."/front/helpdesk.public.php?$forcetab");
                      break;
                }
@@ -1840,38 +1862,56 @@
 
             case "central" :
                switch ($data[0]) {
-                  case "plugin":
-                     if (isset($data[3])) {
-                        $forcetab='forcetab='.$data[3];
-                     }
-                     if (isset($data[2]) && $data[2]>0
-                         && isset($PLUGIN_HOOKS['redirect_page'][$data[1]])
-                         && !empty($PLUGIN_HOOKS['redirect_page'][$data[1]])) {
-
-                        $data2=explode("-",$data[1]);
-                        if(count($data2)>=1) {
-                           glpi_header($CFG_GLPI["root_doc"]."/plugins/".$data2[0]."/".
-                              $PLUGIN_HOOKS['redirect_page'][$data[1]]."?id=".$data[2]."&$forcetab");
-                        } else {
-                           glpi_header($CFG_GLPI["root_doc"]."/plugins/".$data[1]."/".
-                              $PLUGIN_HOOKS['redirect_page'][$data[1]]."?id=".$data[2]."&$forcetab");  
+                  case "plugin" :
+                     $plugin = $data[1];
+                     $valid = false;
+                     if (isset($PLUGIN_HOOKS['redirect_page'][$plugin])
+                        && !empty($PLUGIN_HOOKS['redirect_page'][$plugin])) {
+                        // Simple redirect
+                        if (!is_array($PLUGIN_HOOKS['redirect_page'][$plugin])) {
+                           if (isset($data[2]) && $data[2]>0) {
+                              $valid = true;
+                              $id = $data[2];
+                              $page = $PLUGIN_HOOKS['redirect_page'][$plugin];
+                           }
+                           $forcetabnum = 3 ;
+                        } else { // Complex redirect
+                           if (isset($data[2]) && !empty($data[2])
+                              && isset($data[3]) && $data[3]>0
+                              && isset($PLUGIN_HOOKS['redirect_page'][$plugin][$data[2]])
+                              && !empty($PLUGIN_HOOKS['redirect_page'][$plugin][$data[2]])) {
+                              $valid = true;
+                              $id = $data[3];
+                              $page = $PLUGIN_HOOKS['redirect_page'][$plugin][$data[2]];
+                           }
+                           $forcetabnum = 4 ;
                         }
+
+                     }
+
+                     if (isset($data[$forcetabnum])) {
+                        $forcetab = 'forcetab='.$data[$forcetabnum];
+                     }
+
+                     if ($valid) {
+                        glpi_header($CFG_GLPI["root_doc"]."/plugins/$plugin/$page?id=$id&$forcetab");
                      } else {
                         glpi_header($CFG_GLPI["root_doc"]."/front/central.php?$forcetab");
                      }
                      break;
 
-                  case "preference":
+                  case "preference" :
                      glpi_header($CFG_GLPI["root_doc"]."/front/preference.php?$forcetab");
                      break;
 
                   // Use for compatibility with old name
-                  case "tracking":
+                  case "tracking" :
                      $data[0] = "ticket";
+
                   default :
                      if (!empty($data[0] )&& $data[1]>0) {
                         glpi_header($CFG_GLPI["root_doc"]."/front/".$data[0].".form.php?id=".
-                                          $data[1]."&$forcetab");
+                                    $data[1]."&$forcetab");
                      } else {
                         glpi_header($CFG_GLPI["root_doc"]."/front/central.php?$forcetab");
                      }
_______________________________________________
Glpi-dev mailing list
Glpi-dev@gna.org
https://mail.gna.org/listinfo/glpi-dev

Reply via email to