Conversation
WalkthroughThis pull request introduces a new CiviCRM extension, "QR Code Checkin," enabling event participants to check in via QR codes. The update adds PHP, JavaScript, CSS, and template files for QR code generation, check-in workflows, API endpoints, permissions, settings, and extensive unit and integration tests. It also integrates the chillerlan/php-qrcode library and its dependencies. Additionally, a new API cron job is added to trigger WhatsApp flows via Glific for event participants of a specified event. Changes
Sequence Diagram(s)sequenceDiagram
participant Registrant
participant Email
participant QRCode
participant RegistrationWorker
participant WebPage
participant CiviCRM
participant GlificAPI
Registrant->>CiviCRM: Registers for event
CiviCRM->>QRCode: Generates QR code for participant
QRCode->>Email: Embeds QR code in confirmation email
Email->>Registrant: Delivers email with QR code
Registrant->>RegistrationWorker: Presents QR code at event
RegistrationWorker->>WebPage: Scans QR code, opens landing page
WebPage->>CiviCRM: Verifies participant & hash
CiviCRM-->>WebPage: Returns participant status/details
RegistrationWorker->>WebPage: Clicks "Update to Attended"
WebPage->>CiviCRM: Calls API to update status
CiviCRM-->>WebPage: Confirms status update
loop Periodic Cron
CiviCRM->>GlificAPI: Fetch participants and contact IDs
GlificAPI->>CiviCRM: Returns contact IDs
CiviCRM->>GlificAPI: Triggers WhatsApp flows for contacts
GlificAPI-->>CiviCRM: Confirms flow triggers
end
Possibly related PRs
Suggested labels
Poem
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 62
♻️ Duplicate comments (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/LICENSE (1)
2-20: Same legal due-diligence applies to Composer’s MIT licenceReplicate the checks mentioned for the php-qrcode licence to stay compliant.
🧹 Nitpick comments (69)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/phpmd.xml (1)
1-6: Re-evaluate committing vendor QA config under version controlThe PMD ruleset lives inside
vendor/…/php-qrcode. Shipping third-party code + its QA config inflates the repo and muddies ownership. Prefer pulling the library via Composer (composer.json + composer.lock) and storing project-level QA rules in your own directory. This keeps updates painless and avoids accidental edits to external sources.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.scrutinizer.yml (1)
1-5: Vendored CI configs add noise to root toolingThis Scrutinizer config lives inside
vendor/and will never be picked up by your project’s CI, yet it clutters the repo.- wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.scrutinizer.ymlConsider excluding all third-party CI/meta files from version control to avoid confusion and reduce repository size.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/.gitignore (1)
1-4: Re-evaluate committing fullvendor/treeCommitting third-party
vendor/sources (plus their internal.gitignore, IDE files, CI configs, etc.) inflates the repository and complicates dependency updates.Recommended workflow:
- Keep only your extension code in VCS.
- Use Composer on build/deploy (
composer install --no-dev --optimize-autoloader) to materialise dependencies.- Commit a minimal
composer.lockfor reproducibility.Adopting this will cut PR diff noise and avoid future merge conflicts in external libraries.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.css (1)
2-31: Prefer relative units & CSS variables for better accessibility and themingHard-coded
font-size: xx-large/largeand named colours (green,orange,red) can break in high-DPI or custom theme contexts and may fail WCAG contrast ratios. Switching toremunits and project-level CSS variables (e.g.var(--success-color)) improves responsiveness and maintainability without functional impact.Example tweak:
-#qrcheckin-participant-name { - font-size: xx-large; +#qrcheckin-participant-name { + font-size: 2rem; /* ~32 px on default root size */Colors:
-.qrcheckin-status-attended { color: green; } +.qrcheckin-status-attended { color: var(--color-success, #198754); }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/test.php (1)
3-8: Strip dead code & rely on a single autoloaderLines 6-7 contain commented-out loader tweaks that are no longer needed now that Composer generates
vendor/autoload.php. Leaving these fragments around clutters the file and invites confusion about which autoloader path is actually used.-// $loader->add('chillerlan\QRCode', __DIR__.'/vendor/chillerlan/php-qrcode/src/'); -//use chillerlan\php-qrcode\QRCode;wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/autoload.php (1)
1-7: Avoid committing Composer-generated vendor files
vendor/autoload.phpand the entirevendor/tree are machine-generated.
Keeping them under VCS balloon the repo and causes merge conflicts whenever dependencies change. Prefer:
- Commit only
composer.json/composer.lock.- Add
vendor/to.gitignore.- Let CI/build steps run
composer install --no-dev --optimize-autoloader.If bundling is absolutely required for deployment, consider using artefact builds rather than checking them into source.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.travis.yml (1)
1-20: Third-party CI configs should be excludedThe Travis CI configuration belongs to the upstream library. It serves no purpose in your extension and will be ignored by your project’s CI. Keeping it increases maintenance overhead.
Recommend deleting
.travis.yml(and other CI configs) from the bundled vendor directory if you decide to keepvendor/in VCS.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/composer.json (1)
5-8: Add Composer metadata for CiviCRM extensionsConsider adding fields that help downstream tooling:
"type": "library", + "license": "MIT", + "authors": [ + { "name": "Your Org", "email": "dev@example.com" } + ], + "support": { + "issues": "https://github.com/ColoredCow/goonj/issues" + },Also double-check whether
"type": "civicrm-extension"(rather than"library") would integrate better with CiviCRM’s Extension Manager.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/phpdoc.xml (1)
1-14: Consider removing dev-only tooling from the production buildA full‐blown PhpDocumentor config inside
vendor/ships documentation tooling to production.
That unnecessarily inflates the repository size and clutters plugin releases.If API docs are required, they can be generated during CI and uploaded as an artefact, leaving the
phpdoc.xmlout of the committed tree.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/.travis.yml (1)
1-18: CI config insidevendor/is dead weight for consumersThe Travis config is only useful for the upstream library and is never executed in this repository.
Keeping CI configs of dependencies bloats the tree and can confuse maintainers searching for active workflows.Recommend pruning
.travis.yml(and similar) during packaging.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/templates/qrcode-checkin-event-options.tpl (1)
5-8: Swap label & control for better accessibilityScreen-readers expect the
<label>element before the associated form control. Rendering the control first ({$form.qrcode_enabled_event.html}) and then the label breaks that expectation and may confuse assistive technology.- {$form.qrcode_enabled_event.html} - {$form.qrcode_enabled_event.label} + {$form.qrcode_enabled_event.label} + {$form.qrcode_enabled_event.html}wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/image.php (1)
1-61: Do not ship example scripts publicly
examples/image.phpcan be invoked over the web and will happily render arbitrary data if modified, leaking library internals and wasting server resources.
Recommend excluding the entireexamples/tree from the deployed plugin (composer install --no-devor prune during build).wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/phpunit.xml (1)
1-7: Unnecessary test config in production package
phpunit.xmlis a dev artifact and need not be shipped to production; it increases clutter and potentially exposes directory layout. Recommend excludingphpunit*.xmlvia.gitattributesor build script.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imagick.php (3)
4-4: Fix incorrect @filesource documentation.The @filesource comment references "image.php" but this file is "imagick.php". This creates confusion about the file's actual purpose and location.
- * @filesource image.php + * @filesource imagick.php
56-60: Remove trailing empty lines for cleaner code.Multiple trailing empty lines violate clean code standards and add unnecessary whitespace to the file.
echo (new QRCode($options))->render($data); - - - -
17-17: Consider using a more generic example URL.The hardcoded YouTube URL makes this example less universal. Consider using a more generic placeholder URL for demonstration purposes.
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s'; +$data = 'https://example.com/qr-code-demo';wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/l10n/net.ourpowerbase.qrcodecheckin.pot (1)
8-8: Update outdated POT creation date.The POT-Creation-Date shows "2021-07-16T18:31:32+02:00" which appears outdated for a newly added extension. This can cause confusion during translation workflows and version tracking.
-"POT-Creation-Date: 2021-07-16T18:31:32+02:00\n" +"POT-Creation-Date: 2025-01-XX T18:31:32+02:00\n"Replace with the actual creation date of this extension version.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/svg.php (1)
70-74: Improve gzip handling for better example clarity.The hardcoded gzip flag and conditional logic add complexity to what should be a simple SVG generation example. This makes it harder for developers to understand the core QR code generation functionality.
-if($gzip === true){ - header('Vary: Accept-Encoding'); - header('Content-Encoding: gzip'); - $qrcode = gzencode($qrcode ,9); -} +// Optional: Enable gzip compression by adding ?gzip=1 to URL +if($gzip){ + header('Vary: Accept-Encoding'); + header('Content-Encoding: gzip'); + $qrcode = gzencode($qrcode, 9); +}wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/settings/qrcodecheckin.setting.php (1)
22-22: Fix inconsistent indentation.Line 22 uses tabs instead of spaces, which is inconsistent with the rest of the file's indentation style.
- ], + ],wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/text.php (1)
17-17: Consider example file security for production deployments.The hardcoded YouTube URL is fine for an example, but ensure example files are not accessible in production environments or consider using placeholder URLs for security.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/phpunit.xml.dist (1)
8-12: Refine code coverage whitelist to exclude vendor files.The current whitelist includes the entire directory, which will include vendor files in coverage reports. Consider excluding vendor directories for more accurate coverage metrics.
<filter> <whitelist> <directory suffix=".php">./</directory> + <exclude> + <directory>./vendor</directory> + </exclude> </whitelist> </filter>wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/custom_output.php (1)
17-17: Extract hardcoded data to improve example flexibility.The hardcoded YouTube URL makes the example less educational and reusable.
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s'; +// Example data - you can replace this with any string +$data = $argv[1] ?? 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml (1)
19-22: Consider using setup-php action for better PHP management.Hardcoded PHP binary names are fragile and limit flexibility.
strategy: matrix: - php-binary: - - php7.2 - - php7.3 - - php7.4 + php-version: + - '7.2' + - '7.3' + - '7.4' steps: - name: "Checkout" uses: actions/checkout@v4 + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + coverage: none - name: "Install dependencies with composer" - run: ${{ matrix.php-binary }} $(which composer) update --no-interaction --no-progress --no-suggest + run: composer update --no-interaction --no-progress --no-suggestwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php (2)
22-44: Improve constant organization and readability.The large constant array mixing light and dark module values violates readability principles and could be better organized.
const DEFAULT_MODULE_VALUES = [ - // light - QRMatrix::M_DATA => false, // 4 - QRMatrix::M_FINDER => false, // 6 - QRMatrix::M_SEPARATOR => false, // 8 - QRMatrix::M_ALIGNMENT => false, // 10 - QRMatrix::M_TIMING => false, // 12 - QRMatrix::M_FORMAT => false, // 14 - QRMatrix::M_VERSION => false, // 16 - QRMatrix::M_QUIETZONE => false, // 18 - QRMatrix::M_LOGO => false, // 20 - QRMatrix::M_TEST => false, // 255 - // dark - QRMatrix::M_DARKMODULE << 8 => true, // 512 - QRMatrix::M_DATA << 8 => true, // 1024 - QRMatrix::M_FINDER << 8 => true, // 1536 - QRMatrix::M_ALIGNMENT << 8 => true, // 2560 - QRMatrix::M_TIMING << 8 => true, // 3072 - QRMatrix::M_FORMAT << 8 => true, // 3584 - QRMatrix::M_VERSION << 8 => true, // 4096 - QRMatrix::M_FINDER_DOT << 8 => true, // 5632 - QRMatrix::M_TEST << 8 => true, // 65280 + // Light modules (false/white) + QRMatrix::M_DATA => false, + QRMatrix::M_FINDER => false, + QRMatrix::M_SEPARATOR => false, + QRMatrix::M_ALIGNMENT => false, + QRMatrix::M_TIMING => false, + QRMatrix::M_FORMAT => false, + QRMatrix::M_VERSION => false, + QRMatrix::M_QUIETZONE => false, + QRMatrix::M_LOGO => false, + QRMatrix::M_TEST => false, + + // Dark modules (true/black) - shifted by 8 bits + QRMatrix::M_DARKMODULE << 8 => true, + QRMatrix::M_DATA << 8 => true, + QRMatrix::M_FINDER << 8 => true, + QRMatrix::M_ALIGNMENT << 8 => true, + QRMatrix::M_TIMING << 8 => true, + QRMatrix::M_FORMAT << 8 => true, + QRMatrix::M_VERSION << 8 => true, + QRMatrix::M_FINDER_DOT << 8 => true, + QRMatrix::M_TEST << 8 => true, ];
53-53: Improve method signature documentation and type safety.The return type is too generic and the parameter lacks validation documentation.
/** * generates the output, optionally dumps it to a file, and returns it * - * @param string|null $file + * @param string|null $file path to save the output, null to return only * - * @return mixed + * @return string|bool output data or success status depending on implementation + * @throws \InvalidArgumentException when file path is invalid + * @throws \RuntimeException when output generation fails */ public function dump(string $file = null);wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php (1)
17-17: Fix formatting: Missing space in class declaration.The class declaration is missing a space before the opening brace, which violates PSR-12 coding standards.
-class MyCustomOutput extends QROutputAbstract{ +class MyCustomOutput extends QROutputAbstract {wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/html.php (1)
60-94: Consider extracting the large configuration array for better readability.The hardcoded URL and extensive
moduleValuesconfiguration create a dense block that impacts readability. While acceptable for an example, this violates the principle of keeping code segments focused and readable.Consider extracting the configuration:
<?php + +$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s'; + +$moduleColors = [ + // finder + 1536 => '#A71111', // dark (true) + 6 => '#FFBFBF', // light (false) + // alignment + 2560 => '#A70364', + 10 => '#FFC9C9', + // timing + 3072 => '#98005D', + 12 => '#FFB8E9', + // format + 3584 => '#003804', + 14 => '#00FB12', + // version + 4096 => '#650098', + 16 => '#E0B8FF', + // data + 1024 => '#4A6000', + 4 => '#ECF9BE', + // darkmodule + 512 => '#080063', + // separator + 8 => '#AFBFBF', + // quietzone + 18 => '#FFFFFF', +]; - $data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s'; - $options = new QROptions([ 'version' => 5, 'outputType' => QRCode::OUTPUT_MARKUP_HTML, 'eccLevel' => QRCode::ECC_L, - 'moduleValues' => [ - // finder - 1536 => '#A71111', // dark (true) - 6 => '#FFBFBF', // light (false) - // alignment - 2560 => '#A70364', - 10 => '#FFC9C9', - // timing - 3072 => '#98005D', - 12 => '#FFB8E9', - // format - 3584 => '#003804', - 14 => '#00FB12', - // version - 4096 => '#650098', - 16 => '#E0B8FF', - // data - 1024 => '#4A6000', - 4 => '#ECF9BE', - // darkmodule - 512 => '#080063', - // separator - 8 => '#AFBFBF', - // quietzone - 18 => '#FFFFFF', - ], + 'moduleValues' => $moduleColors, ]);wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/phpmd.xml (1)
32-34: Reconsider excluding unused parameter detection.Excluding the
UnusedFormalParameterrule can mask code quality issues and dead code, which violates the principle of keeping code clean and maintainable.Consider removing this exclusion to catch potential code quality issues:
<rule ref="rulesets/unusedcode.xml"> - <exclude name="UnusedFormalParameter"/> </rule>wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Helpers/BitBufferTest.php (1)
54-54: Add missing line ending.The file is missing a newline character at the end, which violates PSR-12 coding standards.
} +wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Number.php (1)
83-83: Add missing line ending.The file is missing a newline character at the end, which violates PSR-12 coding standards.
} +wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/fpdf.php (1)
48-48: Add missing line ending.The file is missing a newline character at the end, which violates PSR-12 coding standards.
echo (new QRCode($options))->render($data); +wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/ByteTest.php (1)
39-39: Add missing line ending.The file is missing a newline character at the end, which violates PSR-12 coding standards.
} +wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/info.xml (1)
38-38: Add missing line ending.The file is missing a newline character at the end, which violates XML formatting standards.
</extension> +wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/composer.json (1)
31-34: Outdated PHPUnit version!PHPUnit 8.5 is outdated. Consider upgrading to a more recent version for better features and PHP 8+ compatibility.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php (2)
45-47: Typo in property comment!The comment has a semicolon instead of an asterisk.
/** - * @var string; + * @var string */
78-78: Using deprecated get_called_class() function!The
get_called_class()function works but usingstatic::classis more modern and clearer.-$class = get_called_class(); +$class = static::class;wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php (1)
99-101: Use imagestring() for more efficient text rendering.The character-by-character approach is unnecessarily complex and less efficient than using the built-in
imagestring()function.- // loop through the string and draw the letters - foreach(str_split($text) as $i => $chr){ - imagechar($this->image, $textSize, $i * $w + $x, $this->length, $chr, $fontColor); - } + // Render the entire string at once + imagestring($this->image, $textSize, $x, $this->length, $text, $fontColor);wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/README.md (3)
1-3: Fix spelling and grammar issues.Several spelling and grammar issues need correction:
- "scanable" should be "scannable"
- Consider consistency in "QR Code" vs "QRCode" terminology
-# QR Code Checkin +# QR Code Check-in -QRCode Checkin allows you to send an email that contains a scanable code to the registered participants for your event. +QR Code Check-in allows you to send an email that contains a scannable code to the registered participants for your event.
28-30: Fix markdown list indentation.The unordered list items are improperly indented according to markdown standards.
- * is set to active - * allows online registration - * has a start date later than "now" (ie. at the time of composing your email) +* is set to active +* allows online registration +* has a start date later than "now" (ie. at the time of composing your email)
79-94: Add language specification to code block.The code block should specify the language for proper syntax highlighting.
-``` +```php function myextension_civicrm_qrcodecheckin_tokenValues(&$values, $contact_id, &$handled) {wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRFpdfTest.php (1)
68-72: Consider making file comparison test more robust.The current file comparison using
substr()to avoidCreationDatedifferences is brittle and may miss important validation issues.Consider using a more robust comparison approach:
- // substr() to avoid CreationDate - $expected = substr(file_get_contents($this::cachefile.$type), 0, 2000); - $actual = substr($this->outputInterface->dump(), 0, 2000); + $expected = file_get_contents($this::cachefile.$type); + $actual = $this->outputInterface->dump(); + + // Remove timestamp-specific content for comparison + $expected = preg_replace('/\/CreationDate \([^)]+\)/', '/CreationDate (NORMALIZED)', $expected); + $actual = preg_replace('/\/CreationDate \([^)]+\)/', '/CreationDate (NORMALIZED)', $actual);wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRFpdf.php (1)
54-56: Replace magic color values with named constants.The hardcoded RGB values
[0, 0, 0]and[255, 255, 255]are magic numbers that reduce code readability and maintainability.+ private const BLACK_RGB = [0, 0, 0]; + private const WHITE_RGB = [255, 255, 255]; + protected function setModuleValues():void{ foreach($this::DEFAULT_MODULE_VALUES as $M_TYPE => $defaultValue){ $v = $this->options->moduleValues[$M_TYPE] ?? null; if(!is_array($v) || count($v) < 3){ - $this->moduleValues[$M_TYPE] = $defaultValue - ? [0, 0, 0] - : [255, 255, 255]; + $this->moduleValues[$M_TYPE] = $defaultValue + ? self::BLACK_RGB + : self::WHITE_RGB; }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php (2)
32-32: Replace magic number with named constant.The hardcoded version number
4reduces code readability and makes it unclear why this specific version is chosen for testing.+ private const TEST_QR_VERSION = 4; + protected function setUp():void{ parent::setUp(); - $this->dataInterface = $this->reflection->newInstanceArgs([new QROptions(['version' => 4])]); + $this->dataInterface = $this->reflection->newInstanceArgs([new QROptions(['version' => self::TEST_QR_VERSION])]); }
61-62: Replace magic number with named constant.The hardcoded value
13370appears to be an arbitrary large number for testing data length limits. Consider using a more descriptive constant.+ private const EXCESSIVE_DATA_LENGTH = 13370; + public function testGetMinimumVersionException(){ $this->expectException(QRCodeDataException::class); $this->expectExceptionMessage('data exceeds'); - $this->getProperty('strlen')->setValue($this->dataInterface, 13370); + $this->getProperty('strlen')->setValue($this->dataInterface, self::EXCESSIVE_DATA_LENGTH); $this->getMethod('getMinimumVersion')->invoke($this->dataInterface); }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/public/index.html (2)
7-16: Move inline CSS to external stylesheet.Inline styles violate separation of concerns and make the code harder to maintain. Consider extracting CSS to a separate file.
- <style > - body{ font-size: 20px; line-height: 1.4em; font-family: "Trebuchet MS", sans-serif; color: #000;} - input, textarea, select{font-family: Consolas, "Liberation Mono", Courier, monospace; font-size: 75%; line-height: 1.25em; border: 1px solid #aaa; } - input:focus, textarea:focus, select:focus{ border: 1px solid #ccc; } - label{ cursor: pointer; } - #qrcode-settings, div#qrcode-output{ text-align: center; } - div#qrcode-output > div {margin: 0;padding: 0;height: 3px;} - div#qrcode-output > div > span {display: inline-block;width: 3px;height: 3px;} - div#qrcode-output > div > span {background-color: lightgrey;} - </style > + <link rel="stylesheet" href="styles.css">
143-160: Move inline JavaScript to external file.Inline JavaScript violates separation of concerns and Content Security Policy best practices.
-<script > - ((form, output, url) => { - $(form).observe('submit', ev => { - Event.stop(ev); - new Ajax.Request(url, { - method: 'post', - parameters: ev.target.serialize(true), - onUninitialized: $(output).update(), - onLoading: $(output).update('[portlandia_screaming.gif]'), - onFailure: response => $(output).update(response.responseJSON.error), - onSuccess: response => $(output).update(response.responseJSON.qrcode), - }); - }); - })('qrcode-settings', 'qrcode-output', './qrcode.php'); -</script > +<script src="qrcode-generator.js"></script>wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/AlphaNum.php (1)
40-40: Replace magic numbers with named constants.The hardcoded values
45,11, and6are algorithm-specific constants that should be documented and named for better code maintainability.+ /** + * AlphaNum encoding constants based on QR specification + */ + private const ALPHANUM_PAIR_MULTIPLIER = 45; + private const ALPHANUM_PAIR_BITS = 11; + private const ALPHANUM_SINGLE_BITS = 6; + protected function write(string $data):void{ for($i = 0; $i + 1 < $this->strlen; $i += 2){ - $this->bitBuffer->put($this->getCharCode($data[$i]) * 45 + $this->getCharCode($data[$i + 1]), 11); + $this->bitBuffer->put( + $this->getCharCode($data[$i]) * self::ALPHANUM_PAIR_MULTIPLIER + $this->getCharCode($data[$i + 1]), + self::ALPHANUM_PAIR_BITS + ); } if($i < $this->strlen){ - $this->bitBuffer->put($this->getCharCode($data[$i]), 6); + $this->bitBuffer->put($this->getCharCode($data[$i]), self::ALPHANUM_SINGLE_BITS); } }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QROutputTestAbstract.php (1)
66-66: Replace magic path with named constant.The hardcoded path
/fooshould be extracted to a constant for better maintainability and clarity of test intent.+ private const INVALID_CACHE_PATH = '/foo'; + public function testSaveException(){ $this->expectException(QRCodeOutputException::class); - $this->expectExceptionMessage('Could not write data to cache file: /foo'); + $this->expectExceptionMessage('Could not write data to cache file: ' . self::INVALID_CACHE_PATH); - $this->options->cachefile = '/foo'; + $this->options->cachefile = self::INVALID_CACHE_PATH; $this->setOutputInterface(); $this->outputInterface->dump(); }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php (2)
42-42: Add a more descriptive comment for marking JPEG tests as risky.The comment should explain why JPEG encoding may cause different results (e.g., lossy compression, platform-specific implementations).
- if($type === QRCode::OUTPUT_IMAGE_JPG){ // jpeg encoding may cause different results + if($type === QRCode::OUTPUT_IMAGE_JPG){ // JPEG uses lossy compression which may produce slightly different results across platforms
66-66: Consider updating the deprecated assertion method.The
assertIsResource()method is deprecated in PHPUnit 9.x+. While it still works, consider future compatibility.- $this::assertIsResource($this->outputInterface->dump()); + $resource = $this->outputInterface->dump(); + $this->assertNotFalse($resource); + $this->assertTrue(is_resource($resource) || (is_object($resource) && $resource instanceof \GdImage));wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php (2)
16-17: Remove empty PHPDoc block or add interface documentation.The empty documentation block serves no purpose. Either remove it or add a meaningful description of the interface's role.
-/** - * - */ +/** + * Interface for QR code data encoding implementations. + * Defines character maps, capacity limits, and error correction parameters. + */
34-166: Consider extracting QR specification constants to a configuration file.The large constant arrays contain QR code specification data that could be maintained more easily in a separate configuration file. This would improve readability and maintainability.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php (1)
34-34: Consider extracting inline SVG styles for better maintainability.Hardcoded inline styles reduce flexibility. Consider allowing style customization through options.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImagick.php (1)
56-56: Use consistent variable naming for module types.Other files in this codebase use
$M_TYPEfor module type variables. Consider maintaining consistency.- foreach($this::DEFAULT_MODULE_VALUES as $type => $defaultValue){ + foreach($this::DEFAULT_MODULE_VALUES as $M_TYPE => $defaultValue){Also update references on lines 57, 59, 64, and 65.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php (1)
37-38: Document assumption about PNG format.The comment mentions assuming PNG format but the code should either enforce this or support multiple formats properly.
Either enforce PNG format or add support for other formats:
-// of course you could accept other formats too (such as resource or Imagick) -// i'm not checking for the file type either for simplicity reasons (assuming PNG) +// Currently only supports PNG format - could be extended for other formats +if($imageInfo[2] !== IMAGETYPE_PNG){ + throw new QRCodeOutputException('only PNG logos are currently supported'); +}wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRMarkupTest.php (1)
32-39: Add error handling for file operations in test.The test writes to a cache file and immediately reads it back. Consider adding error handling for file operations to make tests more robust.
public function testMarkupOutputFile($type){ $this->options->outputType = $type; $this->options->cachefile = $this::cachefile.$type; $this->setOutputInterface(); $data = $this->outputInterface->dump(); + if (!file_exists($this->options->cachefile)) { + $this->fail('Cache file was not created: ' . $this->options->cachefile); + } $this->assertSame($data, file_get_contents($this->options->cachefile)); }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php (2)
103-105: Consider caching reflection results for performance.Creating a new ReflectionProperty instance for every property access check could impact performance in high-throughput scenarios.
Consider implementing a static cache for reflection results to avoid repeated instantiation:
+private static $propertyCache = []; + protected function isPrivate(string $property):bool{ - return (new ReflectionProperty($this, $property))->isPrivate(); + $key = static::class . '::' . $property; + if (!isset(self::$propertyCache[$key])) { + self::$propertyCache[$key] = (new ReflectionProperty($this, $property))->isPrivate(); + } + return self::$propertyCache[$key]; }
41-52: Unconventional trait constructor pattern.The
construct()method automatically calls methods named after trait short names. This pattern could lead to unexpected behavior and makes the code harder to understand.Consider documenting this behavior clearly or using a more explicit initialization pattern to improve maintainability.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRCodeTest.php (1)
90-95: Add descriptive assertion message for clarity.The test validates that trailing spaces affect QR matrix generation, but the assertion could be more descriptive.
public function testTrim() { $m1 = $this->qrcode->getMatrix('hello'); $m2 = $this->qrcode->getMatrix('hello '); // added space - $this->assertNotEquals($m1, $m2); + $this->assertNotEquals($m1, $m2, 'QR matrix should differ when input has trailing space'); }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.civix.php (1)
143-157: Potential issue with navigation menu recursion.The recursive menu insertion could fail silently if the path doesn't exist. Consider adding logging or validation.
else { // Find an recurse into the next level down $found = FALSE; $path = explode('/', $path); $first = array_shift($path); foreach ($menu as $key => &$entry) { if ($entry['attributes']['name'] == $first) { if (!isset($entry['child'])) { $entry['child'] = []; } $found = _qrcodecheckin_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); + break; } } + if (!$found && CRM_Core_Config::singleton()->debug) { + Civi::log()->warning('Failed to insert navigation menu item at path: ' . $first); + } return $found; }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php (1)
172-182: Consider using modulo arithmetic for clarity.The current implementation handles wrap-around with conditional logic, but modulo arithmetic would be clearer and more maintainable.
public function gexp(int $n):int{ - - if($n < 0){ - $n += 255; - } - elseif($n >= 256){ - $n -= 255; - } - + $n = (($n % 255) + 255) % 255; return Polynomial::table[$n][0]; }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
282-297: Add comments to clarify Kanji encoding detection logic.The bitwise operations for Shift-JIS encoding detection would benefit from explanatory comments.
public function isKanji(string $string):bool{ $i = 0; $len = strlen($string); while($i + 1 < $len){ + // Combine two bytes to form a Shift-JIS character code $c = ((0xff & ord($string[$i])) << 8) | (0xff & ord($string[$i + 1])); + // Check if the character is within the Shift-JIS Kanji ranges if(!($c >= 0x8140 && $c <= 0x9FFC) && !($c >= 0xE040 && $c <= 0xEBBF)){ return false; } $i += 2; } return $i >= $len; }wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImage.php (2)
92-100: Consider improving transparency background handlingThe code works around PHP's overloaded property behavior by creating a local variable. While functional, this could be cleaner by refactoring how transparency options are stored.
Consider storing transparency background as a method return value or using a getter method instead of direct property access to avoid this workaround.
187-193: Remove unprofessional commentThe comment "Jiff - like... JitHub!" is unprofessional and doesn't add value to the code documentation.
/** - * Jiff - like... JitHub! * @return void */ protected function gif():void{wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/README.md (1)
341-341: Fix spelling errors in documentationPlease correct the following spelling errors:
- Line 341: "absoulute" → "absolute"
- Line 390: "implemetation" → "implementation"
Also applies to: 390-390
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php (1)
303-318: Consider extracting closure to named methodThe closure used for data interleaving works correctly but could be clearer as a named method.
Extract the mask closure to a private method for better readability:
+ /** + * Interleave data blocks for QR code format + */ + private function interleaveData(array $arr, int $count, array &$data, int &$index, int $rsCount): void { + for($x = 0; $x < $count; $x++){ + for($y = 0; $y < $rsCount; $y++){ + if($x < count($arr[$y])){ + $data[$index] = $arr[$y][$x]; + $index++; + } + } + } + } $data = array_fill(0, $totalCodeCount, null); $index = 0; - $mask = function($arr, $count) use (&$data, &$index, $rsCount){ - for($x = 0; $x < $count; $x++){ - for($y = 0; $y < $rsCount; $y++){ - if($x < count($arr[$y])){ - $data[$index] = $arr[$y][$x]; - $index++; - } - } - } - }; - - $mask($this->dcdata, $maxDcCount); - $mask($this->ecdata, $maxEcCount); + $this->interleaveData($this->dcdata, $maxDcCount, $data, $index, $rsCount); + $this->interleaveData($this->ecdata, $maxEcCount, $data, $index, $rsCount);wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php (1)
621-632: Remove unused variable in foreach loop.The variable
$valis declared but never used in the loop. Since only the coordinates are needed, the loop can be simplified.- foreach($this->matrix as $y => $row){ - foreach($row as $x => $val){ + foreach($this->matrix as $y => $row){ + foreach($row as $x => $_){Alternatively, use
array_keys()if you only need the indices:- foreach($this->matrix as $y => $row){ - foreach($row as $x => $val){ + foreach($this->matrix as $y => $row){ + foreach(array_keys($row) as $x){wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/phpunit.xml (2)
1-22: Consider excluding vendor-package test artefacts from the extensionThe repository now ships the upstream phpunit.xml of a third-party library. Keeping test configs (and the associated
/teststree) insidevendor/:
- Bloats the extension size shipped to production/CiviCRM sites.
- Exposes internal paths & tooling that aren’t meant for runtime.
- Risks CI accidentally running thousands of vendor tests, slowing pipelines.
Unless you actively run this library’s own test suite, treat these files as development-only and exclude them via Composer (
--no-dev) or.gitattributes export-ignore.
12-16: Deprecatedwhitelistelement may raise warnings on PHPUnit ≥ 9.3The
<whitelist>node was replaced by<coverage include|exclude>in newer PHPUnit versions. If your CI uses a modern PHPUnit, expect deprecation notices.Not urgent if you never run the vendor tests, but worth tracking to keep a clean build log when upgrading.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (12)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/composer.lockis excluded by!**/*.lockwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/images/qrcode-checkin-attended.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/images/qrcode-checkin-pending.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/images/qrcode-checkin-registered.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/images/qrcode-compose-email.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/images/qrcode-event-configuration.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/images/qrcode-user-follows-link.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/images/qrcode-view-email.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/images/screenshot.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/example_image.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/example_svg.pngis excluded by!**/*.pngwp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/octocat.pngis excluded by!**/*.png
📒 Files selected for processing (107)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Hook.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Upgrader.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/LICENSE.txt(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/README.md(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/api/v3/Qrcodecheckin/Checkin.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/composer.json(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/info.xml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/l10n/net.ourpowerbase.qrcodecheckin.pot(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/phpunit.xml.dist(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.civix.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.css(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/settings/qrcodecheckin.setting.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/templates/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.tpl(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/templates/qrcode-checkin-event-options.tpl(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/test.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/tests/phpunit/api/v3/Qrcodecheckin/CheckinTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/tests/phpunit/bootstrap.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/autoload.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.github/FUNDING.yml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.gitignore(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.scrutinizer.yml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.travis.yml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/LICENSE(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/README.md(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/composer.json(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/custom_output.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/fpdf.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/html.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/image.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imageWithText.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imagick.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/svg.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/text.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/phpdoc.xml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/phpmd.xml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/phpunit.xml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/public/index.html(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/public/qrcode.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/AlphaNum.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Byte.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Kanji.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Number.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/BitBuffer.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRCodeOutputException.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRFpdf.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImage.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImagick.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRString.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptions.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/AlphaNumTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/ByteTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/KanjiTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/MaskPatternTesterTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/NumberTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/QRMatrixTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Helpers/BitBufferTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Helpers/PolynomialTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRFpdfTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRImagickTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRMarkupTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QROutputTestAbstract.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRCodeTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QROptionsTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRTestAbstract.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/.gitignore(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/.scrutinizer.yml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/.travis.yml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/LICENSE(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/README.md(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/composer.json(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/examples/advanced.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/examples/simple.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/phpmd.xml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/phpunit.xml(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/ContainerTest.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestContainer.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestOptionsTrait.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/ClassLoader.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/InstalledVersions.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/LICENSE(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/autoload_classmap.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/autoload_namespaces.php(1 hunks)
⛔ Files not processed due to max files limit (7)
- wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/autoload_psr4.php
- wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/autoload_real.php
- wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/autoload_static.php
- wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/installed.json
- wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/installed.php
- wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/platform_check.php
- wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/xml/Menu/qrcodecheckin.xml
🧰 Additional context used
🧠 Learnings (58)
📓 Common learnings
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: tarunnjoshi
PR: ColoredCow/goonj#1230
File: wp-content/civi-extensions/civirazorpay/cli/update-recurring-contact-info.php:115-117
Timestamp: 2025-05-27T07:31:44.131Z
Learning: For one-time scripts in the Goonj project, tarunnjoshi prefers to keep hardcoded values rather than creating shared constants or configuration files, prioritizing simplicity over strict adherence to DRY principle to avoid over-engineering temporary code.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.css (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/composer.json (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/test.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.scrutinizer.yml (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/templates/qrcode-checkin-event-options.tpl (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/.travis.yml (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/image.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/phpmd.xml (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imageWithText.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/svg.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/text.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Hook.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.travis.yml (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRCodeOutputException.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/custom_output.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/html.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/templates/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.tpl (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/fpdf.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRFpdf.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/api/v3/Qrcodecheckin/Checkin.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRImagickTest.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/public/index.html (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imagick.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QROutputTestAbstract.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.civix.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImagick.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/settings/qrcodecheckin.setting.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRMarkupTest.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Upgrader.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/README.md (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptions.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRString.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/public/qrcode.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRCodeTest.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRFpdfTest.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImage.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/README.md (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
🧬 Code Graph Analysis (29)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/test.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (2)
QRCode(32-310)render(124-126)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/KanjiTest.php (3)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Kanji.php (1)
Kanji(22-70)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php (1)
QRCodeDataException(17-17)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php (1)
DatainterfaceTestAbstract(19-65)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imageWithText.php (3)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (2)
QRCode(32-310)getMatrix(136-155)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptions.php (1)
QROptions(59-61)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php (1)
QRImageWithText(25-104)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/NumberTest.php (3)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Number.php (1)
Number(22-82)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php (1)
QRCodeDataException(17-17)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php (1)
DatainterfaceTestAbstract(19-65)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestContainer.php (2)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php (1)
SettingsContainerAbstract(19-172)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestOptionsTrait.php (1)
TestOptionsTrait(29-31)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRCodeOutputException.php (2)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
QRCodeException(15-15)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/custom_output.php (3)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (3)
QRCode(32-310)getMatrix(136-155)render(124-126)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptions.php (1)
QROptions(59-61)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php (1)
MyCustomOutput(17-36)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/AlphaNumTest.php (3)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/AlphaNum.php (1)
AlphaNum(22-65)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php (1)
QRCodeDataException(17-17)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php (1)
DatainterfaceTestAbstract(19-65)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/autoload.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/autoload_real.php (1)
ComposerAutoloaderInitd086978d92d734dbe94c03fa3fbf93ff(5-57)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Kanji.php (4)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php (1)
QRDataAbstract(24-351)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php (1)
QRCodeDataException(17-17)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/BitBuffer.php (1)
put(45-52)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Helpers/PolynomialTest.php (3)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php (3)
Polynomial(22-184)gexp(172-182)glog(158-165)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
QRCodeException(15-15)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRTestAbstract.php (1)
QRTestAbstract(18-72)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/examples/advanced.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php (1)
SettingsContainerAbstract(19-172)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/api/v3/Qrcodecheckin/Checkin.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.civix.php (1)
CRM_Qrcodecheckin_ExtensionUtil(9-78)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRTestAbstract.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRCodeTest.php (1)
QRCodeTest(22-140)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestOptionsTrait.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/ContainerTest.php (1)
testConstruct(20-34)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php (3)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImage.php (1)
QRImage(31-208)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QROutputTestAbstract.php (2)
QROutputTestAbstract(22-71)setOutputInterface(53-56)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/AlphaNum.php (4)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php (1)
QRDataAbstract(24-351)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/BitBuffer.php (1)
put(45-52)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php (1)
QRCodeDataException(17-17)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImagick.php (3)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php (2)
QRMatrix(23-733)matrix(228-245)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
QRCodeException(15-15)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php (2)
QROutputAbstract(23-130)saveToFile(106-113)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/settings/qrcodecheckin.setting.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.civix.php (1)
CRM_Qrcodecheckin_ExtensionUtil(9-78)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php (4)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRCodeOutputException.php (1)
QRCodeOutputException(17-17)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImage.php (2)
QRImage(31-208)dumpImage(147-172)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php (2)
matrix(228-245)setLogoSpace(585-635)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php (1)
saveToFile(106-113)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Upgrader.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.civix.php (1)
CRM_Qrcodecheckin_ExtensionUtil(9-78)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/ContainerTest.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestContainer.php (1)
TestContainer(25-29)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRString.php (1)
json(72-74)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
QRCodeException(15-15)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php (6)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
QRCodeException(15-15)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/BitBuffer.php (4)
BitBuffer(17-75)clear(32-37)put(45-52)putBit(59-73)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php (6)
Polynomial(22-184)setNum(90-105)gexp(172-182)multiply(112-127)getNum(80-82)mod(134-150)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php (11)
version(250-252)maskPattern(264-266)QRMatrix(23-733)setFinderPattern(345-373)setSeparators(380-402)setAlignmentPattern(410-432)setTimingPattern(440-455)setVersionNumber(464-481)setFormatInfo(491-522)setDarkModule(334-338)mapData(647-698)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php (1)
QRCodeDataException(17-17)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/BitBuffer.php (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImage.php (5)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php (2)
QRMatrix(23-733)matrix(228-245)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
QRCodeException(15-15)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php (2)
QROutputAbstract(23-130)saveToFile(106-113)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRCodeOutputException.php (1)
QRCodeOutputException(17-17)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php (2)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCode.php (1)
QRCode(32-310)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
QRCodeException(15-15)
🪛 PHPMD (2.15.0)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestContainer.php
28-28: Avoid unused private fields such as '$test3'. (Unused Code Rules)
(UnusedPrivateField)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php
23-23: Avoid unused parameters such as '$file'. (Unused Code Rules)
(UnusedFormalParameter)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.php
85-91: Avoid unused private methods such as 'getDisplayName'. (Unused Code Rules)
(UnusedPrivateMethod)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.civix.php
87-87: Avoid unused parameters such as '$config'. (Unused Code Rules)
(UnusedFormalParameter)
147-147: Avoid unused local variables such as '$key'. (Unused Code Rules)
(UnusedLocalVariable)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
192-192: Avoid unused local variables such as '$y'. (Unused Code Rules)
(UnusedLocalVariable)
193-193: Avoid unused local variables such as '$x'. (Unused Code Rules)
(UnusedLocalVariable)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php
253-253: Avoid unused parameters such as '$job'. (Unused Code Rules)
(UnusedFormalParameter)
253-253: Avoid unused parameters such as '$context'. (Unused Code Rules)
(UnusedFormalParameter)
277-277: Avoid unused local variables such as '$query'. (Unused Code Rules)
(UnusedLocalVariable)
278-278: Avoid unused local variables such as '$absolute'. (Unused Code Rules)
(UnusedLocalVariable)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
622-622: Avoid unused local variables such as '$val'. (Unused Code Rules)
(UnusedLocalVariable)
🪛 LanguageTool
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/LICENSE.txt
[style] ~22-~22: Consider using only “Public” to avoid wordiness.
Context: ...and change the works. By contrast, our General Public Licenses are intended to guarantee your...
(GENERAL_XX)
[style] ~27-~27: Consider using only “Public” to avoid wordiness.
Context: ...e referring to freedom, not price. Our General Public Licenses are designed to make sure that...
(GENERAL_XX)
[style] ~33-~33: Consider using only “Public” to avoid wordiness.
Context: ...hese things. Developers that use our General Public Licenses protect your rights with two s...
(GENERAL_XX)
[style] ~420-~420: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...ight holder, and you cure the violation prior to 30 days after your receipt of the notic...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~431-~431: Consider a more concise word here.
Context: ...are not required to accept this License in order to receive or run a copy of the Program. ...
(IN_ORDER_TO_PREMIUM)
[style] ~433-~433: To make your writing clearer, consider a shorter, more direct phrase.
Context: ...tion of a covered work occurring solely as a consequence of using peer-to-peer transmission to rece...
(AS_A_CONSEQUENCE_OF)
[uncategorized] ~522-~522: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...conveying the work, and under which the third party grants, to any of the parties who would...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[style] ~528-~528: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...nt, or that patent license was granted, prior to 28 March 2007. Nothing in this Licen...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
[style] ~539-~539: ‘So as to’ expresses purpose and is used in formal texts. Consider using “to”.
Context: ...e. If you cannot convey a covered work so as to satisfy simultaneously your obligations...
(SO_AS_TO)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/README.md
[grammar] ~1-~1: Ensure spelling is correct
Context: # QR Code Checkin QRCode Checkin allows you to send an em...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~3-~3: Ensure spelling is correct
Context: ...ws you to send an email that contains a scanable code to the registered participants for...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~26-~26: Consider using “email”.
Context: ...event and place them in a group. Then, send an email to the group, that includes the QR Code im...
(SEND_AN_EMAIL)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/README.md
[style] ~122-~122: This adverb was used twice in the sentence. Consider removing one of them or replacing them with a synonym.
Context: ...e` held only boolean matrix values that only allowed to determine whether a module w...
(ADVERB_REPETITION_PREMIUM)
[locale-violation] ~190-~190: In American English, “take a look” is more commonly used.
Context: ...erface by extending QROutputAbstract. Have a look at the [built-in output modules](https:...
(HAVE_A_LOOK)
[grammar] ~341-~341: Ensure spelling is correct
Context: ... used mask pattern size() | int | the absoulute size of the matrix, including quiet zon...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~390-~390: Ensure spelling is correct
Context: ...n/php-httpinterface) - a PSR-7/15/17/18 implemetation - [php-database](https://github.com/chi...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 Biome (1.9.4)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js
[error] 17-17: Shouldn't redeclare 'match'. Consider to delete it or rename it.
'match' is defined here:
(lint/suspicious/noRedeclare)
🪛 markdownlint-cli2 (0.17.2)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/README.md
37-37: Hard tabs
Column: 1
(MD010, no-hard-tabs)
38-38: Hard tabs
Column: 1
(MD010, no-hard-tabs)
39-39: Hard tabs
Column: 1
(MD010, no-hard-tabs)
40-40: Hard tabs
Column: 1
(MD010, no-hard-tabs)
60-60: Hard tabs
Column: 1
(MD010, no-hard-tabs)
61-61: Hard tabs
Column: 1
(MD010, no-hard-tabs)
91-91: Hard tabs
Column: 1
(MD010, no-hard-tabs)
92-92: Hard tabs
Column: 1
(MD010, no-hard-tabs)
93-93: Hard tabs
Column: 1
(MD010, no-hard-tabs)
94-94: Hard tabs
Column: 1
(MD010, no-hard-tabs)
95-95: Hard tabs
Column: 1
(MD010, no-hard-tabs)
96-96: Hard tabs
Column: 1
(MD010, no-hard-tabs)
97-97: Hard tabs
Column: 1
(MD010, no-hard-tabs)
98-98: Hard tabs
Column: 1
(MD010, no-hard-tabs)
99-99: Hard tabs
Column: 1
(MD010, no-hard-tabs)
100-100: Hard tabs
Column: 1
(MD010, no-hard-tabs)
101-101: Hard tabs
Column: 1
(MD010, no-hard-tabs)
102-102: Hard tabs
Column: 1
(MD010, no-hard-tabs)
103-103: Hard tabs
Column: 1
(MD010, no-hard-tabs)
104-104: Hard tabs
Column: 1
(MD010, no-hard-tabs)
108-108: Hard tabs
Column: 1
(MD010, no-hard-tabs)
114-114: Hard tabs
Column: 1
(MD010, no-hard-tabs)
115-115: Hard tabs
Column: 1
(MD010, no-hard-tabs)
116-116: Hard tabs
Column: 1
(MD010, no-hard-tabs)
117-117: Hard tabs
Column: 1
(MD010, no-hard-tabs)
122-122: Hard tabs
Column: 1
(MD010, no-hard-tabs)
142-142: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
(MD055, table-pipe-style)
142-142: Table column count
Expected: 3; Actual: 2; Too few cells, row will be missing data
(MD056, table-column-count)
143-143: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
(MD055, table-pipe-style)
143-143: Table column count
Expected: 3; Actual: 2; Too few cells, row will be missing data
(MD056, table-column-count)
145-145: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
(MD055, table-pipe-style)
145-145: Table column count
Expected: 3; Actual: 2; Too few cells, row will be missing data
(MD056, table-column-count)
146-146: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
(MD055, table-pipe-style)
146-146: Table column count
Expected: 3; Actual: 2; Too few cells, row will be missing data
(MD056, table-column-count)
148-148: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
(MD055, table-pipe-style)
148-148: Table column count
Expected: 3; Actual: 2; Too few cells, row will be missing data
(MD056, table-column-count)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/README.md
28-28: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
29-29: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
30-30: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
44-44: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
45-45: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
46-46: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
79-79: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/README.md
39-39: Unordered list indentation
Expected: 4; Actual: 5
(MD007, ul-indent)
40-40: Unordered list indentation
Expected: 4; Actual: 5
(MD007, ul-indent)
41-41: Unordered list indentation
Expected: 4; Actual: 5
(MD007, ul-indent)
51-51: Hard tabs
Column: 1
(MD010, no-hard-tabs)
52-52: Hard tabs
Column: 1
(MD010, no-hard-tabs)
53-53: Hard tabs
Column: 1
(MD010, no-hard-tabs)
54-54: Hard tabs
Column: 1
(MD010, no-hard-tabs)
68-68: Hard tabs
Column: 1
(MD010, no-hard-tabs)
69-69: Hard tabs
Column: 1
(MD010, no-hard-tabs)
80-80: Hard tabs
Column: 1
(MD010, no-hard-tabs)
81-81: Hard tabs
Column: 1
(MD010, no-hard-tabs)
82-82: Hard tabs
Column: 1
(MD010, no-hard-tabs)
101-101: Hard tabs
Column: 1
(MD010, no-hard-tabs)
103-103: Hard tabs
Column: 1
(MD010, no-hard-tabs)
104-104: Hard tabs
Column: 1
(MD010, no-hard-tabs)
105-105: Hard tabs
Column: 1
(MD010, no-hard-tabs)
107-107: Hard tabs
Column: 1
(MD010, no-hard-tabs)
108-108: Hard tabs
Column: 1
(MD010, no-hard-tabs)
109-109: Hard tabs
Column: 1
(MD010, no-hard-tabs)
110-110: Hard tabs
Column: 1
(MD010, no-hard-tabs)
111-111: Hard tabs
Column: 1
(MD010, no-hard-tabs)
112-112: Hard tabs
Column: 1
(MD010, no-hard-tabs)
113-113: Hard tabs
Column: 1
(MD010, no-hard-tabs)
115-115: Hard tabs
Column: 1
(MD010, no-hard-tabs)
150-150: Hard tabs
Column: 1
(MD010, no-hard-tabs)
151-151: Hard tabs
Column: 1
(MD010, no-hard-tabs)
152-152: Hard tabs
Column: 1
(MD010, no-hard-tabs)
153-153: Hard tabs
Column: 1
(MD010, no-hard-tabs)
154-154: Hard tabs
Column: 1
(MD010, no-hard-tabs)
155-155: Hard tabs
Column: 1
(MD010, no-hard-tabs)
156-156: Hard tabs
Column: 1
(MD010, no-hard-tabs)
157-157: Hard tabs
Column: 1
(MD010, no-hard-tabs)
158-158: Hard tabs
Column: 1
(MD010, no-hard-tabs)
159-159: Hard tabs
Column: 1
(MD010, no-hard-tabs)
160-160: Hard tabs
Column: 1
(MD010, no-hard-tabs)
161-161: Hard tabs
Column: 1
(MD010, no-hard-tabs)
162-162: Hard tabs
Column: 1
(MD010, no-hard-tabs)
163-163: Hard tabs
Column: 1
(MD010, no-hard-tabs)
164-164: Hard tabs
Column: 1
(MD010, no-hard-tabs)
165-165: Hard tabs
Column: 1
(MD010, no-hard-tabs)
166-166: Hard tabs
Column: 1
(MD010, no-hard-tabs)
167-167: Hard tabs
Column: 1
(MD010, no-hard-tabs)
168-168: Hard tabs
Column: 1
(MD010, no-hard-tabs)
169-169: Hard tabs
Column: 1
(MD010, no-hard-tabs)
170-170: Hard tabs
Column: 1
(MD010, no-hard-tabs)
171-171: Hard tabs
Column: 1
(MD010, no-hard-tabs)
172-172: Hard tabs
Column: 1
(MD010, no-hard-tabs)
173-173: Hard tabs
Column: 1
(MD010, no-hard-tabs)
178-178: Hard tabs
Column: 1
(MD010, no-hard-tabs)
179-179: Hard tabs
Column: 1
(MD010, no-hard-tabs)
184-184: Hard tabs
Column: 1
(MD010, no-hard-tabs)
185-185: Hard tabs
Column: 1
(MD010, no-hard-tabs)
195-195: Hard tabs
Column: 1
(MD010, no-hard-tabs)
196-196: Hard tabs
Column: 1
(MD010, no-hard-tabs)
197-197: Hard tabs
Column: 1
(MD010, no-hard-tabs)
198-198: Hard tabs
Column: 1
(MD010, no-hard-tabs)
199-199: Hard tabs
Column: 1
(MD010, no-hard-tabs)
200-200: Hard tabs
Column: 1
(MD010, no-hard-tabs)
202-202: Hard tabs
Column: 1
(MD010, no-hard-tabs)
203-203: Hard tabs
Column: 1
(MD010, no-hard-tabs)
204-204: Hard tabs
Column: 1
(MD010, no-hard-tabs)
205-205: Hard tabs
Column: 1
(MD010, no-hard-tabs)
207-207: Hard tabs
Column: 1
(MD010, no-hard-tabs)
208-208: Hard tabs
Column: 1
(MD010, no-hard-tabs)
209-209: Hard tabs
Column: 1
(MD010, no-hard-tabs)
211-211: Hard tabs
Column: 1
(MD010, no-hard-tabs)
212-212: Hard tabs
Column: 1
(MD010, no-hard-tabs)
213-213: Hard tabs
Column: 1
(MD010, no-hard-tabs)
214-214: Hard tabs
Column: 1
(MD010, no-hard-tabs)
215-215: Hard tabs
Column: 1
(MD010, no-hard-tabs)
217-217: Hard tabs
Column: 1
(MD010, no-hard-tabs)
218-218: Hard tabs
Column: 1
(MD010, no-hard-tabs)
224-224: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
226-226: Hard tabs
Column: 1
(MD010, no-hard-tabs)
228-228: Hard tabs
Column: 1
(MD010, no-hard-tabs)
235-235: Hard tabs
Column: 1
(MD010, no-hard-tabs)
237-237: Hard tabs
Column: 1
(MD010, no-hard-tabs)
243-243: Hard tabs
Column: 1
(MD010, no-hard-tabs)
244-244: Hard tabs
Column: 1
(MD010, no-hard-tabs)
245-245: Hard tabs
Column: 1
(MD010, no-hard-tabs)
246-246: Hard tabs
Column: 1
(MD010, no-hard-tabs)
247-247: Hard tabs
Column: 1
(MD010, no-hard-tabs)
248-248: Hard tabs
Column: 1
(MD010, no-hard-tabs)
256-256: Hard tabs
Column: 1
(MD010, no-hard-tabs)
275-275: Multiple spaces after hash on atx style heading
(MD019, no-multiple-space-atx)
276-276: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
286-286: Multiple spaces after hash on atx style heading
(MD019, no-multiple-space-atx)
287-287: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
301-301: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
317-317: Table pipe style
Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
(MD055, table-pipe-style)
317-317: Table column count
Expected: 5; Actual: 4; Too few cells, row will be missing data
(MD056, table-column-count)
334-334: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
348-348: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
375-375: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (70)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.github/FUNDING.yml (1)
1-2: No functional impact – safe to keep or dropThe funding link is harmless and does not affect runtime behaviour.
Consider stripping misc meta-files from vendor trees when committing to keep the repository lean, but not a blocker.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/LICENSE (1)
1-21: Double-check AGPL-compatibility before shippingThe bundled QR-code library is MIT-licensed, which is generally compatible with your extension’s AGPL-3.0.
Ensure:
- Copyright & license notices remain intact in redistributed builds.
- Down-stream builds (e.g. WordPress ZIP) still contain this file.
If your CI strips vendor licences, you may inadvertently violate §4 of the AGPL.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/.scrutinizer.yml (1)
1-5: No issues – vendor analysis scope correctly minimizedExcluding
examples/,tests/, andvendor/for Scrutinizer is appropriate and prevents noise in CI reports.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/autoload_namespaces.php (1)
1-9: Generated file – no action requiredComposer-generated autoload map is as expected (empty PSR-0 set).
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/.gitignore (1)
1-5: Standard ignore rules – looks goodKeeping build artefacts and IDE files out of VCS is sensible.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QRCodeException.php (1)
13-15: Vendor class – nothing to flagThin wrapper over
\Exceptionis typical for library-specific errors; vendor code should remain untouched.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/test.php (1)
5-5: Guard against missing vendor dir
require 'vendor/autoload.php'will fatally error if someone installs the extension via CiviCRM’s usual download mechanism (zip).
Add a defensive existence check to avoid WSODs:-$loader = require 'vendor/autoload.php'; +if(!file_exists(__DIR__.'/vendor/autoload.php')){ + throw new \RuntimeException('Composer autoloader not found; run `composer install`.'); +} +$loader = require __DIR__.'/vendor/autoload.php';wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/LICENSE (1)
1-22: License file included – looks goodNo action required; keeping upstream licenses in the repo ensures compliance.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php (1)
13-17: Minimal exception class looks goodStraightforward extension of the library’s base exception; no issues spotted.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRCodeOutputException.php (1)
13-17: LGTM – mirrors the pattern used elsewhere in the libNothing to add.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/autoload_classmap.php (1)
1-10: Acceptable – standard Composer artefactAutoload map is generated code; checksum matches upstream layout. No action required.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/composer.json (1)
22-28: Library still targets PHP 7.2The min-version
"php": "^7.2"is fine, but if the main application is on PHP 8.x and we rely on PHP 8-only features elsewhere, composer will not catch that mismatch.
Consider adding"php": ">=8.0"in the rootcomposer.jsonto enforce a consistent runtime.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Hook.php (1)
8-25: LGTM! Clean hook implementation.The hook class follows CiviCRM conventions correctly with proper documentation, parameter handling, and hook invocation pattern.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/AlphaNumTest.php (1)
17-44: LGTM! Vendor test file follows proper structure.This third-party library test correctly extends the abstract base class and properly tests both valid alphanumeric encoding and exception handling for illegal characters.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/imageWithText.php (1)
13-34: LGTM! Well-structured example demonstrating library usage.This vendor example correctly demonstrates QR code generation with text overlay using proper namespace imports, option configuration, and output handling.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/NumberTest.php (1)
17-44: LGTM! Consistent test structure for numeric encoding.This vendor test file properly follows the established pattern for data interface testing, with appropriate test data, expected output validation, and exception handling.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/KanjiTest.php (1)
1-50: Well-structured test class following PHPUnit best practices.This vendor library test file properly validates Kanji character encoding for QR codes, including appropriate exception testing for illegal characters. The test structure follows established patterns and uses proper assertions.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/text.php (1)
19-63: Well-structured QR code demonstration.The example effectively shows both basic and advanced usage patterns for text-based QR code generation, including comprehensive module value customization options.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/phpunit.xml.dist (1)
2-2: PHPUnit configuration follows best practices.The configuration properly enables error conversion, sets up test discovery, and integrates with CiviCRM's test framework appropriately.
Also applies to: 13-17
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/examples/simple.php (1)
1-31: Clear and effective settings container demonstration.This example properly demonstrates the key features of the SettingsContainerAbstract class, including property management, JSON serialization, and handling of undefined properties.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/MaskPatternTesterTest.php (1)
23-27: Focused test providing essential coverage for mask pattern evaluation.The test properly validates the penalty scoring mechanism used in QR code mask pattern selection, which is critical for generating valid QR codes.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/LICENSE.txt (1)
1-668: License file is appropriate.This is a standard AGPLv3 license file. No code review required for legal documents.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Byte.php (1)
22-47: LGTM: Well-structured data encoding implementation.This class demonstrates good adherence to software development best practices:
- Single responsibility principle (handles only byte data encoding)
- Clean inheritance from abstract base class
- Focused
writemethod with clear logic- Proper use of class constants and properties
The implementation is readable and maintainable.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Helpers/PolynomialTest.php (1)
19-42: LGTM: Well-structured test class following best practices.This test class demonstrates excellent adherence to testing best practices:
- Single responsibility (focused on testing Polynomial class only)
- Clear, descriptive test method names
- Comprehensive coverage including edge cases and exception scenarios
- Proper use of PHPUnit assertions and expectation methods
- Clean setup method with appropriate test fixture initialization
The test coverage for both successful operations and error conditions is particularly good.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Number.php (2)
37-56: Numeric encoding logic follows QR code specification correctly.The implementation properly handles:
- Groups of 3 digits encoded in 10 bits
- Remaining 1 digit encoded in 4 bits
- Remaining 2 digits encoded in 7 bits
This aligns with the QR code specification for numeric mode encoding.
64-80: Robust input validation with appropriate error handling.The
parseIntmethod properly validates each character against the numeric character map and throws a descriptive exception for invalid input. The bit manipulation logic correctly converts ASCII digits to numeric values.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/fpdf.php (2)
9-9: Hardcoded URL is appropriate for example script.Using a fixed YouTube URL as test data is acceptable practice for demonstration purposes in example scripts.
45-47: Direct PDF output approach is suitable for examples.Setting the content-type header and echoing the rendered output directly is appropriate for a simple example demonstrating FPDF integration.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/ByteTest.php (1)
19-35: Good test data selection for byte encoding validation.Using a Unicode string
'[¯\_(ツ)_/¯]'effectively tests the byte encoding functionality with multi-byte characters. The expected byte array provides comprehensive validation of the encoding output.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/info.xml (1)
2-36: Well-structured CiviCRM extension descriptor.The extension metadata is properly configured with:
- Appropriate licensing and maintainer information
- Correct classloader setup for PSR-0 and PSR-4 namespaces
- Standard CiviCRM mixins for menu, settings, and Smarty integration
- Proper upgrader class declaration
This follows CiviCRM extension development best practices.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRImagickTest.php (3)
24-32: Good extension check in setUp method!Properly checking for the imagick extension availability before running tests prevents false failures.
34-43: Solid test implementation for image output!The test appropriately verifies output consistency by comparing the dumped content with the cached file.
58-64: Well-structured resource return test!Properly verifies that the dump method returns an Imagick instance when
returnResourceis enabled.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/composer.json (1)
26-30: Outdated PHP version requirement in vendor/chillerlan/php-qrcode/composer.jsonThe composer.json currently requires PHP ^7.2, which reached end-of-life on November 30, 2020 (current stable is PHP 8.4.10 as of July 3, 2025). Please bump this to a maintained version to keep receiving security updates.
– File:
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/composer.json
Lines: 26-30Suggested diff:
- "php": "^7.2", + "php": "^7.4 || ^8.0",Likely an incorrect or invalid review comment.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php (1)
106-113: Good error handling in saveToFile method!The method properly checks directory writability before attempting to write and throws a descriptive exception on failure.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php (1)
17-56: Well-structured test implementation.The test class follows PHPUnit best practices with proper data providers, focused test methods, and appropriate assertions for validating QR string output functionality.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRString.php (1)
22-76: Clean implementation following established patterns.The class properly extends the abstract base, implements required methods, and maintains clear separation between text and JSON output formats. The code follows the library's established patterns and conventions.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/api/v3/Qrcodecheckin/Checkin.php (1)
26-30: Document the security implications of permission bypass.The comments mention bypassing normal permissions, which is a significant security consideration that should be thoroughly documented and reviewed to ensure it doesn't create unintended access patterns.
Consider documenting this permission model in a security policy or design document to ensure the bypass is intentional and properly scoped.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/examples/advanced.php (1)
1-47: Example code demonstrates good patterns.This example effectively demonstrates the settings container's trait-based constructor mechanism and shows practical usage patterns. The code is well-documented and follows good practices for an example file.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/ContainerTest.php (1)
1-105: Comprehensive test coverage with good practices.The test class demonstrates good testing practices:
- Clear test method names describing what's being tested
- Proper use of assertions
- Exception testing with expectException()
- Testing both positive and negative cases
The tests provide good coverage of the container functionality including construction, property access, serialization, and error conditions.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/BitBuffer.php (1)
45-52: LGTM! Well-implemented fluent interface method.The
put()method correctly implements bit manipulation logic and maintains the fluent interface pattern for method chaining.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/Kanji.php (2)
22-39: LGTM! Well-structured class with proper inheritance.The class correctly extends
QRDataAbstract, defines appropriate constants for the Kanji data mode, and implements the required abstract methods. The length calculation usingmb_strlenwith SJIS encoding is appropriate for double-byte Kanji characters.
44-68: LGTM! Robust implementation with proper error handling.The
write()method correctly:
- Validates Kanji character ranges according to Shift JIS specification
- Provides clear error messages with character positions
- Handles the encoding transformation properly
- Ensures all characters are processed as pairs
The exception handling ensures data integrity and provides debugging information.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRTestAbstract.php (2)
18-32: LGTM! Well-designed abstract test utility class.The class provides a clean foundation for reflection-based testing with proper initialization in
setUp(). The use of a protected$FQCNproperty allows subclasses to specify their target class for reflection.
34-69: LGTM! Excellent reflection utilities for internal testing.The helper methods provide clean access to protected/private members:
getMethod()andgetProperty()properly set accessibilitysetProperty()provides convenient property manipulation- Type hints improve code clarity and IDE support
This follows testing best practices for accessing internal class behavior.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/public/index.html (1)
141-142: Consider security implications of external CDN dependencies.Loading JavaScript libraries from external CDNs introduces potential security risks and availability concerns.
Consider hosting these libraries locally or using Subresource Integrity (SRI) hashes:
-<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.3/prototype.js" ></script > -<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.js" ></script > +<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.3/prototype.js" + integrity="sha384-..." crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.js" + integrity="sha384-..." crossorigin="anonymous"></script>wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QROptionsTest.php (1)
1-80: Well-structured test coverage!The test class thoroughly validates QROptions behavior including boundary conditions, clamping logic, and exception handling.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php (1)
67-67: Escape moduleValues before outputting in QRMarkup.phpEven though the library’s public endpoint sanitizes module values to 6-digit hex codes, it’s best practice to always escape dynamic data at the point of output. In
vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php, wrap the color value inhtmlspecialchars(or a dedicated CSS-escaping function) to guard against any unexpected input.• File:
vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php
– Line 67 and likewise line 131:- $html .= '<span style="background: '.$this->moduleValues[$M_TYPE].';"></span>'; + $color = htmlspecialchars((string)$this->moduleValues[$M_TYPE], ENT_QUOTES, 'UTF-8'); + $html .= '<span style="background: '.$color.';"></span>';This ensures that even if
moduleValueswere ever set from untrusted data, you won’t introduce an XSS vector.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/README.md (1)
1-154: Vendor documentation file - no review needed.This is documentation for a third-party dependency (
chillerlan/php-settings-container) and should not be modified as part of this PR. The static analysis formatting issues are pre-existing in the vendor package.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptions.php (1)
59-61: Clean implementation following established patterns.The
QROptionsclass properly extendsSettingsContainerAbstractand uses the trait pattern for composition. The extensive@propertydocumentation provides excellent IDE support and developer experience.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/public/qrcode.php (1)
46-53: Improve input validation and sanitization.The current validation only checks hex color format but doesn't sanitize other potential malicious input.
Add comprehensive input validation:
$moduleValues = array_map(function($v){ + // Sanitize input first + $v = filter_var($v, FILTER_SANITIZE_STRING); if(preg_match('/[a-f\d]{6}/i', $v) === 1){ return in_array($_POST['output_type'], ['png', 'jpg', 'gif']) ? array_map('hexdec', str_split($v, 2)) : '#'.$v ; } return null; }, $moduleValues);Likely an incorrect or invalid review comment.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/InstalledVersions.php (1)
1-237: Auto-generated Composer file - no review needed.This file is automatically generated by Composer and should not be manually modified. It contains package version metadata for dependency management.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php (1)
1-104: Clean interface design with proper documentation.The
SettingsContainerInterfacefollows interface segregation principle well and provides a clear contract for settings containers. Good use of JsonSerializable extension.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRMarkupTest.php (1)
45-62: Good test coverage for markup output validation.The test properly validates output by comparing with expected cached content, handles different output types, and correctly strips headers/footers.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/QRCodeTest.php (1)
103-115: Excellent test for custom output interface.Good coverage of custom output functionality with proper configuration and expected output validation.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.civix.php (2)
3-3: Auto-generated file - modifications may be lost.This file is auto-generated by Civix. Any manual changes might be overwritten during future code generation.
Ensure any customizations are made in appropriate non-generated files instead.
87-98: Unused parameter is part of hook signature.The
$configparameter appears unused but is required by the CiviCRM hook signature. The static analysis warning can be safely ignored.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Data/QRMatrixTest.php (1)
1-260: Well-structured test coverage!The test file provides comprehensive coverage for the QRMatrix class with clear test method names and good edge case handling.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/composer/ClassLoader.php (1)
1-445: Vendor file - no review needed.This is Composer's generated autoloader and should not be modified.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Output/QRImage.php (1)
54-82: Robust validation and error handlingThe constructor properly checks for the GD extension, and
setModuleValues()validates RGB color arrays with appropriate defaults. Good defensive programming.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php (1)
285-376: Well-implemented validation methodsThe setter methods properly validate and clamp values:
- Version numbers are kept within valid ranges
- ECC level validation throws descriptive exceptions
- RGB values are validated and clamped to 0-255
Excellent defensive programming practices.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php (2)
128-138: Secure hash generation implementationGood use of SHA-256 with multiple entropy sources (participant ID, user hash, and site key) to generate secure, unique codes.
253-255: Hook implementation follows CiviCRM conventionsThe function correctly implements the
hook_civicrm_tokenValuessignature. The unused parameters are required by CiviCRM's hook interface.wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php (1)
102-251: Proper QR code data encoding implementationThe data encoding methods correctly implement the QR code specification:
- Kanji mode data is properly converted to SJIS encoding
- Bit buffer writing includes proper mode indicators, length bits, and padding patterns (0xEC, 0x11)
- Buffer overflow protection prevents data corruption
Well-implemented according to QR code standards.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php (6)
25-172: QR code specification data is correctly implemented.The class constants and pattern lookup tables properly implement the QR code standard specifications for alignment patterns, version patterns, and format patterns across all supported versions and error correction levels.
207-221: Constructor properly validates inputs and initializes matrix.The validation logic correctly ensures QR version is within the valid range (1-40) and ECC level is supported. The module count calculation follows the QR code standard formula.
228-326: Matrix manipulation methods are well-implemented.The bit-shifting approach to store both module type and value in a single integer is an efficient design. The boolean conversion in the matrix() method provides flexibility for different output formats.
334-455: QR code pattern placement methods correctly implement standards.The finder pattern, separator, alignment pattern, and timing pattern methods properly implement the QR code structural elements according to the specification. The positioning logic and pattern drawing are accurate.
647-698: Data mapping algorithm correctly implements QR code specification.The complex zigzag data placement pattern and mask application logic properly follows the QR code standard for mapping binary data onto the matrix while avoiding functional patterns.
715-731: Mask pattern implementations correctly follow QR code standards.The eight mask pattern formulas are accurately implemented using closures, providing both correct functionality and good performance for the data mapping process.
| <rule ref="rulesets/codesize.xml/CyclomaticComplexity"> | ||
| <priority>1</priority> | ||
| <properties> | ||
| <property name="maximum" value="200" /> | ||
| </properties> | ||
| </rule> |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Cyclomatic-Complexity threshold of 200 neuters the rule
Setting the limit this high effectively turns the rule off. Real-world defaults hover around 10–20; even 50 is generous for generated code. Keeping it at 200 forfeits the early-warning benefit and hides genuine hotspots.
- <property name="maximum" value="200" />
+ <!-- A more realistic ceiling; raise only when strongly justified -->
+ <property name="maximum" value="20" />📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <rule ref="rulesets/codesize.xml/CyclomaticComplexity"> | |
| <priority>1</priority> | |
| <properties> | |
| <property name="maximum" value="200" /> | |
| </properties> | |
| </rule> | |
| <rule ref="rulesets/codesize.xml/CyclomaticComplexity"> | |
| <priority>1</priority> | |
| <properties> | |
| <!-- A more realistic ceiling; raise only when strongly justified --> | |
| <property name="maximum" value="20" /> | |
| </properties> | |
| </rule> |
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/phpmd.xml
around lines 13 to 18, the CyclomaticComplexity rule's maximum threshold is set
to 200, which effectively disables the rule. Lower this value to a more
reasonable number such as between 10 and 20 to enable meaningful complexity
checks and catch potential hotspots early.
| $data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s'; | ||
| echo '<img src="'.(new QRCode)->render($data).'" />'; |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Remove rick-roll demo & keep example code out of distributable source
The file hard-codes a public YouTube URL and produces raw HTML.
Shipping such demo/testing artefacts inside the extension:
- bloats the production package,
- exposes an irrelevant external link,
- risks accidental execution in prod.
Either delete the file altogether or move it under a proper examples/ (or tests/) directory and exclude it from the extension’s release package.
- $data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
- echo '<img src="'.(new QRCode)->render($data).'" />';
+ // Example only – do **NOT** ship in production
+ // $data = 'https://example.com';
+ // echo '<img src="'.(new QRCode)->render($data).'" />';📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| $data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s'; | |
| echo '<img src="'.(new QRCode)->render($data).'" />'; | |
| // Example only – do **NOT** ship in production | |
| // $data = 'https://example.com'; | |
| // echo '<img src="'.(new QRCode)->render($data).'" />'; |
🤖 Prompt for AI Agents
In wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/test.php at
lines 9-10, the code includes a hard-coded YouTube URL used for demo purposes,
which should not be part of the distributable source. To fix this, either delete
this test.php file entirely or move it to a dedicated examples/ or tests/
directory that is excluded from the production release package to avoid bloating
the extension and exposing irrelevant external links.
| CRM.$('tr#qrcode-enabled-event-tr').insertAfter('tr.crm-event-manage-eventinfo-form-block-is_active'); | ||
| </script> |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Wrap DOM manipulation in a ready-handler
If this partial is included in the <head> or anywhere before the target rows are in the DOM, the call will silently fail. Guard with CRM.$(function(){ … }) for robustness across templates and CiviCRM versions.
-CRM.$('tr#qrcode-enabled-event-tr').insertAfter('tr.crm-event-manage-eventinfo-form-block-is_active');
+CRM.$(function () {
+ CRM.$('tr#qrcode-enabled-event-tr')
+ .insertAfter('tr.crm-event-manage-eventinfo-form-block-is_active');
+});📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| CRM.$('tr#qrcode-enabled-event-tr').insertAfter('tr.crm-event-manage-eventinfo-form-block-is_active'); | |
| </script> | |
| CRM.$(function () { | |
| CRM.$('tr#qrcode-enabled-event-tr') | |
| .insertAfter('tr.crm-event-manage-eventinfo-form-block-is_active'); | |
| }); | |
| </script> |
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/templates/qrcode-checkin-event-options.tpl
around lines 13 to 14, the DOM manipulation call that moves the table row is
executed immediately, which can fail if the target elements are not yet loaded
in the DOM. To fix this, wrap the
CRM.$('tr#qrcode-enabled-event-tr').insertAfter(...) call inside a
CRM.$(function() { ... }) ready-handler to ensure it runs only after the DOM is
fully loaded.
| require_once __DIR__.'/../vendor/autoload.php'; | ||
|
|
There was a problem hiding this comment.
Autoloader path is wrong once packaged inside our extension
Inside an already-installed vendor tree, __DIR__.'/../vendor/autoload.php' points outside the extension and will fail if somebody accesses the file directly.
At minimum, guard it or remove the example from production builds to reduce attack surface.
-require_once __DIR__.'/../vendor/autoload.php';
+# safeguard: bail out if dependency autoloader is not present
+($loader = @include __DIR__.'/../../autoload.php') || exit('autoload not found');🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/examples/image.php
at lines 15-16, the autoloader path __DIR__.'/../vendor/autoload.php' is
incorrect when the extension is packaged and accessed directly, causing
failures. To fix this, add a conditional check to verify the autoloader file
exists before requiring it, or remove this example file from production builds
entirely to prevent direct access and reduce security risks.
| class TestContainer extends SettingsContainerAbstract{ | ||
| use TestOptionsTrait; | ||
|
|
||
| private $test3 = 'what'; |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Address unused private field flagged by static analysis.
The static analysis tool correctly identifies that $test3 is declared but never used within this class. Since this is a test container, verify if this property should be accessed through the parent class's magic methods or if it's genuinely unused.
🏁 Script executed:
#!/bin/bash
# Check if $test3 is used elsewhere in the test suite or accessed via magic methods
rg -A 5 -B 5 "test3" --type phpLength of output: 12360
Unused Test Property $test3 Should Be Removed
The private $test3 field is never referenced by the container’s magic methods (see ContainerTest::testConstruct and testGet, which both expect ->test3 to stay null), and its default value is ignored. Remove the declaration to satisfy static analysis and eliminate dead code.
• File:
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestContainer.php
• Remove line:
- private $test3 = 'what';📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| private $test3 = 'what'; |
🧰 Tools
🪛 PHPMD (2.15.0)
28-28: Avoid unused private fields such as '$test3'. (Unused Code Rules)
(UnusedPrivateField)
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-settings-container/tests/TestContainer.php
at line 28, remove the private property declaration for $test3 since it is
unused, not referenced by any container magic methods, and its default value is
ignored. This will clean up dead code and satisfy static analysis.
| private function getDisplayName() { | ||
| $sql = "SELECT display_name FROM civicrm_contact c JOIN civicrm_participant p ON c.id = p.contact_id | ||
| WHERE p.id = %0"; | ||
| $dao = CRM_Core_DAO::executeQuery($sql, array(0 => array($this->participant_id, 'Integer'))); | ||
| $dao->fetch(); | ||
| return $dao->display_name; | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Remove unused private method.
Static analysis correctly identifies this method as unused. Dead code should be removed to maintain code quality.
- private function getDisplayName() {
- $sql = "SELECT display_name FROM civicrm_contact c JOIN civicrm_participant p ON c.id = p.contact_id
- WHERE p.id = %0";
- $dao = CRM_Core_DAO::executeQuery($sql, array(0 => array($this->participant_id, 'Integer')));
- $dao->fetch();
- return $dao->display_name;
- }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| private function getDisplayName() { | |
| $sql = "SELECT display_name FROM civicrm_contact c JOIN civicrm_participant p ON c.id = p.contact_id | |
| WHERE p.id = %0"; | |
| $dao = CRM_Core_DAO::executeQuery($sql, array(0 => array($this->participant_id, 'Integer'))); | |
| $dao->fetch(); | |
| return $dao->display_name; | |
| } |
🧰 Tools
🪛 PHPMD (2.15.0)
85-91: Avoid unused private methods such as 'getDisplayName'. (Unused Code Rules)
(UnusedPrivateMethod)
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.php
around lines 85 to 91, the private method getDisplayName is not used anywhere in
the codebase. To improve code quality and maintainability, remove this entire
private method including its definition and body.
| var $participant_id = NULL; | ||
| var $code = NULL; |
There was a problem hiding this comment.
Add proper visibility modifiers and declare missing property.
Class properties are missing visibility modifiers and the $hash property used in the code is not declared.
- var $participant_id = NULL;
- var $code = NULL;
+ private $participant_id = NULL;
+ private $code = NULL;
+ private $hash = NULL;🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.php
around lines 5 to 6, add explicit visibility modifiers (such as public,
protected, or private) to the class properties $participant_id and $code. Also,
declare the missing $hash property with an appropriate visibility modifier to
ensure all used properties are properly defined.
| $sql = "SELECT title, display_name, st.name as participant_status, fee_level, fee_amount, role_id FROM civicrm_contact c | ||
| JOIN civicrm_participant p ON c.id = p.contact_id | ||
| JOIN civicrm_event e ON e.id = p.event_id | ||
| JOIN civicrm_participant_status_type st ON st.id = p.status_id | ||
| WHERE p.id = %0"; | ||
| $dao = CRM_Core_DAO::executeQuery($sql, array(0 => array($this->participant_id, 'Integer'))); | ||
| $dao->fetch(); | ||
| $this->assign('event_title', $dao->title); | ||
| $this->assign('display_name', $dao->display_name); | ||
| $this->assign('participant_status', $dao->participant_status); | ||
| $this->assign('fee_level', $dao->fee_level); | ||
| $this->assign('fee_amount', $dao->fee_amount); | ||
| $roles = CRM_Core_PseudoConstant::get('CRM_Event_DAO_Participant', 'role_id'); | ||
| $this->assign('role', $roles[$dao->role_id]); | ||
|
|
||
| if ($dao->participant_status == 'Registered') { | ||
| $this->assign('update_button', TRUE); | ||
| $this->assign('status_class', 'qrcheckin-status-registered'); | ||
| } | ||
| elseif ($dao->participant_status == 'Attended') { | ||
| $this->assign('status_class', 'qrcheckin-status-attended'); | ||
| } | ||
| else { | ||
| $this->assign('status_class', 'qrcheckin-status-other'); | ||
| } | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Refactor setDetails() method to follow single responsibility principle.
This method violates the single responsibility principle by handling SQL queries, data assignment, and UI logic. It also has potential SQL injection vulnerabilities despite using parameterized queries correctly.
Consider breaking this into smaller methods:
private function setDetails() {
+ $participant_data = $this->getParticipantData();
+ $this->assignParticipantDetails($participant_data);
+ $this->setStatusClass($participant_data['participant_status']);
+ }
+
+ private function getParticipantData() {
$sql = "SELECT title, display_name, st.name as participant_status, fee_level, fee_amount, role_id FROM civicrm_contact c
JOIN civicrm_participant p ON c.id = p.contact_id
JOIN civicrm_event e ON e.id = p.event_id
JOIN civicrm_participant_status_type st ON st.id = p.status_id
WHERE p.id = %0";
$dao = CRM_Core_DAO::executeQuery($sql, array(0 => array($this->participant_id, 'Integer')));
$dao->fetch();
+ return [
+ 'title' => $dao->title,
+ 'display_name' => $dao->display_name,
+ 'participant_status' => $dao->participant_status,
+ 'fee_level' => $dao->fee_level,
+ 'fee_amount' => $dao->fee_amount,
+ 'role_id' => $dao->role_id
+ ];
+ }
+
+ private function assignParticipantDetails($data) {
- $dao = CRM_Core_DAO::executeQuery($sql, array(0 => array($this->participant_id, 'Integer')));
- $dao->fetch();
- $this->assign('event_title', $dao->title);
- $this->assign('display_name', $dao->display_name);
- $this->assign('participant_status', $dao->participant_status);
- $this->assign('fee_level', $dao->fee_level);
- $this->assign('fee_amount', $dao->fee_amount);
+ $this->assign('event_title', $data['title']);
+ $this->assign('display_name', $data['display_name']);
+ $this->assign('participant_status', $data['participant_status']);
+ $this->assign('fee_level', $data['fee_level']);
+ $this->assign('fee_amount', $data['fee_amount']);
$roles = CRM_Core_PseudoConstant::get('CRM_Event_DAO_Participant', 'role_id');
- $this->assign('role', $roles[$dao->role_id]);
+ $this->assign('role', $roles[$data['role_id']]);
+ }Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.php
around lines 58 to 83, the setDetails() method mixes SQL querying, data
assignment, and UI logic, violating the single responsibility principle.
Refactor by extracting the SQL query and data fetching into a separate method
that returns participant data, another method to assign data to the template,
and a third method to handle UI logic like setting status classes and update
button visibility. This separation improves maintainability and clarity while
keeping parameterized queries for security.
| private function refuseAccess() { | ||
| CRM_Core_Error::fatal(E::ts("Woops! The link you clicked on appears to be broken. Please check again and ensure it was not split by a line break.") ); | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Replace fatal error with graceful error handling.
Using CRM_Core_Error::fatal() terminates the entire application. Consider more graceful error handling that allows for better user experience and debugging.
private function refuseAccess() {
- CRM_Core_Error::fatal(E::ts("Woops! The link you clicked on appears to be broken. Please check again and ensure it was not split by a line break.") );
+ $this->assign('error_message', E::ts("Woops! The link you clicked on appears to be broken. Please check again and ensure it was not split by a line break."));
+ $this->assign('has_error', TRUE);
+ // Log the error for debugging
+ CRM_Core_Error::debug_log_message(E::ts("QR Code checkin: Access refused for participant_id: %1, hash: %2", [
+ 1 => $this->participant_id ?? 'unknown',
+ 2 => $this->hash ?? 'unknown'
+ ]));
}🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/CRM/Qrcodecheckin/Page/QrcodecheckinLanding.php
around lines 93 to 95, replace the use of CRM_Core_Error::fatal() in the
refuseAccess() method with a more graceful error handling approach. Instead of
terminating the application, implement a user-friendly error message display or
redirect to an error page, allowing the application to continue running and
improving user experience and debugging.
| /** | ||
| * @var int[] | ||
| */ | ||
| public $buffer = []; | ||
|
|
||
| /** | ||
| * @var int | ||
| */ | ||
| public $length = 0; |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Encapsulation violation: Public properties expose internal state.
The public $buffer and $length properties break encapsulation by allowing direct external modification of the internal state. This violates the principle of data hiding and could lead to inconsistent object state.
Consider making these properties protected and providing controlled access through getter methods:
- public $buffer = [];
- public $length = 0;
+ protected $buffer = [];
+ protected $length = 0;
+
+ public function getBuffer(): array {
+ return $this->buffer;
+ }
+
+ public function getLength(): int {
+ return $this->length;
+ }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| /** | |
| * @var int[] | |
| */ | |
| public $buffer = []; | |
| /** | |
| * @var int | |
| */ | |
| public $length = 0; | |
| /** | |
| * @var int[] | |
| */ | |
| protected $buffer = []; | |
| /** | |
| * @var int | |
| */ | |
| protected $length = 0; | |
| public function getBuffer(): array { | |
| return $this->buffer; | |
| } | |
| public function getLength(): int { | |
| return $this->length; | |
| } |
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Helpers/BitBuffer.php
around lines 19 to 27, the public properties $buffer and $length expose internal
state and violate encapsulation. Change these properties from public to
protected and implement getter methods to provide controlled read-only access,
preventing direct external modification and preserving object integrity.
| $this->outputInterface->dump(); | ||
|
|
||
| $this::assertTrue(true); // tricking the code coverage | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Remove artificial code coverage manipulation.
The comment "tricking the code coverage" and the assertTrue(true) statement indicate an attempt to artificially inflate code coverage metrics without meaningful testing.
Replace the artificial assertion with a meaningful test that validates the actual behavior:
- $this->outputInterface->dump();
-
- $this::assertTrue(true); // tricking the code coverage
+ $output = $this->outputInterface->dump();
+
+ // Verify that output was generated successfully
+ $this::assertNotEmpty($output);
+ $this::assertStringContainsString('%PDF', $output); // PDF header🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/tests/Output/QRFpdfTest.php
around lines 53 to 56, remove the artificial assertion assertTrue(true) and the
comment about tricking code coverage. Instead, add a meaningful assertion that
verifies the expected outcome of the dump() method, such as checking if the
output was generated correctly or if the outputInterface is in the expected
state after dump() is called.
| CRM.api4('Participant', 'update', { | ||
| values: { "status_id": 2 }, // Use status_id instead of status_id.name | ||
| where: [["id", "=", participant_id]], |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Replace magic number with named constant.
The hardcoded status_id: 2 violates the DRY principle and makes the code less maintainable.
Define a named constant for better readability:
+ var PARTICIPANT_STATUS_ATTENDED = 2;
+
CRM.api4('Participant', 'update', {
- values: { "status_id": 2 }, // Use status_id instead of status_id.name
+ values: { "status_id": PARTICIPANT_STATUS_ATTENDED },
where: [["id", "=", participant_id]],
}).then(function(results) {📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| CRM.api4('Participant', 'update', { | |
| values: { "status_id": 2 }, // Use status_id instead of status_id.name | |
| where: [["id", "=", participant_id]], | |
| // Define meaningful constant instead of magic number | |
| var PARTICIPANT_STATUS_ATTENDED = 2; | |
| CRM.api4('Participant', 'update', { | |
| values: { "status_id": PARTICIPANT_STATUS_ATTENDED }, | |
| where: [["id", "=", participant_id]], | |
| }).then(function(results) { | |
| // … | |
| }); |
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js
around lines 61 to 63, replace the hardcoded magic number 2 used for status_id
with a named constant. Define a descriptive constant at the top of the file or
in an appropriate constants section, assign it the value 2, and then use this
constant in the CRM.api4 call to improve readability and maintainability.
| var match = sanitized_path_name.match(reg_drupal); | ||
|
|
||
| var match = reg_drupal.exec(sanitized_path_name); | ||
| if (match) { | ||
| participant_id = match[1]; | ||
| } |
There was a problem hiding this comment.
Fix variable redeclaration.
The match variable is declared twice on lines 15 and 17, which overwrites the first assignment and could lead to confusion.
Remove the redundant declaration:
- var match = sanitized_path_name.match(reg_drupal);
-
- var match = reg_drupal.exec(sanitized_path_name);
+ var match = reg_drupal.exec(sanitized_path_name);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| var match = sanitized_path_name.match(reg_drupal); | |
| var match = reg_drupal.exec(sanitized_path_name); | |
| if (match) { | |
| participant_id = match[1]; | |
| } | |
| var match = reg_drupal.exec(sanitized_path_name); | |
| if (match) { | |
| participant_id = match[1]; | |
| } |
🧰 Tools
🪛 Biome (1.9.4)
[error] 17-17: Shouldn't redeclare 'match'. Consider to delete it or rename it.
'match' is defined here:
(lint/suspicious/noRedeclare)
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js
around lines 15 to 20, the variable 'match' is declared twice using 'var',
causing redeclaration and potential confusion. Remove the first declaration on
line 15 and keep a single declaration on line 17 where 'match' is assigned the
result of reg_drupal.exec(sanitized_path_name).
| /* | ||
| CRM.api3('Qrcodecheckin', 'Checkin', { | ||
| "sequential": 1, | ||
| "participant_id": participant_id | ||
| }).done(function(result) { | ||
| if (result['is_error'] == 0) { | ||
| CRM.$('#qrcheckin-status').html('Attended'); | ||
| CRM.$('#qrcheckin-status-line').removeClass( "qrcheckin-status-registered" ).addClass( "qrcheckin-status-attended" ); | ||
| CRM.$('#qrcheckin-update-button').hide(); | ||
| } | ||
| else { | ||
| console.log(result); | ||
| alert(ts("There was an error updating the status. Sorry.")); | ||
| } | ||
| }); | ||
| */ |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Remove commented-out legacy code.
Dead code should be removed to improve maintainability and reduce confusion.
Remove the commented-out API v3 code:
- /*
- CRM.api3('Qrcodecheckin', 'Checkin', {
- "sequential": 1,
- "participant_id": participant_id
- }).done(function(result) {
- if (result['is_error'] == 0) {
- CRM.$('#qrcheckin-status').html('Attended');
- CRM.$('#qrcheckin-status-line').removeClass( "qrcheckin-status-registered" ).addClass( "qrcheckin-status-attended" );
- CRM.$('#qrcheckin-update-button').hide();
- }
- else {
- console.log(result);
- alert(ts("There was an error updating the status. Sorry."));
- }
- });
-*/📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| /* | |
| CRM.api3('Qrcodecheckin', 'Checkin', { | |
| "sequential": 1, | |
| "participant_id": participant_id | |
| }).done(function(result) { | |
| if (result['is_error'] == 0) { | |
| CRM.$('#qrcheckin-status').html('Attended'); | |
| CRM.$('#qrcheckin-status-line').removeClass( "qrcheckin-status-registered" ).addClass( "qrcheckin-status-attended" ); | |
| CRM.$('#qrcheckin-update-button').hide(); | |
| } | |
| else { | |
| console.log(result); | |
| alert(ts("There was an error updating the status. Sorry.")); | |
| } | |
| }); | |
| */ |
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js
between lines 45 and 60, remove the entire block of commented-out legacy API v3
code to eliminate dead code and improve maintainability.
| var participant_id; | ||
|
|
||
| // Try Drupal first. | ||
| // We expect: /civicrm/qrcodecheckin/123/blahblahhash | ||
| // We want: 123 | ||
| var reg_drupal = /\/qrcodecheckin\/([0-9]+)\//; | ||
| var path_name = window.location.href; | ||
|
|
||
| // Slashes are being converted to %3A in Drupal. | ||
| // Replace the %3A back to a slash so we can | ||
| // get the participant_id from the path. | ||
| var sanitized_path_name = decodeURIComponent(path_name); | ||
| var match = sanitized_path_name.match(reg_drupal); | ||
|
|
||
| var match = reg_drupal.exec(sanitized_path_name); | ||
| if (match) { | ||
| participant_id = match[1]; | ||
| } | ||
| else { | ||
| // Try wordpress | ||
| // We expect: /wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fqrcodecheckin%2F65%2Fa21855da08cb102d1d217c53dc5824a3a795c1c1a44e971bf01ab9da3a2acbbf | ||
| // We want: 65 | ||
| //var reg_wordpress = /\/wp-admin\/admin\.php/ | ||
| var reg_wordpress_path = /\/wp-admin\/admin\.php/ | ||
| var reg_wordpress_extract_q = /[?&]q=([^&]+)(&|$)/ | ||
| var reg_wordpress_extract_id = /^civicrm\/qrcodecheckin\/([0-9]+)\// | ||
| var path_match = reg_wordpress_path.exec(window.location.pathname); | ||
| if (path_match) { | ||
| // Now we have to extract the query string q. | ||
| var q_match = reg_wordpress_extract_q.exec(location.search); | ||
| if (q_match) { | ||
| // Now URL decode it. | ||
| q = decodeURIComponent(q_match[1].replace(/\+/g, " ")); | ||
| // Now we have: civicrm/qrcodecheckin/65/a21855da08cb102d1d217c53dc5824a3a795c1c1a44e971bf01ab9da3a2acbbf | ||
| participant_match = reg_wordpress_extract_id.exec(q); | ||
| if (participant_match) { | ||
| participant_id = participant_match[1]; | ||
| } | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Extract URL parsing logic into separate functions.
The current implementation violates the single responsibility principle by mixing participant ID extraction logic for different CMS platforms within the event handler.
Extract the parsing logic into dedicated functions:
+ function extractParticipantIdFromDrupal(url) {
+ var reg_drupal = /\/qrcodecheckin\/([0-9]+)\//;
+ var sanitized_path_name = decodeURIComponent(url);
+ var match = reg_drupal.exec(sanitized_path_name);
+ return match ? match[1] : null;
+ }
+
+ function extractParticipantIdFromWordPress(url) {
+ var reg_wordpress_path = /\/wp-admin\/admin\.php/;
+ var reg_wordpress_extract_q = /[?&]q=([^&]+)(&|$)/;
+ var reg_wordpress_extract_id = /^civicrm\/qrcodecheckin\/([0-9]+)\//;
+
+ var path_match = reg_wordpress_path.exec(window.location.pathname);
+ if (!path_match) return null;
+
+ var q_match = reg_wordpress_extract_q.exec(location.search);
+ if (!q_match) return null;
+
+ var q = decodeURIComponent(q_match[1].replace(/\+/g, " "));
+ var participant_match = reg_wordpress_extract_id.exec(q);
+ return participant_match ? participant_match[1] : null;
+ }
+
CRM.$('#qrcheckin-update-button').click(function() {
- var participant_id;
-
- // Try Drupal first.
- // We expect: /civicrm/qrcodecheckin/123/blahblahhash
- // We want: 123
- var reg_drupal = /\/qrcodecheckin\/([0-9]+)\//;
- var path_name = window.location.href;
-
- // Slashes are being converted to %3A in Drupal.
- // Replace the %3A back to a slash so we can
- // get the participant_id from the path.
- var sanitized_path_name = decodeURIComponent(path_name);
- var match = sanitized_path_name.match(reg_drupal);
-
- var match = reg_drupal.exec(sanitized_path_name);
- if (match) {
- participant_id = match[1];
- }
- else {
- // Try wordpress
- // We expect: /wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fqrcodecheckin%2F65%2Fa21855da08cb102d1d217c53dc5824a3a795c1c1a44e971bf01ab9da3a2acbbf
- // We want: 65
- //var reg_wordpress = /\/wp-admin\/admin\.php/
- var reg_wordpress_path = /\/wp-admin\/admin\.php/
- var reg_wordpress_extract_q = /[?&]q=([^&]+)(&|$)/
- var reg_wordpress_extract_id = /^civicrm\/qrcodecheckin\/([0-9]+)\//
- var path_match = reg_wordpress_path.exec(window.location.pathname);
- if (path_match) {
- // Now we have to extract the query string q.
- var q_match = reg_wordpress_extract_q.exec(location.search);
- if (q_match) {
- // Now URL decode it.
- q = decodeURIComponent(q_match[1].replace(/\+/g, " "));
- // Now we have: civicrm/qrcodecheckin/65/a21855da08cb102d1d217c53dc5824a3a795c1c1a44e971bf01ab9da3a2acbbf
- participant_match = reg_wordpress_extract_id.exec(q);
- if (participant_match) {
- participant_id = participant_match[1];
- }
- }
- }
- }
+ var participant_id = extractParticipantIdFromDrupal(window.location.href) ||
+ extractParticipantIdFromWordPress(window.location.href);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| var participant_id; | |
| // Try Drupal first. | |
| // We expect: /civicrm/qrcodecheckin/123/blahblahhash | |
| // We want: 123 | |
| var reg_drupal = /\/qrcodecheckin\/([0-9]+)\//; | |
| var path_name = window.location.href; | |
| // Slashes are being converted to %3A in Drupal. | |
| // Replace the %3A back to a slash so we can | |
| // get the participant_id from the path. | |
| var sanitized_path_name = decodeURIComponent(path_name); | |
| var match = sanitized_path_name.match(reg_drupal); | |
| var match = reg_drupal.exec(sanitized_path_name); | |
| if (match) { | |
| participant_id = match[1]; | |
| } | |
| else { | |
| // Try wordpress | |
| // We expect: /wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fqrcodecheckin%2F65%2Fa21855da08cb102d1d217c53dc5824a3a795c1c1a44e971bf01ab9da3a2acbbf | |
| // We want: 65 | |
| //var reg_wordpress = /\/wp-admin\/admin\.php/ | |
| var reg_wordpress_path = /\/wp-admin\/admin\.php/ | |
| var reg_wordpress_extract_q = /[?&]q=([^&]+)(&|$)/ | |
| var reg_wordpress_extract_id = /^civicrm\/qrcodecheckin\/([0-9]+)\// | |
| var path_match = reg_wordpress_path.exec(window.location.pathname); | |
| if (path_match) { | |
| // Now we have to extract the query string q. | |
| var q_match = reg_wordpress_extract_q.exec(location.search); | |
| if (q_match) { | |
| // Now URL decode it. | |
| q = decodeURIComponent(q_match[1].replace(/\+/g, " ")); | |
| // Now we have: civicrm/qrcodecheckin/65/a21855da08cb102d1d217c53dc5824a3a795c1c1a44e971bf01ab9da3a2acbbf | |
| participant_match = reg_wordpress_extract_id.exec(q); | |
| if (participant_match) { | |
| participant_id = participant_match[1]; | |
| } | |
| } | |
| } | |
| } | |
| // Extractors for CMS-specific QR code paths | |
| function extractParticipantIdFromDrupal(url) { | |
| var reg_drupal = /\/qrcodecheckin\/([0-9]+)\//; | |
| var sanitized_path_name = decodeURIComponent(url); | |
| var match = reg_drupal.exec(sanitized_path_name); | |
| return match ? match[1] : null; | |
| } | |
| function extractParticipantIdFromWordPress(url) { | |
| var reg_wordpress_path = /\/wp-admin\/admin\.php/; | |
| var reg_wordpress_extract_q = /[?&]q=([^&]+)(&|$)/; | |
| var reg_wordpress_extract_id = /^civicrm\/qrcodecheckin\/([0-9]+)\//; | |
| if (!reg_wordpress_path.test(window.location.pathname)) { | |
| return null; | |
| } | |
| var q_match = reg_wordpress_extract_q.exec(location.search); | |
| if (!q_match) { | |
| return null; | |
| } | |
| var decoded_q = decodeURIComponent(q_match[1].replace(/\+/g, " ")); | |
| var participant_match = reg_wordpress_extract_id.exec(decoded_q); | |
| return participant_match ? participant_match[1] : null; | |
| } | |
| CRM.$('#qrcheckin-update-button').click(function() { | |
| var participant_id = extractParticipantIdFromDrupal(window.location.href) | |
| || extractParticipantIdFromWordPress(window.location.href); | |
| // …rest of handler using participant_id… |
🧰 Tools
🪛 Biome (1.9.4)
[error] 17-17: Shouldn't redeclare 'match'. Consider to delete it or rename it.
'match' is defined here:
(lint/suspicious/noRedeclare)
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js
from lines 3 to 43, the URL parsing logic for extracting participant_id from
Drupal and WordPress URLs is mixed together, violating the single responsibility
principle. Refactor by creating separate functions for each CMS platform's
parsing logic: one function to extract the participant_id from the Drupal URL
pattern and another to handle the WordPress URL pattern extraction. Then call
these functions in the main flow to assign participant_id, improving code
clarity and maintainability.
| foreach($m as $y => $row){ | ||
| foreach($row as $x => $val){ | ||
| if($val){ | ||
| $count++; | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
Remove unused loop variables.
The loop variables $y and $x are not used within the loop body.
-foreach($m as $y => $row){
- foreach($row as $x => $val){
+foreach($m as $row){
+ foreach($row as $val){
if($val){
$count++;
}
}
}🧰 Tools
🪛 PHPMD (2.15.0)
192-192: Avoid unused local variables such as '$y'. (Unused Code Rules)
(UnusedLocalVariable)
193-193: Avoid unused local variables such as '$x'. (Unused Code Rules)
(UnusedLocalVariable)
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
between lines 192 and 198, the foreach loops declare variables $y and $x which
are not used inside the loop body. Remove these unused variables by replacing
the loops with ones that only declare the used variables, such as using
foreach($m as $row) and foreach($row as $val), to clean up the code.
| protected function testLevel1(array $m):int{ | ||
| $penalty = 0; | ||
|
|
||
| foreach($m as $y => $row){ | ||
| foreach($row as $x => $val){ | ||
| $count = 0; | ||
|
|
||
| for($ry = -1; $ry <= 1; $ry++){ | ||
|
|
||
| if($y + $ry < 0 || $this->moduleCount <= $y + $ry){ | ||
| continue; | ||
| } | ||
|
|
||
| for($rx = -1; $rx <= 1; $rx++){ | ||
|
|
||
| if(($ry === 0 && $rx === 0) || (($x + $rx) < 0 || $this->moduleCount <= ($x + $rx))){ | ||
| continue; | ||
| } | ||
|
|
||
| if($m[$y + $ry][$x + $rx] === $val){ | ||
| $count++; | ||
| } | ||
|
|
||
| } | ||
| } | ||
|
|
||
| if($count > 5){ | ||
| $penalty += (3 + $count - 5); | ||
| } | ||
|
|
||
| } | ||
| } | ||
|
|
||
| return $penalty; | ||
| } |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Logic mismatch: Method checks 3x3 grid instead of consecutive modules.
The documentation states this method checks for "five or more same-colored modules in a row (or column)", but the implementation checks all 8 adjacent cells in a 3x3 grid. This doesn't match the QR code specification for penalty rule 1, which should check for consecutive modules horizontally and vertically.
🏁 Script executed:
#!/bin/bash
# Search for QR code mask pattern test implementations to verify the correct algorithm
rg -A 10 "testLevel1|penalty.*rule.*1|consecutive.*module" --type phpLength of output: 4547
Fix penalty rule 1 implementation in testLevel1
The code in Data/MaskPatternTester::testLevel1 (lines 72–106) walks the 3×3 neighborhood around each module and counts same-color neighbors, but per ISO/IEC 18004 penalty rule 1 you must scan entire rows and columns for runs of five or more same-color modules. The current approach will calculate incorrect penalties.
Suggestions:
- Replace the 3×3 neighbor scan with a consecutive-module scan across each row and column (for each sequence of ≥5 add 3, then +1 for each additional module).
- You can reference the correct logic in
Common/MaskPattern::applyRule1(used bytestRule1) as a model. - Alternatively, upgrade the bundled
php-qrcodelibrary to a version where this is already fixed.
• File needing a fix:
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php (lines 72–106)
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
lines 72 to 106, the testLevel1 method incorrectly calculates penalty rule 1 by
scanning a 3x3 neighborhood around each module instead of scanning entire rows
and columns for runs of five or more consecutive same-color modules. To fix
this, replace the nested loops that check neighbors with logic that iterates
through each row and column, counting consecutive modules of the same color, and
for each run of five or more, add a penalty of 3 plus 1 for each additional
module beyond five. You can model this logic after the applyRule1 method in
Common/MaskPattern or consider upgrading the php-qrcode library to a version
where this rule is correctly implemented.
| protected function set_fpdfMeasureUnit(string $unit):void{ | ||
| $unit = strtolower($unit); | ||
|
|
||
| if(in_array($unit, ['cm', 'in', 'mm', 'pt'], true)){ | ||
| $this->fpdfMeasureUnit = $unit; | ||
| } | ||
|
|
||
| // @todo throw or ignore silently? | ||
| } |
There was a problem hiding this comment.
Address TODO: Complete error handling implementation
The method silently ignores invalid units, but the TODO suggests this behavior is undecided.
Would you like me to implement proper error handling that throws an exception for invalid units, similar to other validation methods in this trait?
protected function set_fpdfMeasureUnit(string $unit):void{
$unit = strtolower($unit);
if(in_array($unit, ['cm', 'in', 'mm', 'pt'], true)){
$this->fpdfMeasureUnit = $unit;
+ return;
}
- // @todo throw or ignore silently?
+ throw new QRCodeException(sprintf('Invalid FPDF measurement unit: %s', $unit));
}🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php
around lines 398 to 406, the set_fpdfMeasureUnit method currently ignores
invalid units silently. To fix this, implement proper error handling by throwing
an exception when the provided unit is not one of the allowed values ('cm',
'in', 'mm', 'pt'), consistent with other validation methods in this trait. This
will ensure invalid inputs are explicitly handled and improve code robustness.
| // Get the absolute link to the image that will display the QR code. | ||
| $query = NULL; | ||
| $absolute = TRUE; | ||
| $link = qrcodecheckin_get_image_url($code); | ||
|
|
There was a problem hiding this comment.
Remove unused variables
The variables $query and $absolute are defined but never used.
- // Get the absolute link to the image that will display the QR code.
- $query = NULL;
- $absolute = TRUE;
$link = qrcodecheckin_get_image_url($code);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // Get the absolute link to the image that will display the QR code. | |
| $query = NULL; | |
| $absolute = TRUE; | |
| $link = qrcodecheckin_get_image_url($code); | |
| $link = qrcodecheckin_get_image_url($code); |
🧰 Tools
🪛 PHPMD (2.15.0)
277-277: Avoid unused local variables such as '$query'. (Unused Code Rules)
(UnusedLocalVariable)
278-278: Avoid unused local variables such as '$absolute'. (Unused Code Rules)
(UnusedLocalVariable)
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php
around lines 276 to 280, the variables $query and $absolute are declared but
never used. Remove these two variable declarations to clean up the code and
avoid unused variable warnings.
| function qrcodecheckin_civicrm_uninstall() { | ||
| // Ensure directory for qr codes is cleaned up. | ||
| $civiConfig = CRM_Core_Config::singleton(); | ||
| $dir = $civiConfig->imageUploadDir . '/qrcodecheckin/'; | ||
| if (!file_exists($dir)) { | ||
| $files = array_diff(scandir($dir), ['.','..']); | ||
| foreach ($files as $file) { | ||
| if (is_dir("$dir/$file")) { | ||
| // This is an error, but don't let it gum up the removal of the extension. | ||
| $msg = E::ts("Found directory in qrcodecheckin folder, I expected only QR code image files. I'm not deleting the folder. I am proceeding with uninstalling the extension."); | ||
| CRM_Core_Error::debug_log_message($msg); | ||
| $session = CRM_Core_Session::singleton(); | ||
| $session->setStatus($msg); | ||
| return; | ||
| } | ||
| unlink("$dir/$file"); | ||
| } | ||
| mkdir($civiConfig->imageUploadDir . '/qrcodecheckin/'); | ||
| } | ||
| } |
There was a problem hiding this comment.
Critical: Fix inverted logic in uninstall hook
The uninstall function has inverted logic - it tries to process files when the directory doesn't exist and creates a directory instead of removing it.
function qrcodecheckin_civicrm_uninstall() {
// Ensure directory for qr codes is cleaned up.
$civiConfig = CRM_Core_Config::singleton();
$dir = $civiConfig->imageUploadDir . '/qrcodecheckin/';
- if (!file_exists($dir)) {
+ if (file_exists($dir)) {
$files = array_diff(scandir($dir), ['.','..']);
foreach ($files as $file) {
if (is_dir("$dir/$file")) {
// This is an error, but don't let it gum up the removal of the extension.
$msg = E::ts("Found directory in qrcodecheckin folder, I expected only QR code image files. I'm not deleting the folder. I am proceeding with uninstalling the extension.");
CRM_Core_Error::debug_log_message($msg);
$session = CRM_Core_Session::singleton();
$session->setStatus($msg);
return;
}
unlink("$dir/$file");
}
- mkdir($civiConfig->imageUploadDir . '/qrcodecheckin/');
+ rmdir($dir);
}
}🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php
lines 30 to 49, the uninstall function incorrectly processes files when the
directory does not exist and creates the directory instead of removing it. Fix
this by reversing the condition to check if the directory exists before
processing files. Then, after deleting files, remove the directory instead of
creating it.
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (4)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js (4)
15-17: Fix variable redeclaration.The
matchvariable is declared twice, which overwrites the first assignment and violates best practices.
3-43: Extract URL parsing logic into separate functions.The current implementation violates the single responsibility principle by mixing participant ID extraction logic for different CMS platforms within the event handler.
45-60: Remove commented-out legacy code.Dead code should be removed to improve maintainability and reduce confusion.
61-63: Replace magic number with named constant.The hardcoded
status_id: 2violates the DRY principle and makes the code less maintainable.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: tarunnjoshi
PR: ColoredCow/goonj#1230
File: wp-content/civi-extensions/civirazorpay/cli/update-recurring-contact-info.php:115-117
Timestamp: 2025-05-27T07:31:44.131Z
Learning: For one-time scripts in the Goonj project, tarunnjoshi prefers to keep hardcoded values rather than creating shared constants or configuration files, prioritizing simplicity over strict adherence to DRY principle to avoid over-engineering temporary code.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
🪛 Biome (1.9.4)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js
[error] 17-17: Shouldn't redeclare 'match'. Consider to delete it or rename it.
'match' is defined here:
(lint/suspicious/noRedeclare)
| // Now URL decode it. | ||
| q = decodeURIComponent(q_match[1].replace(/\+/g, " ")); | ||
| // Now we have: civicrm/qrcodecheckin/65/a21855da08cb102d1d217c53dc5824a3a795c1c1a44e971bf01ab9da3a2acbbf | ||
| participant_match = reg_wordpress_extract_id.exec(q); |
There was a problem hiding this comment.
Declare the participant_match variable to avoid global scope pollution.
The variable participant_match is used without declaration, which creates an implicit global variable and violates best practices.
- participant_match = reg_wordpress_extract_id.exec(q);
+ var participant_match = reg_wordpress_extract_id.exec(q);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| participant_match = reg_wordpress_extract_id.exec(q); | |
| // Now URL decode it. | |
| q = decodeURIComponent(q_match[1].replace(/\+/g, " ")); | |
| // Now we have: civicrm/qrcodecheckin/65/a21855da08cb102d1d217c53dc5824a3a795c1c1a44e971bf01ab9da3a2acbbf | |
| - participant_match = reg_wordpress_extract_id.exec(q); | |
| + var participant_match = reg_wordpress_extract_id.exec(q); | |
| if (participant_match) { | |
| participant_id = participant_match[1]; | |
| } |
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js
at line 37, the variable participant_match is assigned without declaration,
causing it to become a global variable. Fix this by declaring participant_match
with let or const before its first use to limit its scope and avoid polluting
the global namespace.
| var q_match = reg_wordpress_extract_q.exec(location.search); | ||
| if (q_match) { | ||
| // Now URL decode it. | ||
| q = decodeURIComponent(q_match[1].replace(/\+/g, " ")); |
There was a problem hiding this comment.
Declare the q variable to avoid global scope pollution.
The variable q is used without declaration, which creates an implicit global variable and violates best practices.
- q = decodeURIComponent(q_match[1].replace(/\+/g, " "));
+ var q = decodeURIComponent(q_match[1].replace(/\+/g, " "));📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| q = decodeURIComponent(q_match[1].replace(/\+/g, " ")); | |
| var q_match = reg_wordpress_extract_q.exec(location.search); | |
| if (q_match) { | |
| // Now URL decode it. | |
| var q = decodeURIComponent(q_match[1].replace(/\+/g, " ")); | |
| participant_match = reg_wordpress_extract_id.exec(q); | |
| if (participant_match) { | |
| participant_id = participant_match[1]; | |
| } | |
| } |
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.js
at line 35, the variable q is assigned without declaration, causing it to become
a global variable. Fix this by declaring q with let or const before assigning
the value to ensure it has proper local scope and avoid polluting the global
namespace.
There was a problem hiding this comment.
Actionable comments posted: 6
♻️ Duplicate comments (1)
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php (1)
51-53: Remove unused variablesThe variables
$queryand$absoluteare defined but never used.- // Get the absolute link to the image that will display the QR code. - $query = NULL; - $absolute = TRUE; $link = qrcodecheckin_get_image_url($code);
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php(1 hunks)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: tarunnjoshi
PR: ColoredCow/goonj#1230
File: wp-content/civi-extensions/civirazorpay/cli/update-recurring-contact-info.php:115-117
Timestamp: 2025-05-27T07:31:44.131Z
Learning: For one-time scripts in the Goonj project, tarunnjoshi prefers to keep hardcoded values rather than creating shared constants or configuration files, prioritizing simplicity over strict adherence to DRY principle to avoid over-engineering temporary code.
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php (1)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php (2)
Learnt from: belwalshubham
PR: ColoredCow/goonj#284
File: wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php:520-520
Timestamp: 2024-10-11T09:53:14.458Z
Learning: In `wp-content/civi-extensions/goonjcustom/Civi/CollectionCampService.php`, it's acceptable that the `reGenerateCollectionCampQr` method calls `generateQrCode` with only the `$collectionCampId` parameter, as QR codes are generated when the Dropping Center is authorized. We'll implement changes if any issues arise in the future.
Learnt from: belwalshubham
PR: ColoredCow/goonj#352
File: wp-content/civi-extensions/goonjcustom/Civi/QrCodeService.php:51-53
Timestamp: 2024-10-09T15:24:42.859Z
Learning: In `QrCodeService::generateQrCode`, when using `QRCode::OUTPUT_IMAGE_PNG`, the `render` method returns a data URI with base64-encoded image data. Therefore, it's necessary to remove the `data:image/png;base64,` prefix and base64-decode the data to obtain the raw binary image.
🧬 Code Graph Analysis (1)
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php (2)
wp-content/civi-extensions/civiglific/CRM/Civiglific/GlificClient.php (3)
GlificClient(12-259)query(27-46)getContactIdByPhone(175-190)wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php (4)
qrcodecheckin_participant_id_for_contact_id(303-317)qrcodecheckin_get_code(128-138)qrcodecheckin_create_image(194-203)qrcodecheckin_get_image_url(176-179)
🪛 PHPMD (2.15.0)
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php
16-16: Avoid unused parameters such as '$spec'. (Unused Code Rules)
(UnusedFormalParameter)
51-51: Avoid unused local variables such as '$query'. (Unused Code Rules)
(UnusedLocalVariable)
52-52: Avoid unused local variables such as '$absolute'. (Unused Code Rules)
(UnusedLocalVariable)
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php
253-253: Avoid unused parameters such as '$job'. (Unused Code Rules)
(UnusedFormalParameter)
253-253: Avoid unused parameters such as '$context'. (Unused Code Rules)
(UnusedFormalParameter)
284-284: Avoid unused local variables such as '$query'. (Unused Code Rules)
(UnusedLocalVariable)
285-285: Avoid unused local variables such as '$absolute'. (Unused Code Rules)
(UnusedLocalVariable)
| error_log('event id: ' . print_r($event_id, TRUE)); | ||
| error_log('contact_id: ' . print_r($contact_id, TRUE)); |
There was a problem hiding this comment.
Remove debug error_log statements
These error logging statements appear to be debugging code that should be removed before production deployment. They expose internal implementation details and can clutter log files.
- error_log('event id: ' . print_r($event_id, TRUE));
- error_log('contact_id: ' . print_r($contact_id, TRUE));
$participant_id = qrcodecheckin_participant_id_for_contact_id($contact_id, $event_id);
- error_log('participant_id: ' . print_r($participant_id, TRUE));
if ($participant_id) {
$code = qrcodecheckin_get_code($participant_id);
- error_log('code: ' . print_r($code, TRUE));
// First ensure the image file is created.
qrcodecheckin_create_image($code, $participant_id);
// Get the absolute link to the image that will display the QR code.
$query = NULL;
$absolute = TRUE;
$link = qrcodecheckin_get_image_url($code);
- error_log('link: ' . print_r($link, TRUE));Also applies to: 275-275, 278-278, 287-287
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php
around lines 270-271, 275, 278, and 287, remove the error_log statements used
for debugging as they expose internal details and clutter logs. Delete these
lines entirely to clean up the code before production deployment.
| // /** | ||
| // * Fetch participant_id from contact_id. | ||
| // */ | ||
| // function qrcodecheckin_participant_id_for_contact_id($contact_id, $event_id) { | ||
|
|
||
| // $sql = "SELECT p.id FROM civicrm_contact c JOIN civicrm_participant p | ||
| // ON c.id = p.contact_id WHERE c.is_deleted = 0 AND c.id = %0 AND p.event_id = %1"; | ||
| // $params = [ | ||
| // 0 => [$contact_id, 'Integer'], | ||
| // 1 => [$event_id, 'Integer'], | ||
| // ]; | ||
| // $dao = CRM_Core_DAO::executeQuery($sql, $params); | ||
| // if ($dao->N == 0) { | ||
| // return NULL; | ||
| // } | ||
| // $dao->fetch(); | ||
| // return $dao->id; | ||
| // } | ||
|
|
||
| /** | ||
| * Create a hash based on the participant id. | ||
| */ | ||
| // function qrcodecheckin_get_code($participant_id) { | ||
| // $sql = "SELECT hash FROM civicrm_contact c JOIN civicrm_participant p ON c.id = p.contact_id | ||
| // WHERE p.id = %0"; | ||
| // $dao = CRM_Core_DAO::executeQuery($sql, [0 => [$participant_id, 'Integer']]); | ||
| // if ($dao->N == 0) { | ||
| // return FALSE; | ||
| // } | ||
| // $dao->fetch(); | ||
| // $user_hash = $dao->hash; | ||
| // return hash('sha256', $participant_id . $user_hash . CIVICRM_SITE_KEY); | ||
| // } | ||
|
|
||
| /** | ||
| * Create the qr image file | ||
| */ | ||
| // function qrcodecheckin_create_image($code, $participant_id) { | ||
| // $path = qrcodecheckin_get_path($code); | ||
| // if (!file_exists($path)) { | ||
| // // Since we are saving a file, we don't want base64 data. | ||
| // $url = qrcodecheckin_get_url($code, $participant_id); | ||
| // $base64 = FALSE; | ||
| // $data = qrcodecheckin_get_image_data($url, $base64); | ||
| // file_put_contents($path, $data); | ||
| // } | ||
| // } | ||
|
|
||
| /** | ||
| * Helper to return absolute URL to qrcode image file. | ||
| * | ||
| * This is the URL to the image file containing the QR code. | ||
| */ | ||
| // function qrcodecheckin_get_image_url($code) { | ||
| // $civiConfig = CRM_Core_Config::singleton(); | ||
| // return $civiConfig->imageUploadURL . '/qrcodecheckin/' . $code . '.png'; | ||
| // } | ||
|
|
||
|
|
||
| /** | ||
| * Get QRCode image data. | ||
| */ | ||
| // function qrcodecheckin_get_image_data($url, $base64 = TRUE) { | ||
| // require_once __DIR__ . '/vendor/autoload.php'; | ||
| // $options = new chillerlan\QRCode\QROptions( | ||
| // [ | ||
| // 'outputType' => chillerlan\QRCode\QRCode::OUTPUT_IMAGE_PNG, | ||
| // 'imageBase64' => $base64, | ||
| // 'imageTransparent' => FALSE, | ||
| // ] | ||
| // ); | ||
| // return (new chillerlan\QRCode\QRCode($options))->render($url); | ||
| // } | ||
|
|
||
| /** | ||
| * Get URL for checkin. | ||
| * | ||
| * This is the URL that the QR Code points to when it is | ||
| * read. See qrcodecheckin_get_image_url for the URL of the image | ||
| * file that displays the QR Code. | ||
| */ | ||
| // function qrcodecheckin_get_url($code, $participant_id) { | ||
| // $query = NULL; | ||
| // $absolute = TRUE; | ||
| // $fragment = NULL; | ||
| // $htmlize = FALSE; | ||
| // $frontend = TRUE; | ||
| // return CRM_Utils_System::url('civicrm/qrcodecheckin/' . $participant_id . '/' . $code, $query, $absolute, $fragment, $htmlize, $frontend); | ||
| // } | ||
|
|
||
|
|
||
| /** | ||
| * Helper to return absolute file system path to qrcode image file. | ||
| * | ||
| * This is the path to the image file containing the QR code. | ||
| */ | ||
| // function qrcodecheckin_get_path($code) { | ||
| // $civiConfig = CRM_Core_Config::singleton(); | ||
| // return $civiConfig->imageUploadDir . '/qrcodecheckin/' . $code . '.png'; | ||
| // } | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
Remove commented-out code blocks
Large sections of commented-out code should be removed. These functions appear to be duplicates of the qrcodecheckin extension functions and serve no purpose here.
Delete all the commented-out function implementations from lines 98-198. Version control preserves the history if needed.
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php
from lines 98 to 198, remove all the commented-out function implementations as
they are redundant duplicates of the qrcodecheckin extension functions and serve
no purpose here. Since version control retains history, deleting these commented
blocks will clean up the code without losing information.
| * Cron job to trigger a WhatsApp Flow for Bangalore Chaupal. | ||
| */ | ||
| function civicrm_api3_civiglific_civicrm_glific_send_whatsapp_qr_cron($params) { | ||
| error_log('testing: Entered civicrm_api3_civiglific_civicrm_glific_send_whatsapp_qr_cron'); |
There was a problem hiding this comment.
Remove extensive debug logging statements
The function contains numerous error_log statements that appear to be for debugging purposes. These should be removed or replaced with proper logging mechanisms before production deployment.
Consider using CiviCRM's built-in logging system (CRM_Core_Error::debug_log_message()) for important operational messages and removing verbose debug output.
Also applies to: 27-28, 36-37, 45-46, 54-55, 62-63, 65-66, 69-70, 77-78, 84-85, 88-89, 93-93
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php
around lines 22, 27-28, 36-37, 45-46, 54-55, 62-63, 65-66, 69-70, 77-78, 84-85,
88-89, and 93, remove all error_log debug statements used for verbose debugging.
Replace any important operational messages with calls to CiviCRM's logging
system using CRM_Core_Error::debug_log_message() to ensure proper logging
practices before production deployment.
| $values[$contact_id]['qrcodecheckin.qrcode_url_' . $event_id] = $link; | ||
| $values[$contact_id]['qrcodecheckin.qrcode_html_' . $event_id] = E::ts('<div><img alt="QR Code with link to checkin page" src="%1"></div><div>You should see a QR code above which will be used to quickly check you into the event. If you do not see a code display above, please enable the display of images in your email program or try accessing it <a href="%1">directly</a>. You may want to take a screen grab of your QR Code in case you need to display it when you do not have Internet access.</div>', [ | ||
| 1 => $link, | ||
| ]); | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Remove unused token value assignments
The code populates $values array with QR code URLs and HTML, but these values are never used in the function. This appears to be copy-pasted from the token generation code without purpose.
If the QR code URL needs to be sent via WhatsApp, pass it as a parameter to the flow. Otherwise, remove these unused assignments:
- $values[$contactId]['qrcodecheckin.qrcode_url_' . $eventId] = $link;
- $values[$contactId]['qrcodecheckin.qrcode_html_' . $eventId] = E::ts('<div><img alt="QR Code with link to checkin page" src="%1"></div><div>You should see a QR code above which will be used to quickly check you into the event. If you do not see a code display above, please enable the display of images in your email program or try accessing it <a href="%1">directly</a>. You may want to take a screen grab of your QR Code in case you need to display it when you do not have Internet access.</div>', [
- 1 => $link,
- ]);
+ // Store the QR code link if needed for the WhatsApp flow
+ $qrCodeLink = $link;Then pass the QR code link to the flow if needed:
// Trigger the Flow instead of sending a direct message.
// Replace with your Flow name.
$flowName = "TestFlow";
- $result = triggerFlow($glificClient, $glificContactId, $flowName);
+ // Pass QR code link as flow parameter if needed
+ $result = triggerFlow($glificClient, $glificContactId, $flowName, ['qrCodeUrl' => $qrCodeLink]);Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php
around lines 56 to 60, the $values array is assigned QR code URLs and HTML that
are never used in the function. Remove these unused assignments to clean up the
code. If the QR code URL is required for sending via WhatsApp, instead pass it
explicitly as a parameter to the flow where it is needed.
| $values[$contact_id]['qrcodecheckin.qrcode_url_' . $event_id] = $link; | ||
| $values[$contact_id]['qrcodecheckin.qrcode_html_' . $event_id] = E::ts('<div><img alt="QR Code with link to checkin page" src="%1"></div><div>You should see a QR code above which will be used to quickly check you into the event. If you do not see a code display above, please enable the display of images in your email program or try accessing it <a href="%1">directly</a>. You may want to take a screen grab of your QR Code in case you need to display it when you do not have Internet access.</div>', [ | ||
| 1 => $link, | ||
| ]); |
There was a problem hiding this comment.
Fix undefined variable $contact_id
The code uses $contact_id which is undefined. The correct variable name is $contactId as defined on line 39.
- $values[$contact_id]['qrcodecheckin.qrcode_url_' . $event_id] = $link;
- $values[$contact_id]['qrcodecheckin.qrcode_html_' . $event_id] = E::ts('<div><img alt="QR Code with link to checkin page" src="%1"></div><div>You should see a QR code above which will be used to quickly check you into the event. If you do not see a code display above, please enable the display of images in your email program or try accessing it <a href="%1">directly</a>. You may want to take a screen grab of your QR Code in case you need to display it when you do not have Internet access.</div>', [
+ $values[$contactId]['qrcodecheckin.qrcode_url_' . $eventId] = $link;
+ $values[$contactId]['qrcodecheckin.qrcode_html_' . $eventId] = E::ts('<div><img alt="QR Code with link to checkin page" src="%1"></div><div>You should see a QR code above which will be used to quickly check you into the event. If you do not see a code display above, please enable the display of images in your email program or try accessing it <a href="%1">directly</a>. You may want to take a screen grab of your QR Code in case you need to display it when you do not have Internet access.</div>', [
1 => $link,
]);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| $values[$contact_id]['qrcodecheckin.qrcode_url_' . $event_id] = $link; | |
| $values[$contact_id]['qrcodecheckin.qrcode_html_' . $event_id] = E::ts('<div><img alt="QR Code with link to checkin page" src="%1"></div><div>You should see a QR code above which will be used to quickly check you into the event. If you do not see a code display above, please enable the display of images in your email program or try accessing it <a href="%1">directly</a>. You may want to take a screen grab of your QR Code in case you need to display it when you do not have Internet access.</div>', [ | |
| 1 => $link, | |
| ]); | |
| $values[$contactId]['qrcodecheckin.qrcode_url_' . $eventId] = $link; | |
| $values[$contactId]['qrcodecheckin.qrcode_html_' . $eventId] = E::ts( | |
| '<div><img alt="QR Code with link to checkin page" src="%1"></div>' | |
| . '<div>You should see a QR code above which will be used to quickly check you into the event. ' | |
| . 'If you do not see a code display above, please enable the display of images in your email program ' | |
| . 'or try accessing it <a href="%1">directly</a>. You may want to take a screen grab of your QR Code ' | |
| . 'in case you need to display it when you do not have Internet access.</div>', | |
| [ | |
| 1 => $link, | |
| ] | |
| ); |
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php
around lines 56 to 59, the variable $contact_id is used but not defined; replace
all instances of $contact_id with the correctly defined variable $contactId from
line 39 to fix the undefined variable error.
| foreach ($participants as $participant) { | ||
| $contactId = $participant['contact_id']; | ||
|
|
||
| $participant_id = qrcodecheckin_participant_id_for_contact_id($contactId, $eventId); |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Add missing dependency includes
The file uses functions from the qrcodecheckin extension (qrcodecheckin_participant_id_for_contact_id, qrcodecheckin_get_code, qrcodecheckin_create_image, qrcodecheckin_get_image_url) without including the required files. This could cause fatal errors if the extension isn't properly loaded.
Add the necessary require/include statement at the beginning of the file:
// Include CRM_Core_Error directly for API v3.
require_once 'CRM/Core/Error.php';
+// Include qrcodecheckin functions
+require_once __DIR__ . '/../../net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php';
use Civi\Api4\Phone;Verify the correct path to the qrcodecheckin extension:
Also applies to: 44-44, 48-48, 53-53
🏁 Script executed:
#!/bin/bash
# Description: Find the correct relative path to qrcodecheckin.php from the current file location
# Search for qrcodecheckin.php file
fd -t f "qrcodecheckin.php" | grep -v "/vendor/" | head -10
# Check if the extensions are in the same parent directory
fd -t d "net.ourpowerbase.qrcodecheckin" wp-content/civi-extensions/
fd -t d "civiglific" wp-content/civi-extensions/Length of output: 536
Add missing qrcodecheckin include to avoid fatal errors
The cron class calls several qrcodecheckin_* functions without loading the extension, which will trigger undefined‐function errors if the extension isn’t already autoloaded. Add the require once at the top of the file, before the first qrcodecheckin_* call.
• File: wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php
• Insert before line 41 (and ahead of any qrcodecheckin_* invocation)
require_once 'CRM/Core/Error.php';
+// Include qrcodecheckin functions
+require_once __DIR__ . '/../../../../net.ourpowerbase.qrcodecheckin-2.1.2/qrcodecheckin.php';
use Civi\Api4\Phone;This makes the following functions available and prevents fatal errors:
- qrcodecheckin_participant_id_for_contact_id
- qrcodecheckin_get_code
- qrcodecheckin_create_image
- qrcodecheckin_get_image_url
🤖 Prompt for AI Agents
In
wp-content/civi-extensions/civiglific/api/v3/Civiglific/CivicrmGlificSendWhatsappQrCron.php
before line 41, add a require_once statement to include the qrcodecheckin
extension file. This will ensure that all qrcodecheckin_* functions used in the
file are defined and prevent fatal undefined-function errors during execution.
QR code plugin
Summary by CodeRabbit
New Features
User Interface
Documentation
Developer Tools
Chores