add setcategorie on user class
This commit is contained in:
parent
a95a810d68
commit
c910fd151f
@ -751,6 +751,50 @@ class User extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets object to supplied categories.
|
||||||
|
*
|
||||||
|
* Deletes object from existing categories not supplied.
|
||||||
|
* Adds it to non existing supplied categories.
|
||||||
|
* Existing categories are left untouch.
|
||||||
|
*
|
||||||
|
* @param int[]|int $categories Category or categories IDs
|
||||||
|
*/
|
||||||
|
public function setCategories($categories)
|
||||||
|
{
|
||||||
|
// Handle single category
|
||||||
|
if (!is_array($categories)) {
|
||||||
|
$categories = array($categories);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get current categories
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
|
||||||
|
$c = new Categorie($this->db);
|
||||||
|
$existing = $c->containing($this->id, Categorie::TYPE_USER, 'id');
|
||||||
|
|
||||||
|
// Diff
|
||||||
|
if (is_array($existing)) {
|
||||||
|
$to_del = array_diff($existing, $categories);
|
||||||
|
$to_add = array_diff($categories, $existing);
|
||||||
|
} else {
|
||||||
|
$to_del = array(); // Nothing to delete
|
||||||
|
$to_add = $categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process
|
||||||
|
foreach ($to_del as $del) {
|
||||||
|
if ($c->fetch($del) > 0) {
|
||||||
|
$c->del_type($this, 'user');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach ($to_add as $add) {
|
||||||
|
if ($c->fetch($add) > 0) {
|
||||||
|
$c->add_type($this, 'user');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete the user
|
* Delete the user
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user