Очередной баг foreach + switch?
Issue #78
new
Входной файл во вложении.
Выход:
<?php
------- skip ---------
$ifByMonthDayNeg = ($byMonthDayNeg !== null) && !in_array($dtInfo->mDayMaskNeg[$dayOfYear], $byMonthDayNeg);
$ifByDay = ($byWeekDay !== null) && count($byWeekDay) && !in_array($dtInfo->wDayMask[$dayOfYear], $byWeekDay);
$ifWDayMaskRel = ($byWeekDayRel !== null) && !in_array($dayOfYear, $wDayMaskRel);
if (($byMonthDay !== null) && ($byMonthDayNeg !== null)) {
if ($ifByMonthDay && $ifByMonthDayNeg) {
unset($daySet[$i]);
}
}
else {
if ($ifByMonth || $ifByWeekNum || $ifByYearDay || $ifByMonthDay || $ifByMonthDayNeg || $ifByDay || $ifWDayMaskRel) {
unset($daySet[$i]);
}
else {
++$numMatched;
}
}
}
/*
903 480 JMPZ ?0 #526:!empty($bySetPos) ?1072 ;0 >>1072
904 481 INIT_ARRAY #527= ?0 ?0 ;0
905 481 ASSIGN $datesAdj #527:array() ;0
906 482 INIT_NS_FCALL_BY_NAME ?0 ?0 "Recurr\Transformer\array_combine" ;0
907 482 SEND_VAR ?0 $daySet ?1 ;61
908 482 SEND_VAR ?0 $daySet ?2 ;61
909 482 DO_FCALL_BY_NAME $529= ?0 ?0 ;2
910 482 ASSIGN $tmpDaySet $529:array_combine($daySet, $daySet) ;0
911 484 FE_RESET $531= $bySetPos ?1009 ;0
912 484 FE_FETCH $532= $531:$dt->format("s") ?1009 ;0 >>1009 <<1008
913 484 OP_DATA ?0 ?0 ?0 ;0
914 484 ASSIGN $setPos $532:$dt->format("s") ;0
915 485 IS_SMALLER #534= $setPos 0 ;0
916 485 JMPZ ?0 #534:$setPos < 0 ?934 ;0 >>934
917 486 INIT_NS_FCALL_BY_NAME ?0 ?0 "Recurr\Transformer\\floor" ;0
918 486 INIT_NS_FCALL_BY_NAME ?1 ?0 "Recurr\Transformer\count" ;0
919 486 SEND_VAR ?0 $timeSet ?1 ;61
920 486 DO_FCALL_BY_NAME $535= ?0 ?1 ;1
921 486 DIV #536= $setPos $535:count($timeSet) ;0
922 486 SEND_VAL ?0 #536:$setPos / count($timeSet) ?1 ;61
923 486 DO_FCALL_BY_NAME $537= ?0 ?0 ;1
924 486 ASSIGN $dayPos $537:floor($setPos / count($timeSet)) ;0
925 487 INIT_STATIC_METHOD_CALL ?0 "Recurr\DateUtil" "pymod" ;0
926 487 SEND_VAR ?0 $setPos ?1 ;61
927 487 INIT_NS_FCALL_BY_NAME ?1 ?0 "Recurr\Transformer\count" ;0
928 487 SEND_VAR ?0 $timeSet ?1 ;61
929 487 DO_FCALL_BY_NAME $539= ?0 ?1 ;1
930 487 SEND_VAR_NO_REF ?0 $539:count($timeSet) ?2 ;4
931 487 DO_FCALL_BY_NAME $540= ?0 ?0 ;2
932 487 ASSIGN $timePos $540:\Recurr\DateUtil::pymod($setPos, count($timeSet)) ;0
933 488 JMP ?0 ?952 ?0 ;0 >>952
934 489 INIT_NS_FCALL_BY_NAME ?0 ?0 "Recurr\Transformer\\floor" ;0 <<916
935 489 SUB #542= $setPos 1 ;0
936 489 INIT_NS_FCALL_BY_NAME ?1 ?0 "Recurr\Transformer\count" ;0
937 489 SEND_VAR ?0 $timeSet ?1 ;61
938 489 DO_FCALL_BY_NAME $543= ?0 ?1 ;1
939 489 DIV #544= #542:$setPos - 1 $543:count($timeSet) ;0
940 489 SEND_VAL ?0 #544:($setPos - 1) / count($timeSet) ?1 ;61
941 489 DO_FCALL_BY_NAME $545= ?0 ?0 ;1
942 489 ASSIGN $dayPos $545:floor(($setPos - 1) / count($timeSet)) ;0
943 490 INIT_STATIC_METHOD_CALL ?0 "Recurr\DateUtil" "pymod" ;0
944 490 SUB #547= $setPos 1 ;0
945 490 SEND_VAL ?0 #547:$setPos - 1 ?1 ;61
946 490 INIT_NS_FCALL_BY_NAME ?1 ?0 "Recurr\Transformer\count" ;0
947 490 SEND_VAR ?0 $timeSet ?1 ;61
948 490 DO_FCALL_BY_NAME $548= ?0 ?1 ;1
949 490 SEND_VAR_NO_REF ?0 $548:count($timeSet) ?2 ;4
950 490 DO_FCALL_BY_NAME $549= ?0 ?0 ;2
951 490 ASSIGN $timePos $549:\Recurr\DateUtil::pymod($setPos - 1, count($timeSet)) ;0
952 493 INIT_ARRAY #551= ?0 ?0 ;0 <<933
953 493 ASSIGN $tmp #551:array() ;0
954 494 ASSIGN $k $daySetStart ;0
955 494 IS_SMALLER_OR_EQUAL #554= $k $daySetEnd ;0 <<959
956 494 JMPZNZ ?0 #554:$k <= $daySetEnd ?972 ;960 >>972,960
957 494 POST_INC #555= $k ?0 ;0 <<966,971
958 494 FREE ?0 #555:$dt->format("s") ?0 ;0
959 494 JMP ?0 ?955 ?0 ;0 >>955
960 495 INIT_NS_FCALL_BY_NAME ?0 ?0 "Recurr\Transformer\array_key_exists" ;0 <<956
961 495 SEND_VAR ?0 $k ?1 ;61
962 495 SEND_VAR ?0 $tmpDaySet ?2 ;61
963 495 DO_FCALL_BY_NAME $556= ?0 ?0 ;2
964 495 BOOL_NOT #557= $556:array_key_exists($k, $tmpDaySet) ?0 ;0
965 495 JMPZ ?0 #557:!array_key_exists($k, $tmpDaySet) ?968 ;0 >>968
966 496 CONT ?0 ?14 1 ;0 >>957
967 497 JMP ?0 ?968 ?0 ;0 >>968
968 499 FETCH_DIM_R $559= $tmpDaySet $k ;0 <<965,967
969 499 ASSIGN_DIM $tmp ?-8928 ;0
970 499 OP_DATA ?0 $559:$tmpDaySet[$k] $560:$dt->format("s") ;0
971 500 JMP ?0 ?957 ?0 ;0 >>957
972 502 IS_SMALLER #561= $dayPos 0 ;0 <<956
973 502 JMPZ ?0 #561:$dayPos < 0 ?983 ;0 >>983
974 503 INIT_NS_FCALL_BY_NAME ?0 ?0 "Recurr\Transformer\array_slice" ;0
975 503 SEND_VAR ?0 $tmp ?1 ;61
976 503 SEND_VAR ?0 $dayPos ?2 ;61
977 503 SEND_VAL ?0 1 ?3 ;61
978 503 DO_FCALL_BY_NAME $562= ?0 ?0 ;3
979 503 ASSIGN $nextInSet $562:array_slice($tmp, $dayPos, 1) ;0
980 504 FETCH_DIM_R $564= $nextInSet 0 ;0
981 504 ASSIGN $nextInSet $564:$nextInSet[0] ;0
982 505 JMP ?0 ?985 ?0 ;0 >>985
983 506 FETCH_DIM_R $566= $tmp $dayPos ;0 <<973
984 506 ASSIGN $nextInSet $566:$tmp[$dayPos] ;0
985 510 FETCH_DIM_R $568= $timeSet $timePos ;0 <<982
986 510 ASSIGN $time $568:$timeSet[$timePos] ;0
987 512 INIT_STATIC_METHOD_CALL ?0 "Recurr\DateUtil" "getDateTimeByDayOfYear" ;0
988 512 SEND_VAR ?0 $nextInSet ?1 ;61
989 512 INIT_METHOD_CALL ?1 $dt "format" ;0
990 512 SEND_VAL ?0 "Y" ?1 ;61
991 512 DO_FCALL_BY_NAME $571= ?0 ?1 ;1
992 512 SEND_VAR_NO_REF ?0 $571:$dt->format("Y") ?2 ;4
993 512 INIT_METHOD_CALL ?1 $start "getTimezone" ;0
994 512 DO_FCALL_BY_NAME $573= ?0 ?1 ;0
995 512 SEND_VAR_NO_REF ?0 $573:$start->getTimezone() ?3 ;4
996 512 DO_FCALL_BY_NAME $574= ?0 ?0 ;3
997 512 ASSIGN $dtTmp $574:\Recurr\DateUtil::getDateTimeByDayOfYear($nextInSet, $dt->format("Y"), $start->getTimezone()) ;0
998 514 INIT_METHOD_CALL ?0 $dtTmp "setTime" ;0
999 515 FETCH_OBJ_FUNC_ARG $577= $time "hour" ;1
1000 515 SEND_VAR ?0 $577:$time->hour ?1 ;61
1001 516 FETCH_OBJ_FUNC_ARG $578= $time "minute" ;2
1002 516 SEND_VAR ?0 $578:$time->minute ?2 ;61
1003 517 FETCH_OBJ_FUNC_ARG $579= $time "second" ;3
1004 518 SEND_VAR ?0 $579:$time->second ?3 ;61
1005 518 DO_FCALL_BY_NAME ?0 ?0 ;3
1006 520 ASSIGN_DIM $datesAdj ?-9200 ;0
1007 520 OP_DATA ?0 $dtTmp $582:$dt->format("s") ;0
1008 521 JMP ?0 ?912 ?0 ;0 >>912
1009 521 SWITCH_FREE ?0 $531:$dt->format("s") ?0 ;0 <<912
1010 523 FE_RESET $583= $datesAdj ?1070 ;0
1011 523 FE_FETCH $584= $583:$dt->format("s") ?1070 ;0 >>1070 <<1026,1046,1069
1012 523 OP_DATA ?0 ?0 ?0 ;0
1013 523 ASSIGN $dtTmp $584:$dt->format("s") ;0
1014 524 FETCH_CONSTANT #586= ?0 "Recurr\Transformer\\null" ;272
1015 524 IS_NOT_IDENTICAL #587= #586:null $until ;0
1016 524 JMPZ_EX #587= #587:$until < $dtTmp ?1019 ;0 >>1019
1017 524 IS_SMALLER #588= $until $dtTmp ;0
1018 524 BOOL #587= #588:$until < $dtTmp ?0 ;0
1019 524 JMPZ ?0 #587:$until < $dtTmp ?1024 ;0 >>1024 <<1016
1020 525 FETCH_CONSTANT #589= ?0 "Recurr\Transformer\\false" ;272
1021 525 ASSIGN $continue #589:false ;0
1022 526 BRK ?0 ?15 1 ;0 >>1070
1023 527 JMP ?0 ?1024 ?0 ;0 >>1024
1024 529 IS_SMALLER #591= $dtTmp $start ;0 <<1019,1023
1025 529 JMPZ ?0 #591:$dtTmp < $start ?1028 ;0 >>1028
1026 530 CONT ?0 ?15 1 ;0 >>1011
1027 531 JMP ?0 ?1028 ?0 ;0 >>1028
1028 533 FETCH_CLASS $592= ?0 "Recurr\Transformer\ConstraintInterface" ;128 <<1025,1027
1029 533 INSTANCEOF #593= $constraint $592:Recurr\Transformer\ConstraintInterface ;0
1030 533 JMPZ_EX #593= #593:!$constraint->test($dtTmp) ?1036 ;0 >>1036
1031 533 INIT_METHOD_CALL ?0 $constraint "test" ;0
1032 533 SEND_VAR ?0 $dtTmp ?1 ;61
1033 533 DO_FCALL_BY_NAME $595= ?0 ?0 ;1
1034 533 BOOL_NOT #596= $595:$constraint->test($dtTmp) ?0 ;0
1035 533 BOOL #593= #596:!$constraint->test($dtTmp) ?0 ;0
1036 533 JMPZ ?0 #593:!$constraint->test($dtTmp) ?1049 ;0 >>1049 <<1030
1037 534 BOOL_NOT #597= $countConstraintFailures ?0 ;0
1038 534 JMPZ ?0 #597:!$countConstraintFailures ?1048 ;0 >>1048
1039 535 INIT_METHOD_CALL ?0 $constraint "stopsTransformer" ;0
1040 535 DO_FCALL_BY_NAME $599= ?0 ?0 ;0
1041 535 JMPZ ?0 $599:$constraint->stopsTransformer() ?1046 ;0 >>1046
1042 536 FETCH_CONSTANT #600= ?0 "Recurr\Transformer\\false" ;272
1043 536 ASSIGN $continue #600:false ;0
1044 537 BRK ?0 ?15 1 ;0 >>1070
1045 538 JMP ?0 ?1047 ?0 ;0 >>1047
1046 539 CONT ?0 ?15 1 ;0 >>1011 <<1041
1047 541 JMP ?0 ?1048 ?0 ;0 >>1048 <<1045
1048 542 JMP ?0 ?1051 ?0 ;0 >>1051 <<1038,1047
1049 543 ASSIGN_DIM $dates ?1041 ;0 <<1036
1050 543 OP_DATA ?0 $dtTmp $603:$dt->format("s") ;0
1051 546 FETCH_CONSTANT #604= ?0 "Recurr\Transformer\\null" ;272 <<1048
1052 546 IS_NOT_IDENTICAL #605= #604:null $count ;0
1053 546 JMPZ ?0 #605:null !== $count ?1062 ;0 >>1062
1054 547 PRE_DEC $count ?0 ;0
1055 548 IS_SMALLER_OR_EQUAL #607= $count 0 ;0
1056 548 JMPZ ?0 #607:$count <= 0 ?1061 ;0 >>1061
1057 549 FETCH_CONSTANT #608= ?0 "Recurr\Transformer\\false" ;272
1058 549 ASSIGN $continue #608:false ;0
1059 550 BRK ?0 ?15 1 ;0 >>1070
1060 551 JMP ?0 ?1061 ?0 ;0 >>1061
1061 552 JMP ?0 ?1062 ?0 ;0 >>1062 <<1056,1060
1062 554 PRE_INC $total ?0 ;0 <<1053,1061
1063 555 IS_SMALLER #611= $vLimit $total ;0
1064 555 JMPZ ?0 #611:$vLimit < $total ?1069 ;0 >>1069
1065 556 FETCH_CONSTANT #612= ?0 "Recurr\Transformer\\false" ;272
1066 556 ASSIGN $continue #612:false ;0
1067 557 BRK ?0 ?15 1 ;0 >>1070
1068 558 JMP ?0 ?1069 ?0 ;0 >>1069
1069 559 JMP ?0 ?1011 ?0 ;0 >>1011 <<1064,1068
1070 559 SWITCH_FREE ?0 $583:$dt->format("s") ?0 ;0 <<1011,1022,1044,1059,1067
1071 560 JMP ?0 ?1169 ?0 ;0 >>1169
1072 561 FE_RESET $614= $daySet ?1162 ;0 <<903
1073 561 FE_FETCH $615= $614:$dt->format("s") ?1162 ;0 >>1162 <<1161
1074 561 OP_DATA ?0 ?0 ?0 ;0
1075 561 ASSIGN $dayOfYear $615:$dt->format("s") ;0
1076 562 INIT_STATIC_METHOD_CALL ?0 "Recurr\DateUtil" "getDateTimeByDayOfYear" ;0
1077 562 SEND_VAR ?0 $dayOfYear ?1 ;61
1078 562 INIT_METHOD_CALL ?1 $dt "format" ;0
1079 562 SEND_VAL ?0 "Y" ?1 ;61
1080 562 DO_FCALL_BY_NAME $618= ?0 ?1 ;1
1081 562 SEND_VAR_NO_REF ?0 $618:$dt->format("Y") ?2 ;4
1082 562 INIT_METHOD_CALL ?1 $start "getTimezone" ;0
1083 562 DO_FCALL_BY_NAME $620= ?0 ?1 ;0
1084 562 SEND_VAR_NO_REF ?0 $620:$start->getTimezone() ?3 ;4
1085 562 DO_FCALL_BY_NAME $621= ?0 ?0 ;3
1086 562 ASSIGN $dtTmp $621:\Recurr\DateUtil::getDateTimeByDayOfYear($dayOfYear, $dt->format("Y"), $start->getTimezone()) ;0
1087 564 FE_RESET $623= $timeSet ?1156 ;0
1088 564 FE_FETCH $624= $623:$dt->format("s") ?1156 ;0 >>1156 <<1111,1131,1155
1089 564 OP_DATA ?0 ?0 ?0 ;0
1090 564 ASSIGN $time $624:$dt->format("s") ;0
1091 566 INIT_METHOD_CALL ?0 $dtTmp "setTime" ;0
1092 567 FETCH_OBJ_FUNC_ARG $627= $time "hour" ;1
1093 567 SEND_VAR ?0 $627:$time->hour ?1 ;61
1094 568 FETCH_OBJ_FUNC_ARG $628= $time "minute" ;2
1095 568 SEND_VAR ?0 $628:$time->minute ?2 ;61
1096 569 FETCH_OBJ_FUNC_ARG $629= $time "second" ;3
1097 570 SEND_VAR ?0 $629:$time->second ?3 ;61
1098 570 DO_FCALL_BY_NAME ?0 ?0 ;3
1099 572 FETCH_CONSTANT #631= ?0 "Recurr\Transformer\\null" ;272
1100 572 IS_NOT_IDENTICAL #632= #631:null $until ;0
1101 572 JMPZ_EX #632= #632:$until < $dtTmp ?1104 ;0 >>1104
1102 572 IS_SMALLER #633= $until $dtTmp ;0
1103 572 BOOL #632= #633:$until < $dtTmp ?0 ;0
1104 572 JMPZ ?0 #632:$until < $dtTmp ?1109 ;0 >>1109 <<1101
1105 573 FETCH_CONSTANT #634= ?0 "Recurr\Transformer\\false" ;272
1106 573 ASSIGN $continue #634:false ;0
1107 574 BRK ?0 ?17 1 ;0 >>1156
1108 575 JMP ?0 ?1109 ?0 ;0 >>1109
1109 577 IS_SMALLER #636= $dtTmp $start ;0 <<1104,1108
1110 577 JMPZ ?0 #636:$dtTmp < $start ?1113 ;0 >>1113
1111 578 CONT ?0 ?17 1 ;0 >>1088
1112 579 JMP ?0 ?1113 ?0 ;0 >>1113
1113 581 FETCH_CLASS $637= ?0 "Recurr\Transformer\ConstraintInterface" ;128 <<1110,1112
1114 581 INSTANCEOF #638= $constraint $637:Recurr\Transformer\ConstraintInterface ;0
1115 581 JMPZ_EX #638= #638:!$constraint->test($dtTmp) ?1121 ;0 >>1121
1116 581 INIT_METHOD_CALL ?0 $constraint "test" ;0
1117 581 SEND_VAR ?0 $dtTmp ?1 ;61
1118 581 DO_FCALL_BY_NAME $640= ?0 ?0 ;1
1119 581 BOOL_NOT #641= $640:$constraint->test($dtTmp) ?0 ;0
1120 581 BOOL #638= #641:!$constraint->test($dtTmp) ?0 ;0
1121 581 JMPZ ?0 #638:!$constraint->test($dtTmp) ?1134 ;0 >>1134 <<1115
1122 582 BOOL_NOT #642= $countConstraintFailures ?0 ;0
1123 582 JMPZ ?0 #642:!$countConstraintFailures ?1133 ;0 >>1133
1124 583 INIT_METHOD_CALL ?0 $constraint "stopsTransformer" ;0
1125 583 DO_FCALL_BY_NAME $644= ?0 ?0 ;0
1126 583 JMPZ ?0 $644:$constraint->stopsTransformer() ?1131 ;0 >>1131
1127 584 FETCH_CONSTANT #645= ?0 "Recurr\Transformer\\false" ;272
1128 584 ASSIGN $continue #645:false ;0
1129 585 BRK ?0 ?17 1 ;0 >>1156
1130 586 JMP ?0 ?1132 ?0 ;0 >>1132
1131 587 CONT ?0 ?17 1 ;0 >>1088 <<1126
1132 589 JMP ?0 ?1133 ?0 ;0 >>1133 <<1130
1133 590 JMP ?0 ?1137 ?0 ;0 >>1137 <<1123,1132
1134 591 CLONE $648= $dtTmp ?0 ;0 <<1121
1135 591 ASSIGN_DIM $dates ?1126 ;0
1136 591 OP_DATA ?0 $648:clone $dtTmp $649:$dt->format("s") ;0
1137 594 FETCH_CONSTANT #650= ?0 "Recurr\Transformer\\null" ;272 <<1133
1138 594 IS_NOT_IDENTICAL #651= #650:null $count ;0
1139 594 JMPZ ?0 #651:null !== $count ?1148 ;0 >>1148
1140 595 PRE_DEC $count ?0 ;0
1141 596 IS_SMALLER_OR_EQUAL #653= $count 0 ;0
1142 596 JMPZ ?0 #653:$count <= 0 ?1147 ;0 >>1147
1143 597 FETCH_CONSTANT #654= ?0 "Recurr\Transformer\\false" ;272
1144 597 ASSIGN $continue #654:false ;0
1145 598 BRK ?0 ?17 1 ;0 >>1156
1146 599 JMP ?0 ?1147 ?0 ;0 >>1147
1147 600 JMP ?0 ?1148 ?0 ;0 >>1148 <<1142,1146
1148 602 PRE_INC $total ?0 ;0 <<1139,1147
1149 603 IS_SMALLER #657= $vLimit $total ;0
1150 603 JMPZ ?0 #657:$vLimit < $total ?1155 ;0 >>1155
1151 604 FETCH_CONSTANT #658= ?0 "Recurr\Transformer\\false" ;272
1152 604 ASSIGN $continue #658:false ;0
1153 605 BRK ?0 ?17 1 ;0 >>1156
1154 606 JMP ?0 ?1155 ?0 ;0 >>1155
1155 607 JMP ?0 ?1088 ?0 ;0 >>1088 <<1150,1154
1156 607 SWITCH_FREE ?0 $623:$dt->format("s") ?0 ;0 <<1088,1107,1129,1145,1153
1157 609 BOOL_NOT #660= $continue ?0 ;0
1158 609 JMPZ ?0 #660:!$continue ?1161 ;0 >>1161
1159 610 BRK ?0 ?16 1 ;0 >>1162
1160 611 JMP ?0 ?1161 ?0 ;0 >>1161
1161 612 JMP ?0 ?1073 ?0 ;0 >>1073 <<1158,1160
1162 612 SWITCH_FREE ?0 $614:$dt->format("s") ?0 ;0 <<1073,1159
1163 614 IS_SMALLER #661= $vLimit $total ;0
1164 614 JMPZ ?0 #661:$vLimit < $total ?1169 ;0 >>1169
1165 615 FETCH_CONSTANT #662= ?0 "Recurr\Transformer\\false" ;272
1166 615 ASSIGN $continue #662:false ;0
1167 616 BRK ?0 ?3 1 ;0 >>1389
1168 617 JMP ?0 ?1169 ?0 ;0 >>1169
1169 621 FETCH_CONSTANT #664= "Recurr\Frequency" "YEARLY" ;0 <<1071,1164,1168
1170 621 CASE #665= $freq #664:\Recurr\Frequency::YEARLY ;0 >>1172
1171 621 JMPZ ?0 #665:\Recurr\Frequency::SECONDLY ?1190 ;0 >>1190
1172 622 INIT_METHOD_CALL ?0 $rule "getInterval" ;0 <<1170
1173 622 DO_FCALL_BY_NAME $667= ?0 ?0 ;0
1174 622 ASSIGN_ADD $year $667:$rule->getInterval() ;0
1175 623 INIT_METHOD_CALL ?0 $dt "format" ;0
1176 623 SEND_VAL ?0 "n" ?1 ;61
1177 623 DO_FCALL_BY_NAME $670= ?0 ?0 ;1
1178 623 ASSIGN $month $670:$dt->format("n") ;0
1179 624 INIT_METHOD_CALL ?0 $dt "format" ;0
1180 624 SEND_VAL ?0 "j" ?1 ;61
1181 624 DO_FCALL_BY_NAME $673= ?0 ?0 ;1
1182 624 ASSIGN $day $673:$dt->format("j") ;0
1183 625 INIT_METHOD_CALL ?0 $dt "setDate" ;0
1184 625 SEND_VAR ?0 $year ?1 ;61
1185 625 SEND_VAR ?0 $month ?2 ;61
1186 625 SEND_VAL ?0 1 ?3 ;61
1187 625 DO_FCALL_BY_NAME ?0 ?0 ;3
1188 626 BRK ?0 ?18 1 ;0 >>1388
1189 627 JMP ?0 ?1193 ?0 ;0 >>1193
1190 627 FETCH_CONSTANT #677= "Recurr\Frequency" "MONTHLY" ;0 <<1171
1191 627 CASE #665= $freq #677:\Recurr\Frequency::MONTHLY ;0 >>1193
1192 627 JMPZ ?0 #665:\Recurr\Frequency::SECONDLY ?1223 ;0 >>1223
1193 628 INIT_METHOD_CALL ?0 $rule "getInterval" ;0 <<1189,1191
1194 628 DO_FCALL_BY_NAME $679= ?0 ?0 ;0
1195 628 ASSIGN_ADD $month $679:$rule->getInterval() ;0
1196 629 IS_SMALLER #681= 12 $month ;0
1197 629 JMPZ ?0 #681:12 < $month ?1216 ;0 >>1216
1198 630 INIT_NS_FCALL_BY_NAME ?0 ?0 "Recurr\Transformer\\floor" ;0
1199 630 DIV #682= $month 12 ;0
1200 630 SEND_VAL ?0 #682:$month / 12 ?1 ;61
1201 630 DO_FCALL_BY_NAME $683= ?0 ?0 ;1
1202 630 ASSIGN $delta $683:floor($month / 12) ;0
1203 631 INIT_STATIC_METHOD_CALL ?0 "Recurr\DateUtil" "pymod" ;0
1204 631 SEND_VAR ?0 $month ?1 ;61
1205 631 SEND_VAL ?0 12 ?2 ;61
1206 631 DO_FCALL_BY_NAME $685= ?0 ?0 ;2
1207 631 ASSIGN $mod $685:\Recurr\DateUtil::pymod($month, 12) ;0
1208 632 ASSIGN $month $mod ;0
1209 633 ASSIGN_ADD $year $delta ;0
1210 634 IS_EQUAL #689= $month 0 ;0
1211 634 JMPZ ?0 #689:$month == 0 ?1215 ;0 >>1215
1212 635 ASSIGN $month 12 ;0
1213 636 PRE_DEC $year ?0 ;0
1214 637 JMP ?0 ?1215 ?0 ;0 >>1215
1215 638 JMP ?0 ?1216 ?0 ;0 >>1216 <<1211,1214
1216 639 INIT_METHOD_CALL ?0 $dt "setDate" ;0 <<1197,1215
1217 639 SEND_VAR ?0 $year ?1 ;61
1218 639 SEND_VAR ?0 $month ?2 ;61
1219 639 SEND_VAL ?0 1 ?3 ;61
1220 639 DO_FCALL_BY_NAME ?0 ?0 ;3
1221 640 BRK ?0 ?18 1 ;0 >>1388
1222 641 JMP ?0 ?1226 ?0 ;0 >>1226
1223 641 FETCH_CONSTANT #694= "Recurr\Frequency" "WEEKLY" ;0 <<1192
1224 641 CASE #665= $freq #694:\Recurr\Frequency::WEEKLY ;0 >>1226
1225 641 JMPZ ?0 #665:\Recurr\Frequency::SECONDLY ?1268 ;0 >>1268
1226 642 FETCH_OBJ_R $695= $dtInfo "dayOfWeek" ;0 <<1222,1224
1227 642 IS_SMALLER #696= $695:$dtInfo->dayOfWeek $weekStart ;0
1228 642 JMPZ ?0 #696:$dtInfo->dayOfWeek < $weekStart ?1240 ;0 >>1240
1229 643 FETCH_OBJ_R $697= $dtInfo "dayOfWeek" ;0
1230 643 ADD #698= $697:$dtInfo->dayOfWeek 1 ;0
1231 643 SUB #699= 6 $weekStart ;0
1232 643 ADD #700= #698:$dtInfo->dayOfWeek + 1 #699:6 - $weekStart ;0
1233 643 MUL #701= #700:$dtInfo->dayOfWeek + 1 + (6 - $weekStart) -1 ;0
1234 643 INIT_METHOD_CALL ?0 $rule "getInterval" ;0
1235 643 DO_FCALL_BY_NAME $703= ?0 ?0 ;0
1236 643 MUL #704= $703:$rule->getInterval() 7 ;0
1237 643 ADD #705= #701:($dtInfo->dayOfWeek + 1 + (6 - $weekStart)) * -1 #704:$rule->getInterval() * 7 ;0
1238 643 ASSIGN $delta #705:(($dtInfo->dayOfWeek + 1 + (6 - $weekStart)) * -1) + ($rule->getInterval() * 7) ;0
1239 644 JMP ?0 ?1248 ?0 ;0 >>1248
1240 645 FETCH_OBJ_R $707= $dtInfo "dayOfWeek" ;0 <<1228
1241 645 SUB #708= $707:$dtInfo->dayOfWeek $weekStart ;0
1242 645 MUL #709= #708:$dtInfo->dayOfWeek - $weekStart -1 ;0
1243 645 INIT_METHOD_CALL ?0 $rule "getInterval" ;0
1244 645 DO_FCALL_BY_NAME $711= ?0 ?0 ;0
1245 645 MUL #712= $711:$rule->getInterval() 7 ;0
1246 645 ADD #713= #709:($dtInfo->dayOfWeek - $weekStart) * -1 #712:$rule->getInterval() * 7 ;0
1247 645 ASSIGN $delta #713:(($dtInfo->dayOfWeek - $weekStart) * -1) + ($rule->getInterval() * 7) ;0
1248 648 INIT_METHOD_CALL ?0 $dt "modify" ;0 <<1239
1249 648 ADD_CHAR #716= ?0 43 ;0
1250 648 ADD_VAR #716= #716:"+$delta day" $delta ;0
1251 648 ADD_STRING #716= #716:"+$delta day" " day" ;0
1252 648 SEND_VAL ?0 #716:"+$delta day" ?1 ;61
1253 648 DO_FCALL_BY_NAME ?0 ?0 ;1
1254 649 INIT_METHOD_CALL ?0 $dt "format" ;0
1255 649 SEND_VAL ?0 "Y" ?1 ;61
1256 649 DO_FCALL_BY_NAME $719= ?0 ?0 ;1
1257 649 ASSIGN $year $719:$dt->format("Y") ;0
1258 650 INIT_METHOD_CALL ?0 $dt "format" ;0
1259 650 SEND_VAL ?0 "n" ?1 ;61
1260 650 DO_FCALL_BY_NAME $722= ?0 ?0 ;1
1261 650 ASSIGN $month $722:$dt->format("n") ;0
1262 651 INIT_METHOD_CALL ?0 $dt "format" ;0
1263 651 SEND_VAL ?0 "j" ?1 ;61
1264 651 DO_FCALL_BY_NAME $725= ?0 ?0 ;1
1265 651 ASSIGN $day $725:$dt->format("j") ;0
1266 652 BRK ?0 ?18 1 ;0 >>1388
1267 653 JMP ?0 ?1271 ?0 ;0 >>1271
1268 653 FETCH_CONSTANT #727= "Recurr\Frequency" "DAILY" ;0 <<1225
1269 653 CASE #665= $freq #727:\Recurr\Frequency::DAILY ;0 >>1271
1270 653 JMPZ ?0 #665:\Recurr\Frequency::SECONDLY ?1292 ;0 >>1292
1271 654 INIT_METHOD_CALL ?0 $dt "modify" ;0 <<1267,1269
1272 654 INIT_METHOD_CALL ?1 $rule "getInterval" ;0
1273 654 DO_FCALL_BY_NAME $730= ?0 ?1 ;0
1274 654 CONCAT #731= "+" $730:$rule->getInterval() ;0
1275 654 CONCAT #732= #731:"+" . $rule->getInterval() " day" ;0
1276 654 SEND_VAL ?0 #732:"+" . $rule->getInterval() . " day" ?1 ;61
1277 654 DO_FCALL_BY_NAME ?0 ?0 ;1
1278 655 INIT_METHOD_CALL ?0 $dt "format" ;0
1279 655 SEND_VAL ?0 "Y" ?1 ;61
1280 655 DO_FCALL_BY_NAME $735= ?0 ?0 ;1
1281 655 ASSIGN $year $735:$dt->format("Y") ;0
1282 656 INIT_METHOD_CALL ?0 $dt "format" ;0
1283 656 SEND_VAL ?0 "n" ?1 ;61
1284 656 DO_FCALL_BY_NAME $738= ?0 ?0 ;1
1285 656 ASSIGN $month $738:$dt->format("n") ;0
1286 657 INIT_METHOD_CALL ?0 $dt "format" ;0
1287 657 SEND_VAL ?0 "j" ?1 ;61
1288 657 DO_FCALL_BY_NAME $741= ?0 ?0 ;1
1289 657 ASSIGN $day $741:$dt->format("j") ;0
1290 658 BRK ?0 ?18 1 ;0 >>1388
1291 659 JMP ?0 ?1295 ?0 ;0 >>1295
1292 659 FETCH_CONSTANT #743= "Recurr\Frequency" "HOURLY" ;0 <<1270
1293 659 CASE #665= $freq #743:\Recurr\Frequency::HOURLY ;0 >>1295
1294 659 JMPZ ?0 #665:\Recurr\Frequency::SECONDLY ?1320 ;0 >>1320
1295 660 INIT_METHOD_CALL ?0 $dt "modify" ;0 <<1291,1293
1296 660 INIT_METHOD_CALL ?1 $rule "getInterval" ;0
1297 660 DO_FCALL_BY_NAME $746= ?0 ?1 ;0
1298 660 CONCAT #747= "+" $746:$rule->getInterval() ;0
1299 660 CONCAT #748= #747:"+" . $rule->getInterval() " hours" ;0
1300 660 SEND_VAL ?0 #748:"+" . $rule->getInterval() . " hours" ?1 ;61
1301 660 DO_FCALL_BY_NAME ?0 ?0 ;1
1302 661 INIT_METHOD_CALL ?0 $dt "format" ;0
1303 661 SEND_VAL ?0 "Y" ?1 ;61
1304 661 DO_FCALL_BY_NAME $751= ?0 ?0 ;1
1305 661 ASSIGN $year $751:$dt->format("Y") ;0
1306 662 INIT_METHOD_CALL ?0 $dt "format" ;0
1307 662 SEND_VAL ?0 "n" ?1 ;61
1308 662 DO_FCALL_BY_NAME $754= ?0 ?0 ;1
1309 662 ASSIGN $month $754:$dt->format("n") ;0
1310 663 INIT_METHOD_CALL ?0 $dt "format" ;0
1311 663 SEND_VAL ?0 "j" ?1 ;61
1312 663 DO_FCALL_BY_NAME $757= ?0 ?0 ;1
1313 663 ASSIGN $day $757:$dt->format("j") ;0
1314 664 INIT_METHOD_CALL ?0 $dt "format" ;0
1315 664 SEND_VAL ?0 "G" ?1 ;61
1316 664 DO_FCALL_BY_NAME $760= ?0 ?0 ;1
1317 664 ASSIGN $hour $760:$dt->format("G") ;0
1318 665 BRK ?0 ?18 1 ;0 >>1388
1319 666 JMP ?0 ?1323 ?0 ;0 >>1323
1320 666 FETCH_CONSTANT #762= "Recurr\Frequency" "MINUTELY" ;0 <<1294
1321 666 CASE #665= $freq #762:\Recurr\Frequency::MINUTELY ;0 >>1323
1322 666 JMPZ ?0 #665:\Recurr\Frequency::SECONDLY ?1352 ;0 >>1352
1323 667 INIT_METHOD_CALL ?0 $dt "modify" ;0 <<1319,1321
1324 667 INIT_METHOD_CALL ?1 $rule "getInterval" ;0
1325 667 DO_FCALL_BY_NAME $765= ?0 ?1 ;0
1326 667 CONCAT #766= "+" $765:$rule->getInterval() ;0
1327 667 CONCAT #767= #766:"+" . $rule->getInterval() " minutes" ;0
1328 667 SEND_VAL ?0 #767:"+" . $rule->getInterval() . " minutes" ?1 ;61
1329 667 DO_FCALL_BY_NAME ?0 ?0 ;1
1330 668 INIT_METHOD_CALL ?0 $dt "format" ;0
1331 668 SEND_VAL ?0 "Y" ?1 ;61
1332 668 DO_FCALL_BY_NAME $770= ?0 ?0 ;1
1333 668 ASSIGN $year $770:$dt->format("Y") ;0
1334 669 INIT_METHOD_CALL ?0 $dt "format" ;0
1335 669 SEND_VAL ?0 "n" ?1 ;61
1336 669 DO_FCALL_BY_NAME $773= ?0 ?0 ;1
1337 669 ASSIGN $month $773:$dt->format("n") ;0
1338 670 INIT_METHOD_CALL ?0 $dt "format" ;0
1339 670 SEND_VAL ?0 "j" ?1 ;61
1340 670 DO_FCALL_BY_NAME $776= ?0 ?0 ;1
1341 670 ASSIGN $day $776:$dt->format("j") ;0
1342 671 INIT_METHOD_CALL ?0 $dt "format" ;0
1343 671 SEND_VAL ?0 "G" ?1 ;61
1344 671 DO_FCALL_BY_NAME $779= ?0 ?0 ;1
1345 671 ASSIGN $hour $779:$dt->format("G") ;0
1346 672 INIT_METHOD_CALL ?0 $dt "format" ;0
1347 672 SEND_VAL ?0 "i" ?1 ;61
1348 672 DO_FCALL_BY_NAME $782= ?0 ?0 ;1
1349 672 ASSIGN $minute $782:$dt->format("i") ;0
1350 673 BRK ?0 ?18 1 ;0 >>1388
1351 674 JMP ?0 ?1355 ?0 ;0 >>1355
1352 674 FETCH_CONSTANT #784= "Recurr\Frequency" "SECONDLY" ;0 <<1322
1353 674 CASE #665= $freq #784:\Recurr\Frequency::SECONDLY ;0 >>1355
1354 674 JMPZ ?0 #665:\Recurr\Frequency::SECONDLY ?1388 ;0 >>1388
1355 675 INIT_METHOD_CALL ?0 $dt "modify" ;0 <<1351,1353
1356 675 INIT_METHOD_CALL ?1 $rule "getInterval" ;0
1357 675 DO_FCALL_BY_NAME $787= ?0 ?1 ;0
1358 675 CONCAT #788= "+" $787:$rule->getInterval() ;0
1359 675 CONCAT #789= #788:"+" . $rule->getInterval() " seconds" ;0
1360 675 SEND_VAL ?0 #789:"+" . $rule->getInterval() . " seconds" ?1 ;61
1361 675 DO_FCALL_BY_NAME ?0 ?0 ;1
1362 676 INIT_METHOD_CALL ?0 $dt "format" ;0
1363 676 SEND_VAL ?0 "Y" ?1 ;61
1364 676 DO_FCALL_BY_NAME $792= ?0 ?0 ;1
1365 676 ASSIGN $year $792:$dt->format("Y") ;0
1366 677 INIT_METHOD_CALL ?0 $dt "format" ;0
1367 677 SEND_VAL ?0 "n" ?1 ;61
1368 677 DO_FCALL_BY_NAME $795= ?0 ?0 ;1
1369 677 ASSIGN $month $795:$dt->format("n") ;0
1370 678 INIT_METHOD_CALL ?0 $dt "format" ;0
1371 678 SEND_VAL ?0 "j" ?1 ;61
1372 678 DO_FCALL_BY_NAME $798= ?0 ?0 ;1
1373 678 ASSIGN $day $798:$dt->format("j") ;0
1374 679 INIT_METHOD_CALL ?0 $dt "format" ;0
1375 679 SEND_VAL ?0 "G" ?1 ;61
1376 679 DO_FCALL_BY_NAME $801= ?0 ?0 ;1
1377 679 ASSIGN $hour $801:$dt->format("G") ;0
1378 680 INIT_METHOD_CALL ?0 $dt "format" ;0
1379 680 SEND_VAL ?0 "i" ?1 ;61
1380 680 DO_FCALL_BY_NAME $804= ?0 ?0 ;1
1381 680 ASSIGN $minute $804:$dt->format("i") ;0
1382 681 INIT_METHOD_CALL ?0 $dt "format" ;0
1383 681 SEND_VAL ?0 "s" ?1 ;61
1384 681 DO_FCALL_BY_NAME $807= ?0 ?0 ;1
1385 681 ASSIGN $second $807:$dt->format("s") ;0
1386 682 BRK ?0 ?18 1 ;0 >>1388
1387 683 JMP ?0 ?1388 ?0 ;0 >>1388
1388 684 JMP ?0 ?286 ?0 ;0 <<1188,1221,1266,1290,1318,1350,1354,1386,1387
*/
$datesAdj = array();
$tmpDaySet = array_combine($daySet, $daySet);
$dayPos = floor($setPos / count($timeSet));
$timePos = \Recurr\DateUtil::pymod($setPos, count($timeSet));
$dayPos = floor(($setPos - 1) / count($timeSet));
$timePos = \Recurr\DateUtil::pymod($setPos - 1, count($timeSet));
$tmp = array();
$k++;
continue;
$tmp[] = $tmpDaySet[$k];
$nextInSet = array_slice($tmp, $dayPos, 1);
$nextInSet = $nextInSet[0];
$nextInSet = $tmp[$dayPos];
$time = $timeSet[$timePos];
$dtTmp = \Recurr\DateUtil::getDateTimeByDayOfYear($nextInSet, $dt->format("Y"), $start->getTimezone());
$dtTmp->setTime($time->hour, $time->minute, $time->second);
$datesAdj[] = $dtTmp;
$continue = false;
break;
continue;
$continue = false;
break;
continue;
$dates[] = $dtTmp;
--$count;
$continue = false;
break;
++$total;
$continue = false;
break;
$dtTmp = \Recurr\DateUtil::getDateTimeByDayOfYear($dayOfYear, $dt->format("Y"), $start->getTimezone());
$dtTmp->setTime($time->hour, $time->minute, $time->second);
$continue = false;
break;
continue;
$continue = false;
break;
continue;
$dates[] = clone $dtTmp;
--$count;
$continue = false;
break;
++$total;
$continue = false;
break;
break;
$continue = false;
break;
$year += $rule->getInterval();
$month = $dt->format("n");
$day = $dt->format("j");
$dt->setDate($year, $month, 1);
break;
$month += $rule->getInterval();
$delta = floor($month / 12);
$mod = \Recurr\DateUtil::pymod($month, 12);
$month = $mod;
$year += $delta;
$month = 12;
--$year;
$dt->setDate($year, $month, 1);
break;
$delta = (($dtInfo->dayOfWeek + 1 + (6 - $weekStart)) * -1) + ($rule->getInterval() * 7);
$delta = (($dtInfo->dayOfWeek - $weekStart) * -1) + ($rule->getInterval() * 7);
$dt->modify("+$delta day");
$year = $dt->format("Y");
$month = $dt->format("n");
$day = $dt->format("j");
break;
$dt->modify("+" . $rule->getInterval() . " day");
$year = $dt->format("Y");
$month = $dt->format("n");
$day = $dt->format("j");
break;
$dt->modify("+" . $rule->getInterval() . " hours");
$year = $dt->format("Y");
$month = $dt->format("n");
$day = $dt->format("j");
$hour = $dt->format("G");
break;
$dt->modify("+" . $rule->getInterval() . " minutes");
$year = $dt->format("Y");
$month = $dt->format("n");
$day = $dt->format("j");
$hour = $dt->format("G");
$minute = $dt->format("i");
break;
$dt->modify("+" . $rule->getInterval() . " seconds");
$year = $dt->format("Y");
$month = $dt->format("n");
$day = $dt->format("j");
$hour = $dt->format("G");
$minute = $dt->format("i");
$second = $dt->format("s");
break;
}
$recurrences = array();
foreach ($dates as $start) {
$end = clone $start;
$recurrences[] = new \Recurr\Recurrence($start, $end->add($durationInterval));
}
$recurrences = $this->handleInclusions($rule->getRDates(), $recurrences);
$recurrences = $this->handleExclusions($rule->getExDates(), $recurrences);
return new \Recurr\RecurrenceCollection($recurrences);
}
--- skip ---
Comments (2)
-
-
еще форичи
Notice: Undefined index: fe_as in C:\xcache54\Decompiler.class.php on line 2204 foreach ($urls as ) { Notice: Undefined index: in C:\xcache54\Decompiler.class.php on line 2237 break; }
- Log in to comment
в форичах частый баг во вложенностях, потеря аргумента, либо другое