Trying to fix flags
This commit is contained in:
parent
0767d1bc80
commit
d7c098087e
|
@ -79,6 +79,7 @@ class TL extends \danog\MadelineProto\Tools
|
||||||
|
|
||||||
$serialized = \danog\PHP\Struct::pack('<i', $tl_method['id']);
|
$serialized = \danog\PHP\Struct::pack('<i', $tl_method['id']);
|
||||||
$flags = 0;
|
$flags = 0;
|
||||||
|
$flags_to_send = [];
|
||||||
foreach ($tl_method['params'] as $cur_flag) {
|
foreach ($tl_method['params'] as $cur_flag) {
|
||||||
if ($cur_flag['opt']) {
|
if ($cur_flag['opt']) {
|
||||||
$flag_pow = pow(2, $cur_flag['pow']);
|
$flag_pow = pow(2, $cur_flag['pow']);
|
||||||
|
@ -87,20 +88,27 @@ class TL extends \danog\MadelineProto\Tools
|
||||||
case 'false':
|
case 'false':
|
||||||
$flags = (isset($arguments[$cur_flag['name']]) && $arguments[$cur_flag['name']]) ? ($flags | $flag_pow) : ($flags & ~$flag_pow);
|
$flags = (isset($arguments[$cur_flag['name']]) && $arguments[$cur_flag['name']]) ? ($flags | $flag_pow) : ($flags & ~$flag_pow);
|
||||||
unset($arguments[$cur_flag['name']]);
|
unset($arguments[$cur_flag['name']]);
|
||||||
|
$flags_to_send[$cur_flag['name']] = false;
|
||||||
break;
|
break;
|
||||||
case 'int':
|
case 'Bool':
|
||||||
case 'string':
|
$flags_to_send[$cur_flag['name']] = true;
|
||||||
$flags = (isset($arguments[$cur_flag['name']]) && $arguments[$cur_flag['name']] !== null) ? ($flags | $flag_pow) : ($flags & ~$flag_pow);
|
if (($flags & $flag_pow) == 0) { // If source flag isn't set
|
||||||
|
$flags_to_send[$cur_flag['name']] = false;
|
||||||
|
unset($arguments[$cur_flag['name']]);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Exception('Unrecognized flag type ('.$cur_flag['type'].')');
|
$flags_to_send[$cur_flag['name']] = true;
|
||||||
|
$flags = (isset($arguments[$cur_flag['name']]) && $arguments[$cur_flag['name']] !== null) ? ($flags | $flag_pow) : ($flags & ~$flag_pow);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var_dump($flags_to_send);
|
||||||
$arguments['flags'] = $flags;
|
$arguments['flags'] = $flags;
|
||||||
foreach ($tl_method['params'] as $current_argument) {
|
foreach ($tl_method['params'] as $current_argument) {
|
||||||
if (!isset($arguments[$current_argument['name']])) {
|
if (!isset($arguments[$current_argument['name']])) {
|
||||||
if ($current_argument['opt']) {
|
if ($current_argument['opt'] && $flags_to_send[$current_argument['name']]) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
throw new Exception('Missing required parameter ('.$current_argument['name'].')');
|
throw new Exception('Missing required parameter ('.$current_argument['name'].')');
|
||||||
|
|
Loading…
Reference in New Issue
Block a user