Награждение Пользователей
Изменить , добавить условия получения награды
Подскажите в каком файле можно изменить или добавить условия награждение пользователей сайта — версия 1.10.6
В данный момент есть:
За комментарии
За сообщения на форуме
За опубликованные статьи
За одобренные записи в блоге
За баллы личной кармы
За фотографии в общих альбомах
За фотографии в личном альбоме
И вот появилась такая необходимость добавить еще несколько условий наград:
Например, За приглашенных 10 друзей,
За добавление 500 роликов,
За ежедневное посещение сайта на протяжении месяца.
Может у кого есть еще другие варианты… для награды своих пользователей.
Заранее благодарен Всем за добрые и полезные советы.
В нем есть функция public static function checkAwards
/** * Проверяет условия получения наград и выдает награду пользователю, если нужно * @param int $user_id * @return bool */ public static function checkAwards($user_id=0){ if (!$user_id){ return false; } $inDB = cmsDatabase::getInstance(); $awards = self::getAutoAwards(); if (!$awards){ return false; } $p_content = $inDB->rows_count('cms_content', "user_id='$user_id' AND published = 1"); $p_comment = $inDB->rows_count('cms_comments', "user_id='$user_id' AND published = 1"); $p_blog = $inDB->rows_count('cms_blog_posts', "user_id='$user_id' AND published = 1"); $p_forum = $inDB->rows_count('cms_forum_posts', "user_id='$user_id'"); $p_photo = $inDB->rows_count('cms_photo_files', "user_id='$user_id' AND published = 1"); $p_privphoto = $inDB->rows_count('cms_user_photos', "user_id='$user_id'"); $p_karma = $inDB->get_field('cms_user_profiles', "user_id='$user_id'", 'karma'); foreach ($awards as $award) { if ($inDB->rows_count('cms_user_awards', "user_id = '$user_id' AND award_id = '{$award['id']}'")) { continue; } $granted = ($award['p_content'] <= $p_content) && ($award['p_comment'] <= $p_comment) && ($award['p_blog'] <= $p_blog) && ($award['p_forum'] <= $p_forum) && ($award['p_photo'] <= $p_photo) && ($award['p_privphoto'] <= $p_privphoto) && ($award['p_karma'] <= $p_karma); if (!$granted){ continue; } self::giveAward($award, $user_id); } return true; }
$title = cmsCore::request('title', 'str', $_LANG['AD_AWARD']); $description = cmsCore::request('description', 'str', ''); $published = cmsCore::request('published', 'int', 0); $p_comment = cmsCore::request('p_comment', 'int', 0); $p_forum = cmsCore::request('p_forum', 'int', 0); $p_content = cmsCore::request('p_content', 'int', 0); $p_blog = cmsCore::request('p_blog', 'int', 0); $p_karma = cmsCore::request('p_karma', 'int', 0); $p_photo = cmsCore::request('p_photo', 'int', 0); $p_privphoto = cmsCore::request('p_privphoto', 'int', 0);
Есть такой файлик \core\classes\user.class.php
В нем есть функция public static function checkAwards
/** * Проверяет условия получения наград и выдает награду пользователю, если нужно * @param int $user_id * @return bool */ public static function checkAwards($user_id=0){ if (!$user_id){ return false; } $inDB = cmsDatabase::getInstance(); $awards = self::getAutoAwards(); if (!$awards){ return false; } $p_content = $inDB->rows_count('cms_content', "user_id='$user_id' AND published = 1"); $p_comment = $inDB->rows_count('cms_comments', "user_id='$user_id' AND published = 1"); $p_blog = $inDB->rows_count('cms_blog_posts', "user_id='$user_id' AND published = 1"); $p_forum = $inDB->rows_count('cms_forum_posts', "user_id='$user_id'"); $p_photo = $inDB->rows_count('cms_photo_files', "user_id='$user_id' AND published = 1"); $p_privphoto = $inDB->rows_count('cms_user_photos', "user_id='$user_id'"); $p_karma = $inDB->get_field('cms_user_profiles', "user_id='$user_id'", 'karma'); foreach ($awards as $award) { if ($inDB->rows_count('cms_user_awards', "user_id = '$user_id' AND award_id = '{$award['id']}'")) { continue; } $granted = ($award['p_content']
Чего еще видать не хватает… так как в админке не появилась вообще ничего нового.
Известно, чего не хватает.
Оформить все это в виде новой формы ввода.
В \admin\components\autoawards\backend.php добавьте после привфото новую таблицу:
<tr> <td><img src="/admin/components/autoawards/images/p_privphoto.gif" width="16" height="16" /></td> <td><input name="p_privphoto" type="text" id="p_input" size="5" value="<?php echo @$mod['p_privphoto'];?>" /></td> <td><?php echo $_LANG['AD_PRIVATE_PHOTOS']; ?></td> </tr> <tr> <td><img src="/admin/components/autoawards/images/p_privphoto.gif" width="16" height="16" /></td> <td><input name="p_privphoto" type="text" id="p_input" size="5" value="<?php echo @$mod['p_friends'];?>" /></td> <td><?php echo $_LANG['AD_FRIENDS']; ?></td> </tr>
$_LANG['AD_PUBLIC_PHOTOS'] ='фотографий в общих альбомах'; $_LANG['AD_PRIVATE_PHOTOS'] ='фотографий в личном альбоме'; $_LANG['AD_FRIENDS'] ='друзей';
Получается так:
Vladslav Li,
Известно, чего не хватает.
Оформить все это в виде новой формы ввода.
В \admin\components\autoawards\backend.php добавьте после привфото новую таблицу:
А в \languages\ru\admin\components\autoawards.php добавьте про друзей:
После еще в таблицу cms_user_autoawards добавить строку p_friends
$_LANG['AD_PUBLIC_PHOTOS'] ='фотографий в общих альбомах'; $_LANG['AD_PRIVATE_PHOTOS'] ='фотографий в личном альбоме'; $_LANG['AD_FRIENDS'] ='друзей';
Получается так:
Спасибо Вам Добрый Человек!!! Все получилось именно так, как у Вас на скрине… теперь буду пробовать пригласить, посмотреть как работать будет, но мне по сути и надо было просто дополнительные поля сделать.
Еще раз Вам благодарен от души, за Вашу поддержку…
Mike — Вам тоже огромное спасибо за подсказку, я просто реально не видел этой темы, так бы не создавал новую.
На этом тему закрываю — Вопрос решен.