require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/csv_data.php";);
$csvFile = new CCSVData('R', true);
$csvFile->LoadFile($_FILES['csv']['tmp_name']);
$csvFile->SetDelimiter(',');
while ($arRes = $csvFile->Fetch()) {
ec($arRes);
}
Собственно: - подключаем файл класса работы с CSV - создаем объект класса, указываем, что будет использоваться разделитель (R, есть еще фикс.поля F), и первая строка содержит заголовки (true); можно не указывать эти параметры и задать отдельными методами
- загружаем файл - ставим делиметер, где допустимые параметры: \t (табуляция), запятая, пробел, точка с запятой. - бежим как при обычной выборке из базы (напомню, Fetch возвращает НЕ обработанные данные, а GetNext безопасные).
Semenov Roman, да никто же не спорит Тут вопрос скорее не "почему не использовали именно эту фичу", а "зачем понадобилось писать прослойку, да еще и не очень удобную"
Эту фичу наверное нужно использовать для того что бы избежать всяческих проблем с кодировкой и прочими настройками которые Битрикс учитывает. Антон там в строке подключения библиортеки лишнее
Давняя головная боль, которую все преодолевают по разному. Я нашел такой вот путь, надеюсь кому-нибудь еще пригодится Итак, небольшой ликбез почему так, а не иначе.
Что дано - после того как отправляется письмо с CEvent::Send() оно на самом деле сначала добавляется в таблицу b_event как событие и сработает на следующем хите (фактически на вашем же) - перед добавлением в таблицу вызывается обработчик OnBeforeEventAdd - после добавления в таблицу (на следующем хите) происходит уже отправка письма; как и что там происходит описывать не буду, потому что туда нам не вклинится - там есть обработчик OnBeforeEventSend, но он вызывается, когда письмо уже формируется, фактически перед отправкой и поздно что-то делать.
Вывод: вклиниться надо в OnBeforeEventAdd.
Скачиваем файл с единственной функцией SendAttache() для отправки нашего письма. Внимание! Функция не предусматривает отправки письма без файла. Складируем ее к себе, подключаем файл (я подключил его в момент отправки письма, чтобы постоянно не копилило).
$event, $lid, $arFields передаются по ссылке - их изменение повлечет изменений изначальных переменных. На этом мы и сыграем далее.
В первой строчку я подключаю тот самый файл. Во второй строчке вызываю функцию из файла (переменные те же, что передаются в обработчик + аттач).
А вот третья строчка это чистой воды танец с бубном. Если этого не сделать, то придет два письма по шаблону. Почему? Потому что после обработчика идет добавление в таблицу b_event (см. выше). Но мы то письмо уже отправили (обращаю внимание, что при отправке нашим способом добавления в таблицу не происходит). Значит нам надо сделать так, чтобы будущее добавление в таблицу не повлекло отправку письма. unset у меня почему-то не сработал, поэтому я просто присвоил null.
Вот собственно и все. Хочу заметить, что если в SendAttache четвертым параметром передать не путь, а массив путей, то к письму приложится несколько аттачей.
В обработчике лишь пример как можно использовать данную функцию. Логика у каждого своя, поэтому я не стал изощряться.
UPD По поводу $event = 'null' пару слов еще. Дело в том, что добавление в таблицу произойдет, но система помаркирует ее как "провал при отправке" и письма не отправится, а через несколько дней запись и вовсе удалится автоматически.
Недавно столкнулся со старой версией битрикса у клиента, нужно было реализовать нечто подобное Если в методе CEvent::Send id сайта передан как массив, то в методе SendAttach нужно поправить выборку при обращении к таблице b_event_message
Предлагаю здесь коротенечко поделиться почему надо использовать lang-файлы, или не надо. Речь не о партнерских решениях Маркетплейса - там строго обязательно, а индивидуальные компоненты, и, конечно же, шаблоны.
Отвечу за себя. Раньше писал в ланг-файлы, потом понял, что время на разработку тратится все равно больше, а вероятность что каждый сайт будут переводить - ничтожно мала. Если есть вероятность - конечно пишу ланг-файлы.
Теперь в шаблонах не применяю ланг-фразы. Во-первых (на данный момент), до ланг-фраз сложно добраться потом, чтобы поправить какую-то деталь. Во-вторых, без модуля локализации в эти файлы не хорошо вообще лезть редакторам.
В компонентах выношу в ланг-файлы, просто потому что это системная часть и там хотелось бы видеть порядок. К тому же, никогда не знаешь с какой кодировкой в IDE ты срочно полезешь править компоненту (не увидишь и сохранишь не в той, и конец).
Have you ever thought about starting your own internet cafe business and be the boss of it? But first of all, you need a unique idea and be original to be successful. If you have an interest in technology and computers, then opening your internet cafe Business is a great idea. So let’s see what an internet cafe and internet cafe software is, its difference from ordinary cafes and how to start it. To make your job easier, you can try to use an internet cafe software.
Online fish table is a popular internet cafe software and games. It specialized in the development of video lottery and slot games by providing the latest online casino games to the players. Online fish table software offers next-generation games, slots, video pokers for online casino players. This gaming platform gives the opportunity for players to entertain with gaining a lot of prizes.
Вопрос, собственно. Кто что думает? Имеет ли смысл на него завязываться, действительно ли он гибкий, уступает ли он чем-то jQuery тому же? Или есть какие-то тупиковые ситуации, когда что-то геморройно делать?
Навеяно тем, что меня в очередной раз спросили - кого вы можете посоветовать из разработчиков - я ответил, что не знаю. Потому что правда не знаю.
Хотелось бы, чтобы эта группа стала неким подобием студенческих сходок, где ботаны выпускники собирались бы, и пьянствовали рассказывали новичкам об опыте работы, отвечали бы на вопросы. В общем, основная цель - растить высококлассных специалистов. И чтобы было к кому отправить клиента.
Я надеюсь, что группа не превратится в рассадник вопросов "а как сделать". Чтобы этого не случилось, темы такие будут удаляться, не обессудьте. Но если участники увидят, что вы дейсвтительно разработчик (не партнер, не клиент), никого не оскорбляете, приложили усилия в изучении, хотя бы базовые - вам ответят, вас научат.
И самое главное - если вы проявите себя, вас будут советовать, вас будут приглашать в напарники. Поверьте, денег на этом рынке очень много. Разработчиков тупо нет. Хороших разработчиков.
Пиариться можно по разному - примеры кода, хитрые хаки, советы, случаи в разработке проектов, скрытые камни.
Группа является смежной с разработкой модулей. Тут будет детальна освещена тема создания и поддержания модулей.
И да, если у вас есть все сертификаты Битрикса, то вам пока еще рано вступать в группу
- принцип хранения шаблонов сайта - организация хранения структуры, которую обычно пихают все в init.php - принцип написания кода - как правильно изучать Битрикс, не затерявшись в дебрях - базовые классы, константы, без чего никуда (остальное можно не учить, но знать где найти) - идеология подхода к разработке (статика, инфоблоки) - почему важно быть в курсе (подписка на обновление, новостей компании, форумы партнеров и разработчиков) - кастомизируем компонент (что удалить, а что оставить) - пишем свой компонент, когда это стоит свеч - комплексный компонент, изучаем по строчкам принцип работы - настройка базового рабочего места (админки) перед сдачей проекта
В принципе, если человек съест все это, а не начнет глотать и давиться, то он уже годен к работе в профессиональной среде. Постараюсь рассказывать максимально интересно и жизненно. Рассматриваю вариант видео, буду рад советам по необходимому софту и программе минимум.
Зачем мне это надо? А не знаю, из фанатизма мне за это правда никто не платит ни копейки.
Антон Долганин пишет: Ах да, самая первая тема: - почему Битрикс, тормозит ли он, и чем он все же лучше Друпала?
хорошая идейка а я подкину материальчика как физически "тормознутый битрикс" вполне сносно может работать на "тормознутом хостинге", хотя "теоретически такая редакция на таком хостинге работать не может вообще".
тем более в блогах давно хотел написать, но все никак не собирался. Думаю, здесь будет во сто крат полезнее
Идея от Саныча. Если надо быстро отрубить модуль (или нет доступа в админку, или сайт ложит этот модуль) достаточно в include.php модуля в самом верху вписать return false;
Ибо в cmodule::includemodule происходит чтение возвращаемого значения.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».
Антон там в строке подключения библиортеки лишнее