/**
* Permet l'affichage dynamique d'une liste d�roulante imbriquee
*
* @static
* @param array ($itemtype,$options)
*/
public static function dropdownReferencesByEnterprise($itemtype, $options = array())
{
global $DB, $CFG_GLPI;
$item = getItemForItemtype($itemtype);
if ($itemtype && !($item = getItemForItemtype($itemtype))) {
return false;
}
$table = $item->getTable();
$params['comments'] = true;
$params['condition'] = '';
$params['entity'] = -1;
$params['name'] = "reference";
$params['value'] = 0;
$params['entity_sons'] = false;
$params['rand'] = mt_rand();
$params['used'] = array();
$params['table'] = $table;
$params['emptylabel'] = Dropdown::EMPTY_VALUE;
//specific
$params['action'] = "";
$params['itemtype'] = "";
$params['span'] = "";
$params['orders_id'] = 0;
$params['suppliers_id'] = 0;
if (is_array($options) && count($options)) {
foreach ($options as $key => $val) {
$params[$key] = $val;
}
}
$name = $params['emptylabel'];
$comment = "";
$limit_length = $_SESSION["glpidropdown_chars_limit"];
if (strlen($params['value']) == 0 || !is_numeric($params['value'])) {
$params['value'] = 0;
}
if ($params['value'] > 0) {
$tmpname = Dropdown::getDropdownName($table, $params['value'], 1);
if ($tmpname["name"] != " ") {
$name = $tmpname["name"];
$comment = $tmpname["comment"];
if (Toolbox::strlen($name) > $_SESSION["glpidropdown_chars_limit"]) {
if ($item instanceof CommonTreeDropdown) {
$pos = strrpos($name, ">");
$limit_length = max(Toolbox::strlen($name) - $pos, $_SESSION["glpidropdown_chars_limit"]);
if (Toolbox::strlen($name) > $limit_length) {
$name = "…" . Toolbox::substr($name, -$limit_length);
}
} else {
$limit_length = Toolbox::strlen($name);
}
} else {
$limit_length = $_SESSION["glpidropdown_chars_limit"];
}
}
}
// Manage entity_sons
if (!($params['entity'] < 0) && $params['entity_sons']) {
if (is_array($params['entity'])) {
echo "entity_sons options is not available with array of entity";
} else {
$params['entity'] = getSonsOf('glpi_entities', $params['entity']);
}
}
$use_ajax = false;
if ($CFG_GLPI["use_ajax_autocompletion"]) {
$nb = 0;
$query = "SELECT COUNT(*) AS cpt\n FROM `{$table}` as t\n LEFT JOIN `glpi_plugin_order_references_suppliers` as s\n ON (`t`.`id` = `s`.`plugin_order_references_id`)\n WHERE `s`.`suppliers_id` = '{$params['suppliers_id']}'\n AND `t`.`itemtype` = '{$params['itemtype']}'";
if ($item->isEntityAssign()) {
if (!($params['entity'] < 0)) {
$query .= getEntitiesRestrictRequest("AND", 't', '', $params['entity'], true);
} else {
$query .= getEntitiesRestrictRequest("AND", 't', '', '', true);
}
}
$result = $DB->query($query);
if ($DB->numrows($result) == 1) {
$nb = $DB->result($result, 0, "cpt");
}
$nb -= count($params['used']);
if ($nb > $CFG_GLPI["ajax_limit_count"]) {
$use_ajax = true;
}
}
$param = array('searchText' => '__VALUE__', 'value' => $params['value'], 'itemtype' => $params['itemtype'], 'myname' => $params['name'], 'limit' => $limit_length, 'comment' => $params['comments'], 'rand' => $params['rand'], 'entity_restrict' => $params['entity'], 'used' => $params['used'], 'condition' => $params['condition'], 'table' => $params['table'], 'action' => $params['action'], 'span' => $params['span'], 'orders_id' => $params['orders_id'], 'suppliers_id' => $params['suppliers_id']);
$default = "<select name='" . $params['name'] . "' id='dropdown_" . $params['name'] . $params['rand'] . "'>";
$default .= "<option value='" . $params['value'] . "'>{$name}</option></select>";
Ajax::Dropdown($use_ajax, "/plugins/order/ajax/dropdownValue.php", $param, $default, $params['rand']);
// Display comment
if ($params['comments']) {
$options_tooltip = array('contentid' => "comment_" . $param['myname'] . $params['rand']);
if ($params['value'] && $item->getFromDB($params['value'])) {
$options_tooltip['link'] = $item->getLinkURL();
$options_tooltip['linktarget'] = '_blank';
}
Html::showToolTip($comment, $options_tooltip);
if ($itemtype::canCreate() && !isset($_GET['popup'])) {
echo "<img alt='' title=\"" . __("Add") . "\" src='" . $CFG_GLPI["root_doc"] . "\n /pics/add_dropdown.png' style='cursor:pointer; margin-left:2px;'\n onClick=\"var w = window . open('" . $item->getFormURL() . "?popup=1&rand=" . $params['rand'] . "&itemtype=" . $params['itemtype'] . "&entities_id=" . $params['entity'] . "', " . "'glpipopup', 'height=400,width=1000, top=100, left=100,\n scrollbars=yes' );w.focus();\">";
}
}
return $params['rand'];
}