Сообщение tasselchof » 2015-01-26 4:35:27
Включите в апдейт, делается быстро:
Необходимо поправить файл: ./hosts/billing/comp/Users/Init.comp.php
После строки:
Добавляем:
Код: Выделить всё
$ResellerProfile = 100;
if($GLOBALS['__USER']['IsAdmin']) {
$Profiles = DB_Select('Profiles', Array('ID'), Array('Where' => "`UserID` = @local.__USER_ID AND `TemplateID` IN ('ResellerPartner')"));
switch (ValueOf($Profiles)) {
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
# No more...
break;
case 'array':
$ResellerProfile = $Profiles[0]['ID'];
break;
#-------------------------------------------------------------------------------
default:
return ERROR | @Trigger_Error(101);
}
}
$GLOBALS['__USER']['ResellerProfileID'] = $ResellerProfile;
После этого в объекте $GLOBALS['__USER'] всегда будет указано какой профиль реестра следует использовать, если у человека есть профиль ResellerPartner, то он будет использован (функция пока доступна только для администраторов - надо дописывать права на доступ к шаблонам счетов).
Далее ищем по файлам такую строку:
Например:
Код: Выделить всё
$Executor = Comp_Load('www/Administrator/API/ProfileCompile',Array('ProfileID'=>100));
И меняем ее на:
Код: Выделить всё
Array('ProfileID'=>$GLOBALS['__USER']['ResellerProfileID'])
Например:
Код: Выделить всё
$Executor = Comp_Load('www/Administrator/API/ProfileCompile',Array('ProfileID'=>$GLOBALS['__USER']['ResellerProfileID']));
Отправлено спустя 1 минуту 6 секунд:Суть в том, что если такой профиль создан, то будут все счета выставляться с его реквизитов и статей ResellerPartner, а не тех, которые использует головной профиль.
Отправлено спустя 2 минуты 21 секунду:Встретил в 5 файлах всего такой вызов.
Отправлено спустя 19 минут 31 секунду:Небольшой update для файла: ./hosts/billing/comp/Users/Init.comp.php
В выбор пользователя добавить проверку OwnerID
Код: Выделить всё
$User = DB_Select('Users', Array('ID', 'GroupID', 'Name', 'Sign', 'Email', 'EmailConfirmed', 'MobileConfirmed', 'ICQ', 'JabberID', 'Mobile', 'UniqID', 'Params', 'LayPayMaxSumm', 'LayPayThreshold', 'OwnerID'), Array('UNIQ', 'ID' => $UserID));
Код выглядит так:
Код: Выделить всё
$ResellerProfile = 100;
if($GLOBALS['__USER']['IsAdmin'] || $User['OwnerID'] != 100) {
$Profiles = DB_Select('Profiles', Array('ID'), Array('Where' => "(`UserID` = @local.__USER_ID OR `UserID` = {$User['OwnerID']}) AND `TemplateID` IN ('ResellerPartner')"));
switch (ValueOf($Profiles)) {
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
# No more...
break;
case 'array':
if(count($Profiles) > 0) {
$ResellerProfile = $Profiles[0]['ID'];
}
break;
#-------------------------------------------------------------------------------
default:
return ERROR | @Trigger_Error(101);
}
}
$GLOBALS['__USER']['ResellerProfileID'] = $ResellerProfile;
Отправлено спустя 13 минут 22 секунды:Все забываю про ворсинги... if должен быть таким:
Код: Выделить всё
if(!empty($__GLOBALS['__USER']['OwnerID']) && (IsSet($GLOBALS['__USER']['IsAdmin']) && $GLOBALS['__USER']['IsAdmin']) || (IsSet($GLOBALS['__USER']['OwnerID']) && $GLOBALS['__USER']['OwnerID'] != 100)) {
Включите в апдейт, делается быстро:
Необходимо поправить файл: ./hosts/billing/comp/Users/Init.comp.php
После строки:
[code]$GLOBALS['__USER']['IsAdmin'] = $IsAdmin;[/code]
Добавляем:
[code] $ResellerProfile = 100;
if($GLOBALS['__USER']['IsAdmin']) {
$Profiles = DB_Select('Profiles', Array('ID'), Array('Where' => "`UserID` = @local.__USER_ID AND `TemplateID` IN ('ResellerPartner')"));
switch (ValueOf($Profiles)) {
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
# No more...
break;
case 'array':
$ResellerProfile = $Profiles[0]['ID'];
break;
#-------------------------------------------------------------------------------
default:
return ERROR | @Trigger_Error(101);
}
}
$GLOBALS['__USER']['ResellerProfileID'] = $ResellerProfile;[/code]
После этого в объекте $GLOBALS['__USER'] всегда будет указано какой профиль реестра следует использовать, если у человека есть профиль ResellerPartner, то он будет использован (функция пока доступна только для администраторов - надо дописывать права на доступ к шаблонам счетов).
Далее ищем по файлам такую строку:
[code]Array('ProfileID’=>100)[/code]
Например:
[code]$Executor = Comp_Load('www/Administrator/API/ProfileCompile',Array('ProfileID'=>100));[/code]
И меняем ее на:
[code]Array('ProfileID'=>$GLOBALS['__USER']['ResellerProfileID'])[/code]
Например:
[code]$Executor = Comp_Load('www/Administrator/API/ProfileCompile',Array('ProfileID'=>$GLOBALS['__USER']['ResellerProfileID']));[/code]
[size=85][color=green]Отправлено спустя 1 минуту 6 секунд:[/color][/size]
Суть в том, что если такой профиль создан, то будут все счета выставляться с его реквизитов и статей ResellerPartner, а не тех, которые использует головной профиль.
[size=85][color=green]Отправлено спустя 2 минуты 21 секунду:[/color][/size]
Встретил в 5 файлах всего такой вызов.
[size=85][color=green]Отправлено спустя 19 минут 31 секунду:[/color][/size]
Небольшой update для файла: ./hosts/billing/comp/Users/Init.comp.php
В выбор пользователя добавить проверку OwnerID
[code]$User = DB_Select('Users', Array('ID', 'GroupID', 'Name', 'Sign', 'Email', 'EmailConfirmed', 'MobileConfirmed', 'ICQ', 'JabberID', 'Mobile', 'UniqID', 'Params', 'LayPayMaxSumm', 'LayPayThreshold', 'OwnerID'), Array('UNIQ', 'ID' => $UserID));
[/code]
Код выглядит так:
[code]$ResellerProfile = 100;
if($GLOBALS['__USER']['IsAdmin'] || $User['OwnerID'] != 100) {
$Profiles = DB_Select('Profiles', Array('ID'), Array('Where' => "(`UserID` = @local.__USER_ID OR `UserID` = {$User['OwnerID']}) AND `TemplateID` IN ('ResellerPartner')"));
switch (ValueOf($Profiles)) {
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
# No more...
break;
case 'array':
if(count($Profiles) > 0) {
$ResellerProfile = $Profiles[0]['ID'];
}
break;
#-------------------------------------------------------------------------------
default:
return ERROR | @Trigger_Error(101);
}
}
$GLOBALS['__USER']['ResellerProfileID'] = $ResellerProfile;[/code]
[size=85][color=green]Отправлено спустя 13 минут 22 секунды:[/color][/size]
Все забываю про ворсинги... if должен быть таким:
[code]if(!empty($__GLOBALS['__USER']['OwnerID']) && (IsSet($GLOBALS['__USER']['IsAdmin']) && $GLOBALS['__USER']['IsAdmin']) || (IsSet($GLOBALS['__USER']['OwnerID']) && $GLOBALS['__USER']['OwnerID'] != 100)) {[/code]