From 6776d539aec978cfbce16eaa83e761b9f7057808 Mon Sep 17 00:00:00 2001
From: mahdahar <89adham@gmail.com>
Date: Tue, 28 Apr 2026 05:39:02 +0700
Subject: [PATCH] feat(figma): add version author id and robust incremental
sync pagination
Improve Figma synchronization to persist version author identity and handle API pagination links reliably during incremental sync jobs.
Changes included:
- Added support end-to-end:
- New migration adds column and index.
- now allows .
- maps user id from Figma version payload ( / ).
- snapshot query now selects .
- displays Figma User ID column and updates table colspan states.
- Hardened Figma pagination flow in :
- Follow absolute URLs when returned by API.
- Track seen pagination URLs to prevent loops.
- Support additional page-size query key and URL-safe encoding.
- Updated request builder to work with absolute endpoints and existing query strings.
- Consolidated schema intent:
- Moved Volume in drive C: has no label
Volume Serial Number is 2B45-1F84/ columns into initial Figma table migration.
- Removed superseded follow-up migrations that previously added/dropped these fields.
- Updated project docs and dependencies:
- Replaced starter README with CRM Summit specific project README.
- Refreshed (framework and dependency version bumps).
- Added database artifact: .
Impact:
- Incremental sync should now process paginated version/history feeds more reliably.
- Snapshot API and dashboard expose author-level metadata for auditing and filtering.
- Fresh installs get cleaner Figma schema history from baseline migration.
---
README.md | 94 ++++----
app/Controllers/Api/FigmaApi.php | 4 +-
.../2026-04-27-000001_CreateFigmaTables.php | 18 ++
...002_AddLabelDescriptionToFigmaVersions.php | 43 ----
...moveFileUrlAndThumbnailFromFigmaTables.php | 68 ------
...28-000001_AddFigmaUserIdToFileVersions.php | 27 +++
app/Libraries/FigmaSyncService.php | 50 ++++-
app/Models/FigmaFileVersionsModel.php | 1 +
app/Views/figma_dashboard.php | 8 +-
composer.lock | 205 +++++++++++-------
crmv2_20260428_010106.sql.gz | Bin 0 -> 10002092 bytes
11 files changed, 262 insertions(+), 256 deletions(-)
delete mode 100644 app/Database/Migrations/2026-04-27-000002_AddLabelDescriptionToFigmaVersions.php
delete mode 100644 app/Database/Migrations/2026-04-27-000003_RemoveFileUrlAndThumbnailFromFigmaTables.php
create mode 100644 app/Database/Migrations/2026-04-28-000001_AddFigmaUserIdToFileVersions.php
create mode 100644 crmv2_20260428_010106.sql.gz
diff --git a/README.md b/README.md
index d14b4c9..64d016c 100644
--- a/README.md
+++ b/README.md
@@ -1,68 +1,64 @@
-# CodeIgniter 4 Application Starter
+# CRM Summit
-## What is CodeIgniter?
+CRM Summit is a CodeIgniter 4 app for CRM, service, product, certificate, and support workflows.
-CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure.
-More information can be found at the [official site](https://codeigniter.com).
+## Main modules
-This repository holds a composer-installable app starter.
-It has been built from the
-[development repository](https://github.com/codeigniter4/CodeIgniter4).
+- Auth and user management
+- Dashboard
+- Accounts, sites, offices, zones, and areas
+- Products, product types, services, aliases, catalogs, and temp import flow
+- Activities, emails, contacts, and mail groups
+- Bugs and bug comments
+- Certificates: maintenance, installation, training
+- Guidebook and inventory counters/transactions
+- Integrations and sync jobs for Figma and Gitea
-More information about the plans for version 4 can be found in [CodeIgniter 4](https://forum.codeigniter.com/forumdisplay.php?fid=28) on the forums.
+## Tech stack
-You can read the [user guide](https://codeigniter.com/user_guide/)
-corresponding to the latest version of the framework.
-
-## Installation & updates
-
-`composer create-project codeigniter4/appstarter` then `composer update` whenever
-there is a new release of the framework.
-
-When updating, check the release notes to see if there are any changes you might need to apply
-to your `app` folder. The affected files can be copied or merged from
-`vendor/codeigniter4/framework/app`.
+- PHP 8.1+
+- CodeIgniter 4
+- MySQL/MariaDB
+- dompdf for PDF output
+- endroid/qr-code for QR generation
+- ramsey/uuid for UUID support
## Setup
-Copy `env` to `.env` and tailor for your app, specifically the baseURL
-and any database settings.
+1. Install dependencies:
-## Important Change with index.php
+```bash
+composer install
+```
-`index.php` is no longer in the root of the project! It has been moved inside the *public* folder,
-for better security and separation of components.
+2. Copy `env` to `.env` and set app and database values:
-This means that you should configure your web server to "point" to your project's *public* folder, and
-not to the project root. A better practice would be to configure a virtual host to point there. A poor practice would be to point your web server to the project root and expect to enter *public/...*, as the rest of your logic and the
-framework are exposed.
+```bash
+copy env .env
+```
-**Please** read the user guide for a better explanation of how CI4 works!
+3. Set `app.baseURL` for local or production host.
-## Repository Management
+4. Point web server to `public/` folder.
-We use GitHub issues, in our main repository, to track **BUGS** and to track approved **DEVELOPMENT** work packages.
-We use our [forum](http://forum.codeigniter.com) to provide SUPPORT and to discuss
-FEATURE REQUESTS.
+5. Run migrations if project uses them:
-This repository is a "distribution" one, built by our release preparation script.
-Problems with it can be raised on our forum, or as issues in the main repository.
+```bash
+php spark migrate
+```
-## Server Requirements
+## Development commands
-PHP version 8.1 or higher is required, with the following extensions installed:
+```bash
+php spark list
+php spark cache:clear
+php spark migrate
+php spark migrate:rollback
+vendor\bin\phpunit
+```
-- [intl](http://php.net/manual/en/intl.requirements.php)
-- [mbstring](http://php.net/manual/en/mbstring.installation.php)
+## Notes
-> [!WARNING]
-> - The end of life date for PHP 7.4 was November 28, 2022.
-> - The end of life date for PHP 8.0 was November 26, 2023.
-> - If you are still using PHP 7.4 or 8.0, you should upgrade immediately.
-> - The end of life date for PHP 8.1 will be December 31, 2025.
-
-Additionally, make sure that the following extensions are enabled in your PHP:
-
-- json (enabled by default - don't turn it off)
-- [mysqlnd](http://php.net/manual/en/mysqlnd.install.php) if you plan to use MySQL
-- [libcurl](http://php.net/manual/en/curl.requirements.php) if you plan to use the HTTP\CURLRequest library
+- `index.php` lives in `public/` for security.
+- Check `app/Config/Routes.php` for module URLs and entry points.
+- Use `app/Config/` and `.env` for environment-specific settings.
diff --git a/app/Controllers/Api/FigmaApi.php b/app/Controllers/Api/FigmaApi.php
index a00b556..2d05c86 100644
--- a/app/Controllers/Api/FigmaApi.php
+++ b/app/Controllers/Api/FigmaApi.php
@@ -103,7 +103,7 @@ class FigmaApi extends BaseController
$total = (int) (clone $baseBuilder)->countAllResults();
$rows = $baseBuilder
- ->select('v.id, v.figma_version_id, v.version, v.label, v.description, v.name, v.editor_type, v.last_modified_figma, v.created_at_figma, f.file_key, f.last_synced_at')
+ ->select('v.id, v.figma_version_id, v.version, v.label, v.description, v.name, v.editor_type, v.figma_user_id, v.last_modified_figma, v.created_at_figma, f.file_key, f.last_synced_at')
->orderBy('v.created_at_figma', 'DESC')
->limit($perPage, $offset)
->get()
@@ -177,7 +177,7 @@ class FigmaApi extends BaseController
}
$service = new FigmaSyncService();
- $result = $service->syncAll();
+ $result = $service->syncIncremental(1);
$statusCode = $result['success'] ? 200 : 500;
return $this->respond([
diff --git a/app/Database/Migrations/2026-04-27-000001_CreateFigmaTables.php b/app/Database/Migrations/2026-04-27-000001_CreateFigmaTables.php
index 3f4ed02..e8bfd19 100644
--- a/app/Database/Migrations/2026-04-27-000001_CreateFigmaTables.php
+++ b/app/Database/Migrations/2026-04-27-000001_CreateFigmaTables.php
@@ -28,6 +28,15 @@ class CreateFigmaTables extends Migration
'constraint' => 255,
'null' => true,
],
+ 'label' => [
+ 'type' => 'VARCHAR',
+ 'constraint' => 255,
+ 'null' => true,
+ ],
+ 'description' => [
+ 'type' => 'LONGTEXT',
+ 'null' => true,
+ ],
'last_modified' => [
'type' => 'DATETIME',
'null' => true,
@@ -75,6 +84,15 @@ class CreateFigmaTables extends Migration
'constraint' => 255,
'null' => true,
],
+ 'label' => [
+ 'type' => 'VARCHAR',
+ 'constraint' => 255,
+ 'null' => true,
+ ],
+ 'description' => [
+ 'type' => 'LONGTEXT',
+ 'null' => true,
+ ],
'name' => [
'type' => 'VARCHAR',
'constraint' => 255,
diff --git a/app/Database/Migrations/2026-04-27-000002_AddLabelDescriptionToFigmaVersions.php b/app/Database/Migrations/2026-04-27-000002_AddLabelDescriptionToFigmaVersions.php
deleted file mode 100644
index 274350b..0000000
--- a/app/Database/Migrations/2026-04-27-000002_AddLabelDescriptionToFigmaVersions.php
+++ /dev/null
@@ -1,43 +0,0 @@
-db->fieldExists('label', 'figma_file_versions')) {
- $fields['label'] = [
- 'type' => 'VARCHAR',
- 'constraint' => 255,
- 'null' => true,
- ];
- }
-
- if (!$this->db->fieldExists('description', 'figma_file_versions')) {
- $fields['description'] = [
- 'type' => 'LONGTEXT',
- 'null' => true,
- ];
- }
-
- if (!empty($fields)) {
- $this->forge->addColumn('figma_file_versions', $fields);
- }
- }
-
- public function down()
- {
- if ($this->db->fieldExists('description', 'figma_file_versions')) {
- $this->forge->dropColumn('figma_file_versions', 'description');
- }
-
- if ($this->db->fieldExists('label', 'figma_file_versions')) {
- $this->forge->dropColumn('figma_file_versions', 'label');
- }
- }
-}
diff --git a/app/Database/Migrations/2026-04-27-000003_RemoveFileUrlAndThumbnailFromFigmaTables.php b/app/Database/Migrations/2026-04-27-000003_RemoveFileUrlAndThumbnailFromFigmaTables.php
deleted file mode 100644
index 85370c6..0000000
--- a/app/Database/Migrations/2026-04-27-000003_RemoveFileUrlAndThumbnailFromFigmaTables.php
+++ /dev/null
@@ -1,68 +0,0 @@
-db->fieldExists('file_url', 'figma_files')) {
- $this->forge->dropColumn('figma_files', 'file_url');
- }
-
- if ($this->db->fieldExists('thumbnail_url', 'figma_files')) {
- $this->forge->dropColumn('figma_files', 'thumbnail_url');
- }
-
- if ($this->db->fieldExists('file_url', 'figma_file_versions')) {
- $this->forge->dropColumn('figma_file_versions', 'file_url');
- }
-
- if ($this->db->fieldExists('thumbnail_url', 'figma_file_versions')) {
- $this->forge->dropColumn('figma_file_versions', 'thumbnail_url');
- }
- }
-
- public function down()
- {
- $fieldsFiles = [];
- if (!$this->db->fieldExists('file_url', 'figma_files')) {
- $fieldsFiles['file_url'] = [
- 'type' => 'TEXT',
- 'null' => true,
- ];
- }
-
- if (!$this->db->fieldExists('thumbnail_url', 'figma_files')) {
- $fieldsFiles['thumbnail_url'] = [
- 'type' => 'TEXT',
- 'null' => true,
- ];
- }
-
- if (!empty($fieldsFiles)) {
- $this->forge->addColumn('figma_files', $fieldsFiles);
- }
-
- $fieldsVersions = [];
- if (!$this->db->fieldExists('file_url', 'figma_file_versions')) {
- $fieldsVersions['file_url'] = [
- 'type' => 'TEXT',
- 'null' => true,
- ];
- }
-
- if (!$this->db->fieldExists('thumbnail_url', 'figma_file_versions')) {
- $fieldsVersions['thumbnail_url'] = [
- 'type' => 'TEXT',
- 'null' => true,
- ];
- }
-
- if (!empty($fieldsVersions)) {
- $this->forge->addColumn('figma_file_versions', $fieldsVersions);
- }
- }
-}
diff --git a/app/Database/Migrations/2026-04-28-000001_AddFigmaUserIdToFileVersions.php b/app/Database/Migrations/2026-04-28-000001_AddFigmaUserIdToFileVersions.php
new file mode 100644
index 0000000..f6f5025
--- /dev/null
+++ b/app/Database/Migrations/2026-04-28-000001_AddFigmaUserIdToFileVersions.php
@@ -0,0 +1,27 @@
+forge->addColumn('figma_file_versions', [
+ 'figma_user_id' => [
+ 'type' => 'VARCHAR',
+ 'constraint' => 255,
+ 'null' => true,
+ ],
+ ]);
+
+ $this->db->query('CREATE INDEX idx_figma_file_versions_figma_user_id ON figma_file_versions(figma_user_id)');
+ }
+
+ public function down()
+ {
+ $this->db->query('DROP INDEX idx_figma_file_versions_figma_user_id ON figma_file_versions');
+ $this->forge->dropColumn('figma_file_versions', 'figma_user_id');
+ }
+}
diff --git a/app/Libraries/FigmaSyncService.php b/app/Libraries/FigmaSyncService.php
index 29e9038..b51643b 100644
--- a/app/Libraries/FigmaSyncService.php
+++ b/app/Libraries/FigmaSyncService.php
@@ -183,6 +183,7 @@ class FigmaSyncService
$label = $version['label'] ?? $version['name'] ?? $version['version'] ?? $versionId;
$description = $version['description'] ?? $version['notes'] ?? $version['message'] ?? null;
$createdAt = $this->normalizeDate($version['created_at'] ?? $version['createdAt'] ?? null);
+ $figmaUserId = $version['user']['id'] ?? $version['user_id'] ?? null;
$data = [
'file_id' => $fileId,
@@ -192,6 +193,7 @@ class FigmaSyncService
'description' => is_scalar($description) ? (string) $description : null,
'name' => (string) (env('FIGMA_FILE_NAME') ?: 'Figma File'),
'editor_type' => $this->normalizeEditorType($version['editorType'] ?? null),
+ 'figma_user_id' => is_scalar($figmaUserId) ? (string) $figmaUserId : null,
'last_modified_figma' => $createdAt,
'created_at_figma' => $createdAt,
];
@@ -242,16 +244,23 @@ class FigmaSyncService
{
$allItems = [];
$seenSignatures = [];
+ $seenPageUrls = [];
$page = 1;
$limit = 100;
$maxPages = 100;
+ $nextPageUrl = null;
while ($page <= $maxPages) {
- $response = $this->request('GET', $endpoint, [
- 'page' => $page,
- 'limit' => $limit,
- 'per_page' => $limit,
- ]);
+ if ($nextPageUrl !== null) {
+ $response = $this->request('GET', $nextPageUrl);
+ } else {
+ $response = $this->request('GET', $endpoint, [
+ 'page' => $page,
+ 'limit' => $limit,
+ 'per_page' => $limit,
+ 'page_size' => $limit,
+ ]);
+ }
if ($response['success'] === false) {
return $response;
@@ -282,6 +291,16 @@ class FigmaSyncService
$allItems = array_merge($allItems, $newItems);
+ $nextPageUrl = $this->extractNextPageUrl($response['data']);
+ if ($nextPageUrl !== null) {
+ if (isset($seenPageUrls[$nextPageUrl])) {
+ break;
+ }
+ $seenPageUrls[$nextPageUrl] = true;
+ $page++;
+ continue;
+ }
+
if (count($items) < $limit) {
break;
}
@@ -315,6 +334,20 @@ class FigmaSyncService
return [];
}
+ private function extractNextPageUrl($data): ?string
+ {
+ if (!is_array($data)) {
+ return null;
+ }
+
+ $nextPage = $data['pagination']['next_page'] ?? $data['next_page'] ?? null;
+ if (!is_string($nextPage) || trim($nextPage) === '') {
+ return null;
+ }
+
+ return str_replace(' ', '%20', trim($nextPage));
+ }
+
private function sortByDateDesc(array $items, array $dateKeys): array
{
usort($items, function (array $left, array $right) use ($dateKeys): int {
@@ -368,11 +401,14 @@ class FigmaSyncService
private function request(string $method, string $endpoint, array $query = []): array
{
- $url = $this->baseUrl . $endpoint;
+ $isAbsolute = str_starts_with($endpoint, 'http://') || str_starts_with($endpoint, 'https://');
+ $url = $isAbsolute ? $endpoint : $this->baseUrl . $endpoint;
if (!empty($query)) {
- $url .= '?' . http_build_query($query);
+ $separator = str_contains($url, '?') ? '&' : '?';
+ $url .= $separator . http_build_query($query);
}
+ $url = str_replace(' ', '%20', $url);
$client = \Config\Services::curlrequest();
try {
diff --git a/app/Models/FigmaFileVersionsModel.php b/app/Models/FigmaFileVersionsModel.php
index 05977d9..13bc3d5 100644
--- a/app/Models/FigmaFileVersionsModel.php
+++ b/app/Models/FigmaFileVersionsModel.php
@@ -18,6 +18,7 @@ class FigmaFileVersionsModel extends Model
'description',
'name',
'editor_type',
+ 'figma_user_id',
'last_modified_figma',
'created_at_figma',
];
diff --git a/app/Views/figma_dashboard.php b/app/Views/figma_dashboard.php
index d4e2fda..688ec64 100644
--- a/app/Views/figma_dashboard.php
+++ b/app/Views/figma_dashboard.php
@@ -80,6 +80,7 @@
Description |
Version |
Editor |
+ Figma User ID |
@@ -293,7 +294,7 @@ document.addEventListener('DOMContentLoaded', async () => {
async function loadVersions() {
const tbody = document.querySelector('#tableVersions tbody');
- tbody.innerHTML = '| Loading... |
';
+ tbody.innerHTML = '| Loading... |
';
const response = await fetch(`= base_url('api/figma/snapshots') ?>?${getBaseParams(versionsState.page, versionsState.perPage)}`);
const result = await response.json();
@@ -301,7 +302,7 @@ document.addEventListener('DOMContentLoaded', async () => {
versionsState.total = 0;
versionsState.totalPages = 0;
totalVersionRows.innerText = '0';
- tbody.innerHTML = '| Failed loading snapshots |
';
+ tbody.innerHTML = '| Failed loading snapshots |
';
updatePager(versionPrev, versionNext, versionPageInfo, versionsState);
return;
}
@@ -314,7 +315,7 @@ document.addEventListener('DOMContentLoaded', async () => {
totalVersionRows.innerText = String(versionsState.total);
if (!result.data.length) {
- tbody.innerHTML = '| No snapshots found |
';
+ tbody.innerHTML = '| No snapshots found |
';
updatePager(versionPrev, versionNext, versionPageInfo, versionsState);
return;
}
@@ -326,6 +327,7 @@ document.addEventListener('DOMContentLoaded', async () => {
${escapeHtml(item.description || '')} |
${escapeHtml(item.version || item.figma_version_id || '')} |
${escapeHtml(item.editor_type || '')} |
+ ${escapeHtml(item.figma_user_id || '')} |
`;
}).join('');
diff --git a/composer.lock b/composer.lock
index 0c8b312..bd4e7f2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -8,16 +8,16 @@
"packages": [
{
"name": "bacon/bacon-qr-code",
- "version": "v3.0.3",
+ "version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/Bacon/BaconQrCode.git",
- "reference": "36a1cb2b81493fa5b82e50bf8068bf84d1542563"
+ "reference": "4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/36a1cb2b81493fa5b82e50bf8068bf84d1542563",
- "reference": "36a1cb2b81493fa5b82e50bf8068bf84d1542563",
+ "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2",
+ "reference": "4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2",
"shasum": ""
},
"require": {
@@ -57,9 +57,9 @@
"homepage": "https://github.com/Bacon/BaconQrCode",
"support": {
"issues": "https://github.com/Bacon/BaconQrCode/issues",
- "source": "https://github.com/Bacon/BaconQrCode/tree/v3.0.3"
+ "source": "https://github.com/Bacon/BaconQrCode/tree/v3.1.1"
},
- "time": "2025-11-19T17:15:36+00:00"
+ "time": "2026-04-05T21:06:35+00:00"
},
{
"name": "brick/math",
@@ -123,36 +123,37 @@
},
{
"name": "codeigniter4/framework",
- "version": "v4.6.3",
+ "version": "v4.7.2",
"source": {
"type": "git",
"url": "https://github.com/codeigniter4/framework.git",
- "reference": "68d1a5896106f869452dd369a690dd5bc75160fb"
+ "reference": "b3359be849be29394660c3aed909aa32b6c45cf6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/codeigniter4/framework/zipball/68d1a5896106f869452dd369a690dd5bc75160fb",
- "reference": "68d1a5896106f869452dd369a690dd5bc75160fb",
+ "url": "https://api.github.com/repos/codeigniter4/framework/zipball/b3359be849be29394660c3aed909aa32b6c45cf6",
+ "reference": "b3359be849be29394660c3aed909aa32b6c45cf6",
"shasum": ""
},
"require": {
"ext-intl": "*",
"ext-mbstring": "*",
- "laminas/laminas-escaper": "^2.17",
- "php": "^8.1",
+ "laminas/laminas-escaper": "^2.18",
+ "php": "^8.2",
"psr/log": "^3.0"
},
"require-dev": {
"codeigniter/coding-standard": "^1.7",
"fakerphp/faker": "^1.24",
"friendsofphp/php-cs-fixer": "^3.47.1",
- "kint-php/kint": "^6.0",
+ "kint-php/kint": "^6.1",
"mikey179/vfsstream": "^1.6.12",
"nexusphp/cs-config": "^3.6",
"phpunit/phpunit": "^10.5.16 || ^11.2",
"predis/predis": "^3.0"
},
"suggest": {
+ "ext-apcu": "If you use Cache class ApcuHandler",
"ext-curl": "If you use CURLRequest class",
"ext-dom": "If you use TestResponse",
"ext-exif": "If you run Image class tests",
@@ -164,7 +165,9 @@
"ext-memcached": "If you use Cache class MemcachedHandler with Memcached",
"ext-mysqli": "If you use MySQL",
"ext-oci8": "If you use Oracle Database",
+ "ext-pcntl": "If you use Signals",
"ext-pgsql": "If you use PostgreSQL",
+ "ext-posix": "If you use Signals",
"ext-readline": "Improves CLI::input() usability",
"ext-redis": "If you use Cache class RedisHandler",
"ext-simplexml": "If you format XML",
@@ -193,7 +196,7 @@
"slack": "https://codeigniterchat.slack.com",
"source": "https://github.com/codeigniter4/CodeIgniter4"
},
- "time": "2025-08-02T13:36:13+00:00"
+ "time": "2026-03-24T18:26:09+00:00"
},
{
"name": "dasprid/enum",
@@ -247,16 +250,16 @@
},
{
"name": "dompdf/dompdf",
- "version": "v3.1.4",
+ "version": "v3.1.5",
"source": {
"type": "git",
"url": "https://github.com/dompdf/dompdf.git",
- "reference": "db712c90c5b9868df3600e64e68da62e78a34623"
+ "reference": "f11ead23a8a76d0ff9bbc6c7c8fd7e05ca328496"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dompdf/dompdf/zipball/db712c90c5b9868df3600e64e68da62e78a34623",
- "reference": "db712c90c5b9868df3600e64e68da62e78a34623",
+ "url": "https://api.github.com/repos/dompdf/dompdf/zipball/f11ead23a8a76d0ff9bbc6c7c8fd7e05ca328496",
+ "reference": "f11ead23a8a76d0ff9bbc6c7c8fd7e05ca328496",
"shasum": ""
},
"require": {
@@ -305,9 +308,9 @@
"homepage": "https://github.com/dompdf/dompdf",
"support": {
"issues": "https://github.com/dompdf/dompdf/issues",
- "source": "https://github.com/dompdf/dompdf/tree/v3.1.4"
+ "source": "https://github.com/dompdf/dompdf/tree/v3.1.5"
},
- "time": "2025-10-29T12:43:30+00:00"
+ "time": "2026-03-03T13:54:37+00:00"
},
{
"name": "dompdf/php-font-lib",
@@ -474,32 +477,32 @@
},
{
"name": "laminas/laminas-escaper",
- "version": "2.17.0",
+ "version": "2.18.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-escaper.git",
- "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba"
+ "reference": "06f211dfffff18d91844c1f55250d5d13c007e18"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/df1ef9503299a8e3920079a16263b578eaf7c3ba",
- "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba",
+ "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/06f211dfffff18d91844c1f55250d5d13c007e18",
+ "reference": "06f211dfffff18d91844c1f55250d5d13c007e18",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-mbstring": "*",
- "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"conflict": {
"zendframework/zend-escaper": "*"
},
"require-dev": {
- "infection/infection": "^0.29.8",
- "laminas/laminas-coding-standard": "~3.0.1",
- "phpunit/phpunit": "^10.5.45",
- "psalm/plugin-phpunit": "^0.19.2",
- "vimeo/psalm": "^6.6.2"
+ "infection/infection": "^0.31.0",
+ "laminas/laminas-coding-standard": "~3.1.0",
+ "phpunit/phpunit": "^11.5.42",
+ "psalm/plugin-phpunit": "^0.19.5",
+ "vimeo/psalm": "^6.13.1"
},
"type": "library",
"autoload": {
@@ -531,7 +534,7 @@
"type": "community_bridge"
}
],
- "time": "2025-05-06T19:29:36+00:00"
+ "time": "2025-10-14T18:31:13+00:00"
},
{
"name": "masterminds/html5",
@@ -806,33 +809,35 @@
},
{
"name": "sabberworm/php-css-parser",
- "version": "v9.1.0",
+ "version": "v9.3.0",
"source": {
"type": "git",
"url": "https://github.com/MyIntervals/PHP-CSS-Parser.git",
- "reference": "1b363fdbdc6dd0ca0f4bf98d3a4d7f388133f1fb"
+ "reference": "88dbd0f7f91abbfe4402d0a3071e9ff4d81ed949"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/1b363fdbdc6dd0ca0f4bf98d3a4d7f388133f1fb",
- "reference": "1b363fdbdc6dd0ca0f4bf98d3a4d7f388133f1fb",
+ "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/88dbd0f7f91abbfe4402d0a3071e9ff4d81ed949",
+ "reference": "88dbd0f7f91abbfe4402d0a3071e9ff4d81ed949",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
- "thecodingmachine/safe": "^1.3 || ^2.5 || ^3.3"
+ "thecodingmachine/safe": "^1.3 || ^2.5 || ^3.4"
},
"require-dev": {
"php-parallel-lint/php-parallel-lint": "1.4.0",
"phpstan/extension-installer": "1.4.3",
- "phpstan/phpstan": "1.12.28 || 2.1.25",
- "phpstan/phpstan-phpunit": "1.4.2 || 2.0.7",
- "phpstan/phpstan-strict-rules": "1.6.2 || 2.0.6",
- "phpunit/phpunit": "8.5.46",
+ "phpstan/phpstan": "1.12.32 || 2.1.32",
+ "phpstan/phpstan-phpunit": "1.4.2 || 2.0.8",
+ "phpstan/phpstan-strict-rules": "1.6.2 || 2.0.7",
+ "phpunit/phpunit": "8.5.52",
"rawr/phpunit-data-provider": "3.3.1",
- "rector/rector": "1.2.10 || 2.1.7",
- "rector/type-perfect": "1.0.0 || 2.1.0"
+ "rector/rector": "1.2.10 || 2.2.8",
+ "rector/type-perfect": "1.0.0 || 2.1.0",
+ "squizlabs/php_codesniffer": "4.0.1",
+ "thecodingmachine/phpstan-safe-rule": "1.2.0 || 1.4.1"
},
"suggest": {
"ext-mbstring": "for parsing UTF-8 CSS"
@@ -840,10 +845,14 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "9.2.x-dev"
+ "dev-main": "9.4.x-dev"
}
},
"autoload": {
+ "files": [
+ "src/Rule/Rule.php",
+ "src/RuleSet/RuleContainer.php"
+ ],
"psr-4": {
"Sabberworm\\CSS\\": "src/"
}
@@ -874,22 +883,22 @@
],
"support": {
"issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues",
- "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.1.0"
+ "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.3.0"
},
- "time": "2025-09-14T07:37:21+00:00"
+ "time": "2026-03-03T17:31:43+00:00"
},
{
"name": "thecodingmachine/safe",
- "version": "v3.3.0",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/thecodingmachine/safe.git",
- "reference": "2cdd579eeaa2e78e51c7509b50cc9fb89a956236"
+ "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/2cdd579eeaa2e78e51c7509b50cc9fb89a956236",
- "reference": "2cdd579eeaa2e78e51c7509b50cc9fb89a956236",
+ "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/705683a25bacf0d4860c7dea4d7947bfd09eea19",
+ "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19",
"shasum": ""
},
"require": {
@@ -999,7 +1008,7 @@
"description": "PHP core functions that throw exceptions instead of returning FALSE on error",
"support": {
"issues": "https://github.com/thecodingmachine/safe/issues",
- "source": "https://github.com/thecodingmachine/safe/tree/v3.3.0"
+ "source": "https://github.com/thecodingmachine/safe/tree/v3.4.0"
},
"funding": [
{
@@ -1010,12 +1019,16 @@
"url": "https://github.com/shish",
"type": "github"
},
+ {
+ "url": "https://github.com/silasjoisten",
+ "type": "github"
+ },
{
"url": "https://github.com/staabm",
"type": "github"
}
],
- "time": "2025-05-14T06:15:44+00:00"
+ "time": "2026-02-04T18:08:13+00:00"
}
],
"packages-dev": [
@@ -1196,16 +1209,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v5.6.1",
+ "version": "v5.7.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
+ "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
- "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82",
+ "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82",
"shasum": ""
},
"require": {
@@ -1248,9 +1261,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0"
},
- "time": "2025-08-13T20:13:15+00:00"
+ "time": "2025-12-06T11:56:16+00:00"
},
{
"name": "phar-io/manifest",
@@ -1693,16 +1706,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "10.5.51",
+ "version": "10.5.63",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "ace160e31aaa317a99c411410c40c502b4be42a4"
+ "reference": "33198268dad71e926626b618f3ec3966661e4d90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ace160e31aaa317a99c411410c40c502b4be42a4",
- "reference": "ace160e31aaa317a99c411410c40c502b4be42a4",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33198268dad71e926626b618f3ec3966661e4d90",
+ "reference": "33198268dad71e926626b618f3ec3966661e4d90",
"shasum": ""
},
"require": {
@@ -1723,10 +1736,10 @@
"phpunit/php-timer": "^6.0.0",
"sebastian/cli-parser": "^2.0.1",
"sebastian/code-unit": "^2.0.0",
- "sebastian/comparator": "^5.0.3",
+ "sebastian/comparator": "^5.0.5",
"sebastian/diff": "^5.1.1",
"sebastian/environment": "^6.1.0",
- "sebastian/exporter": "^5.1.2",
+ "sebastian/exporter": "^5.1.4",
"sebastian/global-state": "^6.0.2",
"sebastian/object-enumerator": "^5.0.0",
"sebastian/recursion-context": "^5.0.1",
@@ -1774,7 +1787,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.51"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.63"
},
"funding": [
{
@@ -1798,7 +1811,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-12T07:31:25+00:00"
+ "time": "2026-01-27T05:48:37+00:00"
},
{
"name": "psr/container",
@@ -2023,16 +2036,16 @@
},
{
"name": "sebastian/comparator",
- "version": "5.0.3",
+ "version": "5.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e"
+ "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e",
- "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55dfef806eb7dfeb6e7a6935601fef866f8ca48d",
+ "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d",
"shasum": ""
},
"require": {
@@ -2088,15 +2101,27 @@
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"security": "https://github.com/sebastianbergmann/comparator/security/policy",
- "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.5"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator",
+ "type": "tidelift"
}
],
- "time": "2024-10-18T14:56:07+00:00"
+ "time": "2026-01-24T09:25:16+00:00"
},
{
"name": "sebastian/complexity",
@@ -2289,16 +2314,16 @@
},
{
"name": "sebastian/exporter",
- "version": "5.1.2",
+ "version": "5.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "955288482d97c19a372d3f31006ab3f37da47adf"
+ "reference": "0735b90f4da94969541dac1da743446e276defa6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf",
- "reference": "955288482d97c19a372d3f31006ab3f37da47adf",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6",
+ "reference": "0735b90f4da94969541dac1da743446e276defa6",
"shasum": ""
},
"require": {
@@ -2307,7 +2332,7 @@
"sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^10.0"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
@@ -2355,15 +2380,27 @@
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
"security": "https://github.com/sebastianbergmann/exporter/security/policy",
- "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter",
+ "type": "tidelift"
}
],
- "time": "2024-03-02T07:17:12+00:00"
+ "time": "2025-09-24T06:09:11+00:00"
},
{
"name": "sebastian/global-state",
@@ -2851,16 +2888,16 @@
},
{
"name": "theseer/tokenizer",
- "version": "1.2.3",
+ "version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c",
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c",
"shasum": ""
},
"require": {
@@ -2889,7 +2926,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
+ "source": "https://github.com/theseer/tokenizer/tree/1.3.1"
},
"funding": [
{
@@ -2897,7 +2934,7 @@
"type": "github"
}
],
- "time": "2024-03-03T12:36:25+00:00"
+ "time": "2025-11-17T20:03:58+00:00"
}
],
"aliases": [],
diff --git a/crmv2_20260428_010106.sql.gz b/crmv2_20260428_010106.sql.gz
new file mode 100644
index 0000000000000000000000000000000000000000..53e828ccb7434b7c9b11c1fd2904db65a0ccb8fa
GIT binary patch
literal 10002092
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
z
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