Add helper functions for categories
This commit is contained in:
parent
4f0663e3d8
commit
f2fac96a2c
@ -1957,4 +1957,97 @@ class Categorie extends CommonObject
|
|||||||
|
|
||||||
return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables, 1);
|
return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a list with all selected categories of a category filter box
|
||||||
|
*
|
||||||
|
* @param string $type The categorie type (e.g Categorie::TYPE_WAREHOUSE)
|
||||||
|
* @return Array A list with all selected categories (Note: "-2" is typical "without category")
|
||||||
|
*/
|
||||||
|
public static function GetPost($type)
|
||||||
|
{
|
||||||
|
return GETPOST("search_category_".$type."_list", "array");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the addtional SQL JOIN query for filtering a list by a category
|
||||||
|
*
|
||||||
|
* @param string $type The categorie type (e.g Categorie::TYPE_WAREHOUSE)
|
||||||
|
* @param string $rowIdName The name of the row id inside the whole sql query (e.g. "e.rowid")
|
||||||
|
* @return string A additional SQL JOIN query
|
||||||
|
*/
|
||||||
|
public static function GetFilterJoinQuery($type, $rowIdName)
|
||||||
|
{
|
||||||
|
return " LEFT JOIN ".MAIN_DB_PREFIX."categorie_".$type." as cp"
|
||||||
|
. " ON ".$rowIdName." = cp.fk_".$type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the addtional SQL SELECT query for filtering a list by a category
|
||||||
|
*
|
||||||
|
* @param string $type The categorie type (e.g Categorie::TYPE_WAREHOUSE)
|
||||||
|
* @param Array $searchList A list with the selected categories
|
||||||
|
* @param string $rowIdName The name of the row id inside the whole sql query (e.g. "e.rowid")
|
||||||
|
* @return string A additional SQL SELECT query
|
||||||
|
*/
|
||||||
|
public static function GetFilterSelectQuery($type, $searchList, $rowIdName)
|
||||||
|
{
|
||||||
|
if (empty($searchList) && !is_array($searchList))
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($searchList as $searchCategory)
|
||||||
|
{
|
||||||
|
if (intval($searchCategory) == -2)
|
||||||
|
{
|
||||||
|
$searchCategorySqlList[] = " cp.fk_categorie IS NULL";
|
||||||
|
}
|
||||||
|
elseif (intval($searchCategory) > 0)
|
||||||
|
{
|
||||||
|
$searchCategorySqlList[] = " ".$rowIdName
|
||||||
|
." IN (SELECT fk_".$type." FROM ".MAIN_DB_PREFIX."categorie_".$type
|
||||||
|
." WHERE fk_categorie = ".$searchCategory.")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($searchCategorySqlList))
|
||||||
|
{
|
||||||
|
return " AND (".implode(' AND ', $searchCategorySqlList).")";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a HTML filter box for a list filter view
|
||||||
|
*
|
||||||
|
* @param string $type The categorie type (e.g Categorie::TYPE_WAREHOUSE)
|
||||||
|
* @param Array $preSelected A list with the elements that should pre-selected
|
||||||
|
* @param Form $form The form object (need for access form functions)
|
||||||
|
* @param Translate $langs The translate object (need for access translations)
|
||||||
|
* @return string A HTML filter box (Note: selected results can get with GETPOST("search_category_".$type."_list"))
|
||||||
|
*/
|
||||||
|
public static function GetFilterBox($type, $preSelected, $form, $langs)
|
||||||
|
{
|
||||||
|
if (empty($preSelected) || !is_array($preSelected))
|
||||||
|
{
|
||||||
|
$preSelected = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$htmlName = "search_category_".$type."_list";
|
||||||
|
|
||||||
|
$categoryArray = $form->select_all_categories($type, "", "", 64, 0, 1);
|
||||||
|
$categoryArray[-2] = "- ".$langs->trans('NotCategorized')." -";
|
||||||
|
|
||||||
|
$filter = '';
|
||||||
|
$filter .= '<div class="divsearchfield">';
|
||||||
|
$filter .= $langs->trans('Categories').": ";
|
||||||
|
$filter .= Form::multiselectarray($htmlName, $categoryArray, $preSelected, 0, 0, "minwidth300");
|
||||||
|
$filter .= "</div>";
|
||||||
|
|
||||||
|
return $filter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user