1. Go to this page and download the library: Download meius/flag-forge library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
meius / flag-forge example snippets
enum Permission: int implements Bitwiseable
{
case SendMessages = 1 << 0; // 1
case DeleteMessages = 1 << 1; // 2
case AddUsers = 1 << 2; // 4
case RemoveUsers = 1 << 3; // 8
case PinMessages = 1 << 4; // 16
case ManageChat = 1 << 5; // 32
case ManageModerators = 1 << 6; // 64
}
use Meius\FlagForge\FlagManager;
$manager = new FlagManager();
$manager->getMask(); // Initial mask: 0
// ----------------------------------------------------------------------
// ADD FLAGS
// ----------------------------------------------------------------------
$manager->add(Permission::SendMessages) // - The bit corresponding to SendMessages is not set, so it gets added.
->add(Permission::AddUsers) // - The bit for AddUsers is not set, so it is added.
->add(Permission::AddUsers) // - Already set.
->add(Permission::PinMessages) // - The bit for PinMessages is not set, so it is added.
->getMask(); // Expected mask: 21 (SendMessages=1, AddUsers=4, PinMessages=16: 1+4+16=21)
// ----------------------------------------------------------------------
// COMBINE FLAGS
// ----------------------------------------------------------------------
$manager->combine(
Permission::SendMessages, // Already set.
Permission::DeleteMessages, // Not set; will be added.
Permission::AddUsers // Already set.
)->getMask(); // Expected mask: 23 (SendMessages=1, DeleteMessages=2, AddUsers=4, PinMessages=16: 21+2=23)
// ----------------------------------------------------------------------
// REMOVE FLAGS
// ----------------------------------------------------------------------
$manager->remove(Permission::AddUsers) // - Remove AddUsers: bit is set, so it will be removed.
->remove(Permission::ManageModerators) // - Remove ManageModerators: bit is not set, so nothing changes.
->getMask(); // Expected mask: 19
// ----------------------------------------------------------------------
// TOGGLE FLAGS
// ----------------------------------------------------------------------
$manager->toggle(
Permission::SendMessages, // Bit is set; toggled off.
Permission::DeleteMessages, // Bit is set; toggled off.
Permission::AddUsers, // Bit is not set; toggled on.
Permission::RemoveUsers // Bit is not set; toggled on.
)->getMask(); // Expected mask: 28
// ----------------------------------------------------------------------
// CHECK FLAGS
// ----------------------------------------------------------------------
$manager->has(Permission::SendMessages); // false
$manager->has(Permission::AddUsers); // true
$manager->doesntHave(Permission::SendMessages); // true
$manager->doesntHave(Permission::AddUsers); // false
// ----------------------------------------------------------------------
// ITERATE OVER ACTIVE FLAGS
// ----------------------------------------------------------------------
foreach ($manager as $flag) {
/**
* Example output:
* Active flag: AddUsers (4)
* Active flag: RemoveUsers (8)
* Active flag: PinMessages (16)
*/
echo "Active flag: " . $flag->name . " (" . $flag->value . ")" . PHP_EOL;
}
// ----------------------------------------------------------------------
// CLEAR FLAGS
// ----------------------------------------------------------------------
$manager->clear(); // Expected mask: 0
use Meius\FlagForge\FlagManager;
/**
* @var PDO $pdo
* @var FlagManager $manager
* @var string $chatId Chat ID to query.
* @var string $userId User ID to query.
*/
$manager->add(Permission::SendMessages);
// Prepare the SQL statement
$stmt = $pdo->prepare('
SELECT *
FROM chat_user
WHERE chat_id = :chat_id
AND user_id = :user_id
AND (permissions & :flag) = :flag
');
// Execute the query with the parameters
$stmt->execute([
':chat_id' => $chatId,
':user_id' => $userId,
':flag' => $manager,
]);
// Fetch the result
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($result) {
echo "User has the SendMessages permission.";
} else {
echo "User does NOT have the SendMessages permission.";
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.