mirror of
https://github.com/ZeJMaN/LBCAlerte_ynh.git
synced 2025-07-06 20:00:48 +02:00
Initial commit
Functional, without SSO
This commit is contained in:
123
sources/lib/Log4php/helpers/LoggerUtils.php
Normal file
123
sources/lib/Log4php/helpers/LoggerUtils.php
Normal file
@ -0,0 +1,123 @@
|
||||
<?php
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @package log4php
|
||||
*/
|
||||
|
||||
/**
|
||||
* Contains various helper methods.
|
||||
*
|
||||
* @package log4php
|
||||
* @subpackage helpers
|
||||
* @since 2.3
|
||||
*/
|
||||
class LoggerUtils {
|
||||
|
||||
/**
|
||||
* Splits a fully qualified class name into fragments delimited by the
|
||||
* namespace separator (\).
|
||||
*
|
||||
* For backward compatibility, a dot (.) can be used as a delimiter as
|
||||
* well.
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return array Class name split into fragments.
|
||||
*/
|
||||
public static function tokenizeClassName($name) {
|
||||
$name = str_replace('.', '\\', $name);
|
||||
$name = trim($name, ' \\');
|
||||
$fragments = explode('\\', $name);
|
||||
|
||||
foreach($fragments as $key => $fragment) {
|
||||
if (trim($fragment) === '') {
|
||||
unset($fragments[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
return $fragments;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to shorten the given class name to the desired length.
|
||||
*
|
||||
* This is done by separating the class name into fragments (delimited
|
||||
* by \ or .) and trimming individual fragments, starting with the left,
|
||||
* until desired length has been reached.
|
||||
*
|
||||
* The final fragment (i.e. class name) will never be shortened so the
|
||||
* result may still be longer than given length.
|
||||
*
|
||||
* @param string $name The (qualified) class name.
|
||||
* @param integer $length The length to shorten to. If null or 0 is given,
|
||||
* the name will be returned without shortening.
|
||||
*/
|
||||
public static function shortenClassName($name, $length) {
|
||||
if ($length === null || $length < 0) {
|
||||
return $name;
|
||||
}
|
||||
|
||||
$name = str_replace('.', '\\', $name);
|
||||
$name = trim($name, ' \\');
|
||||
|
||||
// Check if any shortening is required
|
||||
$currentLength = strlen($name);
|
||||
if ($currentLength <= $length) {
|
||||
return $name;
|
||||
}
|
||||
|
||||
// Split name into fragments
|
||||
$fragments = explode('\\', $name);
|
||||
|
||||
// If zero length is specified, return only last fragment
|
||||
if ($length == 0) {
|
||||
return array_pop($fragments);
|
||||
}
|
||||
|
||||
// If the name splits to only one fragment, then it cannot be shortened
|
||||
$count = count($fragments);
|
||||
if ($count == 1) {
|
||||
return $name;
|
||||
}
|
||||
|
||||
foreach($fragments as $key => &$fragment) {
|
||||
|
||||
// Never shorten last fragment
|
||||
if ($key == $count - 1) {
|
||||
break;
|
||||
}
|
||||
|
||||
// Check for empty fragments (shouldn't happen but it's possible)
|
||||
$fragLen = strlen($fragment);
|
||||
if ($fragLen <= 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Shorten fragment to one character and check if total length satisfactory
|
||||
$fragment = substr($fragment, 0, 1);
|
||||
$currentLength = $currentLength - $fragLen + 1;
|
||||
|
||||
if ($currentLength <= $length) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
unset($fragment);
|
||||
|
||||
return implode('\\', $fragments);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user