Доступ к полям тикета в зависимости от пользователя


#21

Ну так переопредели только для нужных статусов). А для остальных запускай стандартный GetAttributeFlags.


#22

Переопределение производится, если я правильно понимаю, внутри XML файла, Там нет возможности настроить разные переопределения в зависимости от статуса, только на уровне класса.


#23

Внутри XML в тегах <methods> переопределяется функция. В теле функции можно делать всё что угодно. Проверяй статус (он передается в функцию как параметр), а затем делай другие проверки (необходимые для этого статуса) и возвращай нужный флаг атрибута.


#24

Понятно. Меня смутила фраза

Не будет разных GetAttributeFlags (стандартных и переопределенных). Будет один с полной логикой только внутри.


#25

Ну если нужно переопределить поведение всех полей, то да. Если нужно скрыть одно-два поля, то зачем переписывать логику для всех?


#26

Провели апгрейд на тестовом сервере до последней версии Ubuntu 14.01. это приведо к апгрейду PHP до версии 5.5.9
ii libapache2-mod-php5 5.5.9+dfsg-1ubuntu4.5 i386 server-side, HTML-embedded scripting language (Apache 2 module)
ii php5 5.5.9+dfsg-1ubuntu4.5 all server-side, HTML-embedded scripting language (metapackage)
ii php5-cli 5.5.9+dfsg-1ubuntu4.5 i386 command-line interpreter for the php5 scripting language
ii php5-common 5.5.9+dfsg-1ubuntu4.5 i386 Common files for packages built from the php5 source
ii php5-json 1.3.2-2build1 i386 JSON module for php5
ii php5-ldap 5.5.9+dfsg-1ubuntu4.5 i386 LDAP module for php5
ii php5-mcrypt 5.4.6-0ubuntu5 i386 MCrypt module for php5
ii php5-mysql 5.5.9+dfsg-1ubuntu4.5 i386 MySQL module for php5
ii php5-readline 5.5.9+dfsg-1ubuntu4.5 i386 Readline module for php5

После чего код метода GetAttributeFlags перестал работать. При запуске выдает ошибку
PHP Fatal error: Call-time pass-by-reference has been removed in /var/
www/iTop/env-production/itop-request-mgmt/model.itop-request-mgmt.php on line 986

Эта строка 986 находится в описании переопределенного метода
return parent::GetAttributeFlags($sAttCode, &$aReasons, $sTargetState);

Отключил твой модуль, все снова заработало.
Отчего это происходит и как с этим бороться?
Заранее спасибо


#27

Амперсанд попробуй убрать.


#28

Спасибо, помогло. Значит, синтаксический анализатор PHP в новой версии претерпел изменения. То-ли убрали ненужное, то-ли добавили новые правила. Надеюсь, что кроме этого ничего не поменялось.


#29

Думаю, в остальном все будет ок. А то, что вылезло - это моя ошибка.


#30

Добрый день!!!
Полагаю я в правильную тему попал.
Необходимо разрешить редактировать только внутренний журнал определенному профилю пользователей, не подскажите как это реализовать?


#31

Добрый вечер, @Grigorij_Vodolagin.
В теме достаточно подробно описан один из вариантов, и даже пример есть. Что именно не получается?


#32

Этот вариант пригодился, спасибо, но по этому варианту я смог скрыть private_log только по контакту, а вот как сделать скрытие private_log для определенного профиля не разобрался.


#33

Владимир, спасибо огромное за пример!!!
Долго мучился, не мог понять почему не отрабатывает функция GetUserOrg(), оказалось просто надо было её заново ввести.
Реализовал сортировку по организации, если User сотрудник мое организации - он видит privat_log, остальные не видят.

  <class id="UserRequest">
false public Overload-iDisplay Get('org_id'), false); if ( $oOrg->Get('name') != 'My_company') { return OPT_ATT_HIDDEN; } } else { return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState); } } ]]>