Ошибка в Фотобитвах от Kreator

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

Небольшая ошибка в компоненте Фотобитвы доработанных Kreator

#1 5 ноября 2017 в 23:08
Добрый вечер друзья!
В компоненте Фотобитвы доработанные Kreator есть небольшая ошибка. Попросил Kreator помочь — сказал некогда.
Ошибка в следующем:
На странице фотобитв под 2-м и 3-м местом фотографий есть ссылка на юзера который его разместил, ссылка определяет id юзера и должна вести на его страницу. Вместо id юзера, в ссылку вставляется id порядкового номера фотографии которое он загрузил. В результате при нажатии на ссылку открывается профиль совсем другого юзера.
Вот код страницы битв battle.tpl.php
  1. <?php
  2. $this->addCSS('//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css');
  3.  
  4. if ($page>1) { $title_page = ' / '. $page . ' страница '; } else { $title_page = ''; }
  5.  
  6. $this->setPageTitle($battle['title'].$title_page);
  7.  
  8. $this->addBreadcrumb(LANG_PHOTOBATTLE_CONTROLLER, $this->href_to(''));
  9. $this->addBreadcrumb($battle['title']);
  10. $config = cmsConfig::getInstance();
  11. $is_show_names = $this->controller->options['show_names'];
  12.  
  13. $is_can_join = cmsUser::isAllowed('battles', 'join');
  14.  
  15. $user = cmsUser::getInstance();
  16.  
  17. $page_link = $config->host . $this->href_to('') . '/battle/' . $battle['id'];
  18. $page_title = $battle['title'];
  19.  
  20. $is_can_edit = $battle['id'] > 2 && ($user->is_admin ||
  21. cmsUser::isAllowed('battles', 'edit', 'all') ||
  22. (cmsUser::isAllowed('battles', 'edit', 'own') && $battle['user_id']==$user->id));
  23.  
  24. if ($is_can_edit){
  25.  
  26. if ($battle['status'] != photobattle::STATUS_OPENED){
  27. $this->addToolButton(array(
  28. 'class' => 'accept',
  29. 'title' => LANG_PHOTOBATTLE_START,
  30. 'href' => $this->href_to('start', $battle['id'])
  31.  
  32. ));
  33. }
  34.  
  35. if ($battle['status'] == photobattle::STATUS_OPENED){
  36. $this->addToolButton(array(
  37. 'class' => 'cancel',
  38. 'title' => LANG_PHOTOBATTLE_STOP,
  39. 'href' => $this->href_to('stop', $battle['id'])
  40. ));
  41. }
  42.  
  43. $this->addToolButton(array(
  44. 'class' => 'edit',
  45. 'title' => LANG_PHOTOBATTLE_EDIT,
  46. 'href' => $this->href_to('edit', $battle['id'])
  47. ));
  48.  
  49. $this->addToolButton(array(
  50. 'class' => 'delete',
  51. 'title' => LANG_PHOTOBATTLE_DELETE,
  52. 'href' => $this->href_to('delete', $battle['id']),
  53. 'onclick' => 'return confirm()'
  54. ));
  55.  
  56. }
  57.  
  58. $statuses_text = array(
  59. 0 => LANG_PHOTOBATTLE_STATUS_PENDING,
  60. 1 => LANG_PHOTOBATTLE_STATUS_MODERATION,
  61. 2 => '', //Идет
  62. 3 => LANG_PHOTOBATTLE_STATUS_CLOSED,
  63. );
  64.  
  65. if ($page>1) $back = '?back='.$page;
  66.  
  67. ?>
  68.  
  69. <script type="text/javascript" src="//yastatic.net/share/share.js" charset="utf-8"></script>
  70. <div style="float: right;" class="yashare-auto-init" data-yashareL10n="ru" data-yashareTitle="<?php echo $page_title; ?>" data-yashareLink="<?php echo $page_link; ?>" data-yashareType="small" data-yashareQuickServices="vkontakte,facebook,twitter,odnoklassniki,moimir,gplus" data-yashareTheme="counter"></div>
  71.  
  72. <h1 style="margin-bottom: 5px;"><div class="pb_lined"></div><?php html($battle['title']); ?></h1>
  73.  
  74. <div class="pb_desc" style="margin-bottom: 20px;"><?php html($battle['description']); ?></div>
  75.  
  76. <div class="pb_header">
  77.  
  78. <div class="pb_status">
  79. <?php echo $statuses_text[ $battle['status'] ]; ?>
  80. <?php if ($battle['status'] == photobattle::STATUS_OPENED && $battle['type'] && count($vote_photos)==2 && $user->id) { ?>
  81. <a href="/photobattle/battle/<?=$battle['id']?>"><i class="fa fa-thumbs-o-up"></i> Оценить фото</a>
  82. <?php } elseif ($battle['status'] == photobattle::STATUS_OPENED && $user->id) { ?>
  83. <i class="fa fa-thumbs-up"></i> <?php echo LANG_PHOTOBATTLE_YOU_VOTED; ?>
  84. <?php } elseif (!$user->id) { ?>
  85. Хочешь участвовать в рейтинге или оценить фотографии участников? (<a class="auth_popup_link" href="#">Вход</a> / <a href="/auth/register">Регистрация</a>)
  86. <?php } ?>
  87. </div>
  88.  
  89. <div class="pb_link">
  90.  
  91. <?php if (($is_can_join && ($battle['status'] == photobattle::STATUS_PENDING || $battle['type'])) && $battle['status'] != photobattle::STATUS_CLOSED){ ?>
  92. <?php if ($battle['id'] > 2 && (!$is_user_in_battle || cmsUser::isAdmin())){ ?>
  93.  
  94. <a class="pb_red" href="<?php echo $this->href_to('join', $battle['id']); ?>"><i class="fa fa-user-plus"></i> Участвовать</a>
  95.  
  96. <?php } ?>
  97. <?php if ($battle['type']) { ?>
  98.  
  99. <a href="<?php echo $this->href_to('battle/'.$battle['id'].'/resultat',false); ?>"><i class="fa fa-bar-chart"></i> Результаты</a>
  100.  
  101. <?php } ?>
  102. <?php } ?>
  103.  
  104. <a href="<?php echo $battle['inrules'] ? $battle['inrules'] : '/pages/12-obschie-pravila-fotokonkursov.html'; ?>"><i class="fa fa-link"></i> Правила</a>
  105.  
  106. </div>
  107.  
  108. </div>
  109.  
  110. <?php if ($battle['status'] == photobattle::STATUS_CLOSED || ($battle['type'] && $battle['photos'])) { ?>
  111.  
  112. <?php
  113. $winners = array_slice($battle['photos'], 0, 3);
  114. if (!$page || $page==1) $battle['photos'] = array_slice($battle['photos'], 3);
  115. ?>
  116.  
  117. <?php if($battle['id']!=2) { $size = 'big'; } else { $size = 'normal'; } ?>
  118.  
  119. <?php if (!$page || $page==1) { ?>
  120.  
  121. <div class="photobattle-winners">
  122.  
  123. <div class="place place-1">
  124. <?php $photo = array_shift($winners); ?>
  125. <?php if ($battle['id']==1) { $photo['score'] = $photo['rating']; } ?>
  126. <?php if ($battle['id']==2) { $photo['user_nickname'] = $photo['nickname']; $photo['image'] = $photo['avatar']; $photo['score'] = $photo['rating']; $photo['user_id'] = $photo['id']; } ?>
  127. <?php echo html_image($photo['image'], $size); ?>
  128. <?php if ($is_show_names) { ?>
  129. <br /><a class="user" href="<?php echo href_to('users', $photo['user_id']); ?>"><i class="fa fa-user"></i> <?php echo $photo['user_nickname']; ?></a>
  130. <?php } ?>
  131. <?php if ($battle['id']>2 && ($is_can_edit || $photo['user_id']==$user->id)) { ?>
  132. <a class="delete" onclick="return confirm('Удалить фото?')" title="Удалить фото" href="<?php echo $this->href_to('delete_photo', $photo['id']).$back
#2 6 ноября 2017 в 09:02
На вскидку, без вникания в код, надо в строках 26, 47, 67, 98 заменить это
  1. $photo['user_id'] = $photo['id'];
на это
  1. $photo['user_id'] = $user->id
#3 6 ноября 2017 в 10:05

на это

Loadырь

Спасибо за ответ, проверил Ваш вариант работает! laugh

но я заменил так, в строке 47 и 67 это:

  1. " title="<?php if ($is_show_names) { echo $photo['user_nickname']; $photo['user_id'] = $photo['id']; } ?>">
на это

  1. " title="<?php if ($photo['title']) { echo $photo['title']. '. '; } ?><?php if ($is_show_names) { echo $photo['user_nickname']; } ?>">
Тоже всё работает.
#4 6 ноября 2017 в 11:01
Тема решена, спасибо Loadырь!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.