Files
grzanieplus.pl/plugins/stAdminGeneratorPlugin/lib/generator/stAdminGeneratorHelper.class.php
2025-03-12 17:06:23 +01:00

190 lines
5.6 KiB
PHP

<?php
class stAdminGeneratorHelper
{
protected static $generated = array();
protected static $ignoreEmptyList = false;
public static function trim($value)
{
if (is_array($value))
{
foreach ($value as $k => $v)
{
$value[$k] = self::trim($v);
}
}
else
{
$value = trim($value);
}
return $value;
}
public static function generate($module)
{
if (!isset(self::$generated[$module]))
{
self::$generated[$module] = true;
$file = sfConfigCache::getInstance()->checkConfig(sfConfig::get('sf_app_module_dir_name').'/'.$module.'/'.sfConfig::get('sf_app_module_config_dir_name').'/generator.yml', true);
if (!empty($file))
{
require($file);
}
}
}
/**
* Generuje url dla przekazanego modelu
*
* @param BaseObject $modelInstance Instancja modelu
* @param string $module Nazwa modułu
* @param string $action Nazwa akcji
* @param array|null $additionalParameters Dodatkowe parametry
* @param boolean $withCulture Uwzględnia parametr culture w adresie url
* @return void
*/
public static function generateModelUrl(BaseObject $modelInstance, $module, $action, array $additionalParameters = null, $withCulture = true)
{
$additionalParameters = self::filterAdditionalParameters($additionalParameters);
if ($withCulture && method_exists($modelInstance, 'getCulture'))
{
$additionalParameters['culture'] = call_user_func(array($modelInstance, 'getCulture'));
}
if ($modelInstance->isNew())
{
$additionalParameters['new'] = true;
}
else
{
$additionalParameters = array_merge($modelInstance->getPrimaryKeysWithField(), $additionalParameters);
}
return self::generateUrl($module, $action, $additionalParameters, false);
}
/**
* Generuje url
*
* @param string $module Nazwa modułu
* @param string $action Nazwa akcji
* @param array|null $additionalParameters Dodatkowe parametry
* @param boolean $filterAdditionalParameters Filtruj dodatkowe parametry
* @return void
*/
public static function generateUrl($module, $action, array $additionalParameters = null, $filterAdditionalParameters = true)
{
$controller = sfContext::getInstance()->getController();
$additionalParameters = $filterAdditionalParameters ? self::filterAdditionalParameters($additionalParameters) : $additionalParameters;
$additionalParameters['module'] = $module;
$additionalParameters['action'] = $action;
return $controller->genUrl($additionalParameters);
}
/**
* Dodaje dodatkowe parametru do adresu url
*
* @param string $url Adres url
* @param array|null $additionalParameters Dodatkowe parametry
* @return string
*/
public static function applyParametersToUrl($url, array $additionalParameters = null)
{
$parameters = array();
if ($additionalParameters)
{
foreach ($additionalParameters as $name => $value)
{
if (null !== $value)
{
$parameters[] = "{$name}={$value}";
}
}
}
$urlSeparator = false !== strpos($url, '?') ? '&' : '?';
return $parameters ? $url . $urlSeparator . implode('&', $parameters) : $url;
}
/**
* Zwraca dodatkowe parametry usuwając puste
*
* @param array|null $additionalParameters
* @return array
*/
public static function filterAdditionalParameters(array $additionalParameters = null)
{
if (null === $additionalParameters)
{
$additionalParameters = array();
}
else
{
$additionalParameters = array_filter($additionalParameters, function($v) {
return !empty($v);
});
}
return $additionalParameters;
}
/**
* Zwraca filtry ustawione liście danego modułu
*
* @param string $module Nazwa modułu
* @param string $action Nazwa akcji listy
* @return array|null
*/
public static function getFilters(string $module, string $action): ?array
{
return sfContext::getInstance()->getUser()->getAttributeHolder()->getAll("soteshop/stAdminGenerator/$module/$action/filters");
}
/**
* Zwraca filtry ustawione liście danego modułu
*
* @param string $module Nazwa modułu
* @param string $action Nazwa akcji listy
* @return void
*/
public static function setFilters(string $module, string $action, ?array $filters)
{
sfContext::getInstance()->getUser()->getAttributeHolder()->add($filters, "soteshop/stAdminGenerator/$module/$action/filters");
}
public static function setCurrentMenuPath($url)
{
$context = sfContext::getInstance();
$url = $context->getController()->genUrl($url);
return sfContext::getInstance()->getUser()->setAttribute('selected', $url, 'soteshop/component/menu');
}
public static function getCurrentMenuPath()
{
return sfContext::getInstance()->getUser()->getAttribute('selected', null, 'soteshop/component/menu');
}
public static function ignoreEmptyList($ignore = true)
{
self::$ignoreEmptyList = $ignore;
}
public static function getIgnoreEmptyList()
{
return self::$ignoreEmptyList;
}
}