*** Кого я ищу ***
Здравствуйте. Разыскивается человек, нежно любящий CMS MODx Revolution, PHP и красоту в коде.
*** Задача ***
1. Создать контекст
Необходимо создать в админке MODx новый контекст Source. Далее мы будем работать с ним.
2. Обработка RSS лент
Есть порядка 20 RSS лент. По сложившейстя традиции, они оформлены как попало. Необходимо написать снипет, который будет читать эти ленты и приводить их к единому виду.
Первое, что будет нужно сделать проверить кодировку. Некоторые RSS приходят в кодировке 1251, некоторые заявлены как UTF 8, но мы понимаем, что «СЂСѓРєС†РёРё древнего» (цитата дословная, стилистика и пунктуация автора сохранены).
Из каждой RSS ленты будет нужно получить следующую информацию:
- Заголовок записи.
- Дата публикации.
- Ссылка на публикацию.
- Краткое описание публикации.
В некоторых лентах дополнительно встречаются данные, которые также надо будет получить:
- Категория (тематика) публикации.
- Ссылка на изображение.
- Полный текст публикации.
Со ссылками на изображения и полными текстами публикаций возникнут сложности:
- Где то ссылка на изображение оформлена как <enclosure url="_url_" type="image/_ext_"/>, где-то вставлена в тег description через ![CDATA[ _HTML_tag_ ]]>, где-то она в теге content. Естественно, меня интересует содержание атрибутов url / src, остальная бесценная информация может быть смело затерта.
- В content встречается все, что угодно: куски разметки и даже JS (через CDATA). Мы должны привнести гармонию в мир и выпилить это безобразие, оставляя только спецсимволы HTML ( &mdash « и т.п.).
Итогом этого этапа работы должны стать очищенные от мусора строковые данные или прямые ссылки.
3. Запись в БД.
Все данные из второго пункта необходимо положить в базу данных. Предваритольно важно проверить, не лежат ли уже там эти самые данные.
4. CRON
Необходимо написать CRON скрипт, который будет выполнять пункты 2 и 3 с переодичностью раз в 30 минут. Если у вас есть альтернативна крону, которая по каким-то причинам видится вам более разумной (стабильность, потребление ресурсов и проч.), я буду рад внять доводам профессионала.
5. API
Как вы поняли, создаем что-то вроде агрегатора новостей. Фронт-енд будет на AngularJS, для которого нужен API. Хранить мы его буем в созданном на первом шаге контексте. Мне будет нужно по запросу
получить JSON с массивом объектов, ранее записанных в БД.
6. Научить дурака
Будет нужна передача знаний. Я хотел бы понять, как у вас все работает, что нужно будет сделать, если мне понадобится добавить или удалить RSS поток.
*** Лирика ***
Я совсем не против использования сторонник библиотек, главное чтобы они были с соответствующими лицензиями (MIT, Apache, любая халява). Короче, не воруем и не копипастим.
Если вы сочтете свой снипет настолько хорошим, что захотите им похвастаться и опубликовать на ресурсах modx.com я буду рад. Только затрите упоминания обо мне :-)
*** Технические исходные данных: ***
MODx Revo
Сервер VPS на Рег.ру
Процессор 2x2000МГц
Память 1024МБ
OS centos6_php_selector-x86_64_isp_lite5
ISP manager
MySQL 5.1.73-3.el6_5
PHP 5.3.3-40.el6_6
Протокол https
Жизнь боль
*** Оплата ***
Только безопасная сделка.
Чуваки, которые спамят в сообщениях, а не откликаются в комментах не стоит.
*** О сроках ***
Сроки не поджимают. Делаем на совесть, а не на скорость.
*** С меня ***
Доступ к VPS.
Доступ к админке.
Оплата.
Хороший отзыв за хорошую работу.
*** С вас ***
Цена, за которую вам было бы комфортно работать
Ориентировочный естимейт
Любые ссылки, которые могут заставить меня хотеть работать только с вами
Ссылка:
Это ТЗ в Ворде: