ps('claim_description'), 'address' => ps('claim_address'), 'phone' => ps('claim_public_phone'), 'email' => ps('claim_public_email'), 'website' => ps('claim_website'), 'video_url' => ps('claim_video_url'), ]; if ($tier === 'business_owner') { if (!$claimBizId) { $errors[] = 'Please select the business page you want to claim.'; } else { $claimBiz = qone("SELECT * FROM businesses WHERE id=? AND is_active=1", [$claimBizId]); if (!$claimBiz) $errors[] = 'Please select a valid listed business.'; } if ($contactPhone === '' || strlen(preg_replace('/\D+/', '', $contactPhone)) < 7) { $errors[] = 'Please enter a contact phone number for verification.'; } if ($claimEdits['email'] !== '' && !filter_var($claimEdits['email'], FILTER_VALIDATE_EMAIL)) { $errors[] = 'Please enter a valid public email edit.'; } if (!validBusinessVideoUrl($claimEdits['video_url'])) { $errors[] = 'Business videos must be a YouTube or Vimeo URL.'; } } if (!$errors) { $id = qrun( "INSERT INTO users(username,email,password,is_active,member_type)VALUES(?,?,?,?,?)", [$un, $em, password_hash($pw, PASSWORD_BCRYPT), 0, $tier] ); $submittedEdits = 0; if ($tier === 'business_owner' && $claimBiz) { qrun( "INSERT INTO business_claim_requests(business_id,user_id,contact_phone)VALUES(?,?,?)", [$claimBizId, $id, $contactPhone] ); foreach ($claimEdits as $field => $newValue) { if ($newValue === '') continue; $oldValue = (string)($claimBiz[$field] ?? ''); if ($newValue === $oldValue) continue; qrun( "INSERT INTO business_edit_requests(business_id,user_id,field,old_value,new_value)VALUES(?,?,?,?,?)", [$claimBizId, $id, $field, $oldValue, $newValue] ); $submittedEdits++; } } $user = qone("SELECT * FROM users WHERE id=?", [$id]); $token = createEmailVerificationToken($id); [$sent, $mailError] = sendVerificationEmail($user, $token); if (!$sent) { qrun("DELETE FROM users WHERE id=?", [$id]); $errors[] = 'Account was not created because the verification email could not be sent: '.$mailError; } if (!$errors) { if ($tier === 'business_owner' && $claimBiz) { $msg = 'Check your email to verify your account. After verification you can log in, and we will contact you at '.$contactPhone.' within a few business days for business verification.'; if ($submittedEdits) $msg .= ' '.$submittedEdits.' proposed edit'.($submittedEdits !== 1 ? 's were' : ' was').' sent to admin review.'; flash($msg, 'success'); go('/login.php'); } flash('Check your email to verify your account before signing in.', 'success'); go('/login.php'); } } } $ownerSelected = $tier === 'business_owner'; $footExtra = << (() => { const radios = document.querySelectorAll('input[name="member_type"]'); const ownerFields = document.getElementById('ownerClaimFields'); const sync = () => { const owner = document.querySelector('input[name="member_type"]:checked')?.value === 'business_owner'; ownerFields?.classList.toggle('is-open', owner); ownerFields?.querySelectorAll('[data-owner-required]').forEach(el => { if (owner) el.setAttribute('required', 'required'); else el.removeAttribute('required'); }); }; radios.forEach(r => r.addEventListener('change', sync)); sync(); })(); HTML; include __DIR__.'/includes/header.php'; ?>
Choose a community membership or start a verified business-owner claim for a page already listed in the directory.