W

web4ik

+29
Репутация
2
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] Из чего складывается рейтинг клуба 1.10.4 14 августа 2015 в 20:06
Нашел информацию что рейтинг клуба это сумма рейтингов его участников * 5 (это для 1.10.3)
Но у меня с математикой впорядке. Я посчитал — не сходится! Более того, специально создал клуб новый добавил туда участников, а рейтинг как был 0 так 0 и остался. Возникает вопрос может какие-то дополнительные условия необходимы или же он сейчас как-то по другому начисляется.
Буду благодарен за помощь!
Спасибо.
#1 inst1.10.4 вывод онлайн друзей в профиле 16 июня 2015 в 19:11
Lora, собственно так ничего и не получилось если потребуется файл какой, могу целиком его скинуть.
Но белый экран после добавления if стабильно.
#2 inst1.10.4 вывод онлайн друзей в профиле 16 июня 2015 в 19:01
Вот где я добавил строки которые Вы привели в своем коде:
  1. {if $usr.friends}
  2. <div class="usr_friends_block usr_profile_block">
  3. {if $usr.friends_total > 6}
  4. <div class="float_bar">
  5. <a href="/users/{$usr.id}/friendlist.html">{$LANG.ALL_FRIENDS}</a> ({$usr.friends_total})
  6. </div>
  7. {/if}
  8. <div class="usr_wall_header">
  9. {if !$myprofile}
  10. {$LANG.USER_FRIENDS}
  11. {else}
  12. {$LANG.MY_FRIENDS}
  13. {/if}
  14. </div>
  15. {assign var="col" value="1"}
  16. <table width="" cellpadding="5" cellspacing="0" border="0" class="usr_friends_list" align="left">
  17. {foreach key=tid item=friend from=$usr.friends}
  18. {if $cfg.on_line = $friend.is_online}
  19. {if $col==1}<tr>{/if}
  20. <td align="center" valign="top">
  21. <div class="usr_friend_cell">
  22. <div align="center"><a class="friend_link" href="{profile_url login=$friend.login}">{$friend.nickname}</a></div>
  23. <div align="center"><a href="{profile_url login=$friend.login}"><img border="0" class="usr_img_small" src="{$friend.avatar}" /></a></div>
  24. <div align="center">{$friend.flogdate}</div>
  25. </div>
  26. </td>
  27.  
  28. {if $col==6} </tr> {assign var="col" value="1"} {else} {math equation="x + 1" x=$col assign="col"} {/if}
  29. {/if}
  30. {/foreach}
  31. {if $col>1}<td colspan="{math equation="x - 6 + 1" x=$col}">&nbsp;</td></tr>{/if}
  32. </table>
  33. </div>
  34. {/if}

Так же прописал в конфиге модели (/components/users/model.php) 'on_line'=>0,
В прошлый раз просто запятую указать по невнимательности забыл. Теперь только когда выше приведенный код редактируется где надо вставить{if $cfg.on_line = $friend.is_online}{/if} то после вставки выводит белую страницу.


Вот ф-ция getFriends() класса cmsUser (/core/classes/user.class.php)
  1. // ============================================================================ //
  2.  
  3. /**
  4.   * Возвращает список друзей пользователя
  5. * и помещает в текущую сессию
  6.   * @param int $user_id
  7.   * @return array
  8.   */
  9. public static function getFriends($user_id=0){
  10.  
  11. if(!$user_id) { return array(); }
  12.  
  13. $friends = array();
  14.  
  15. // уже полученных друзей отдаем сразу
  16. if(isset(self::getInstance()->friends[$user_id])){
  17. return self::getInstance()->friends[$user_id];
  18. }
  19.  
  20. $is_me = (@$_SESSION['user']['id'] == $user_id);
  21.  
  22. //Если список уже в сессии, возвращаем
  23. if ($is_me && self::sessionGet('friends') !== false) {
  24.  
  25. foreach (self::sessionGet('friends') as $key=>$friend) {
  26. $friend['flogdate'] = self::getOnlineStatus($friend['id'], $friend['logdate']);
  27. $friends[$key] = $friend;
  28. }
  29. return $friends;
  30.  
  31. }
  32.  
  33. //иначе получаем список из базы, кладем в сессию и возвращаем
  34. $inDB = cmsDatabase::getInstance();
  35.  
  36. $sql = "SELECT
  37. CASE
  38. WHEN f.from_id = $user_id
  39. THEN f.to_id
  40. WHEN f.to_id = $user_id
  41. THEN f.from_id
  42. END AS id, u.nickname as nickname, u.login as login, u.is_deleted, u.status, u.logdate, p.imageurl
  43. FROM cms_user_friends f
  44. LEFT JOIN cms_users u ON u.id = CASE WHEN f.from_id = $user_id THEN f.to_id WHEN f.to_id = $user_id THEN f.from_id END
  45. INNER JOIN cms_user_profiles p ON p.user_id = u.id
  46. WHERE (from_id = $user_id OR to_id = $user_id) AND is_accepted =1 ORDER BY u.logdate DESC";
  47.  
  48. $result = $inDB->query($sql);
  49.  
  50. if ($inDB->num_rows($result)){
  51. while($friend = $inDB->fetch_assoc($result)){
  52. $friend['avatar'] = self::getUserAvatarUrl($friend['id'], 'small', $friend['imageurl'], $friend['is_deleted']);
  53. $friend['is_online'] = self::isOnline($friend['id']);
  54. $friend['flogdate'] = self::getOnlineStatus($friend['id'], $friend['logdate']);
  55. $friends[$friend['id']] = $friend;
  56. }
  57. }
  58.  
  59. // своих друзей кладем в сессию
  60. if ($is_me) { self::sessionPut('friends', $friends); }
  61.  
  62. // Запоминаем список друзей пользователя
  63. self::getInstance()->friends[$user_id] = $friends;
  64.  
  65. return $friends;
  66.  
  67. }
  68.  
  69. // ============================================================================ //
#3 inst1.10.4 вывод онлайн друзей в профиле 15 июня 2015 в 18:41
Вот файл model.php на всякий случай.
instantcms.ru/users/files/download5349.html
#4 inst1.10.4 вывод онлайн друзей в профиле 15 июня 2015 в 18:37
А в конфигах добавлял сюда:
  1. public static function getDefaultConfig() {
  2.  
  3. $cfg = array(
  4. 'sw_comm'=>1,
  5. 'sw_search'=>1,
  6. 'sw_forum'=>1,
  7. 'sw_photo'=>1,
  8. 'sw_wall'=>1,
  9. 'sw_blogs'=>1,
  10. 'sw_clubs'=>1,
  11. 'sw_feed'=>1,
  12. 'sw_awards'=>1,
  13. 'sw_board'=>1,
  14. 'sw_msg'=>1,
  15. 'sw_guest'=>1,
  16. 'sw_gifts'=>1,
  17. 'karmatime'=>1,
  18. 'karmaint'=>'DAY',
  19. 'photosize'=>0,
  20. 'watermark'=>1,
  21. 'smallw'=>64,
  22. 'medw'=>200,
  23. 'medh'=>500,
  24. 'sw_files'=>1,
  25. 'filessize'=>100,
  26. 'users_perpage'=>10,
  27. 'wall_perpage'=>10,
  28. 'filestype'=>'jpeg,gif,png,jpg,bmp,zip,rar,tar',
  29. 'privforms'=>array(),
  30. 'deltime'=>6
  31. );
  32.  
  33. return $cfg;
  34.  
  35. }
  36.  
#5 inst1.10.4 вывод онлайн друзей в профиле 15 июня 2015 в 18:35
Здравствуйте. Спасибо большое за подсказку, но что-то не выходит, прописал в конфигах, пытался по разному обернуть не получается выдает белую страницу. Вот привожу кусок кода который пытался обернуть.
  1. {if $usr.friends}
  2. <div class="usr_friends_block usr_profile_block">
  3. {if $usr.friends_total > 6}
  4. <div class="float_bar">
  5. <a href="/users/{$usr.id}/friendlist.html">{$LANG.ALL_FRIENDS}</a> ({$usr.friends_total})
  6. </div>
  7. {/if}
  8. <div class="usr_wall_header">
  9. {if !$myprofile}
  10. {$LANG.USER_FRIENDS}
  11. {else}
  12. {$LANG.MY_FRIENDS}
  13. {/if}
  14. </div>
  15. {assign var="col" value="1"}
  16. <table width="" cellpadding="5" cellspacing="0" border="0" class="usr_friends_list" align="left">
  17. {foreach key=tid item=friend from=$usr.friends}
  18. {if $col==1}<tr>{/if}
  19. <td align="center" valign="top">
  20. <div class="usr_friend_cell">
  21. <div align="center"><a class="friend_link" href="{profile_url login=$friend.login}">{$friend.nickname}</a></div>
  22. <div align="center"><a href="{profile_url login=$friend.login}"><img border="0" class="usr_img_small" src="{$friend.avatar}" /></a></div>
  23. <div align="center">{$friend.flogdate}</div>
  24. </div>
  25. </td>
  26.  
  27. {if $col==6} </tr> {assign var="col" value="1"} {else} {math equation="x + 1" x=$col assign="col"} {/if}
  28. {/foreach}
  29. {if $col>1}<td colspan="{math equation="x - 6 + 1" x=$col}">&nbsp;</td></tr>{/if}
  30. </table>
  31. </div>
  32. {/if}
{if $usr.friends} вот это пытался заменить на то что вы скинули.

И после того как добавил конфиг, но при этом не добавил в профиль файл обертку то тоже самое белая страница, и отдельно без конфига если оборачиваешь то тоже белая страница, и если все вместе делаешь то тоже белая страница.
#1 inst1.10.4 вывод онлайн друзей в профиле 14 июня 2015 в 15:37
Помогите пожалуйста разобраться, как сделать так, чтобы под общим списком друзей выводился список друзей которые онлайн?
Я находил на форуме темы схожей тематики но для instantcms 1.10.4 они к сожалению не подходят, подскажите пожалуйста можно ли как-то вывести друзей онлайн Вот как на картинке в профиле под основным списком друзей.

Заранее спасибо за помощь.
#6 Ошибка в истории комментариев 13 июня 2015 в 16:28
HiAndy, Спасибо огромное помогло. Все начало корректно работать. +1 в карму.
#7 Новый каталог дополнений! 12 июня 2015 в 23:10
Хорошее решение собрать все лучшие компоненты и дополнения на instant в одном месте. Была бы еще какая-нибудь группировка по критериям безопасности того или иного дополнения или компонента.(Хотя бы надежен или не проверен)
#1 Ошибка в истории комментариев 12 июня 2015 в 22:47
Добавил данное решение
instantcms.ru/blogs/u-ch-rta-za-pazuhoi/istorija-komentariev-na-ajaks.html#comment_82018
на instant 1.10.4
При тестировании заметил следующую ошибку, (ставил на уже работающий инстант).
При голосовании заметил что когда добавляю голос, то там уже задним числом выдает еще кого-то, хотя комментарий добавлен только сегодня был.
Итого:
1.Статья добавлена сегодня.
2.Комментарий добавлен сегодня.
3.В статистике пишется +1 к комментарию
4.Открываешь посмотреть историю там еще показывает как будто бы кто-то голосовал, год назад, хотя такого быть не могло.
5.Проблема не с единичным комментарием, так происходит раз через два, часто.
Вот скрин:
Иллюстрация
Помогите пожалуйста разобраться в чем может быть проблема.
Заранее спасибо.
PS там еще из темы вот этой следует, что необходимо в файл /components/comments/model.php добавить следующий код
  1.  
  2. function r_User($id){
  3.  
  4. $sql ="SELECT u.nickname
  5. FROM cms_users u
  6. LEFT JOIN cms_comments c ON c.user_id = u.id
  7. LEFT JOIN cms_ratings r ON r.item_id = c.id
  8. WHERE u.id = $id LIMIT 1";
  9.  
  10. $result = $this->inDB->query($sql);
  11.  
  12. if (!$this->inDB->num_rows($result)) { return false; }
  13. $commen = $this->inDB->fetch_assoc($result);
  14.  
  15. return $commen;
  16. }
  17. /*******************************************************************/
  18. function l_User($id){
  19.  
  20. $sql ="SELECT u.login
  21. FROM cms_users u
  22. LEFT JOIN cms_comments c ON c.user_id = u.id
  23. LEFT JOIN cms_ratings r ON r.item_id = c.id
  24. WHERE u.id = $id LIMIT 1";
  25.  
  26. $result = $this->inDB->query($sql);
  27.  
  28. if (!$this->inDB->num_rows($result)) { return false; }
  29. $commen = $this->inDB->fetch_assoc($result);
  30.  
  31. return $commen;
  32. }
  33. /*****************************************************************/
  34.  
  35. public function getRComment($id) {
  36.  
  37.  
  38. $sql = "SELECT c.*,
  39. u.nickname as nickname,
  40. u.login as login,
  41. r.user_id as ruser,r.points as points,r.pubdate as date
  42. FROM cms_comments c
  43. LEFT JOIN cms_ratings r ON r.item_id = c.id
  44. LEFT JOIN cms_users u ON u.id = c.user_id
  45. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  46. WHERE c.id = r.item_id AND c.target_id=$id";
  47.  
  48.  
  49. $result = $this->inDB->query($sql);
  50.  
  51. if (!$this->inDB->num_rows($result)) { return false; }
  52.  
  53. while($comment = $this->inDB->fetch_assoc($result)){
  54.  
  55. $comment['rnick'] = implode($this->r_User($comment['ruser']));
  56. $comment['rlogin'] = implode($this->l_User($comment['ruser']));
  57.  
  58. $comments[] = $comment;
  59.  
  60. }
  61. return $comments;
  62.  
  63. }
  64.  
  65.  
А после функцию public function getRComment($id) заменить на:

  1. public function getRating($id,$target_id) {
  2.  
  3.  
  4. $sql = "SELECT r.*,
  5. u.nickname as nickname,
  6. u.login as login,c.id as cid
  7.  
  8. FROM cms_ratings r
  9. LEFT JOIN cms_comments c ON c.target_id=$target_id AND r.item_id=c.id
  10. LEFT JOIN cms_users u ON u.id = r.user_id
  11. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  12. WHERE item_id=$id ";
  13.  
  14.  
  15. $result = $this->inDB->query($sql);
  16.  
  17. if (!$this->inDB->num_rows($result)) { return false; }
  18.  
  19. while($rating = $this->inDB->fetch_assoc($result)){
  20.  
  21. $rating ['rnick'] = implode($this->r_User($rating ['user_id']));
  22. $rating ['rlogin'] = implode($this->l_User($rating ['user_id']));
  23.  
  24. $ratings[] = $rating ;
  25.  
  26. }
  27. return $ratings;
  28.  
  29. }
#8 Скрыть весь контент сайта от гостей 8 июня 2015 в 01:41
Отписал Л/С.
#9 Награда за определенное кол-во друзей i1.10.4 12 мая 2015 в 17:52
Спасибо друг Странник за совет и объективную критику, действительно полезная информация, я даже честно говоря не знал о том, что Вы написали, пока что только познаю данную cms, теперь буду иметь ввиду.
#10 Награда за определенное кол-во друзей i1.10.4 12 мая 2015 в 13:21

Дружище web4ik, зачем вы добавляете дополнительное поле в таблицу cms_user_autoawards, если в таблице cms_user_friends уже лежит вся инфа по друзьям?

Странник
Я понимаю что тут лежит информация о кол-ве друзей у пользователей. Но запись происходит из компонента именно его настройки в данную базу данных cms_user_autoawards, причем не только настройка юзверей.
Вобщем если будет желание объясни что не так можешь и в л.с. Просто тут сделано даже не по аналогии с предыдущей версией а по аналогии с уже написанным компонентом.
#11 Награда за определенное кол-во друзей i1.10.4 12 мая 2015 в 12:02
Я делал по аналогии с приведенной выше ссылкой.
instantcms.ru/forum/thread4625.html
Как я понял это поле и отвечает за, то что мы в него записываем(из админки инстанта) кол-во друзей по достижению которого выдавалась бы награда.
Я могу и ошибаться, поправьте меня, если не прав, поправлю пост.
#12 [ЕСТЬ РЕШЕНИЕ] Проблема картинки прикрепляемой к статьям instant 1.10.4 12 мая 2015 в 11:56
Спасибо большое.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.