Skip to content
Snippets Groups Projects

dev#189214: Add managed libraries select in users edit/add form

Viewing commit dd3ef36c
Show latest version
3 files
+ 407
8
Preferences
Compare changes
Files
3
@@ -55,28 +55,57 @@ class Class_User_SearchCriteriaLibrary extends Class_SearchCriteria_Select {
protected string $_name = 'id_site';
public function buildElement() : ?Zend_Form_Element {
return $this->_isAdminBib()
? null
: (parent::buildElement()
->setLabel($this->_('Bibliothèque'))
->setMultiOptions(['all' => $this->_('Toutes')] + Class_Bib::findAllLabels()));
$labels = ($this->_isModoPortailOrMore())
? Class_Bib::findAllLabels()
: $this->_getManagedLibraries();
return ($labels)
? parent::buildElement()->setLabel($this->_('Bibliothèque'))
->setMultiOptions(['all' => $this->_('Toutes')] + $labels)
: null;
}
public function acceptSearchVisitor($visitor) : Class_SearchCriteria_Abstract {
if ( ! $this->_isAdminBib())
if ( ! $this->_isAdminBib() && ! $this->_isRedacteurBib() )
return parent::acceptSearchVisitor($visitor);
$visitor->addQueryClause(fn($query) => $query->eq($this->_name,
Class_Users::getIdentity()->getIdSite()));
$visitor->addQueryClause(fn($query) => $query
->in($this->_name,
Class_Users::getIdentity()->managedLibraries()));
return $this;
}
protected function _getManagedLibraries(): array
{
$libraries = [];
foreach (Class_Bib::query()
->in('id_site', Class_Users::getIdentity()->managedLibraries())
->order_desc('libelle')
->fetchAll() as $library)
$libraries[$library->getId()] = $library->getLibelle();
return $libraries;
}
protected function _isModoPortailOrMore(): bool
{
return ($user = Class_Users::getIdentity()) && $user->isModoPortailOrMore();
}
protected function _isAdminBib() : bool {
return ($user = Class_Users::getIdentity()) && $user->isAdminBib();
}
protected function _isRedacteurBib(): bool
{
return ($user = Class_Users::getIdentity()) && $user->isRedacteurBib();
}
}