1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Аватар в Дни рождения на юзер_хоум

Discussion in 'Моды - Mods' started by Gooos, Dec 10, 2011.

  1. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Делаем аватарки юзерам именинникам

    В файле functions_general.php найти:
    PHP:

    // THIS FUNCTION RETURNS AN ARRAY CONTAINING THE USERS FRIENDS BIRTHDAYS INFO
    // INPUT:
    // OUTPUT:

    // бла, бла, бла - куча какого-то кода

    // END friends_birthdays() FUNCTION
    заменить на:
    PHP:

    // THIS FUNCTION RETURNS AN ARRAY CONTAINING THE USERS FRIENDS BIRTHDAYS INFO
    // INPUT:
    // OUTPUT:

    function friends_birthdays()
    {
      global 
    $setting$database$user;

      
    $birthdays NULL;

      
    // CACHING
      
    $cache_object SECache::getInstance('serial');
      if( 
    is_object($cache_object) )
      {
        
    $birthdays $cache_object->get('friends_birthdays_user_'.$user->user_info['user_id']);
      }


      
    // RETRIEVAL
      //if( !is_array($birthdays) || empty($birthdays) )
      
    if( !is_array($birthdays) )
      {
        
    $birthdays = array();

        
    $sql "SELECT profilefield_id, t2.profilecat_id FROM se_profilefields LEFT JOIN se_profilecats AS t1 ON se_profilefields.profilefield_profilecat_id=t1.profilecat_id LEFT JOIN se_profilecats AS t2 ON t1.profilecat_dependency=t2.profilecat_id WHERE profilefield_special='1'";
        
    $resource $database->database_query($sql);

        if( 
    $database->database_num_rows($resource) > )
        {
          
    // CONSTRUCT QUERY
          
    $birthdays_upcoming_query "
            SELECT
              se_users.user_id,
              se_users.user_username,
              se_users.user_fname,
              se_users.user_lname,
              se_users.user_photo,
              CASE
          "
    ;

          while( 
    $birthday_field $database->database_fetch_assoc($resource) )
          {
            
    $birthdays_upcoming_query .= " WHEN se_users.user_profilecat_id='{$birthday_field['profilecat_id']}' THEN DATE_FORMAT(CONCAT(YEAR(CURDATE()), \"-\", MONTH(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`), \"-\", DAY(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)), '%Y-%m-%d')";
            
    $birthdays_upcoming_where[] = "(se_users.user_profilecat_id='{$birthday_field['profilecat_id']}' AND DAY(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)<>'0' AND MONTH(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)<>'0' AND CURDATE() <= DATE_FORMAT(CONCAT(YEAR(CURDATE()), \"-\", MONTH(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`), \"-\", DAY(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)), '%Y-%m-%d') AND DATE_ADD(CURDATE(), INTERVAL 7 DAY) >= DATE_FORMAT(CONCAT(YEAR(CURDATE()), \"-\", MONTH(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`), \"-\", DAY(se_profilevalues.`profilevalue_{$birthday_field['profilefield_id']}`)), '%Y-%m-%d'))";
          }

          
    $birthdays_upcoming_query .= " ELSE '0000-00-00' END AS birthday FROM se_friends LEFT JOIN se_users ON se_friends.friend_user_id2=se_users.user_id LEFT JOIN se_profilevalues ON se_users.user_id=se_profilevalues.profilevalue_user_id WHERE se_friends.friend_user_id1='{$user->user_info['user_id']}' AND (".implode(" OR "$birthdays_upcoming_where).") ORDER BY birthday";

          
    $resource $database->database_query($birthdays_upcoming_query);

          while( 
    $birthday_info $database->database_fetch_assoc($resource) )
          {
            
    $birthday_user = new se_user();
            
    $birthday_user->user_info['user_id'] = $birthday_info['user_id'];
            
    $birthday_user->user_info['user_username'] = $birthday_info['user_username'];
            
    $birthday_user->user_info['user_fname'] = $birthday_info['user_fname'];
            
    $birthday_user->user_info['user_lname'] = $birthday_info['user_lname'];
            
    $birthday_user->user_info['user_photo'] = $birthday_info['user_photo'];
            
    $birthday_user->user_displayname();

            
    // SET BIRTHDAY
            
    $birthday_date mktime(000substr($birthday_info['birthday'], 52), substr($birthday_info['birthday'], 82), 1990);

            
    $birthdays[] = array(
              
    'birthday_user_id' => $birthday_user->user_info['user_id'],
              
    'birthday_user_photo' => $birthday_user->user_info['user_photo'],
              
    'birthday_user_username' => $birthday_user->user_info['user_username'],
              
    'birthday_user_displayname' => $birthday_user->user_displayname,
              
    'birthday_date' => $birthday_date,
              
    'birthday_user' => &$birthday_user
            
    );

            unset(
    $birthday_user);
          }
        }

        
    // CACHE
        
    if( is_object($cache_object) )
        {
          
    $cache_object->store($birthdays'friends_birthdays_user_'.$user->user_info['user_id']);
        }
      }

      return 
    $birthdays;
    }

    // END friends_birthdays() FUNCTION
    В файле user_home.tpl найти блок:
    PHP:

    {* SHOW UPCOMING BIRTHDAYS *}
    // тут идёт сам блок
    заменить на:
    PHP:

          
    {* SHOW UPCOMING BIRTHDAYS *}
          <
    div class='header'>{lang_print id=1176}</div>
          <
    div class='network_content'>
              <
    table cellpadding='0' cellspacing='0' align='center' width='100%'>
                <
    tr>
                    {
    section name=birthday_loop loop=$birthdays max=6}
                  <
    td valign="bottom" style="width: 50%;padding-top:0px" class="portal_member">
                   {
    assign var=cont value="`$cont+1`"}
                   <
    a href='{$url->url_create("profile", $birthdays[birthday_loop].birthday_user_username)}'>{$birthdays[birthday_loop].birthday_user_displayname}</a><br />
                   <
    a href='{$url->url_create("profile", $birthdays[birthday_loop].birthday_user_username)}'><img width='60' height='60' src='{$birthdays[birthday_loop].birthday_user->user_photo('./images/nophoto.gif', TRUE)}' border='0' class='photo' alt="{$birthdays[birthday_loop].birthday_user_username}"></a><br />
                   {
    $datetime->cdate("j F"$datetime->timezone($birthdays[birthday_loop].birthday_date$global_timezone))}
                        {if 
    $cont == 2}</tr>{/if}
                        {if 
    $cont == 4}</tr>{/if}
                        {if 
    $cont == 6}</tr>{/if}
                   </
    td>
                    {
    sectionelse}
                   <
    td>
                    {
    lang_print id=1180}
                   </
    td>
                    {/
    section}
                </
    tr>
              </
    table>
          </
    div>
          <
    div class='spacer10'></div>
    Результат:
    bd.jpg
  2. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Кто сделает что-бы не отображался блок, когда нет ближайших Дней рождений?
  3. abatu User


    Offline
    Message Count:
    87
    Likes Received:
    4
    Hi,Try this one:

    HTML:
    {section name=birthday_loop loop=$birthdays max=20}
    {if $birthdays>0 }
    <div class='header_userhome'>{lang_print id=1176}</div>
    <div class='header_userhome_box'>
    <div class='spacer10'></div>
    <a href='{$url->url_create("profile",$birthdays[birthday_loop].birthday_user_username)}' class="birthdayannouncement">{$birthdays[birthday_loop].birthday_user_displayname}- {$datetime->cdate("M. d", $birthdays[birthday_loop].birthday_date)}</a></div>
    <div class='spacer10'></div>
    </div>
    {/if}
    {/section}
  4. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Here it is not necessary. This is because, by default. We need a user avatar.
    You just have to hide the block if friends' do not have birthdays.
  5. abatu User


    Offline
    Message Count:
    87
    Likes Received:
    4
    Hi,Sorry Gooos, But i didn't understand what you mean???
    On my site i did like the Example i submit earlier (if one or more of my friends has birthday then show the block else hide it ).
    Thank you
  6. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    You have a {section} {/section} the entire block, but I have the contents of the block. See the code in the first post.
    You have displayed a few blocks, but I have everything in one.
    I'm within one block of shows all the birthdays of users.
  7. Sn+ User


    Offline
    • Знаменитый
    Message Count:
    377
    Likes Received:
    76
    My version of SE:
    3.20
    My version of phpFox:
    3.0.0
    спасибо Gooos! и еще можно как не будь сделать сообщения для юзера на пример что сегодня у вашего друга (имя) день рождения ?
  8. maxdag Novice member


    Offline
    Message Count:
    8
    Likes Received:
    0
    My version of SE:
    3.18
    Кто сделает что-бы не отображался блок, когда нет ближайших Дней рождений?
    --- добавлено: Dec 28, 2011 3:12 PM ---
    Gooos, нашел ответ вот: {if $owner->user_info.user_id == $user->user_info.user_id} это в переди блока а концу блока ставишь это {/if}
  9. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    maxdag, а ты сам-то пробовал ;)
    --- добавлено: Dec 29, 2011 7:44 PM ---
    Работает только такой метод, но он какой-то топорный:
    PHP:
          {section name=birthday_loop loop=$birthdays max=1}
          {if 
    $birthdays 0}
    /*
    тут находится блок,
    отображающий дни рождения
    */
          
    {/if}
          {/
    section}
  10. abatu User


    Offline
    Message Count:
    87
    Likes Received:
    4
    Hi,Gooos,I can't make it show the avatar.
    It always shows (the no photo image)!!!!, What it could be?
    Thank you

Share This Page

All rights reserved SocEngine.ru ©