Не получается обновить модуль на 1.10.6

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 10 августа 2015 в 13:54
Доброго дня.

Есть старый, покупной модуль, ленты активности с аватарами, с индикацией юзера онлайн, который перестал поддерживать разработчик, сам потихоньку обновлял, но…
Не могу обновить на 1.10.6

Сумел сделать что бы модуль ставился и выводил новости.

Не получается получить аватар, и юзер онлайн.

В файле module.php
То что получилось:

  1. <?php
  2.  
  3. function mod_actions_new(array $mod, $cfg){
  4.  
  5. $inCore = cmsCore::getInstance();
  6. $inUser = cmsUser::getInstance();
  7. $inDB = cmsDatabase::getInstance();
  8.  
  9. global $_LANG;
  10.  
  11. if (!isset($cfg['show_target'])) { $cfg['show_target'] = 1; }
  12. if (!isset($cfg['limit'])) { $cfg['limit'] = 15; }
  13. if (!isset($cfg['show_link'])) { $cfg['show_link'] = 1; }
  14. if (!isset($cfg['action_types'])) { echo $_LANG['MODULE_NOT_CONFIGURED']; return true; }
  15.  
  16. $inActions = cmsActions::getInstance();
  17.  
  18. if (!$cfg['show_target']){ $inActions->showTargets(false); }
  19.  
  20. $inActions->onlySelectedTypes($cfg['action_types']);
  21. $inDB->limitIs($cfg['limit']);
  22.  
  23. $actions = $inActions->getActionsLog();
  24.  
  25.  
  26.  
  27. $new_actions=array();
  28.  
  29. foreach($actions as $action) {
  30. $user = $inUser->getShortUserData($action['user_login']);
  31. $user_id=$user['id'];
  32. $action['r_onlineuse'] = $inUser->isOnline($user['id']);
  33. $action['user_ava'] = $inDB->get_field('cms_user_profiles', "user_id=$user_id", 'imageurl');
  34.  
  35. $new_actions[]=$action;
  36. }
  37.  
  38.  
  39.  
  40. if(!$actions){ return false; }
  41.  
  42. cmsPage::initTemplate('modules', $cfg['tpl'])->
  43. assign('actions', $actions)->
  44. assign('cfg', $cfg)->
  45. assign('user_id', cmsUser::getInstance()->id)->
  46. display($cfg['tpl']);
  47.  
  48. return true;
  49.  
  50. }
  51.  
  52.  

Вывод аватара и онлайн в шаблоне:

  1. {foreach key=aid item=action from=$actions}
  2. <tr>
  3. <td width="40" valign="top" style="border-bottom: 1px dashed #ccc;">
  4. {if $action.user_ava}
  5. <a href="{$action.user_url}">
  6. <img src="/images/users/avatars/small/{$action.user_ava}" alt="" width="40" height="40" />
  7. </a>
  8. {else}
  9. <a href="{$action.user_url}">
  10. <img src="/images/users/avatars/small/nopic.jpg" alt="" width="40" height="40" />
  11. </a>
  12. {/if}
  13.  
  14. {if $action.user_online}
  15. <div class="u_online">online</div>
  16. {else}
  17. <div class="u_offline">offline</div>
  18. {/if}
  19.  
  20. </td>



Сейчас выводит вместо аватара только nopic.jpg (ссылка на профиль пользователя есть) и все время офлайн.

Подскажите что не так.
#2 11 августа 2015 в 18:44
Все еще актуально.
#3 11 августа 2015 в 21:25
Смотрю файл mod_blogs.tpl автарка выводится так $post.author_avatar. Сам не силен, но думаю надо копать в этом направлении.
#4 11 августа 2015 в 21:43
Юрий, пробовал из разных модулей, но… Может руки не оттуда))

Предполагаю только, что не в порядке гдето в этом месте:

  1.  
  2.  
  3.  
  4. $new_actions=array();
  5.  
  6. foreach($actions as $action) {
  7. $user = $inUser->getShortUserData($action['user_login']);
  8. $user_id=$user['id'];
  9. $action['user_online'] = $inUser->isOnline($user['id']);
  10. $action['user_ava'] = $inDB->get_field('cms_user_profiles', "user_id=$user_id", 'imageurl');
  11.  
  12. $new_actions[]=$action;
  13. }
  14.  
  15.  
  16.  
  17. if(!$actions){ return false; }
  18.  
  19. cmsPage::initTemplate('modules', $cfg['tpl'])->
  20. assign('actions', $actions)->
  21. assign('cfg', $cfg)->
  22. assign('user_id', cmsUser::getInstance()->id)->
  23. display($cfg['tpl']);
  24.  
  25. return true;
  26.  
  27. }
  28.  
#5 11 августа 2015 в 22:52
Ох главная проблема, многие модули остались лежать на тех версиях, от деталс есть пара модулей, потом еще блоги, на фотоблогах ни один модуль не пашет, писал-тишина
#6 12 августа 2015 в 06:31
$inDB = cmsDatabase::getInstance(); Это прописано у вас в модуле?

остальное вроде все верно. Такое ощущение что подключение к базе данных в модуле не прописано правильно. Проверяйте
#7 12 августа 2015 в 06:55
В первом посту темы весь код в module.php
7 строка...
  1. <?php
  2.  
  3. function mod_actions_new(array $mod, $cfg){
  4.  
  5. $inCore = cmsCore::getInstance();
  6. $inUser = cmsUser::getInstance();
  7. $inDB = cmsDatabase::getInstance();
  8.  
#8 12 августа 2015 в 11:10
тогда выводите массив $action из темплейа на печать, увидите что передается, а что нет.

также выведите $actions из самого модуля на печать. тогда увидите на каком этапе теряете переменую.

ну и проверьте у всех ли есть imageurl в базе пользователей
#9 12 августа 2015 в 11:42

тогда выводите массив $action из темплейа на печать, увидите что передается, а что нет.

kirkr

??????
#10 12 августа 2015 в 11:54
Кто может решить платно, пишите в личку цену…
#11 12 августа 2015 в 12:53
Давайте я вам решу бесплатно, а вы не в качестве платы, а просто благодарности ради кинете сколько посчитаете нужным на R165866979435
------------

1. Снесите все что там понакупали и верните родной модуль ленты
2. Откройте файл module.php и сделайте вставку:
  1.  
  2. ......................
  3. if(!$actions){ return false; }
  4. // Вот это нужно вставить
  5. foreach($actions as &$action){
  6. $user = cmsUser::getShortUserData($action['user_login']);
  7. $action['user_online'] = cmsUser::isOnline($user['id']);
  8. $action['user_ava'] = $inDB->get_field('cms_user_profiles', "user_id={$user['id']}", 'imageurl');
  9. }
  10. // end
  11. cmsPage::initTemplate('modules', $cfg['tpl'])->
  12. .............................
  13.  
3. Теперь в шаблоне (внутри foreach) будут доступны переменные {$action.user_online} и {$action.user_ava}, можете делать с ними все что угодно, в крайнем случае в старом шаблоне верстку подсмотрите.
#12 12 августа 2015 в 13:29
Pasha, Спасибо. Второй раз выручаете. И в покупном поправил и в штатной вывел. dance

PS: Отправил на R165866979435 денежку…
#13 12 августа 2015 в 13:44
Решено.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.