%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/ui/view/helpers/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/ui/view/helpers/LessHelper.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\ui\view\helpers;
use humhub\modules\ui\view\components\Theme;
/**
* LessHelper
*
* @since 1.3
*/
class LessHelper
{
/**
* @param Theme $theme
* @return string
*/
public static function getVariableFile(Theme $theme)
{
return $theme->getBasePath() . '/less/variables.less';
}
/**
* Updates variables of a given file
*
* @param array $variables
* @param $file
*/
public static function updateVariables($variables, $file)
{
$content = file_get_contents($file);
foreach ($variables as $key => $value) {
// Try to update
$count = 0;
$firstChar = substr($value, 0, 1);
if ($firstChar != '#' && !is_numeric($firstChar)) {
$value = '"' . $value . '"';
}
$content = preg_replace('/@' . $key . ':\s?(.*?);/', '@' . $key . ': ' . $value . ";", $content, -1, $count);
if ($count == 0) {
$content .= "\n@" . $key . ": " . $value . ";";
}
}
file_put_contents($file, $content);
}
/**
* Returns all less variables of a given file
*
* @param $lessFile
* @return array
*/
public static function parseLessVariables($lessFile)
{
if (file_exists($lessFile)) {
$variables = [];
preg_match_all('/^@(.*?):\s?"?(.*?)"?;/m', file_get_contents($lessFile), $regexResult, PREG_SET_ORDER);
foreach ($regexResult as $regexHit) {
$variables[$regexHit[1]] = $regexHit[2];
}
return LessHelper::updateLinkedLessVariables($variables);
}
return [];
}
/**
* Update values of less variables if they use value from another less variables, for example:
* @firstColor: #fff;
* @secondColor: @firstColor;
* @thirdColor: @secondColor;
*
* @param array $variables
* @since 1.7
* @return array $variables
*/
public static function updateLinkedLessVariables($variables)
{
if (!is_array($variables)) {
return [];
}
foreach ($variables as $name => $value) {
if (substr($value, 0, 1) != '@') {
continue;
}
$linkedVarName = substr($value, 1);
if (isset($variables[$linkedVarName])) {
$variables[$name] = $variables[$linkedVarName];
}
}
return $variables;
}
}