/* ========================================================= * 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.
'; wp_nonce_field('ab_legal_v6_action'); echo '
'; wp_nonce_field('ab_legal_v6_action'); echo '
Voir la bibliothèque
'; $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.

'; foreach(ab_legal_v82_years() as $y){ $c=ab_legal_v82_year_count($y); $status = $c['documents']>0 ? 'Démarré' : 'Vide'; echo ''; } echo '
AnnéeDocuments importésJO distincts détectésPDF directsStatut
'.intval($y).''.intval($c['documents']).''.intval($c['jo']).''.intval($c['pdf']).''.$status.'
'; 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