12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- global $myUser;
- if($myUser->login=='') throw new Exception("Permissions insuffisantes", 403);
- ?>
- <div class="row">
- <div class="col-md-12">
- <?php
- if(!file_exists(__DIR__.SLASH.'.git')) throw new Exception("Fonctionnalité désactivée car le projet n'est pas versionné via GIT");
- //À voir pour le rendre dynamique au
- //lieu d'avoir les 30 dernières modifs
- $stream = shell_exec('git log -30 --pretty=~~~%ct---%B~~~');
- $commits = explode('~~~',$stream);
- ?>
- <br>
- <h3>30 Dernières modifications :</h3>
- <hr>
- <div class="row">
- <div class="col-md-12">
- <ul class="update-timeline">
- <?php
- $i=0;
- foreach($commits as $commit):
- $infos = explode('---',$commit);
- if(count($infos)<2) continue;
- $i++;
- list($time,$message) = $infos;
- $icons = array();
- $colors = array();
- $tags = array();
- if(preg_match('/Merge branch/i', $message)){
- $icons[]= 'fas fa-code-branch';
- $colors[]= 'info';
- $message = str_replace(array('Merge branch',' of ','Conflicts'),array('Fusion de branche',' de ','Conflits'),$message);
- $tags['merge'] = 1;
- }
- // Refactor de la regex pour accepter les syntaxes -Plugin: ou Plugin:
- $message = preg_replace('/(^-*|\n|\n-*)[\s\t]*([^:-]*)[\s\t]*:/iU', '<span class="update-commit-module mt-2"><i class="far fa-bookmark"></i> $2</span>', $message);
- $message = preg_replace_callback('/#([^\s]*)(\s|$)/iU', function($matches) use(&$tags){
- $tag = trim(strtolower($matches[1]));
- if($tag=='') return;
- if(!isset($tags[$tag])) $tags[$tag] = 0;
- $tags[$tag]++;
- return $matches[2];
- }, $message);
- if(isset($tags['feature'])){
- $icons[] = 'fas fa-plus-circle';
- $colors[] = 'success';
- }
- if(isset($tags['bug']) || isset($tags['fix'])){
- $icons[] = 'fas fa-bug';
- $colors[] = 'danger';
- }
- if(isset($tags['refactor']) || preg_match('/refactor|rework/i', $message)){
- $icons[] = 'fas fa-sync';
- $colors[] = 'warning';
- }
- if(count($icons)==0) $icons[] ='fas fa-pencil-alt';
- ?>
- <li <?php echo $i%2==0?'class="update-timeline-inverted"':'' ?>>
- <div class="update-timeline-badge <?php echo count($colors)==1?$colors[0]:''; ?>" style="font-size: <?php echo 1.4/count($icons); ?>rem;<?php echo count($colors)>1?'background-color:#e83e8c;':''; ?>">
- <?php foreach($icons as $icon): ?>
- <i class="<?php echo $icon; ?>" style="font-size: <?php echo 1.4/count($icons); ?>rem"></i>
- <?php endforeach; ?>
- </div>
- <div class="update-timeline-panel">
- <div class="update-timeline-heading">
- <p><small class="text-muted"><i class="far fa-clock"></i> <?php echo relative_time($time); ?></small></p>
- </div>
- <div class="update-timeline-body">
- <p><?php echo nl2br($message); ?></p>
- <?php foreach($tags as $tag=>$count): ?>
- <span class="update-commit-tag"><i class="fas fa-tag"></i> <?php echo $tag ?><?php echo $count > 1 ? ' ('.$count.')':'' ?></span>
- <?php endforeach; ?>
- </div>
- </div>
- </li>
- <?php endforeach; ?>
- </ul>
- </div>
- </div>
- <br>
- </div>
- </div>
|