Используя информацию о FQL и таблица пользователей из документации разработчика Facebook, я придумал следующий код.
//build fql string
$fql = "SELECT name, birthday_date FROM user
WHERE uid IN
(SELECT uid2 FROM friend WHERE uid1 = me())
AND strlen(birthday_date) != 0 AND substr(birthday_date,0,3)
IN ('{$currentMonth}/', '{$nextMonth}/')";
$fql.=$orderBy;
$fql.=" LIMIT " . $limit;
//query facebook
$params = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$birthdays = $this->facebook_obj->api($params);
$currentMonth
и $nextMonth
задаются строковыми представлениями текущего и следующего месяцев соответственно в формате мм. (например, «09», «10» и т. д.)
Это «работает», но предположим, что сегодня 29 ноября, у меня 20 друзей, день рождения которых приходится на ноябрь, а $limit
установлено на 10. В этом случае есть очень хороший шанс, что все 10 дней рождения, которые он возвращает, будут раньше. 29 ноября.
Что я действительно хотел бы сделать, так это получить предстоящие дни рождения с сегодняшнего дня, в этом месяце и в следующем. Как я могу изменить этот запрос, чтобы выполнить это?
Спасибо!
** Редактировать, см. ветку комментариев между Шоном и мной для возможных альтернативных решений. Ответ еще не принят, поскольку ни один из них напрямую не касается исходного кода/вопроса.