Editeur Editez un fichier

Edition d'un fichier

Editez le fichier applications/nuasix/application-functions.php
<?php 
//_________________________________________________________________________________
//Récupération des données de l'application
$reqAllApplications2    = getQueries("nx_applications");
$allApplications2       = $reqAllApplications2['result'];
$reqOwnApplication      = getQueries("nx_applications LEFT JOIN nx_users ON nx_applications.user_id = nx_users.idUser", 
                                     array("nx_applications.idApplication" => $idApplication));
$ownApplication         = $reqOwnApplication['result'][0];
//_________________________________________________________________________________
//_________________________________________________________________________________
//Récupération d'au moins un token API valide
$token                  = "";
$reqTokens              = getQueries("api_tokens", array("application_id" => $idApplication, "token_status" => 1));
if($reqTokens['count']) {
    $token              = $reqTokens['result'][0];
}
//_________________________________________________________________________________
//_________________________________________________________________________________
//Générer un fichier functions.php
if(isset($_POST['generate_function'])) {
    
    $filename               = "functions.php";
    $pathFolder             = "applications/" . $ownApplication['application_folder_system'] . "/";
    $content                = "";
    
    //Suppression du fichier fonction actuelle (si existant)
    $pathFile               = $pathFolder . $filename;
    $flag                   = unlink($pathFile);
    
    //Création d'un fichier vierge
    $file                   = fopen($pathFolder . $filename, 'x');

    fwrite($file, $content);
    fclose($file);
    
    
    //Mise à jour du nom du fichier fonction
    $form               = array('application_file_php'      => $filename, 
                                'user_id'                   => $user -> getUserId());
    
    $selector           = array('idApplication' => $ownApplication['idApplication']);
    $flag               = dbRowUpdate2("nx_applications", $form, $selector);
    
    
    //Refresh
    redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
//_________________________________________________________________________________
//Modifie code du fichier fonction
if(isset($_POST['code'])) {
    
    $filename               = "functions.php";
    $pathFolder             = "applications/" . $ownApplication['application_folder_system'] . "/";
    $content                = $_POST['code'];
    
    //Suppression du fichier fonction actuelle (si existant)
    $pathFile               = $pathFolder . $filename;
    $flag                   = unlink($pathFile);
    
    //Création d'un nouveau fichier
    $file                   = fopen($pathFolder . $filename, 'x');

    fwrite($file, $content);
    fclose($file);    
    
    //Refresh
    redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
?>
                    <div class="content d-flex flex-column flex-column-fluid" id="kt_content">
						<!--begin::Container-->
						<div class="container-xxl" id="kt_content_container">
                            <!--begin::Navbar-->
							<div class="card mb-5 mb-xl-10">
								<div class="card-body pt-9 pb-0">
									<!--begin::Details-->
									<div class="d-flex flex-wrap flex-sm-nowrap mb-3">
										<!--begin::Info-->
										<div class="flex-grow-1">
											<!--begin::Title-->
											<div class="d-flex justify-content-between align-items-start flex-wrap mb-2">
												<!--begin::User-->
												<div class="d-flex flex-column">
													<!--begin::Name-->
													<div class="d-flex align-items-center mb-2">
														<h4>Gestion de l'application</h4>
													</div>
													<!--end::Name-->
												</div>
												<!--end::User-->
												<!--begin::Actions-->
												<div class="d-flex my-4">
                                                    <!--begin::Action menu-->
                                                    <a href="#" class="btn btn-primary ps-7" data-kt-menu-trigger="click" data-kt-menu-attach="parent" data-kt-menu-placement="bottom-end">Actions
                                                    <!--begin::Svg Icon | path: icons/duotune/arrows/arr072.svg-->
                                                    <span class="svg-icon svg-icon-2 me-0">
                                                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                            <path d="M11.4343 12.7344L7.25 8.55005C6.83579 8.13583 6.16421 8.13584 5.75 8.55005C5.33579 8.96426 5.33579 9.63583 5.75 10.05L11.2929 15.5929C11.6834 15.9835 12.3166 15.9835 12.7071 15.5929L18.25 10.05C18.6642 9.63584 18.6642 8.96426 18.25 8.55005C17.8358 8.13584 17.1642 8.13584 16.75 8.55005L12.5657 12.7344C12.2533 13.0468 11.7467 13.0468 11.4343 12.7344Z" fill="black" />
                                                        </svg>
                                                    </span>
                                                    <!--end::Svg Icon--></a>
                                                    <!--begin::Menu-->
                                                    <div class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary fw-bold py-4 w-250px fs-6" data-kt-menu="true">
                                                        <!--begin::Menu item-->
                                                        <div class="menu-item px-5">
                                                            <div class="menu-content text-muted pb-2 px-5 fs-7 text-uppercase">Application</div>
                                                        </div>
                                                        <!--end::Menu item-->
                                                        <!--begin::Menu item-->
                                                        <div class="menu-item px-5">
                                                            <a href="#" class="menu-link text-dark px-5" data-bs-toggle="modal" data-bs-target="#generate_function">Générer un fichier de fonction</a>
                                                        </div>
                                                        <!--end::Menu item-->
                                                        <!--begin::Menu item-->
                                                        <div class="menu-item px-5">
                                                            <a href="#" class="menu-link text-danger px-5" data-action="delete" data-id="<?= encrypt_decrypt("encrypt", $ownApplication['idApplication'], $key_user, $iv_user)?>" data-method="custom" data-element="<?= encrypt_decrypt("encrypt", "application", $key_user, $iv_user)?>">Supprimer l'application</a>
                                                        </div>
                                                        <!--end::Menu item-->
                                                    </div>
                                                    <!--end::Menu-->
												</div>
												<!--end::Actions-->
											</div>
											<!--end::Title-->
										</div>
										<!--end::Info-->
									</div>
									<!--end::Details-->
									<!--begin::Navs-->
									<ul class="nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder">
										<!--begin::Nav item-->
										<li class="nav-item mt-2">
											<a class="nav-link text-active-primary ms-0 me-10 py-5" href="index.php?page_slug=application-single">Général</a>
										</li>
										<!--end::Nav item-->
										<!--begin::Nav item-->
										<li class="nav-item mt-2">
											<a class="nav-link text-active-primary ms-0 me-10 py-5" href="index.php?page_slug=application-marketplace">Marketplace</a>
										</li>
										<!--end::Nav item-->
										<!--begin::Nav item-->
										<li class="nav-item mt-2">
											<a class="nav-link text-active-primary ms-0 me-10 py-5 active" href="index.php?page_slug=application-functions">Fonctions</a>
										</li>
										<!--end::Nav item-->
										<!--begin::Nav item-->
										<li class="nav-item mt-2 ms-auto">
											<a class="nav-link text-active-primary ms-0 me-10 py-5" href="index.php?page_slug=resources">Ressources<i class="bi bi-box-arrow-up-right mx-3"></i></a>
										</li>
										<!--end::Nav item-->
									</ul>
									<!--begin::Navs-->
								</div>
							</div>
							<!--end::Navbar-->
                            <div class="row">
                                <div class="col-8">
                                    <!--begin::Card-->
                                    <div class="card">
                                        <form method="post" action="">
                                            <!--begin::Card header-->
                                            <div class="card-header mt-6">
                                                <!--begin::Card title-->
                                                <div class="card-title flex-column">
                                                    <h2 class="mb-1">Fichiers de fonctions PHP</h2>
                                                    <div class="fs-6 fw-bold text-muted">Editez vos fonctions PHP</div>
                                                </div>
                                                <!--end::Card title-->
                                            </div>
                                            <!--end::Card header-->
                                            <!--begin::Content-->
                                            <div id="editor_container" class="collapse show">
                                                <!--begin::Card body-->
                                                <div class="card-body border-top px-9 py-9" style="height:850px;">
                                                    <!--begin::Editor-->
                                                    <?php
                                                    $content    = htmlspecialchars(file_get_contents("applications/" . $ownApplication['application_folder_system'] ."/". $ownApplication['application_file_php']));
                                                    ?>
                                                    <pre id="editor"><?= $content?></pre>
                                                    <!--end::Editor-->
                                                </div>
                                                <!--end::Card body-->
                                                <!--begin::Card footer-->
                                                <div class="card-footer d-flex justify-content-end py-6 px-9">
                                                    <button class="btn btn-primary px-6" type="button" id="update-function" <?= ( (empty($ownApplication['application_file_php'])) ? "disabled" : "" ) ?>>Enregistrer</button>
                                                </div>
                                                <!--end::Card footer-->
                                            </div>
                                            <!--end::Content-->
                                        </form>
                                    </div>
                                    <!--end::Card-->
                                </div>
                                <div class="col-4">
                                    <!--begin::Card-->
                                    <div class="card">
                                        <!--begin::Accordion-->
                                        <div class="accordion" id="kt_accordion_1">
                                            <div class="accordion-item">
                                                <h2 class="accordion-header" id="kt_accordion_1_header_1">
                                                    <button class="accordion-button fs-4 fw-semibold" type="button" data-bs-toggle="collapse" data-bs-target="#kt_accordion_1_body_1" aria-expanded="true" aria-controls="kt_accordion_1_body_1">
                                                        Callback ligne d'un tableau
                                                    </button>
                                                </h2>
                                                <div id="kt_accordion_1_body_1" class="accordion-collapse collapse show" aria-labelledby="kt_accordion_1_header_1" data-bs-parent="#kt_accordion_1">
                                                    <div class="accordion-body">
                                                        <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#action-1">
                                                            Voir le code
                                                        </button>
                                                        <hr>
                                                        <code>
                                                        add_action(array());
                                                        </code>
                                                    </div>
                                                </div>
                                            </div>

                                            <div class="accordion-item">
                                                <h2 class="accordion-header" id="kt_accordion_1_header_2">
                                                    <button class="accordion-button fs-4 fw-semibold collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#kt_accordion_1_body_2" aria-expanded="false" aria-controls="kt_accordion_1_body_2">
                                                    Callback pour ajout de paramètre au contexte
                                                    </button>
                                                </h2>
                                                <div id="kt_accordion_1_body_2" class="accordion-collapse collapse" aria-labelledby="kt_accordion_1_header_2" data-bs-parent="#kt_accordion_1">
                                                    <div class="accordion-body">
                                                        <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#action-2">
                                                            Voir le code
                                                        </button>
                                                        <code>
                                                        add_action(array());
                                                        </code>
                                                    </div>
                                                </div>
                                            </div>

                                            
                                        </div>
                                        <!--end::Accordion-->
                                    </div>
                                    <!--end::Card-->
                                </div>
                            </div>
						</div>
						<!--end::Container-->
						<!--begin::Modals-->
                        <!--begin::Modal - Création fichier function -->
                        <div class="modal fade" id="generate_function" tabindex="-1" aria-hidden="true">
                            <!--begin::Modal dialog-->
                            <div class="modal-dialog modal-dialog-centered mw-650px">
                                <!--begin::Modal content-->
                                <div class="modal-content">
                                    <!--begin::Modal header-->
                                    <div class="modal-header">
                                        <!--begin::Modal title-->
                                        <h2 class="fw-bolder">Générer un fichier de fonction PHP</h2>
                                        <!--end::Modal title-->
                                        <!--begin::Close-->
                                        <div data-bs-dismiss="modal" class="btn btn-icon btn-sm btn-active-icon-primary">
                                            <!--begin::Svg Icon | path: icons/duotune/arrows/arr061.svg-->
                                            <span class="svg-icon svg-icon-1">
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <rect opacity="0.5" x="6" y="17.3137" width="16" height="2" rx="1" transform="rotate(-45 6 17.3137)" fill="black" />
                                                    <rect x="7.41422" y="6" width="16" height="2" rx="1" transform="rotate(45 7.41422 6)" fill="black" />
                                                </svg>
                                            </span>
                                            <!--end::Svg Icon-->
                                        </div>
                                        <!--end::Close-->
                                    </div>
                                    <!--end::Modal header-->
                                    <!--begin::Modal body-->
                                    <div class="modal-body scroll-y mx-5 mx-xl-15 my-7">
                                        <!--begin::Balance preview-->
                                        <div class="d-flex text-center mb-9">
                                            <div class="w-50 border border-dashed border-gray-300 rounded mx-2 p-4">
                                                <div class="fs-6 fw-bold mb-2 text-muted">Répertoire</div>
                                                <div class="fs-2 fw-bolder"><?= "applications/" . $ownApplication['application_folder_system']?></div>
                                            </div>
                                            <div class="w-50 border border-dashed border-gray-300 rounded mx-2 p-4">
                                                <div class="fs-6 fw-bold mb-2 text-muted">Nom du fichier
                                                <i class="fas fa-exclamation-circle ms-1 fs-7" data-bs-toggle="tooltip" title="Le nom du fichier ne peut pas être modifié."></i></div>
                                                <div class="fs-2 fw-bolder">functions.php</div>
                                            </div>
                                        </div>
                                        <!--end::Balance preview-->
                                        <!--begin::Form-->
                                        <form  class="form" action="" method="post">
                                            <!--begin::Disclaimer-->
                                            <div class="fs-7 text-muted mb-15">Si un fichier de fonction existe déjà, il sera écrasé par un nouveau fichier vierge.</div>
                                            <!--end::Disclaimer-->
                                            <!--begin::Actions-->
                                            <div class="text-center">
                                                <button type="reset" data-bs-dismiss="modal" class="btn btn-light me-3">Annuler</button>
                                                <button type="submit" class="btn btn-primary" name="generate_function">
                                                    <span class="indicator-label">Générer</span>
                                                    <span class="indicator-progress">Patientez...
                                                    <span class="spinner-border spinner-border-sm align-middle ms-2"></span></span>
                                                </button>
                                            </div>
                                            <!--end::Actions-->
                                        </form>
                                        <!--end::Form-->
                                    </div>
                                    <!--end::Modal body-->
                                </div>
                                <!--end::Modal content-->
                            </div>
                            <!--end::Modal dialog-->
                        </div>
                        <!--end::Modal - Demande publication-->
                        <div class="modal bg-body fade" tabindex="-1" id="action-1">
                            <div class="modal-dialog modal-fullscreen">
                                <div class="modal-content shadow-none">
                                    <div class="modal-header">
                                        <h5 class="modal-title">Callback ligne d'un tableau</h5>

                                        <!--begin::Close-->
                                        <div class="btn btn-icon btn-sm btn-active-light-primary ms-2" data-bs-dismiss="modal" aria-label="Close">
                                            <i class="bi bi-x"></i>
                                        </div>
                                        <!--end::Close-->
                                    </div>

                                    <div class="modal-body">
                                        <code>add_action(array('name' => "ct_table_item", 'function_name' => 'VOTRE FONCTION', 'key' => 'uniqid du composant'));
                                        </code>
                                    </div>
                                    <div class="modal-footer">
                                        <button type="button" class="btn btn-light" data-bs-dismiss="modal">Fermer</button>
                                        <button id="copie-action-1" class="btn btn-light-primary" data-clipboard-text="//Callback des lignes d'un tableau affichant des éléments tests
//Note : Ne pas oublier d'inscrire la fonction à l'aide de add_action()
function complete_table_test($params = array()) {
    global $key_user;
    global $iv_user;
    
    $item                       = $params['post'];
    $button_1                   = ct_build_btn(array('shortcode' => 'generate_badge'), array(), array('idTest' => $item['idTest'], 
                                                                                          'test_firstname' => 'Justin'));
    $button_2                   = '<a href=VOTRE URL>Modifier</a>';   
    
    $item['action']             = $button_1 .' '. $button_2 ;
    $item['css']                = array('css_td' => array());
    $item['css']['css_td'][]    = array('test_firstname' => array('color' => 'red'));
    

    return $item;
}
add_action(array('name'           => 'ct_table_item',       //action Nuasix
                 'function_name'  => 'complete_table_test', //nom de votre fonction à appeler (callback)
                 'key'            => '64f1b52e3043a',       //uniqid du composant tableau
                 'description'    => 'Description de votre fonction'));">
                                            Copier
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="modal bg-body fade" tabindex="-1" id="action-2">
                            <div class="modal-dialog modal-fullscreen">
                                <div class="modal-content shadow-none">
                                    <div class="modal-header">
                                        <h5 class="modal-title">Callback ajout de paramètre au contexte</h5>

                                        <!--begin::Close-->
                                        <div class="btn btn-icon btn-sm btn-active-light-primary ms-2" data-bs-dismiss="modal" aria-label="Close">
                                            <i class="bi bi-x"></i>
                                        </div>
                                        <!--end::Close-->
                                    </div>

                                    <div class="modal-body">
                                        <code>add_action(array('name' => "ct_add_parameter", 'function_name' => 'VOTRE FONCTION', 'key' => 'uniqid du contexte'));<br><br>
                                            function add_parameters_to_edit_test($params = array()) {<br> ct_register_parameter(array('parameter_name' => 'test_date_edited', 'parameter_value' => date('Y-m-d H:i')));<br>}
                                        </code>
                                    </div>
                                    <div class="modal-footer">
                                        <button type="button" class="btn btn-light" data-bs-dismiss="modal">Fermer</button>
                                        <button id="copie-action-2" class="btn btn-light-primary" data-clipboard-text="function add_parameters_to_edit_test($params = array()) {
    //Utilisation de la fonction ct_register_parameter() pour l'inscription de votre paramètre
    ct_register_parameter(array('parameter_name'          => 'test_date_edited', 
                                'parameter_value'         => date('Y-m-d H:i')));
}
add_action(array('name'           => 'ct_add_parameter',            //action Nuasix
                 'function_name'  => 'add_parameters_to_edit_test', //nom de votre fonction à appeler (callback)
                 'key'            => '64f6cf3a9361c',               //uniqid du context
                 'description'    => 'Paramètre pour modifier test'));">
                                            Copier
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <!--end::Modals-->
					</div>

Conseils et liens

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