Jump to content

Recommended Posts

PHP Criteria


Этот аддон позволяет создавать сложные критерии для продвинутых достижений/повышений с помощью PHP кода.

Например, вы можете использовать в качестве критериев:

  • Количество тем, которые пользователь создал в определенном форуме
  • Подписи пользователей
  • Количество лайков под одним сообщением
  • Данные из других аддонов (например, Resource Manager или Question Threads)
  • Количество изменений поста пользователем
  • ...

Другими словами, этот аддон дает вам доступ к движку xenForo и базе данных при создании достижений/повышений.

Более того, можно комбинировать стандартные критерии xenForo и ваш PHP код.

Теперь ваши возможности ограничены только вашей фантазией!

Установка

  1. Скачайте аддон и разархивируйте его куда-нибудь
  2. Откройте папку upload и переместите находящуюся внутри папку src в корневую директорию вашего форума
  3. В админ-панели перейдите в секцию "Аддоны" и установите аддон "PHP Criteria"

Как использовать?
При создании достижения/повышения вы увидите новую вкладку "PHP-обработчик":

php_callback_tab.png.83253a5b7cb54a662261028cad79e441.png

В этой вкладке вы можете указать путь до .php класса и конкретный метод для выполнения:

php_callback_pane.png.d36d16b9af6bcf29185bf775fd799183.png

Например, исходя из данных на картинке выше, нужно создать файл Criteria.php по пути src/addons со следующим содержимым:

<?php

class Criteria
{
    public static function trophy_AllForOne(\XF\App $app, \XF\Entity\User $user)
    {
        //
        // КОД ВАШИХ КРИТЕРИЕВ НИЖЕ
        //

        // Получаем базу данных
        $db = $app->db();

        // Запрос к базе данных для получения максимального количества лайков на сообщении пользователя
        $query = "SELECT `likes` FROM `xf_post` WHERE `user_id` = ? ORDER BY `likes` DESC LIMIT 1";

        // Получение максимального количества лайков из базы данных
        $likes = $db->fetchOne($query, [$user->user_id]);

        // Проверка корректности полученного значения (мы ожидаем число)
        if(is_int($likes))
        {
            // Возвращаем ИСТИНУ, если у пользователя есть сообщение с 5 и более лайками и ЛОЖЬ, если такого нет
            return ($likes >= 5);
        }
        else
        {
            return false;
        }
    }
}

Каждый метод должен принимать два параметра: \XF\App $app и \XF\Entity\User $user.

Не забывайте, что вы можете комбинировать свой код со стандартными критериями xenForo.
Не стоит реализовывать стандартные критерии в своем коде. Лучше выделите их галочками в соответствующей вкладке.

Примеры
После установки аддона вы увидите новый файл PHPCriteria.examples.php по пути src/addons.
В нем содержится три примера PHP критериев с детальными пояснениями!
Можете использовать эти примеры в качестве основы для создания своих собственных.

Вы также можете хранить свои PHP критерии в файле PHPCriteria.php, который тоже создается автоматически после установки аддона.

Не поленись скажи спасибо одним кликом > like

 


  • Submitter
  • Submitted
    03.12.2017
  • Категория

 

Link to comment
Share on other sites

  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Popular Days

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Privacy Policy