public static function getGlobalButtons() { if (self::$globalButtons !== false) { return self::$globalButtons; } $buttonsOrder = sfConfig::get('app_a_global_button_order', false); self::$globalButtons = array(); // We could pass parameters here but it's a simple static thing in this case // so the recipients just call back to addGlobalButtons sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent(null, 'a.getGlobalButtons', array())); $buttonsByName = array(); foreach (self::$globalButtons as $button) { $buttonsByName[$button->getName()] = $button; } if ($buttonsOrder === false) { ksort($buttonsByName); $orderedButtons = array_values($buttonsByName); } else { $orderedButtons = array(); foreach ($buttonsOrder as $name) { if (isset($buttonsByName[$name])) { $orderedButtons[] = $buttonsByName[$name]; } } } self::$globalButtons = $orderedButtons; return $orderedButtons; }
/** * Returns global buttons as an associative array by button name. * Ignores app_a_global_button_order. For use by those who prefer to * override the _globalTools partial. Note that you will NOT get the * same buttons for every user! An admin has more buttons than a * mere editor and so on. Use isset() * @return mixed */ public static function getGlobalButtonsByName() { if (aTools::$globalButtons === false) { aTools::$globalButtons = array(); // We could pass parameters here but it's a simple static thing in this case // so the recipients just call back to addGlobalButtons sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent(null, 'a.getGlobalButtons', array())); } $labelOverrides = sfConfig::get('app_a_global_button_labels', null); if (is_array($labelOverrides)) { foreach ($labelOverrides as $key => $label) { if (isset(aTools::$globalButtons[$key])) { if (is_array($label)) { // i18n aTools::$globalButtons[$key]->setLabel($label[aTools::getUserCulture()]); } else { aTools::$globalButtons[$key]->setLabel($label); } } } } return aTools::$globalButtons; }