# WP-metrics
<!-- Put the link to this slide here so people can follow -->
slide: https://hackmd.io/@nreymond/TPI-Nicolas-Reymond
---
## Sommaire
- Sommaire
- Analyse préliminaire
- Infrastructure
- Analyse organique
- Front-end
- back-end
- Sécurité
- Bilan
- Conclusion
- Questions ?
---
## Analyse préliminaire
- Technologie
- Langage
- Gestion de versions
- Méthodologie
---
## Infrastructure

---
## Analyse organique
- Explication
- Fonctions importantes
- Choix de la méthode / screenshot
- Remarques
----
### Front-end
La partie visible de l'application.
----
#### Fonctions importantes
Le rendu de la page
```htmlembedded
<?php
public function RenderPage(){
?>
<div class='wrap'>
<h2>custom form</h2>
<div class="main-content">
<form class="form-basic" method="post" action="#">
<div class="form-title-row">
<h1>Administration</h1>
</div>
<div class="form-row">
<label>
<span>Set password</span>
<input type="text" name="password">
</label>
</div>
<div class="form-row">
<button type="submit">Submit Form</button>
</div>
</form>
</div>
</div>
<?php
}
?>
```
----
L'initialisation
```php
public function InitPlugin(){
add_action('admin_menu', array($this, 'PluginMenu'));
}
```
----
Le formulaire


----
#### Remarques
- Minimaliste
---
### back-end
----
La partie des métriques

----

----
Le total des commandes
``` php
$result.="# TYPE wc_total_orders gauge\n";
$result.="# HELP wc_total_orders Total number of woocomerce order.\n";
$total_order = new WP_Query(array(
'post_type' =>'shop_order',
'post_status' => array('wc-completed', 'wc-processing')));
$result.="wc_total_orders ".$total_order->found_posts."\n";
```
----
#### Remarques
- Aide du chef de projet
----
### Sécurité
----
```php
function ensure_is_logged(){
$url = $_SERVER['REQUEST_URI'];
if (!preg_match("/\/metrics$/", $url)) {
return;
}
if(is_user_logged_in()){
return;
}else{
if (!get_option("pass")) {
add_option("pass", "root");
}
$validated = ($_SERVER['PHP_AUTH_PW'] == get_option("pass") &&
isset($_SERVER['PHP_AUTH_USER']));
if (!$validated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die ("Not authorized");
}
}
}
add_action('init', 'ensure_is_logged');
```
----
#### Remarques
- Mot de passe par défaut dans le code.
---
## Bilan
- **Plus**
- Application fonctionnelle
- Experimentation de nouveautés
- **Moins**
- Mauvaise gestion du temps
- Clarification avec le chef de projet
---
## Conclusion
Exercice Intéressant et instructif!
Application utilisable.
---
## Questions ?
{"metaMigratedAt":"2023-06-16T00:14:26.613Z","metaMigratedFrom":"YAML","title":"Présentation TPI","breaks":true,"slideOptions":"{\"viewDistance\":3}","contributors":"[{\"id\":\"a8897569-cb5d-4306-9c8b-7da01ff7821b\",\"add\":9108,\"del\":5861}]"}