diff --git a/htdocs/user/list.php b/htdocs/user/list.php index ebdf19b638e..64c63c05426 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -26,6 +26,9 @@ */ require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +if (! empty($conf->categorie->enabled)) + require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; if (! $user->rights->user->user->lire && ! $user->admin) accessforbidden(); @@ -123,6 +126,8 @@ $search_thirdparty=GETPOST('search_thirdparty','alpha'); $search_supervisor=GETPOST('search_supervisor','intcomma'); $search_previousconn=GETPOST('search_previousconn','alpha'); $optioncss = GETPOST('optioncss','alpha'); +$search_categ = GETPOST("search_categ",'int'); +$catid = GETPOST('catid','int'); // Default search if ($search_statut == '') $search_statut='1'; @@ -165,6 +170,7 @@ if (empty($reshook)) $search_date_creation=""; $search_date_update=""; $search_array_options=array(); + $search_categ=0; } } @@ -173,6 +179,8 @@ if (empty($reshook)) * View */ +$htmlother=new FormOther($db); + $user2=new User($db); $buttonviewhierarchy='
'; @@ -193,6 +201,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user_extrafields as ef on (u.rowid = ef.fk_object)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON u.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u2 ON u.fk_user = u2.rowid"; +if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_user as cu ON u.rowid = cu.fk_user"; // We'll need this table joined to the select in order to filter by categ // Add fields from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printUserListWhere',$parameters); // Note that $action and $object may have been modified by hook @@ -216,6 +225,10 @@ if ($search_accountancy_code != '') $sql.= natural_search("u.accountancy_code", if ($search_email != '') $sql.= natural_search("u.email", $search_email); if ($search_statut != '' && $search_statut >= 0) $sql.= " AND u.statut IN (".$db->escape($search_statut).")"; if ($sall) $sql.= natural_search(array_keys($fieldstosearchall), $sall); +if ($catid > 0) $sql.= " AND cu.fk_categorie = ".$catid; +if ($catid == -2) $sql.= " AND cu.fk_categorie IS NULL"; +if ($search_categ > 0) $sql.= " AND cu.fk_categorie = ".$db->escape($search_categ); +if ($search_categ == -2) $sql.= " AND cu.fk_categorie IS NULL"; // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; // Add where from hooks @@ -268,6 +281,7 @@ if ($search_supervisor > 0) $param.="&search_supervisor=".$search_supervisor; if ($search_statut != '') $param.="&search_statut=".$search_statut; if ($optioncss != '') $param.='&optioncss='.$optioncss; if ($mode != '') $param.='&mode='.$mode; +if ($search_categ > 0) $param.="&search_categ=".urlencode($search_categ); // Add $param from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; @@ -296,6 +310,15 @@ $morehtmlright = '"; + $c = new Categorie($db); + $ways = $c->print_all_ways(' > ','user/list.php'); + print " > ".$ways[0]."
\n"; + print "
"; +} + if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); @@ -304,7 +327,29 @@ if ($sall) $moreforfilter=''; +// Filter on categories +if (! empty($conf->categorie->enabled)) +{ + $moreforfilter.='
'; + $moreforfilter.=$langs->trans('Categories'). ': '; + $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_USER,$search_categ,'search_categ',1); + $moreforfilter.='
'; +} + +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook +if (empty($reshook)) $moreforfilter.=$hookmanager->resPrint; +else $moreforfilter=$hookmanager->resPrint; + +if ($moreforfilter) +{ + print '
'; + print $moreforfilter; + print '
'; +} + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields