/* =========================================================
* AB Legal V8.2 - Couverture documentaire 2016-2026
* ========================================================= */
function ab_legal_v82_years(){ return range(2016, 2026); }
function ab_legal_v82_year_count($year){
if(!ab_legal_v6_configured()) return ['documents'=>0,'jo'=>0,'pdf'=>0];
$from=$year.'-01-01'; $to=($year+1).'-01-01';
$q='?select=id,journal_number,pdf_available,official_pdf_url&publication_date=gte.'.rawurlencode($from).'&publication_date=lt.'.rawurlencode($to).'&limit=5000';
$rows=ab_legal_supabase_request('GET','legal_documents',null,$q);
if(is_wp_error($rows) || !is_array($rows)) return ['documents'=>0,'jo'=>0,'pdf'=>0];
$jos=[]; $pdf=0;
foreach($rows as $r){
if(!empty($r['journal_number'])) $jos[$r['journal_number']]=1;
if(!empty($r['pdf_available']) || !empty($r['official_pdf_url'])) $pdf++;
}
return ['documents'=>count($rows),'jo'=>count($jos),'pdf'=>$pdf];
}
function ab_legal_v82_type_count($type){
if(!ab_legal_v6_configured()) return 0;
$res=ab_legal_supabase_request('GET','legal_documents',null,'?select=id&document_type=ilike.'.rawurlencode('*'.$type.'*').'&limit=5000');
return is_wp_error($res)?0:count($res);
}
function ab_legal_v82_missing_pdf_count(){
if(!ab_legal_v6_configured()) return 0;
$res=ab_legal_supabase_request('GET','legal_documents',null,'?select=id&or=(official_pdf_url.is.null,official_pdf_url.eq.)&limit=5000');
return is_wp_error($res)?0:count($res);
}
function ab_legal_v82_coverage_page(){
if(!current_user_can('manage_options')) return;
ab_legal_v6_css(); ab_legal_v6_notice();
echo '
Couverture documentaire 2016-2026
Objectif : savoir ce qui existe réellement dans la base, voir les manquants et compléter les sources PDF avant de corriger les petits bugs.
';
$docs=ab_legal_v6_count_table('legal_documents'); $codes=ab_legal_v82_type_count('Code'); $lois=ab_legal_v82_type_count('Loi'); $missing=ab_legal_v82_missing_pdf_count();
echo '
Documents'.intval($docs).'
Codes'.intval($codes).'Objectif : 15+
Lois'.intval($lois).'
PDF à compléter'.intval($missing).'
';
echo '
Couverture par année
Cette table vérifie les documents déjà importés par date de publication. Elle permet de piloter l’import des JO sur 10 ans sans se perdre.
| Année | Documents importés | JO distincts détectés | PDF directs | Statut |
';
foreach(ab_legal_v82_years() as $y){
$c=ab_legal_v82_year_count($y);
$status = $c['documents']>0 ? 'Démarré' : 'Vide';
echo '| '.intval($y).' | '.intval($c['documents']).' | '.intval($c['jo']).' | '.intval($c['pdf']).' | '.$status.' |
';
}
echo '
';
echo '
Priorité d’enrichissement
1. JO 2016-2026
Importer progressivement les JO par année complète, puis valider les textes utiles.
2. Codes
Passer de 5 codes à 15+ codes avec PDF / version consolidée / historique.
3. Sources PDF
Remplacer tous les liens génériques par des PDF officiels directs ou afficher “PDF à compléter”.
';
}
function ab_legal_v82_handle_seed_coverage(){
if(!current_user_can('manage_options')) wp_die('Accès refusé.'); check_admin_referer('ab_legal_v6_action');
$sources=[
['source_name'=>'JORADP - Journaux officiels 2016-2026','source_type'=>'official_journal','source_url'=>'https://www.joradp.dz/FTP/jo-francais/','watch_frequency'=>'weekly','status'=>'active'],
['source_name'=>'Portail du droit algérien - Codes consolidés','source_type'=>'codes','source_url'=>'https://droit.mjustice.dz','watch_frequency'=>'weekly','status'=>'active'],
['source_name'=>'Banque d’Algérie - Règlements et instructions','source_type'=>'banking','source_url'=>'https://www.bank-of-algeria.dz','watch_frequency'=>'weekly','status'=>'active'],
['source_name'=>'DGI - Fiscalité','source_type'=>'tax','source_url'=>'https://www.mfdgi.gov.dz','watch_frequency'=>'weekly','status'=>'active'],
['source_name'=>'Douanes algériennes','source_type'=>'customs','source_url'=>'https://www.douane.gov.dz','watch_frequency'=>'weekly','status'=>'active'],
];
$ok=0; $err=0;
foreach($sources as $s){ $r=ab_legal_save_official_source($s); if(is_wp_error($r)) $err++; else $ok++; }
ab_legal_v6_redirect('ab-legal-coverage','Plan documentaire installé : '.$ok.' sources, '.$err.' erreur(s).', $err?'warning':'success');
}
function ab_legal_v82_handle_complete_sources(){
if(!current_user_can('manage_options')) wp_die('Accès refusé.'); check_admin_referer('ab_legal_v6_action');
$patches=[
['like'=>'%loi de finances%2026%','pdf'=>'https://www.joradp.dz/FTP/jo-francais/2025/F2025088.pdf','note'=>'PDF officiel direct - JO n°88 du 31 décembre 2025'],
['like'=>'%loi de finances%2025%','pdf'=>'https://www.joradp.dz/FTP/jo-francais/2024/F2024084.pdf','note'=>'PDF officiel direct - Loi de finances 2025'],
['like'=>'%loi de finances%2024%','pdf'=>'https://www.joradp.dz/FTP/jo-francais/2023/F2023086.pdf','note'=>'PDF officiel direct - Loi de finances 2024'],
['like'=>'%investissement%','pdf'=>'https://www.joradp.dz/FTP/jo-francais/2022/F2022050.pdf','note'=>'PDF officiel direct - Loi n°22-18 relative à l’investissement'],
['like'=>'%commerce électronique%','pdf'=>'https://www.joradp.dz/FTP/jo-francais/2018/F2018028.pdf','note'=>'PDF officiel direct - Loi relative au commerce électronique'],
['like'=>'%code de commerce%','pdf'=>'https://www.joradp.dz/FTP/jo-francais/2022/F2022032.pdf','note'=>'PDF officiel direct - Texte modificatif Code de commerce 2022'],
];
$updated=0; $errors=0;
foreach($patches as $p){
$payload=['official_pdf_url'=>$p['pdf'],'pdf_url'=>$p['pdf'],'official_page_url'=>'https://www.joradp.dz','source_url'=>$p['pdf'],'pdf_available'=>true,'source_note'=>$p['note'],'updated_at'=>current_time('mysql', true)];
$r=ab_legal_supabase_request('PATCH','legal_documents',$payload,'?title=ilike.'.rawurlencode($p['like']));
if(is_wp_error($r)) $errors++; else $updated++;
}
ab_legal_v6_redirect('ab-legal-coverage','Sources PDF complétées : '.$updated.' familles corrigées, '.$errors.' erreur(s).', $errors?'warning':'success');
}
add_action('admin_post_ab_legal_v82_seed_coverage','ab_legal_v82_handle_seed_coverage');
add_action('admin_post_ab_legal_v82_complete_sources','ab_legal_v82_handle_complete_sources');
https://www.algeriabusiness.info/wp-sitemap-posts-post-1.xmlhttps://www.algeriabusiness.info/wp-sitemap-posts-page-1.xmlhttps://www.algeriabusiness.info/wp-sitemap-posts-tribe_events-1.xmlhttps://www.algeriabusiness.info/wp-sitemap-taxonomies-category-1.xmlhttps://www.algeriabusiness.info/wp-sitemap-taxonomies-post_tag-1.xmlhttps://www.algeriabusiness.info/wp-sitemap-taxonomies-tribe_events_cat-1.xmlhttps://www.algeriabusiness.info/wp-sitemap-users-1.xml