Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

PHP такой PHP...

00 голосов
2
В bitrix/modules/iblock/classes/general/cml2.php:

Код
if(array_key_exists("bUpdateOnly", $this->next_step) && $this->next_step["bUpdateOnly"]) 
            return $counter;
 
это 2390 строка, метод DeactivateElement, класса CIBlockCMLImport
Это условие истинно, даже если $this->next_step["bUpdateOnly"] == "false"
В итоге у клиента не деактивируются/удаляются элементы которых нет в файле импорта, но есть в каталоге.
Почему?
Где же неявное привидение типов? Почему работает у других?
спросил 02 Авг, 13 от Aribor (560 баллов)

2 Ответы

00 голосов
Таки PHP ведет себя в соответствии с маном: http://www.php.net/manual/ru/types.comparisons.php Ведь там строка.
Соответственно вопрос меняет на "Почему там, черт возьми строка?".
ответил 02 Авг, 13 от Aribor (560 баллов)
00 голосов
grep присвоения по cml2 - вроде все в порядке - никто не пытается впихнуть строку:

Код
$this->next_step["bUpdateOnly"] = ($attrs[GetMessage("IBLOCK_XML2_UPDATE_ONLY")]=="true") || intval($attrs["IBLOCK_XML2_UPDATE_ONLY"])? true: false;
$this->next_step["bUpdateOnly"] = ($ar["VALUE"]=="true") || intval($ar["VALUE"])? true: false;
$this->next_step["bUpdateOnly"] = true;
ответил 02 Окт, 13 от Aribor (560 баллов)

Похожие вопросы

0 голосов
1 ответ
спросил 19 Янв, 13 от аноним
0 голосов
3 ответов
0 голосов
1 ответ
0 голосов
1 ответ
спросил 19 Май, 16 от аноним
0 голосов
1 ответ