$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; } }