You are not logged in.
Bonjour,
Un bug ou un mauvais usage, je ne serais le dire pour l'instant !
Le contexte :
aprés avoir configuré et associé un objet Générique (table "bateau" 40 champs) avec un objet standard de GLPI (Computers) en utilisant l'interface fournie dans GenericObject.
Si je reviens sur ce même objet dans l'onglet liaison, mon naviguateur freeze et alloue de la mémoire.
Analyse du problème :
J' ai tenté de mettre GLPI en debug sur ce cas et je ne peut extraire quoi que ce soit au préalable du blocage.
Contournement temporaire :
Le déblocage de l'objet Générique en visu peut être réalisé en purgeant la table
"glpi_plugin_genericobject_XXXXX_device".
Parametres de l'object générique :
Comportement
Utiliser Gabarits /non
Utiliser Informations financières /non
Utiliser Réservations /non
Utiliser Connexions réseaux /non
Utiliser Plugin gestion des commandes /non
Utiliser Plugin de génération de numéros d'inventaires /non
Utiliser Connexion(s) directe(s) /non
le reste à oui
Avez vous une piste de recherche ou de solution ?
D'avance merci.
W2003 / Xamp 1.5.5 / MySql 5.0.27 GLPI 0.72.3 / OCSI 4100
Plugins : Applicatifs 1.5.2/ Champs Personnalisés 1.1.6 /Commandes Shell 1.2.3/
Génération des numéros d'inventaire 1.3.0/ Gestion d'objets 1.1.3/
Gestion des commandes 1.1.0/ Injection de fichiers 1.7.2/ Projet 1.0.0/
Offline
Bug peut etre identifier dans le fichier :
plugins\genericobject\inc\plugin_genericobject.object.function.php
sur la fonction plugin_genericobject_showDevice
J 'ai donc pris mon mal en patience, et débugger cette fonction.
Pour ma part cela fonctionne, mais je suis une personne agée (+40) et je ne suis pas suffisamment
certain de la qualité de mon code pour le diffuser auprés du responsable du plugin.
Je le fournie donc au bas de ce post.
Si quelqu'un pouvait me conseiller à l'avenir sur :
Je débug du Php avec un environnement convivial, je serai preneur.
Je félicite l'équipe projet responsable de GLPI, logiciel avec qui je fonctionne depuis 2005 en
tant que administrateur, utilisateur et 2 mois en tant que développeur.
Merci.
****************************
function plugin_genericobject_showDevice($target,$device_type,$device_id) {
global $DB,$CFG_GLPI, $LANG,$INFOFORM_PAGES,$LINK_ID_TABLE,$GENERICOBJECT_LINK_TYPES;
$name = plugin_genericobject_getNameByID($device_type);
if (!haveTypeRight($name,"r")) return false;
$rand=mt_rand();
$commonitem = new CommonItem;
if (!$commonitem->getFromDB($device_type,$device_id)) return;
$commonitem = $commonitem->obj;
$canedit=$commonitem->can($device_id,'w');
$query = "SELECT DISTINCT device_type
FROM `".plugin_genericobject_getLinkDeviceTableName($name)."`
WHERE source_id = '$device_id'
ORDER BY device_type";
$result = $DB->query($query);
$number = $DB->numrows($result);
$i = 0;
if (isMultiEntitiesMode()) {
$colsup=1;
}else {
$colsup=0;
}
echo "<form method='post' name='link_type_form$rand' id='link_type_form$rand' action=\"$target\">";
echo "<div align='center'><table class='tab_cadrehov'>";
echo "<tr><th colspan='".($canedit?(5+$colsup):(4+$colsup))."'>".$LANG['genericobject']['links'][2].":</th></tr><tr>";
if ($canedit) {
echo "<th> </th>";
}
echo "<th>".$LANG['common'][17]."</th>";
echo "<th>".$LANG['common'][16]."</th>";
if (isMultiEntitiesMode()) echo "<th>".$LANG['entity'][0]."</th>";
echo "<th>".$LANG['common'][19]."</th>";
echo "<th>".$LANG['common'][20]."</th>";
echo "</tr>";
$ci=new CommonItem();
while ($i < $number) {
$type=$DB->result($result, $i, "device_type");
if (haveTypeRight($type,"r")){
$column="name";
if ($type==TRACKING_TYPE) $column="ID";
if ($type==KNOWBASE_TYPE) $column="question";
$query = "SELECT LNK.*, A.ID AS IDD ";
$query.= " FROM (`".plugin_genericobject_getLinkDeviceTableName($name)."` AS A LEFT JOIN `".$LINK_ID_TABLE[$type]."` AS LNK ";
$query.= " ON A.FK_device = LNK.ID ) ";
$query.= " LEFT JOIN `".$commonitem->table."` AS B";
$query.= " ON A.source_id = B.ID ";
$query.= " WHERE A.device_type='$type' ";
$query.= " AND A.source_id = '$device_id' ";
$query.= getEntitiesRestrictRequest(" AND ",$LINK_ID_TABLE[$type],'','',isset($CFG_GLPI["recursive_type"][$type]));
if (in_array($LINK_ID_TABLE[$type],$CFG_GLPI["template_tables"])){
$query.=" AND LNK.is_template='0'";
}
$query.=" ORDER BY B.FK_entities, LNK.$column";
if ($result_linked=$DB->query($query))
if ($DB->numrows($result_linked)){
$ci->setType($type);
initNavigateListItems($type,plugin_genericobject_getObjectLabel($name)." = ".$commonitem->fields['name']);
while ($data=$DB->fetch_assoc($result_linked)){
addToNavigateListItems($type,$data["ID"]);
$ID="";
if ($type==TRACKING_TYPE) $data["name"]=$LANG['job'][38]." ".$data["ID"];
if ($type==KNOWBASE_TYPE) $data["name"]=$data["question"];
if($_SESSION["glpiview_ID"]||empty($data["name"])) $ID= " (".$data["ID"].")";
$item_name= "<a href=\"".$CFG_GLPI["root_doc"]."/".$INFOFORM_PAGES[$type]."?ID=".$data["ID"]."&device_type=$type\">"
.$data["name"]."$ID</a>";
echo "<tr class='tab_bg_1'>";
if ($canedit){
echo "<td width='10'>";
$sel="";
if (isset($_GET["select"])&&$_GET["select"]=="all") $sel="checked";
echo "<input type='checkbox' name='item[".$data["IDD"]."]' value='1' $sel>";
echo "</td>";
}
echo "<td class='center'>".$ci->getType()."</td>";
echo "<td class='center' ".(isset($data['deleted'])&&$data['deleted']?"class='tab_bg_2_2'":"").">".$item_name."</td>";
if (isMultiEntitiesMode())
echo "<td class='center'>".getDropdownName("glpi_entities",$data['FK_entities'])."</td>";
echo "<td class='center'>".(isset($data["serial"])? "".$data["serial"]."" :"-")."</td>";
echo "<td class='center'>".(isset($data["otherserial"])? "".$data["otherserial"]."" :"-")."</td>";
echo "</tr>";
}
}
}
$i++;
}
if ($canedit) {
echo "<tr class='tab_bg_1'><td colspan='".(3+$colsup)."' class='center'>";
echo "<input type='hidden' name='source_id' value='$device_id'>";
dropdownAllItems("FK_device",0,0,($commonitem->fields['recursive']?-1:$commonitem->fields['FK_entities']),plugin_genericobject_getLinksByType($device_type));
echo "</td>";
echo "<td colspan='2' class='center' class='tab_bg_2'>";
echo "<input type='submit' name='add_type_link' value=\"".$LANG['buttons'][8]."\" class='submit'>";
echo "</td></tr>";
echo "</table></div>" ;
echo "<div class='center'>";
echo "<table width='80%' class='tab_glpi'>";
echo "<tr><td><img src=\"".$CFG_GLPI["root_doc"]."/pics/arrow-left.png\" alt=''></td><td class='center'><a onclick= \"if ( markCheckboxes('link_type_form$rand') ) return false;\" href='".$_SERVER['PHP_SELF']."?ID=$device_id&select=all'>".$LANG['buttons'][18]."</a></td>";
echo "<td>/</td><td class='center'><a onclick= \"if ( unMarkCheckboxes('link_type_form$rand') ) return false;\" href='".$_SERVER['PHP_SELF']."?ID=$device_id&select=none'>".$LANG['buttons'][19]."</a>";
echo "</td>";
echo "<td align='left' width='80%'>";
echo "<input type='submit' name='delete_type_link' value=\"".$LANG['buttons'][6]."\" class='submit'>";
echo "</td>";
echo "</table>";
echo "</div>";
}else{
echo "</table></div>";
}
echo "</form>";
}
***************
W2003 / Xamp 1.5.5 / MySql 5.0.27 GLPI 0.72.3 / OCSI 4100
Plugins : Applicatifs 1.5.2/ Champs Personnalisés 1.1.6 /Commandes Shell 1.2.3/
Génération des numéros d'inventaire 1.3.0/ Gestion d'objets 1.1.3/
Gestion des commandes 1.1.0/ Injection de fichiers 1.7.2/ Projet 1.0.0/
Offline