Вход Регистрация
Файл: InstantSocial/uploud/modules/mod_friends_of_friends/module.php
Строк: 123
<?php
/*******************************************************************************/
//                          InstantCMS v1.8                                    //
//                      http://www.instantcms.ru/                              //
//                      module "Friends of friends"                            //
//                        written by Marat Fatikhov                            //
//                      (nickname Марат on a site)                             //
//                       E-mail: f-marat@mail.ru                               //
//                                                                             //
//                      LICENSED BY GNU/GPL v2                                 //
//                                                                             //
/********************************************************************************/

 
function  mod_friends_of_friends($module_id){

      
$inCore cmsCore::getInstance();
      
$inDB cmsDatabase::getInstance();
      
$inUser cmsUser::getInstance();
      
      
$cfg $inCore->loadModuleConfig($module_id);

      
$my_id $inUser->id;

      if (!
$my_id){ return false; }//только для пользователя
          
      //список друзей  пользователя
          
$sql "SELECT
             CASE
             WHEN to_id = 
$my_id
             THEN from_id
             WHEN from_id = 
$my_id
             THEN to_id
             END AS user_id
             FROM cms_user_friends
             WHERE (from_id = 
$my_id OR to_id = $my_id) AND is_accepted =1";
             
      
$result $inDB->query($sql);
      
      if (!
$inDB->num_rows($result)){ return false; }// если друзей нет, выходим
      
      
$friends = array();
      while(
$friend $inDB->fetch_assoc($result)){

          
$friend_id $friend['user_id'];
          
$friends[] = $friend_id;
      }
      
      
//для второго запроса
      
$friends_str implode(','$friends);
      
//берем список друзей у друзей без условий
      
$offriends =array();
      
      
//если не подключен, подключаем файл
      
$inCore->includeFile('components/users/includes/usercore.php');
      
          
$second_sql "SELECT
             CASE
             WHEN f.to_id IN (
{$friends_str})
             THEN f.from_id
             WHEN f.from_id IN (
{$friends_str})
             THEN f.to_id
             END AS user_id, u.login AS login, u.nickname AS nickname, p.imageurl AS imageurl
             FROM cms_user_friends f
             LEFT JOIN cms_users u ON u.id = CASE WHEN f.from_id IN (
{$friends_str}) THEN f.to_id WHEN f.to_id IN ({$friends_str}) THEN f.from_id END
             LEFT JOIN cms_user_profiles p ON p.user_id = u.id
             WHERE (f.from_id IN (
{$friends_str}) OR f.to_id IN ({$friends_str})) AND f.is_accepted =1 AND f.from_id != $my_id AND f.to_id != $my_id";

          
$second_result $inDB->query($second_sql);

          
//если нет друзей у друзей, выходим
          
if(!$inDB->num_rows($second_result)){return false;}

           while(
$offriend $inDB->fetch_assoc($second_result)){

                
//если нет в списке друзей, то добавляем в список друзей у друзей

                 
if(!in_array($offriend['user_id'], $friends)){
                      
$chek[] =  $offriend['user_id'];//будет использоваться при выборе уникальных значений
                      
$offriend['avatar'] = usrImageNOdb($offriend['user_id'], 'small'$offriend['imageurl'], 0);
                      
$offriends[] = $offriend;
                }
          }


      
//если все друзья друзей в друзьях пользователя, выходим
      
if(!$offriends){return false;};
      
//считаем количество общих друзей
      
foreach($offriends as $key=>&$value){

           
$value['general'] = count(array_keys($offriends$value));
      }
      
//оставляем только уникальные значения
      
$chek array_unique($chek);

      
$offriends array_intersect_key($offriends$chek);
      
//для показа всех общих друзей
      
$offriends_str implode(','$chek);

     
//выбираем случайные значения в количестве, определенном в настройках модуля

    
$total count($offriends);

    if(
$total $cfg['newscount']){

        
$more true;
        
$rand_keys array_rand($offriends$cfg['newscount']);
        foreach(
$rand_keys as $key=>$rand_key){

        
$offriends_total[] = $offriends["{$rand_key}"];

        }
    }else{ 
$offriends_total =$offriends; }

     
//передаем в шаблон
     
$smarty $inCore->initSmarty('modules''mod_friends_of_friends.tpl');
     
$smarty->assign('offriends'$offriends_total);
     
$smarty->assign('cfg'$cfg);
     
$smarty->assign('offriends_str'$offriends_str);
     
$smarty->assign('more'$more);
     
$smarty->display('mod_friends_of_friends.tpl');

return 
true;
 }
?>
Онлайн: 3
Реклама