PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
sanitize($_POST['monday_hours']), 'tuesday' => sanitize($_POST['tuesday_hours']), 'wednesday' => sanitize($_POST['wednesday_hours']), 'thursday' => sanitize($_POST['thursday_hours']), 'friday' => sanitize($_POST['friday_hours']), 'saturday' => sanitize($_POST['saturday_hours']), 'sunday' => sanitize($_POST['sunday_hours']) ); // var_dump($_FILES); // die(); // Handle logo upload if (isset($_FILES['site_logo']) && $_FILES['site_logo']['error'] === 0) { $upload_dir = '../assets/images/'; if (!file_exists($upload_dir)) { mkdir($upload_dir, 0777, true); } $file_name = 'logo.' . pathinfo($_FILES['site_logo']['name'], PATHINFO_EXTENSION); $target_file = $upload_dir . $file_name; if (move_uploaded_file($_FILES['site_logo']['tmp_name'], $target_file)) { updateSetting('site_logo', 'assets/images/' . $file_name); } } // Handle favicon upload if (isset($_FILES['favicon']) && $_FILES['favicon']['error'] === 0) { $upload_dir = '../assets/images/'; if (!file_exists($upload_dir)) { mkdir($upload_dir, 0777, true); } $file_name = 'favicon.' . pathinfo($_FILES['favicon']['name'], PATHINFO_EXTENSION); $target_file = $upload_dir . $file_name; if (move_uploaded_file($_FILES['favicon']['tmp_name'], $target_file)) { updateSetting('favicon', 'assets/images/' . $file_name); } } // Handle signature upload if (isset($_FILES['signature']) && $_FILES['signature']['error'] === 0) { $upload_dir = '../assets/images/'; if (!file_exists($upload_dir)) { mkdir($upload_dir, 0777, true); } $file_name = 'signature.' . pathinfo($_FILES['signature']['name'], PATHINFO_EXTENSION); $target_file = $upload_dir . $file_name; if (move_uploaded_file($_FILES['signature']['tmp_name'], $target_file)) { updateSetting('signature', 'assets/images/' . $file_name); } } // Handle logo upload if (isset($_FILES['dark_logo']) && $_FILES['dark_logo']['error'] === 0) { $upload_dir = '../assets/images/'; if (!file_exists($upload_dir)) { mkdir($upload_dir, 0777, true); } $file_name = 'dark_logo.' . pathinfo($_FILES['dark_logo']['name'], PATHINFO_EXTENSION); $target_file = $upload_dir . $file_name; if (move_uploaded_file($_FILES['dark_logo']['tmp_name'], $target_file)) { updateSetting('dark_logo', 'assets/images/' . $file_name); } } // Update primary_color based on gradient style if ($gradient_style === 'none') { // Store solid color directly $primary_color = sanitize($_POST['primary_color']); updateSetting('primary_color', $primary_color); } else { // Store complete gradient value in primary_color $start_color = sanitize($_POST['gradient_start_color']); $end_color = sanitize($_POST['gradient_end_color']); $direction = sanitize($_POST['gradient_direction']); if ($gradient_style === 'linear') { $gradient_value = "linear-gradient({$direction}, {$start_color}, {$end_color})"; } else { $gradient_value = "radial-gradient(circle, {$start_color}, {$end_color})"; } updateSetting('primary_color', $gradient_value); } // Always update gradient style for UI purposes updateSetting('gradient_style', $gradient_style); updateSetting('gradient_start_color', sanitize($_POST['gradient_start_color'])); updateSetting('gradient_end_color', sanitize($_POST['gradient_end_color'])); updateSetting('gradient_direction', sanitize($_POST['gradient_direction'])); updateSetting('primary_color', $gradient_value); // Update settings $settings = array( 'company_name' => $company_name, 'company_address' => $company_address, 'company_phone' => $company_phone, 'company_email' => $company_email, 'company_city' => $company_city, 'director_name' => $director_name, 'bank_account_name' => $bank_account_name, 'bank_bca' => $bank_bca, 'bank_mandiri' => $bank_mandiri, 'bank_bri' => $bank_bri, 'primary_color' => $gradient_value, 'secondary_color' => $secondary_color, 'accent_color' => $accent_color, 'gradient_style' => $gradient_style, 'gradient_value' => $gradient_value, 'gradient_start_color' => sanitize($_POST['gradient_start_color']), 'gradient_end_color' => sanitize($_POST['gradient_end_color']), 'gradient_direction' => sanitize($_POST['gradient_direction']), 'facebook_url' => $facebook_url, 'twitter_url' => $twitter_url, 'instagram_url' => $instagram_url, 'whatsapp_number' => $whatsapp_number, 'whatsapp_api_key' => $whatsapp_api_key, 'business_hours' => json_encode($business_hours), ); foreach ($settings as $key => $value) { if (!updateSetting($key, $value)) { $error = "Failed to update settings"; } } if (!$error) { logger()->info("Updated general settings"); setFlashMessage('success', "Settings updated successfully"); header('Location: settings.php'); exit; } break; case 'add_team_member': $name = sanitize($_POST['name']); $position = sanitize($_POST['position']); $facebook = sanitize($_POST['facebook']); $instagram = sanitize($_POST['instagram']); $linkedin = sanitize($_POST['linkedin']); // Handle photo upload $photo = ''; if (isset($_FILES['photo']) && $_FILES['photo']['error'] === 0) { $upload_dir = '../assets/images/team/'; if (!file_exists($upload_dir)) { mkdir($upload_dir, 0777, true); } $file_name = uniqid() . '.' . pathinfo($_FILES['photo']['name'], PATHINFO_EXTENSION); $target_file = $upload_dir . $file_name; if (move_uploaded_file($_FILES['photo']['tmp_name'], $target_file)) { $photo = 'assets/images/team/' . $file_name; } } $sql = "INSERT INTO team_members (name, position, photo, facebook, instagram, linkedin) VALUES (?, ?, ?, ?, ?, ?)"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "ssssss", $name, $position, $photo, $facebook, $instagram, $linkedin); if (mysqli_stmt_execute($stmt)) { logger()->info("Added new team member: {name}", ['name' => $name]); setFlashMessage('success', "Team member added successfully"); } else { setFlashMessage('error', "Failed to add team member"); } header('Location: settings.php'); exit; break; case 'update_team_member': $id = (int)$_POST['id']; $name = sanitize($_POST['name']); $position = sanitize($_POST['position']); $facebook = sanitize($_POST['facebook']); $instagram = sanitize($_POST['instagram']); $linkedin = sanitize($_POST['linkedin']); // Handle photo upload if (isset($_FILES['photo']) && $_FILES['photo']['error'] === 0) { $upload_dir = '../assets/images/team/'; if (!file_exists($upload_dir)) { mkdir($upload_dir, 0777, true); } $file_name = uniqid() . '.' . pathinfo($_FILES['photo']['name'], PATHINFO_EXTENSION); $target_file = $upload_dir . $file_name; if (move_uploaded_file($_FILES['photo']['tmp_name'], $target_file)) { // Delete old photo $old_photo_query = mysqli_query($conn, "SELECT photo FROM team_members WHERE id = $id"); $old_photo = mysqli_fetch_assoc($old_photo_query)['photo']; if ($old_photo && file_exists("../$old_photo")) { unlink("../$old_photo"); } $sql = "UPDATE team_members SET name = ?, position = ?, photo = ?, facebook = ?, instagram = ?, linkedin = ? WHERE id = ?"; $stmt = mysqli_prepare($conn, $sql); $photo_path = 'assets/images/team/' . $file_name; mysqli_stmt_bind_param($stmt, "ssssssi", $name, $position, $photo_path, $facebook, $instagram, $linkedin, $id); } } else { $sql = "UPDATE team_members SET name = ?, position = ?, facebook = ?, instagram = ?, linkedin = ? WHERE id = ?"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "sssssi", $name, $position, $facebook, $instagram, $linkedin, $id); } if (mysqli_stmt_execute($stmt)) { logger()->info("Updated team member: {name}", ['name' => $name]); setFlashMessage('success', "Team member updated successfully"); } else { setFlashMessage('error', "Failed to update team member"); } header('Location: settings.php'); exit; break; case 'delete_team_member': $id = (int)$_POST['id']; // Get photo path $photo_query = mysqli_query($conn, "SELECT photo FROM team_members WHERE id = $id"); $photo = mysqli_fetch_assoc($photo_query)['photo']; // Delete photo file if ($photo && file_exists("../$photo")) { unlink("../$photo"); } // Delete record $sql = "DELETE FROM team_members WHERE id = ?"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "i", $id); if (mysqli_stmt_execute($stmt)) { logger()->info("Deleted team member ID: {id}", ['id' => $id]); setFlashMessage('success', "Team member deleted successfully"); } else { setFlashMessage('error', "Failed to delete team member"); } header('Location: settings.php'); exit; break; } } } // Get current settings $settings = array(); $result = mysqli_query($conn, "SELECT * FROM settings"); while ($row = mysqli_fetch_assoc($result)) { $settings[$row['name']] = $row['value']; } // Get team members $team_members = array(); $result = mysqli_query($conn, "SELECT * FROM team_members ORDER BY id"); while ($row = mysqli_fetch_assoc($result)) { $team_members[] = $row; } // Parse business hours $business_hours = isset($settings['business_hours']) ? json_decode($settings['business_hours'], true) : array(); // Create settings table if it doesn't exist $create_settings_table = "CREATE TABLE IF NOT EXISTS settings ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL UNIQUE, value TEXT, description TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP )"; if (!mysqli_query($conn, $create_settings_table)) { die("Error creating settings table: " . mysqli_error($conn)); } // Add new settings if they don't exist $new_settings = [ 'company_name' => 'Company Name', 'company_address' => 'Company Address', 'company_phone' => 'Company Phone', 'company_email' => 'Company Email', 'company_city' => 'Company City', 'director_name' => 'Director Name', 'bank_bca' => 'UOB Account Number', 'bank_mandiri' => 'Mandiri Account Number', 'bank_bri' => 'BSI Account Number', 'bank_account_name' => 'Bank Account Name', 'favicon' => 'Favicon' ]; foreach ($new_settings as $name => $description) { // Check if setting already exists $check_sql = "SELECT id FROM settings WHERE name = ?"; $check_stmt = $conn->prepare($check_sql); if ($check_stmt) { $check_stmt->bind_param("s", $name); $check_stmt->execute(); $check_stmt->store_result(); if ($check_stmt->num_rows == 0) { // Setting doesn't exist, insert it $insert_sql = "INSERT INTO settings (name, description) VALUES (?, ?)"; $insert_stmt = $conn->prepare($insert_sql); if ($insert_stmt) { $insert_stmt->bind_param("ss", $name, $description); $insert_stmt->execute(); $insert_stmt->close(); } } $check_stmt->close(); } } // Prepare content $content = '
General Settings
Company Information
' . (isset($settings['site_logo']) ? 'Site Logo' : '') . '
' . (isset($settings['signature']) ? 'Signature' : '') . '
' . (isset($settings['dark_logo']) ? 'Dark Logo' : '') . '
' . (isset($settings['favicon']) ? 'Favicon' : '') . '
Bank Account Information
Website Colors
Social Media Links
Format: +62812345678 atau 08123456789. Untuk multiple admin, pisahkan dengan koma.
Business Hours
Team Members
' . (empty($team_members) ? ' ' : implode('', array_map(function($member) { return ' '; }, $team_members))) . '
Photo Name Position Social Media Actions
No team members found
' . ($member['photo'] ? '' . $member['name'] . '' : '
') . '
' . $member['name'] . ' ' . $member['position'] . ' ' . ($member['facebook'] ? '' : '') . ' ' . ($member['instagram'] ? '' : '') . ' ' . ($member['linkedin'] ? '' : '') . '
'; // Add custom styles $extraStyles = ' '; // Include template ?> <?php echo $pageTitle ?? 'Admin Panel'; ?> Travel Umroh