Плагин "Поздравления"

Плагин предназначен для поздравления пользователей с днями рождения или заранее заданными праздниками, которые можно самостоятельно задать в конфигурационном файле. Это могут быть как общегосударственные праздники, так и локальные праздники, актуальные для определенных сообществ



Плагин позволяет выводит следующие поздравления:

1. Залогиненому пользователю, у которого сегодня день рождения.
Данное поздравление является персональным и его видит только сам именниник

2. Пользователям, у которых сегодня ДР.
Плагин формирует список пользователей у которых сегодня ДР и показывает его всем пользователям (кроме самих именниников). Список формируется на основе параметра дружбы и рейтинга. Для каждого пользователя может быть сформирован уникальный список поздравлянтов.

3. Пользователи, у которых завтра ДР.
Плагин формирует список пользователей у которых завтра ДР и показывает его всем пользователям (кроме самих именниников). Список формируется на основе параметра дружбы и рейтинга. Для каждого пользователя может быть сформирован уникальный список поздравлянтов.

4. Всем пользователям с праздником, который указан в конфиге.

Для всех поздравлений можно задавать набор случайных поздравлений.

Тексты поздравлений задаются в файле classes/lib/congratulation._language_.php, где _language_. — текущий выбранный язык. По умолчанию с плагином идет classes/lib/congratulation.russian.php с некоторыми заданными поздравлениями.

Праздники указываются в стандартном конфигурационным файле config/config.php. В файле есть пример задания своего праздника.

Отдельно стоит сказать об алгоритме выбора пользователей, которые будут отображены в списке тех, кого поздравляем (для ДР). Список юбиляров сортируется по рейтингу, при этом если именниник является другом пользователя, то рейтинг для сортировки будет умножен на заданный коэффециент. Так же можно «отрезать» не друзей с рейтингом, ниже заданного.
Таким образом в список юбиляров попадают либо наиболее популярные пользователи сайта, либо друзья пользователя, который просматривает сайт в данный момент.

Обновление 1.1.0 — «Теперь и с письмами»
В плагин добавлена возможность отправлять письма именниникам.

Шаблоны писем и их заголовки можно самостоятельно задавать в конфигурационном файле classes/lib/letters._language_.php (где _language_. — текущий выбранный язык). В файле содержится список заголовков и шаблонов для каждго пола, а так же секция с обшими поздравлениями common:
	'common' => array(
			'subjects'	=> array(
				'С днем рождения!',
				'Поздравляем от имени сайта!'			
			),
			'templates' => array(
				'birthday_common.tpl'
			)			
	)


Для пользователей с неопределенным полом (other) — в основном конфиге плагина можно запретить или разрешить использование мужских поздравлений:
$config['birthday_letter_other_as_man'] = false;


Шаблон письма для конктретного пользователя выбирается случайным образом из объединения множества шаблонов для пола и секции common.

Сами шаблоны писем должны распологать в дирректории plugins/congratulation/templates/skin/default/notify/_language_/ (где _language_. — текущий выбранный язык). В конфиге имя конфигурационного файла указывается относительно именно этой директории.
В шаблон передается объект oUser, который содержит поздравляемого пользователя.

Плагин позволяет фильтровать поздравляемых пользователей по минимальному рейтингу и по минимальному числу дней с момента регистрации:
$config['birthday_filters'] = array(
	'min_rating' => 0,
	'min_days_registered' => 0		
);


Отправку писем осуществляет скрипт plugins/congratulation/cron/sendCongratulation.php. Его нужно прописать в cron на нужно время. Скрипт НЕ отслеживает кому поздравление было отправлено, а кому — нет. Поэтому запускать его нужно только ОДИН раз в сутки.

В момент отправки также вызывается хук send_congratulation с параметром oUser, который содержит поздравляемого пользователя. Это сделано для аккуратного самостоятельного расширения дейсвтвий по поздравлению пользователя.

63 комментария

avatar
Молодец! Хорошая идея.
avatar
Еще бы на почту поздравления посылать.
avatar
Несмотря на коспираторские идеи комментарием ниже, в каталог я обычно перемещаю свои плагины с сайта, когда найду вечерок поправить оформление кода и убедиться, что там нет ничего «лишнего».

Ваш комментарий отправил в избранное — в ближайщее время предложу какое-то решение.
avatar
Обновил плагин, добавил в него отправку писем.
avatar
Вы своровали идею! Данный плагин предложили сделать мне, о вас и лапоть не звенел!

Думаю, этот случай послужит уроком для других разработчиков.
avatar
Не стоит обижаться.
Если хотите я вам тоже классную идею плагина подарю :-)
avatar
Только не в комментариях :)
avatar
;-)
avatar
Идеи, если они сложнее чем ложка, без реализации не стоят больше чем вдохновение на попытку их реализации.
avatar
Ради интереса посмотрите в каталоге дату отправки плагина на модерацию (02.12) и дату комментария по вашей ссылке (01.12). Потом подумайте, что может вам стоит детективы в стили Донцовой писать, а не код?

А под уроком вы, наверное, подразумевали отрицательные отзывы в каталоге?
avatar
И что тут? Сделали за один день, делать его быстро.

Нет, я хотел предупредить остальных, чтобы они не рассказывали идеи публично.
avatar
А почему вы не сделали, если вам так понравилась идея, что вы возмущаетесь и здесь и в каталоге (но там благоразумно скрываете истинные мотивы низкой оценки)?
avatar
Потому что я не успел. Банально не успел.

Мотивы я не скрываю, и я могу всем честно сказать, что поставил 1 звезду только для понижения рейтинга.
avatar
У вас в комментариях очень много сослагательного наклонения.

Плагин сделать хотели, но не успели.
Мотив оценки не скрываете, но в каталоге этого не написали (но сказать можете, без сомнения!).
Может стоит перестать мочь и хотеть, а начать делать?

И главное, чем вам эта ситуация не нравится-то? Вы планировали плагин продавать? Не думаю. Про сложности регистрации в каталоге вы где-то там писали.
Получается, что кто-то взял и выложил то, на что вы собирались тратить силы. Так потратьте их на что-то еще, полезное сообществу.
avatar
но в каталоге этого не написали
Чтобы модераторы быстрее удалили?
а начать делать?
Делаю, спасибо. У меня больше расширений, чем у вас, а дабы ваша ворованная поделка не висела в разделе новых, совсем не лишним будет мне написать новые плагины.
И главное, чем вам эта ситуация не нравится-то?
Ну так вы тоже плагин не продаете, зачем силы потратили? Потратили бы на что-то еще полезное для сообщества, а не на воровство идей.
avatar
Чтобы модераторы быстрее удалили?
Определитесь. Или вы действительно можете прямо говорить о мотивах своих поступков, или же вы действительно опасаетесь санкций (пусть и виде простого удаления комментариев) и предпочитаете думать одно, а говорить другое.

Потратили бы на что-то еще полезное для сообщества, а не на воровство идей.
Вы смешной. В коммментариях к вашему топика проскальзывает идея плагина, который отправляет поздравления на почту. На следующий день я выкладываю плагин, с калькой функционала ВКонтакте — именно там, как и у меня, поздравляения и напоминания о предстоящих ДР/праздниках выводятся в сайдбаре. Но я все равно украл идею.

Первым комментарием к этому топику идет вопрос про отправку писем, которые есть по приведенной вами ссылке, т.е. в идеи, но которых нет в представленном плагине. И вы говорите и говорите про воровство идей, вместо того, что бы ответить первому комментатору, что вы уже вот-вот предложите такой плагин на модерацию.
avatar
Определитесь. Или вы действительно можете прямо говорить о мотивах
Я промо о них сказал и назвал вам причину их умалчивания в каталоге.
с калькой функционала ВКонтакте
С калькой функционала, предложенного мне.
avatar
а дабы ваша ворованная поделка не висела в разделе новых, совсем не лишним будет мне написать новые плагины.

Ну так смотрите какой я молодец! И плагин в сообщество принес и вас замотивировал что-то написать и выложить.
avatar
Ваш плагин навечно помечен печатью воровства.
avatar
Вы «своровали» у меня год назад идею снежинок. Меня тогда vdenu просил их сделать, пришлось взамен прикручивать ему шарики в шапку, так как вы меня опередили на сутки со своей поделкой. Вы получаетесь вор судя по Вашей же логике. Тот же vdenu тому свидетель.
avatar
Подтверждаю! Скажу больше, он украл у нас Новый Год и Деда нашего, не побоюсь этого слова, Мороза!
avatar
Где доказательства? Был топик, где просили хоть кого-нибудь адаптировать снег.
avatar
Слова не мальчика, но мужа ©
avatar
Я не пойму, что мешает Вам сделать свой плагин и тоже выложить в каталог? Конкуренция — это ведь здорово. Для конечного потребителя. Может у Вас какие-то моменты будут лучше реализованы или еще что…
avatar
Здесь важен сам факт воровства идеи.
avatar
и я могу всем честно сказать, что поставил 1 звезду только для понижения рейтинга.
я тут ваши разговоры не читаю, но вот это «действие» как-то низковато, не находите?
avatar
Те же минусы, не нахожу.
avatar
Вот вам идея, которую еще не реализовали — livestreet.ru/blog/15237.html
avatar
Ну что, через день в каталоге появится уже новый плагин от tema_mak , вы ему снова помогли.
avatar
Во-первых, Shelvin хочет помочь не мне, не вам, а себе. Он дал ссылку на свою тему, на тот функционал, который ему нужен/интересен. И для него будет пользой сам факт появления плагина в каталоге.

А во-вторых, так получается, что обычно я пишу какой-то функционал для себя, а потом решаю поделится с сообществом. По предложенной выше идеи (!) у меня наработок нет.
avatar
Ну так появятся. За один день, да?
avatar
В наше время все наркотики были натуральные, не то, что у вас — мозг сильно калечат.
avatar
Судя по вашим фотографиям, вы покалечили себе мозг бесконечным курением и хождением в совершенно идиотских черных очках.
avatar
Да, очки они такие, но зато у меня нет плоскостопия! ))
avatar
Я не понял фразу про плоскостопие. Интересно видеть, что в своем ответе вы упомянули только про очки, а факт курения умолчали.
avatar
А где выводится информация о ДР и праздниках? В блоке или где то еще? Я активировал плагин, но ничего не увидел. В конфиге исправил для праздника 8 марта прописал 'date' => '04.12'… Но ничего не появилось нигде. Сайдбар каким был таким и остался, никакого блока или хотя бы заголовка блока не появилось…
avatar
Выбовидится в сайдбар. Учтите, что конфиги плагинов кешируется в LS и если меняли содержимое конфига этого плагина, то нужно почистить кеш.
avatar
точно кешируются?
avatar
Вчера пробежался по коду — не нашел(
Возможно это уже из серии суеверий, но чистка кеша решает многое.
avatar
И я по умолчанию прописал вывод только в экшене index, т.е. по сути на главной.

'action'  => array('index')


Если нужно показывать где-то еще, то нужно вписать нужные экшены
avatar
Спасибо, сбросил кеш заработало. Подскажите вот это 'max_birthday' => 3, означает что в блоке отображать не более 3-х ДР? И еще подскажите есть ли где настройка, чтобы за определенное количество дней выводить поздравление с обычным праздником, например за неделю выводить картинку типа «С наступающим Женским днем!» или все выводится только непосредственно в день праздника? Спасибо за плагин.
avatar
Подскажите вот это 'max_birthday' => 3, означает что в блоке отображать не более 3-х ДР?
Да, соверщенно верно.

И еще подскажите есть ли где настройка, чтобы за определенное количество дней выводить поздравление с обычным праздником
Нет, такое не планировал. Но можно создать праздник «pre_woman_day» и датой 07.03, например. Ну и назначить ему соответсвующие картинки и текста поздравлений.
avatar
Спасибо огромное, отличный плагин!
avatar
tema_mak все ваши плагины весьма актуальные и нужные!
Думаю вообще не стоит реагировать на этого «гения», он же просто тупо троллит…
avatar
зима, холодно на улице, «активность повышает»
avatar
все ваши плагины весьма актуальные и нужные!
Спасибо, приятно читать.

Думаю вообще не стоит реагировать на этого «гения», он же просто тупо троллит…
Честно говоря, привык пытаться хотя бы 2-3 раза донести информацию до человека. Если совсем туго, то можно прекращать попытки. Бонусом такого подхода является то, что потом по комментариям сразу видно, кто адекватный, а кто не очень.
комментарий был удален
avatar
Установлен шаблон Vintage, к сожалению, после активации ничего не появилось.
avatar
К сожалению, у меня данного шаблона нет.
Не глядя вижу два варианта:
1. У вас на сайте нет именниников на сегодня/завтра.
2. У шаблона Vintage блок в сайдбаре имеет другое имя.
avatar
1. У вас на сайте нет именниников на сегодня/завтра.
Нет, этого нет. Я так понимаю это плагин, где его можно взять?
avatar
Нет, этого нет. Я так понимаю это плагин, где его можно взять?

Нет, вы меня неверно поняли. Плагин отображаеи поздравления либо, если среди пользователей есть люди, у которых день рождения сегодня или завтра. Либо, если в конфигурационном файле указан, что сегодня некий праздник (из каталога в конфиг добавлен только Женский День 8-ое марта).

В противном случае в сайдбар ничего не выводится.
avatar
Пользователя добавил в друзья, установил у него в настройках профиля ДР на сегодня (пробовал и на завтра), очистил кеш, в итоге ничего не отображается. При добавлении праздников, — ситуация аналогичная.
avatar
Ещё в виде идеи, только Тестерку не показывайте (сейчас ладошкой прикрою на всякый пожарный), может добавть ещё и такой функционал: поздравления писать под первым попавшимся топиком автора? Это помимо почты.
avatar
Не могу сказать, что мне такое поздравление кажется интересным. Комментарий в избранное отправлю, может позже добавлю возможность как-то легко по хуку вывести просто текст поздравления, без оформления блока и списка именниников.
комментарий был удален
avatar
3. Пользователи, у которых завтра ДР.
Плагин формирует список пользователей у которых завтра ДР и показывает его всем пользователям (кроме самих именниников).
У меня на сайте получилось так: накануне список на завтра не выводился (при этом текущий именинник показывался), а сегодня вывелся список именинников.
avatar
Логика плагина предполагает вывод только один из «блоков поздравлений». Т.е. как только найден блок для вывода, то будет выведен и поиск инфы прекратится.

Т.е.
1. Дни рождения на сегодня пользователь может увидеть, только если он не именниник
2. Дни рождения на завтра пользователь может увидеть, только если он не именниник и нет дней рождения на сегодня
3. Поздравления с праздником из конфига пользователь может увидеть, только если он не именниник, нет дней рождения на сегодния и нет дней рождения на завтра.
avatar
Ок, понял, спасибо.
avatar
при подключении плагина выдает данную ошибку: file_get_contents(J:\home\localhost\www\mysite\plugins\congratulation\templates\skin\default) [function.file-get-contents]: failed to open stream: Permission denied in J:\home\localhost\www\mysite\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_resource_file.php on line 65
как быть? Помогите пожалуйста
avatar
Permission denied
— это значит «доступ запрещен».
Разрешите для всех файлов из J:\home\localhost\www\mysite\plugins\congratulation\ чтение для любого пользователя и должно заработать.
avatar
а можно по подробней. Не совсем понял…
avatar
Обновил плагин в каталоге, теперь есть и отправка писем. Описание обновления добавлено в топик.
комментарий был удален
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.