• Mahmoud Aglan's avatar
    feat(org-announcements): publishing reaches every member, once · 38add483
    Mahmoud Aglan authored
    Image uploads never worked (validateFile's null success was read as failure,
    generatePath got three arguments, the returned URL was treated as a flag);
    expiry was never saved; an Arabic-only announcement could not be stored
    (title and content are NOT NULL); the list linked to an unpublish route that
    did not exist.
    
    Now: Arabic title and text are what is required, expiry is entered in Cairo
    time, images go to org-media (JPEG/PNG/WebP up to 5 MB, removed from storage
    when replaced, removed or the announcement is deleted). Publishing sets
    published_at and sends one org_announcement notification to every active
    member, in chunks of 500, with org_id and announcement_id in data; it is
    logged in org_activity_log. Republishing after an unpublish never notifies
    twice. "Publish now" on create needs the same permission as publish.
    Co-Authored-By: 's avatarClaude Opus 5.5 <noreply@anthropic.com>
    38add483
routes.php 34.5 KB