/bitrix24_client-birthday

[Bitrix24] День рождения контрагентов в Битрикс 24

Primary LanguagePHP

bitrix24_client-birthday

День рождения контрагентов в Битрикс 24

Стояла задача:

Нужно вывести дни рождения контрагентов на ближайшую неделю. Просмотреть данный блок могут только определенная группа пользователей.

Файл birthday.php вызываем из включаемой области. Вызов включаемой области помещаем в footer.php в div id="sidebar":

<?$APPLICATION->IncludeComponent(
  "bitrix:main.include",
  "",
  Array(
      "AREA_FILE_SHOW" => "file",
      "AREA_FILE_SUFFIX" => "inc",
      "PATH" => "/local/include/birthday.php"
  )
  );?>

Само содержание birthday.php:

<?
function strftime_rus($format, $date = FALSE) { // Функция преобразования даты в нужный вид
  if (!$date)
      $timestamp = time();

  elseif (!is_numeric($date))
      $timestamp = strtotime($date);

  else
      $timestamp = $date;

  if (strpos($format, '%B2') === FALSE)
      return strftime($format, $timestamp);

  $month_number = date('n', $timestamp);

  switch ($month_number) {
      case 1: $rus = 'Января'; break;
      case 2: $rus = 'Февраля'; break;
      case 3: $rus = 'Марта'; break;
      case 4: $rus = 'Апреля'; break;
      case 5: $rus = 'Мая'; break;
      case 6: $rus = 'Июня'; break;
      case 7: $rus = 'Июля'; break;
      case 8: $rus = 'Августа'; break;
      case 9: $rus = 'Сентября'; break;
      case 10: $rus = 'Октября'; break;
      case 11: $rus = 'Ноября'; break;
      case 12: $rus = 'Декабря'; break;
  }

  $rusformat = str_replace('%B2', $rus, $format);

  return strftime($rusformat, $timestamp);
}

// Дни рождения контактов
global $USER;
$birthdayGroup = 16; // Группа, которая может смотреть дни рождения
$arGroups = CUser::GetUserGroup($USER->GetID());
foreach($arGroups as $groupID)
{
 if($groupID == $birthdayGroup) // Если текущий пользователь принадлежит к группе, которая может видеть дни рождения, то выполняем
 {
      $allow = true; // Разрешаем просмотр
 }
}

if($allow == true)
{ // allow start
  global $DB;
  /* Задаем переменные для поиска в течении недели */
  $today = date("d-m", strtotime("+0 days"));
  $today1 = date("d-m", strtotime("+1 days"));
  $today2 = date("d-m", strtotime("+2 days"));
  $today3 = date("d-m", strtotime("+3 days"));
  $today4 = date("d-m", strtotime("+4 days"));
  $today5 = date("d-m", strtotime("+5 days"));
  $today6 = date("d-m", strtotime("+6 days"));
  $today7 = date("d-m", strtotime("+7 days"));
  $db_data=$DB->Query('
  SELECT * FROM b_crm_contact
  WHERE
      (DATE_FORMAT(BIRTHDATE, "%d-%m") = "'.$today.'") OR
      (DATE_FORMAT(BIRTHDATE, "%d-%m") = "'.$today1.'") OR
      (DATE_FORMAT(BIRTHDATE, "%d-%m") = "'.$today2.'") OR
      (DATE_FORMAT(BIRTHDATE, "%d-%m") = "'.$today3.'") OR
      (DATE_FORMAT(BIRTHDATE, "%d-%m") = "'.$today4.'") OR
      (DATE_FORMAT(BIRTHDATE, "%d-%m") = "'.$today5.'") OR
      (DATE_FORMAT(BIRTHDATE, "%d-%m") = "'.$today6.'") OR
      (DATE_FORMAT(BIRTHDATE, "%d-%m") = "'.$today7.'")
  '); // Ищем в БД контакты с днями рождения на текущую неделю
  ?>
  <div class="sidebar-widget sidebar-widget-birthdays">
      <div class="sidebar-widget-top">
          <div class="sidebar-widget-top-title">Дни рождения клиентов</div>
      </div>
      <?
       while($arr = $db_data->Fetch())
          {

              $arr['BIRTHDATE'] = strftime_rus("%e %B2", strtotime($arr['BIRTHDATE'])); // Преобразуем дату рождения '31 декабря'
              if($arr['PHOTO']) // Достаём аватар если есть
              {
                   $arr['PHOTO'] = CFile::ResizeImageGet($arr['PHOTO'], Array("width" => 50, "height" => 50), BX_RESIZE_IMAGE_EXACT, false);
              }
      ?>
      <a href="/crm/contact/show/<?=$arr['ID']?>/" class="sidebar-widget-item widget-last-item">
          <span class="user-avatar" <?if($arr['PHOTO']):?> style="background: url('<?=$arr['PHOTO']['src']?>') no-repeat center center;" <?endif;?> ></span>
          <span class="sidebar-user-info">
              <span class="user-birth-name"><?=$arr['FULL_NAME']?></span>
              <span class="user-birth-date"><?=$arr['BIRTHDATE']?></span>
          </span>
      </a>
      <?
          }
      ?>
  </div>
<?
} // allow end
?>