Перегоняем телефоны пользователей из заказов в профили
Антон Долганин4 Марта 2015 14:582495
Простая задачка — перегнать телефоны из заказов в профили пользователей. Например, чтобы потом сделать рассылку СМС. Скрипт ниже.
Скрипт тоже достаточно простой. Есть несколько «но»:
Не рассчитан на большую базу заказов, может упасть на оной, пошаговку делаете сами (например, с помощью моего старого скрипта).
Пишется в поле PERSONAL_PHONE (личный телефон), хотя это можете исправить.
Берет только один телефон (если их, например, несколько, разделенных запятой).
В переменной $propsPhone не забудьте прописать ID свойств, где может лежать телефон. Как правило, это и для юр.лица и для физ.лица. Скрипт не предусматривает, что св-в одного типа плательщика может быть несколько.
Собственно скрипт:
if (CModule::IncludeModule('sale')) {
//указываем ID св-в, где может содержаться телефон
$propsPhone = array(3,14);
$rsProps = CSaleOrderPropsValue::GetList(array(), array('ORDER_PROPS_ID' => $propsPhone));
while ($arProps = $rsProps->fetch()) {
if (strlen(trim($arProps['VALUE']))) {
//если телефонов несколько, разделены ";", берем первый
if (strpos($arProps['VALUE'], ';')) {
$phone = trim(array_shift(explode(';', $arProps['VALUE'])));
//если телефонов несколько, разделены ",", берем первый
} elseif (strpos($arProps['VALUE'], ',')) {
$phone = trim(array_shift(explode(',', $arProps['VALUE'])));
//в поле просто телефон
} else {
$phone = trim($arProps['VALUE']);
}
$order = CSaleOrder::getByID($arProps['ORDER_ID']);
$USER->update($order['USER_ID'], array('PERSONAL_PHONE' => $phone));
}
}
}