PDO::ERRMODE_EXCEPTION] ); // ---- AUTH (demo user=1) ---- session_start(); $user_id = 1; // ---- HANDLER ---- $success=$error=''; if($_SERVER['REQUEST_METHOD']==='POST'){ $tab = $_POST['tab'] ?? ''; // 1) CHANGE PASSWORD if($tab==='change_password'){ $cur = $_POST['current_password'] ?? ''; $new = $_POST['new_password'] ?? ''; $cnf = $_POST['confirm_password'] ?? ''; $h = $pdo->prepare("SELECT password_hash FROM cardealer_users WHERE id=?"); $h->execute([$user_id]); $hash = $h->fetchColumn(); if(!$hash || !password_verify($cur,$hash)){ $error="הסיסמה הנוכחית שגויה."; } elseif($new!==$cnf){ $error="הסיסמאות אינן תואמות."; } elseif(!preg_match('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/u',$new)){ $error="הסיסמה לא עומדת בדרישות."; } else { $ph = password_hash($new,PASSWORD_DEFAULT); $pdo->prepare("UPDATE cardealer_users SET password_hash=? WHERE id=?") ->execute([$ph,$user_id]); $success="הסיסמה שונתה בהצלחה."; } } // 2) WEBSITE SETTINGS if($tab==='website_settings'){ // TEXT $site_title = $_POST['site_title'] ?? ''; $desc = $_POST['main_page_description'] ?? ''; $keys = $_POST['main_page_keywords'] ?? ''; $footer_links = $_POST['footer_links'] ?? '[]'; // TOGGLES foreach([ 'allow_leads_car_page','allow_leads_homepage','allow_leads_text_pages', 'resize_images','maintenance_mode','reviews_enabled','show_reviews_on_main' ] as $t){ $$t = !empty($_POST[$t])?1:0; } // NUMERIC & OTHERS $cw = $_POST['car_list_image_width']?:null; $ch = $_POST['car_list_image_height']?:null; $gw = $_POST['gallery_image_width']?:null; $gh = $_POST['gallery_image_height']?:null; $msg = $_POST['maintenance_message'] ?? ''; $colors = $_POST['default_colors'] ?? ''; $cards = $_POST['cards_per_tab'] ?? '10'; $grid = $_POST['grid_listing_limit'] ?? '10'; $orient = $_POST['grid_orientation'] ?? 'user_choice'; $loan_min = $_POST['loan_min'] ?: 0; $loan_max = $_POST['loan_max'] ?: 0; $rate = $_POST['interest_rate'] ?: 0; $terms_arr = $_POST['payment_terms'] ?? []; $terms = implode(',',$terms_arr); $cem = $_POST['contact_email'] ?? ''; $cset = $_POST['contact_settings'] ?? ''; // UPLOADS $favicon=$logo_dark=$logo_light=null; foreach(['favicon','logo_dark','logo_light'] as $f){ if(!empty($_FILES[$f]['name']) && $_FILES[$f]['error']===0){ $ext=pathinfo($_FILES[$f]['name'],PATHINFO_EXTENSION); $fn="$f_".time().".$ext"; if(move_uploaded_file($_FILES[$f]['tmp_name'],UPLOADS_DIR.$fn)){ $$f=UPLOADS_URL.$fn; } } } // BUILD UPDATE $sql = "UPDATE cardealer_settings SET site_title=?,main_page_description=?,main_page_keywords=?,footer_links=?, allow_leads_car_page=?,allow_leads_homepage=?,allow_leads_text_pages=?,resize_images=?, car_list_image_width=?,car_list_image_height=?,gallery_image_width=?,gallery_image_height=?, maintenance_mode=?,maintenance_message=?,default_colors=?,cards_per_tab=?, grid_listing_limit=?,grid_orientation=?,loan_min=?,loan_max=?,interest_rate=?,payment_terms=?, reviews_enabled=?,show_reviews_on_main=?,contact_email=?,contact_settings=?"; $params = [ $site_title,$desc,$keys,$footer_links, $allow_leads_car_page,$allow_leads_homepage,$allow_leads_text_pages,$resize_images, $cw,$ch,$gw,$gh, $maintenance_mode,$msg,$colors,$cards, $grid,$orient,$loan_min,$loan_max,$rate,$terms, $reviews_enabled,$show_reviews_on_main,$cem,$cset ]; if($favicon){$sql.=",favicon_path=?"; $params[]=$favicon;} if($logo_dark){$sql.=",logo_dark=?"; $params[]=$logo_dark;} if($logo_light){$sql.=",logo_light=?"; $params[]=$logo_light;} $sql.=" WHERE id=1"; $pdo->prepare($sql)->execute($params); $success="הגדרות האתר נשמרו בהצלחה."; } // 3) EMAIL MARKETING if($tab==='email_marketing'){ $fields=['smtp_host','smtp_port','smtp_user','smtp_pass','smtp_secure','email_from','email_from_name','template_subject','template_body']; $csarr=[]; foreach($fields as $f) $csarr[$f] = $_POST[$f] ?? ''; $pdo->prepare("UPDATE cardealer_settings SET contact_settings=? WHERE id=1") ->execute([json_encode($csarr,JSON_UNESCAPED_UNICODE)]); $success="הגדרות הדיוור נשמרו בהצלחה."; } } // ---- LOAD USER & SETTINGS ---- $user = $pdo->prepare("SELECT * FROM cardealer_users WHERE id=?"); $user->execute([$user_id]); $user = $user->fetch(PDO::FETCH_ASSOC); $st = $pdo->query("SELECT * FROM cardealer_settings WHERE id=1")->fetch(PDO::FETCH_ASSOC); $cs = json_decode($st['contact_settings'] ?? '[]', true); // ---- LOAD LEADS ---- $page = max(1,intval($_GET['leads_page']??1)); $per = 10; $off=($page-1)*$per; $leads = $pdo->prepare("SELECT * FROM cardealer_leads ORDER BY id DESC LIMIT ? OFFSET ?"); $leads->bindValue(1,$per,PDO::PARAM_INT); $leads->bindValue(2,$off,PDO::PARAM_INT); $leads->execute(); $leads=$leads->fetchAll(PDO::FETCH_ASSOC); $total=$pdo->query("SELECT COUNT(*) FROM cardealer_leads")->fetchColumn(); $pages=ceil($total/$per); ?>