Editeur Editez un fichier

Edition d'un fichier

Editez le fichier applications/nuasix/report-single.php
<?php
//_________________________________________________________________________________
//Récupération du rapport
$reqReport              = getQueries("nx_reports LEFT JOIN nx_applications ON nx_reports.application_uniqid = nx_applications.idApplication", 
                                     array("idReport" => encrypt_decrypt("decrypt", rawurldecode($_GET['element']), $key_user, $iv_user)));
if(!$reqReport['count'])
redirect("index.php?page_slug=reports");
$report                 = $reqReport['result'][0];

$filePath               = dirname(__FILE__, 2) .'/'. $_SESSION['current_application_folder_system'] .'/'. $report['report_file_name'];
$fileFound              = file_exists($filePath) ? true : false;
//_________________________________________________________________________________
//_________________________________________________________________________________
//Modifie code du fichier fonction
if(isset($_POST['code'])) {
    
    $content                = $_POST['code'];
    
    file_put_contents( $filePath, $content );  
    
    //Refresh
    redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
//_________________________________________________________________________________
//Mise à jour du rapport 
if(isset($_POST['edit-report'])) {
    
    //Nom de la fonction à indexer
    $reportFunction         = htmlspecialchars($_POST['report_function']);
    
    //Contrôle que la fonction n'existe pas déjà
    $selector               = array('report_function'       => $reportFunction, 
                                    'application_uniqid'    => $_SESSION['current_application_uniqid']);
    $reqReportFunction      = getQueries('nx_reports', $selector);
    
    //Données du formulaire
    $form                   = array('report_name'           => htmlspecialchars($_POST['report_name']), 
                                    'report_file_name'      => htmlspecialchars($_POST['report_file_name']), 
                                    'user_id'               => $user -> getUserId());
    
    if(!$reqReportFunction['count'] || $reportFunction == $report['report_function']) {
        $form['report_function']        = $reportFunction;
    } else {
        itsLog(array('log_table'        => "nx_reports",
                     'log_operation'    => "Cette fonction est déjà indexée", 
                     'log_request'      => json_encode($reqReportFunction),
                     'log_response'     => json_encode($reqReportFunction),
                     'log_selector'     => json_encode($selector),
                     'log_color'        => "danger", 
                     'log_display'      => 1,
                     'log_timeout'      => 5000, 
                     'id_log'           => $ownApplication['idApplication'], 
                     'user_id'          => $user -> getUserId()
        ));
    }
    
    
    $selector   = array('idReport' => $report['idReport']);
    
    $flag       = dbRowUpdate2("nx_reports", $form, $selector);
    
    if($flag) {
        itsLog(array('log_table'        => "nx_reports",
                     'log_operation'    => "Mise à jour du rapport", 
                     'log_request'      => json_encode($form),
                     'log_response'     => json_encode($flag),
                     'log_selector'     => json_encode($selector),
                     'log_color'        => "success", 
                     'log_display'      => 1,
                     'log_timeout'      => 5000,
                     'id_log'           => $page['idPage'], 
                     'user_id'          => $user -> getUserId()
        ));
    } else {
        itsLog(array('log_table'        => "nx_reports",
                     'log_operation'    => "Erreur durant la mise à jour du rapport", 
                     'log_request'      => json_encode($form),
                     'log_response'     => json_encode($flag),
                     'log_selector'     => json_encode($selector),
                     'log_color'        => "danger", 
                     'log_display'      => 1,
                     'log_timeout'      => 5000, 
                     'id_log'           => $page['idPage'], 
                     'user_id'          => $user -> getUserId()
        ));
    }
    
    //Refresh
    redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
?>
                    <div class="docs-content d-flex flex-column flex-column-fluid" id="kt_docs_content">
						<!--begin::Container-->
						<div class="container" id="kt_docs_content_container">
							<!--begin::Card-->
							<div class="card card-docs mb-2">
								<!--begin::Card Body-->
								<div class="card-body fs-6 py-15 px-10 py-lg-15 px-lg-15 text-gray-700">
									<!--begin::Section-->
									<div class="px-md-10 pt-md-10 pb-md-5">
										<!--begin::Block-->
										<div class="text-center mb-20">
											<h1 class="fs-2tx fw-bolder mb-8">
											<span class="d-inline-block position-relative ms-2">
												<span class="d-inline-block mb-2"><?= $report['report_name']?></span>
												<span class="d-inline-block position-absolute h-8px bottom-0 end-0 start-0 bg-muted translate rounded"></span>
											</span></h1>
											<div class="fw-bold fs-2 text-gray-500 mb-10"><?= $report['application_name']?></div>
										</div>
										<!--end::Block-->
                                        <div class="py-5">
											<div class="rounded border p-10">
                                                <table class="table">
                                                    <thead>
                                                        <tr class="fw-bolder fs-6 text-gray-800">
                                                            <th>Nom</th>
                                                            <th>Fichier</th>
                                                            <th>Date de création</th>
                                                            <th>Date modification</th>
                                                            <th>Fonction indexée</th>
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                        <tr>
                                                            <td><?= $report['report_name']?></td>
                                                            <td><a href="index.php?page_slug=editor&element=<?= rawurlencode(encrypt_decrypt("encrypt", $report['report_file_name'], $key_user, $iv_user))?>" class="text-dark" target="_blank"><?= $report['report_file_name']?></a></td>
                                                            <td><?= dateToFrench($report['report_date_created'], "d-m-Y H:i")?></td>
                                                            <td><?= dateToFrench($report['report_date_edited'], "d-m-Y H:i")?></td>
                                                            <td><?= ( (empty($report['report_function'])) ? '<span class="text-danger">Indexation nécessaire</span>' : '<span class="text-success">'.$report['report_function'].'</span>' ) ?></td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                            </div>
                                        </div>
										<!--begin::Block-->
										<div class="py-5">
											<div class="rounded border p-10">
												<!--begin::Accordion-->
												<div class="accordion accordion-icon-toggle" id="kt_accordion_2">
													<!--begin::Item-->
													<div class="mb-5">
														<!--begin::Header-->
														<div class="accordion-header py-3 d-flex" data-bs-toggle="collapse" data-bs-target="#kt_accordion_2_item_1">
															<span class="accordion-icon">
																<!--begin::Svg Icon | path: icons/duotune/arrows/arr064.svg-->
																<span class="svg-icon svg-icon-4">
																	<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
																		<rect opacity="0.5" x="18" y="13" width="13" height="2" rx="1" transform="rotate(-180 18 13)" fill="black" />
																		<path d="M15.4343 12.5657L11.25 16.75C10.8358 17.1642 10.8358 17.8358 11.25 18.25C11.6642 18.6642 12.3358 18.6642 12.75 18.25L18.2929 12.7071C18.6834 12.3166 18.6834 11.6834 18.2929 11.2929L12.75 5.75C12.3358 5.33579 11.6642 5.33579 11.25 5.75C10.8358 6.16421 10.8358 6.83579 11.25 7.25L15.4343 11.4343C15.7467 11.7467 15.7467 12.2533 15.4343 12.5657Z" fill="black" />
																	</svg>
																</span>
																<!--end::Svg Icon-->
															</span>
															<h3 class="fs-4 fw-bold mb-0 ms-4">Personnalisation du rapport</h3>
														</div>
														<!--end::Header-->
														<!--begin::Body-->
														<?php
                                                        if($fileFound) {?>
                                                        <div id="kt_accordion_2_item_1" class="fs-6 collapse show ps-10" data-bs-parent="#kt_accordion_2">
                                                            <div style="height:720px;">
                                                                <!--begin::Editor-->
                                                                <?php
                                                                $content    = htmlspecialchars(file_get_contents($filePath));
                                                                ?>
                                                                <pre id="editor"><?= $content?></pre>
                                                                <!--end::Editor-->
                                                            </div>
                                                            <span> Des problèmes ? Utilisez l'éditeur par défaut de Nuasix <a href="index.php?page_slug=editor&element=<?= rawurlencode(encrypt_decrypt("encrypt", $report['report_file_name'], $key_user, $iv_user))?>" class="text-dark px-5" target="_blank">Editer le fichier</a></span><br><br>
                                                            <button class="btn btn-primary px-6" type="button" id="update-function">Enregistrer</button>
                                                        </div>    
                                                        <?php
                                                        } else {?>
                                                        <!--begin::Block-->
                                                        <div class="py-5">
                                                            <div class="rounded p-10 pb-0 d-flex flex-column flex-center">
                                                                <div class="alert alert-dismissible bg-light-danger d-flex flex-center flex-column py-10 px-10 px-lg-20 mb-10">
                                                                    <!--begin::Icon-->
                                                                    <!--begin::Svg Icon | path: icons/duotune/general/gen044.svg-->
                                                                    <span class="svg-icon svg-icon-5tx svg-icon-danger mb-5">
                                                                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                                            <rect opacity="0.3" x="2" y="2" width="20" height="20" rx="10" fill="black" />
                                                                            <rect x="11" y="14" width="7" height="2" rx="1" transform="rotate(-90 11 14)" fill="black" />
                                                                            <rect x="11" y="17" width="2" height="2" rx="1" transform="rotate(-90 11 17)" fill="black" />
                                                                        </svg>
                                                                    </span>
                                                                    <!--end::Svg Icon-->
                                                                    <!--end::Icon-->
                                                                    <!--begin::Content-->
                                                                    <div class="text-center text-dark">
                                                                        <h1 class="fw-bolder mb-5">Fichier introuvable</h1>
                                                                        <div class="separator separator-dashed border-danger opacity-25 mb-5"></div>
                                                                        <div class="mb-9">Votre rapport est introuvable sur le serveur. 
                                                                        <br />Vérifiez le nom du fichier.</div>
                                                                    </div>
                                                                    <!--end::Content-->
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <!--end::Block-->    
                                                        <?php
                                                        }
                                                        ?>
														<!--end::Body-->
													</div>
													<!--end::Item-->
													<!--begin::Item-->
													<div class="mb-5">
														<!--begin::Header-->
														<div class="accordion-header py-3 d-flex collapsed" data-bs-toggle="collapse" data-bs-target="#kt_accordion_2_item_2">
															<span class="accordion-icon">
																<!--begin::Svg Icon | path: icons/duotune/arrows/arr064.svg-->
																<span class="svg-icon svg-icon-4">
																	<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
																		<rect opacity="0.5" x="18" y="13" width="13" height="2" rx="1" transform="rotate(-180 18 13)" fill="black" />
																		<path d="M15.4343 12.5657L11.25 16.75C10.8358 17.1642 10.8358 17.8358 11.25 18.25C11.6642 18.6642 12.3358 18.6642 12.75 18.25L18.2929 12.7071C18.6834 12.3166 18.6834 11.6834 18.2929 11.2929L12.75 5.75C12.3358 5.33579 11.6642 5.33579 11.25 5.75C10.8358 6.16421 10.8358 6.83579 11.25 7.25L15.4343 11.4343C15.7467 11.7467 15.7467 12.2533 15.4343 12.5657Z" fill="black" />
																	</svg>
																</span>
																<!--end::Svg Icon-->
															</span>
															<h3 class="fs-4 fw-bold mb-0 ms-4">Modifier rapport</h3>
														</div>
														<!--end::Header-->
														<!--begin::Body-->
														<div id="kt_accordion_2_item_2" class="collapse fs-6 ps-10" data-bs-parent="#kt_accordion_2">
											                 <form method="post" action="">
											                     <!--begin::Input group-->
                                                                <div class="row mb-6">
                                                                    <!--begin::Label-->
                                                                    <label class="col-lg-4 col-form-label required fw-bold fs-6">Nom du rapport</label>
                                                                    <!--end::Label-->
                                                                    <!--begin::Col-->
                                                                    <div class="col-lg-8 fv-row">
                                                                        <input type="text" class="form-control form-control-lg form-control-solid" value="<?= $report['report_name']?>" name="report_name"/>
                                                                    </div>
                                                                    <!--end::Col-->
                                                                </div>
                                                                <!--end::Input group-->
                                                                <!--begin::Input group-->
                                                                <div class="row mb-6">
                                                                    <!--begin::Label-->
                                                                    <label class="col-lg-4 col-form-label required fw-bold fs-6">Nom du fichier</label>
                                                                    <!--end::Label-->
                                                                    <!--begin::Col-->
                                                                    <div class="col-lg-8 fv-row">
                                                                        <input type="text" class="form-control form-control-lg form-control-solid" value="<?= $report['report_file_name']?>" name="report_file_name"/>
                                                                    </div>
                                                                    <!--end::Col-->
                                                                </div>
                                                                <!--end::Input group-->
                                                                <!--begin::Input group-->
                                                                <div class="row mb-6">
                                                                    <!--begin::Label-->
                                                                    <label class="col-lg-4 col-form-label required fw-bold fs-6">Fonction à indexer</label>
                                                                    <!--end::Label-->
                                                                    <!--begin::Col-->
                                                                    <div class="col-lg-8 fv-row">
                                                                        <input type="text" class="form-control form-control-lg form-control-solid" value="<?= $report['report_function']?>" name="report_function"/>
                                                                    </div>
                                                                    <!--end::Col-->
                                                                </div>
                                                                <!--end::Input group-->
                                                                <!--begin::Actions-->
                                                                <div class="text-center pt-15">
                                                                    <button type="reset" class="btn btn-light me-3" data-bs-dismiss="modal">Annuler</button>
                                                                    <button type="submit" class="btn btn-primary" name="edit-report">
                                                                        <span class="indicator-label">Enregistrer</span>
                                                                        <span class="indicator-progress">2 secondes...
                                                                        <span class="spinner-border spinner-border-sm align-middle ms-2"></span></span>
                                                                    </button>
                                                                </div>
                                                                <!--end::Actions-->
											                 </form>
                                                        </div>
														<!--end::Body-->
													</div>
													<!--end::Item-->
												</div>
												<!--end::Accordion-->
											</div>
										</div>
										<!--end::Block-->
									</div>
									<!--end::Section-->
								</div>
								<!--end::Card Body-->
                                <?php
                                if($buttonValidate) {?>
                                <!--begin::Card footer-->
                                <div class="card-footer d-flex justify-content-end py-6 px-9">
                                    <form method="post" action=""><button class="btn btn-primary px-6" type="submit" name="validate-post">Valider</button></form>
                                </div>
                                <!--end::Card footer-->    
                                <?php
                                }
                                ?>
							</div>
							<!--end::Card-->
						</div>
						<!--end::Container-->
					</div>

Conseils et liens

Liens vers des ressources utiles pour l'édition de fichier