190 lines
5.6 KiB
PHP
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;
|
|
}
|
|
} |