Награждение Пользователей

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Изменить , добавить условия получения награды

#1 14 мая 2015 в 10:15
Здравствуйте Уважаемые Пользователи Инстанта!!!
Подскажите в каком файле можно изменить или добавить условия награждение пользователей сайта — версия 1.10.6
В данный момент есть:
За комментарии
За сообщения на форуме
За опубликованные статьи
За одобренные записи в блоге
За баллы личной кармы
За фотографии в общих альбомах
За фотографии в личном альбоме

И вот появилась такая необходимость добавить еще несколько условий наград:
Например, За приглашенных 10 друзей,
За добавление 500 роликов,
За ежедневное посещение сайта на протяжении месяца.
Может у кого есть еще другие варианты… для награды своих пользователей.
Заранее благодарен Всем за добрые и полезные советы.
#2 14 мая 2015 в 12:42
Есть такой файлик \core\classes\user.class.php
В нем есть функция public static function checkAwards
  1. /**
  2.   * Проверяет условия получения наград и выдает награду пользователю, если нужно
  3.   * @param int $user_id
  4.   * @return bool
  5.   */
  6. public static function checkAwards($user_id=0){
  7.  
  8. if (!$user_id){ return false; }
  9.  
  10. $inDB = cmsDatabase::getInstance();
  11.  
  12. $awards = self::getAutoAwards();
  13. if (!$awards){ return false; }
  14.  
  15. $p_content = $inDB->rows_count('cms_content', "user_id='$user_id' AND published = 1");
  16. $p_comment = $inDB->rows_count('cms_comments', "user_id='$user_id' AND published = 1");
  17. $p_blog = $inDB->rows_count('cms_blog_posts', "user_id='$user_id' AND published = 1");
  18. $p_forum = $inDB->rows_count('cms_forum_posts', "user_id='$user_id'");
  19. $p_photo = $inDB->rows_count('cms_photo_files', "user_id='$user_id' AND published = 1");
  20. $p_privphoto = $inDB->rows_count('cms_user_photos', "user_id='$user_id'");
  21. $p_karma = $inDB->get_field('cms_user_profiles', "user_id='$user_id'", 'karma');
  22.  
  23. foreach ($awards as $award) {
  24.  
  25. if ($inDB->rows_count('cms_user_awards', "user_id = '$user_id' AND award_id = '{$award['id']}'")) { continue; }
  26.  
  27. $granted = ($award['p_content'] <= $p_content) &&
  28. ($award['p_comment'] <= $p_comment) &&
  29. ($award['p_blog'] <= $p_blog) &&
  30. ($award['p_forum'] <= $p_forum) &&
  31. ($award['p_photo'] <= $p_photo) &&
  32. ($award['p_privphoto'] <= $p_privphoto) &&
  33. ($award['p_karma'] <= $p_karma);
  34.  
  35. if (!$granted){ continue; }
  36.  
  37. self::giveAward($award, $user_id);
  38.  
  39. }
  40.  
  41. return true;
  42. }
  43.  
А в файлике \admin\components\autoawards\backend.php настраиваются в админке условия автовыдачи наград:

  1. $title = cmsCore::request('title', 'str', $_LANG['AD_AWARD']);
  2. $description = cmsCore::request('description', 'str', '');
  3. $published = cmsCore::request('published', 'int', 0);
  4. $imageurl = preg_replace('/[^a-zA-Z0-9_\.\-]/iu', '', cmsCore::request('imageurl', 'str', ''));
  5. $p_comment = cmsCore::request('p_comment', 'int', 0);
  6. $p_forum = cmsCore::request('p_forum', 'int', 0);
  7. $p_content = cmsCore::request('p_content', 'int', 0);
  8. $p_blog = cmsCore::request('p_blog', 'int', 0);
  9. $p_karma = cmsCore::request('p_karma', 'int', 0);
  10. $p_photo = cmsCore::request('p_photo', 'int', 0);
  11. $p_privphoto = cmsCore::request('p_privphoto', 'int', 0);
Поэтому есть такая мысль, что можно добавить в юзеркласс что-нибудь типа $p_friends = $inDB->rows_count('cms_user_friends', "to_id='$user_id'", 'to_id'); а в бэкенде автоавардзов добавить количество друзей для получения награды $p_friends = cmsCore::request('p_friends', 'int', 0);
#3 14 мая 2015 в 13:01


Есть такой файлик \core\classes\user.class.php
В нем есть функция public static function checkAwards

  1. /**
  2.   * Проверяет условия получения наград и выдает награду пользователю, если нужно
  3.   * @param int $user_id
  4.   * @return bool
  5.   */
  6. public static function checkAwards($user_id=0){
  7.  
  8. if (!$user_id){ return false; }
  9.  
  10. $inDB = cmsDatabase::getInstance();
  11.  
  12. $awards = self::getAutoAwards();
  13. if (!$awards){ return false; }
  14.  
  15. $p_content = $inDB->rows_count('cms_content', "user_id='$user_id' AND published = 1");
  16. $p_comment = $inDB->rows_count('cms_comments', "user_id='$user_id' AND published = 1");
  17. $p_blog = $inDB->rows_count('cms_blog_posts', "user_id='$user_id' AND published = 1");
  18. $p_forum = $inDB->rows_count('cms_forum_posts', "user_id='$user_id'");
  19. $p_photo = $inDB->rows_count('cms_photo_files', "user_id='$user_id' AND published = 1");
  20. $p_privphoto = $inDB->rows_count('cms_user_photos', "user_id='$user_id'");
  21. $p_karma = $inDB->get_field('cms_user_profiles', "user_id='$user_id'", 'karma');
  22.  
  23. foreach ($awards as $award) {
  24.  
  25. if ($inDB->rows_count('cms_user_awards', "user_id = '$user_id' AND award_id = '{$award['id']}'")) { continue; }
  26.  
  27. $granted = ($award['p_content']
  28.  

HiAndy

Чего еще видать не хватает… так как в админке не появилась вообще ничего нового.
#4 14 мая 2015 в 13:28
Только на днях обсуждали в этой теме
#5 14 мая 2015 в 13:38
Vladslav Li,
Известно, чего не хватает. smile
Оформить все это в виде новой формы ввода.
В \admin\components\autoawards\backend.php добавьте после привфото новую таблицу:

  1. <tr>
  2. <td><img src="/admin/components/autoawards/images/p_privphoto.gif" width="16" height="16" /></td>
  3. <td><input name="p_privphoto" type="text" id="p_input" size="5" value="<?php echo @$mod['p_privphoto'];?>" /></td>
  4. <td><?php echo $_LANG['AD_PRIVATE_PHOTOS']; ?></td>
  5. </tr>
  6. <tr>
  7. <td><img src="/admin/components/autoawards/images/p_privphoto.gif" width="16" height="16" /></td>
  8. <td><input name="p_privphoto" type="text" id="p_input" size="5" value="<?php echo @$mod['p_friends'];?>" /></td>
  9. <td><?php echo $_LANG['AD_FRIENDS']; ?></td>
  10. </tr>
А в \languages\ru\admin\components\autoawards.php добавьте про друзей:

  1. $_LANG['AD_PUBLIC_PHOTOS'] ='фотографий в общих альбомах';
  2. $_LANG['AD_PRIVATE_PHOTOS'] ='фотографий в личном альбоме';
  3. $_LANG['AD_FRIENDS'] ='друзей';
После еще в таблицу cms_user_autoawards добавить строку p_friends
Получается так:

#6 14 мая 2015 в 13:51


Vladslav Li,
Известно, чего не хватает. smile
Оформить все это в виде новой формы ввода.
В \admin\components\autoawards\backend.php добавьте после привфото новую таблицу:

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
А в \languages\ru\admin\components\autoawards.php добавьте про друзей:

  1. $_LANG['AD_PUBLIC_PHOTOS'] ='фотографий в общих альбомах';
  2. $_LANG['AD_PRIVATE_PHOTOS'] ='фотографий в личном альбоме';
  3. $_LANG['AD_FRIENDS'] ='друзей';
После еще в таблицу cms_user_autoawards добавить строку p_friends
Получается так:

HiAndy

Спасибо Вам Добрый Человек!!! Все получилось именно так, как у Вас на скрине… теперь буду пробовать пригласить, посмотреть как работать будет, но мне по сути и надо было просто дополнительные поля сделать.
Еще раз Вам благодарен от души, за Вашу поддержку…

Mike — Вам тоже огромное спасибо за подсказку, я просто реально не видел этой темы, так бы не создавал новую.
На этом тему закрываю — Вопрос решен. v
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.