public function sanitizePermissionsValue($permissions, $revision)
    {
        if (is_array($permissions)) {
            $legacyOptions = ['print' => 4, 'modify' => 8, 'copy' => 16, 'annot-forms' => 32];
            foreach ($permissions as $key => $value) {
                if (isset($legacyOptions[$value])) {
                    $permissions[$key] = $legacyOptions[$value];
                } elseif (!is_int($value)) {
                    throw new \InvalidArgumentException(
                        sprintf('Invalid permission value: %s', $value)
                    );
                }
            }

            $permissions = array_sum($permissions);
        }

        $permissions = (int)$permissions;

        $allowed = self::PERM_PRINT
            | self::PERM_MODIFY
            | self::PERM_COPY
            | self::PERM_ANNOT;

        if ($revision > 2) {
            $allowed |= self::PERM_FILL_FORM
                | self::PERM_ACCESSIBILITY
                | self::PERM_ASSEMBLE
                | self::PERM_DIGITAL_PRINT;
        }

        if (($allowed & $permissions) !== $permissions) {
            throw new \InvalidArgumentException(
                sprintf(
                    'Permission flags (%s) are not allowed for this security handler revision %s.',
                    $permissions,
                    $revision
                )
            );
        }

        $permissions = 61632 | 0xFFFF0000 | $permissions;
        if ($revision < 3) {
            // 3840 = bit 9 to 12 to 1 - we are < revision 3
            $permissions |= 3840;
        }

        // PDF integer are 32 bit integers. Ensure this.
        if (PHP_INT_SIZE === 4 || ($permissions) < (2147483647)) {
            return $permissions;
        }

        return ($permissions | (4294967295 << 32));
    }
public function sanitizePermissionsValue($permissions, $revision)
    {
        if (is_array($permissions)) {
            $legacyOptions = ['print' => 4, 'modify' => 8, 'copy' => 16, 'annot-forms' => 32];
            foreach ($permissions as $key => $value) {
                if (isset($legacyOptions[$value])) {
                    $permissions[$key] = $legacyOptions[$value];
                } elseif (!is_int($value)) {
                    throw new \InvalidArgumentException(
                        sprintf('Invalid permission value: %s', $value)
                    );
                }
            }

            $permissions = array_sum($permissions);
        }

        $permissions = (int)$permissions;

        $allowed = self::PERM_PRINT
            | self::PERM_MODIFY
            | self::PERM_COPY
            | self::PERM_ANNOT;

        if ($revision > 2) {
            $allowed |= self::PERM_FILL_FORM
                | self::PERM_ACCESSIBILITY
                | self::PERM_ASSEMBLE
                | self::PERM_DIGITAL_PRINT;
        }

        if (($allowed & $permissions) !== $permissions) {
            throw new \InvalidArgumentException(
                sprintf(
                    'Permission flags (%s) are not allowed for this security handler revision %s.',
                    $permissions,
                    $revision
                )
            );
        }

        $permissions = 61632 | 0xFFFF0000 | $permissions;
        if ($revision < 3) {
            // 3840 = bit 9 to 12 to 1 - we are < revision 3
            $permissions |= 3840;
        }

        // PDF integer are 32 bit integers. Ensure this.
        if (PHP_INT_SIZE === 4 || ($permissions) < (2147483647)) {
            return $permissions;
        }

        return ($permissions | (4294967295 << 32));
    }
public function sanitizePermissionsValue ( $ permissions , $ revision ) { if ( is_array ( $ permissions ) ) { $ legacyOptions = [ 'print' => 4 , 'modify' => 8 , 'copy' => 16 , 'annot-forms' => 32 ] ; foreach ( $ permissions as $ key => $ value ) { if ( isset ( $ legacyOptions [ $ value ] ) ) { $ permissions [ $ key ] = $ legacyOptions [ $ value ] ; } elseif ( ! is_int ( $ value ) ) { throw new \ InvalidArgumentException ( sprintf ( 'Invalid permission value: %s' , $ value ) ) ; } } $ permissions = array_sum ( $ permissions ) ; } $ permissions = ( int ) $ permissions ; $ allowed = self :: PERM_PRINT | self :: PERM_MODIFY | self :: PERM_COPY | self :: PERM_ANNOT ; if ( $ revision > 2 ) { $ allowed |= self :: PERM_FILL_FORM | self :: PERM_ACCESSIBILITY | self :: PERM_ASSEMBLE | self :: PERM_DIGITAL_PRINT ; } if ( ( $ allowed & $ permissions ) !== $ permissions ) { throw new \ InvalidArgumentException ( sprintf ( 'Permission flags (%s) are not allowed for this security handler revision %s.' , $ permissions , $ revision ) ) ; } $ permissions = 61632 | 0xFFFF0000 | $ permissions ; if ( $ revision < 3 ) { // 3840 = bit 9 to 12 to 1 - we are < revision 3 $ permissions |= 3840 ; } // PDF integer are 32 bit integers. Ensure this. if ( PHP_INT_SIZE === 4 || ( $ permissions ) < ( 2147483647 ) ) { return $ permissions ; } return ( $ permissions | ( 4294967295 << 32 ) ) ; }
Ensures a valid permission value.

@param int[]|int$permissions
@param int $revision
@return int
Ensures a valid permission value .