/** * Overrides Drupal\configuration\Config\PermissionConfiguration::alterDependencies(). */ public static function alterDependencies(Configuration $config) { parent::alterDependencies($config); $id = $config->getIdentifier(); // Rules components that involve permissions should have the permission // bundled along with it, but it's not necessary, so we add as optional. if ($config->getComponent() == 'rules_config') { $rule_name = $id; $rules_permissions = rules_permission(); $permission = "use Rules component {$rule_name}"; if (isset($rules_permissions[$permission])) { $identifier = str_replace(' ', '_', $permission); $perm = new YafflePermissionConfiguration($identifier); $perm->build(); // Add the Rules component as a dependency of the permission. // NOTE: This isn't working, so we're adding the dependency below. // $perm->addToDependencies($config); // Add the permission as a child configuration of the Rules component. $config->addToOptionalConfigurations($perm); } } // Permissions for Rules components require the component in place first // otherwise we will start seeing errors. if ($config->getComponent() == 'permission' && strpos($id, 'use_Rules_component') !== FALSE) { $rule_name = substr($id, 20); $rules_config = ConfigurationManagement::createConfigurationInstance('rules_config.' . $rule_name); $config->addToDependencies($rules_config); } }
/** * Overrides Drupal\configuration\Config\Configuration::findDependencies(). */ public function findDependencies() { $format = $this->getIdentifier(); $formats = filter_formats(); if (isset($formats[$format])) { $filter_format = ConfigurationManagement::createConfigurationInstance('text_format.' . $format); $this->addToDependencies($filter_format); } parent::findDependencies(); }
/** * Overrides Drupal\configuration\Config\Configuration::alterDependencies(). */ public static function alterDependencies(Configuration $config) { // Dependencies for Page Manager Pages. Each page has a handler. if ($config->getComponent() == 'page_manager_pages' && !$config->broken) { $config_data = $config->getData(); $id = 'page_manager_handlers.page_' . $config_data->name . '_panel_context'; $page_handler = ConfigurationManagement::createConfigurationInstance($id); $page_handler->build(); $config->addToDependencies($page_handler); } }
/** * Overrides Drupal\configuration\Config\Configuration::alterDependencies(). */ public static function alterDependencies(Configuration $config) { if ($config->getComponent() == 'permission') { foreach (node_permissions_get_configured_types() as $type) { foreach (array_keys(node_list_permissions($type)) as $permission) { $data = $config->getData(); if ($permission == $data['permission']) { $content_type = ConfigurationManagement::createConfigurationInstance('content_type.' . $type); $config->addToDependencies($content_type); break; } } } } }
/** * Overrides Drupal\configuration\Config\Configuration::saveToActiveStore(). */ public static function alterDependencies(Configuration $config) { if ($config->getComponent() == 'permission') { $data = $config->getData(); if (!empty($data['roles'])) { $role_objects = db_select('role', 'r')->fields('r', array('machine_name', 'rid'))->condition('name', $data['roles'], 'IN')->execute(); foreach ($role_objects as $role_object) { if ($role_object->rid > 2 && !empty($role_object->machine_name)) { $role_config = ConfigurationManagement::createConfigurationInstance('role.' . $role_object->machine_name); $config->addToDependencies($role_config); } } } } }
/** * Overrides Drupal\configuration\Config\Configuration::alterDependencies(). */ public static function alterDependencies(Configuration $config) { if ($config->getComponent() == 'permission') { // Generate permissions for each text format. Warn the administrator that any // of them are potentially unsafe. foreach (filter_formats() as $format) { $permission = filter_permission_name($format); if (!empty($permission)) { $data = $config->getData(); if ($permission == $data['permission']) { $text_format = ConfigurationManagement::createConfigurationInstance('text_format.' . $format->format); $config->addToDependencies($text_format); break; } } } } }
/** * Overrides Drupal\configuration\Config\Configuration::alterDependencies(). */ public static function alterDependencies(Configuration $config) { if ($config->getComponent() == 'permission') { $panelizers = static::getAllIdentifiers('panelizer_defaults'); $permission = $config->getData(); if (strpos($permission['permission'], 'administer panelizer ') === 0) { list(, , $entity_type, $bundle) = explode(' ', $permission['permission']); $id = $entity_type . ':' . $bundle; foreach ($panelizers as $panelizer_id) { if (strpos($panelizer_id, $id) === 0) { $panelizer = ConfigurationManagement::createConfigurationInstance('panelizer_defaults.' . $panelizer_id); $panelizer->build(); $config->addToDependencies($panelizer); } } } } }
/** * Overrides Drupal\configuration\Config\Configuration::alterDependencies(). */ public static function alterDependencies(Configuration $config) { static $cache; if (!isset($cache)) { $cache = array(); } // Dependencies for Page Manager Handlers. if ($config->getComponent() == 'page_manager_handlers' && !$config->broken) { // This line seems to be inconsistent when executed from drush or browser. $config_data = $config->getData(); // This alternative works more consistent althoug it's no so pretty. if (!isset($config_data->conf['display'])) { if (!isset($cache[$config->getUniqueId()])) { @eval(ctools_export_crud_export($config->getComponent(), $config_data)); $cache[$config->getUniqueId()] = $handler; } else { $handler = $cache[$config->getUniqueId()]; } $config_data = $handler; } foreach ($config_data->conf['display']->content as $object) { $type = $object->type; switch ($type) { case 'block': list($subtype, $id, ) = explode('-', $object->subtype); switch ($subtype) { // Display block from a view. case 'views': $config_id = 'views_view.' . $id; $view = ConfigurationManagement::createConfigurationInstance($config_id); $view->build(); $config->addToDependencies($view); $config->addToDependencies($view); break; } break; // A view added directly. // A view added directly. case 'views': $config_id = 'views_view.' . $object->subtype; $view = ConfigurationManagement::createConfigurationInstance($config_id); $view->build(); $config->addToDependencies($view); break; // A view added using the Views content panes module. // A view added using the Views content panes module. case 'views_panes': list($subtype, ) = explode('-', $object->subtype); $config_id = 'views_view.' . $subtype; $view = ConfigurationManagement::createConfigurationInstance($config_id); $view->build(); $config->addToDependencies($view); break; } } } }
/** * This function will exectute a callback function over all the configurations * objects that it process. * * @param ConfigIteratorSettings $settings * A ConfigIteratorSettings instance that specifies, which is the callback * to execute. If dependencies and optional configurations should be * processed too, and storage the cache of already processed configurations. * * @see importToActiveStore() * @see exportToDataStore() * @see revertActiveStore() * @see discoverRequiredModules() */ public function iterate(ConfigIteratorSettings &$settings) { $callback = $settings->getCallback(); $build_callback = $settings->getBuildCallback(); if ($settings->alreadyProcessed($this) || $settings->excluded($this)) { return; } // First proccess requires the dependencies that have to be processed before // load the current configuration. if ($settings->processDependencies()) { foreach ($this->getDependencies() as $dependency => $config_dependency) { // In some callbacks, the dependencies storages the full config object // other simply use a plain string. If the object is available, use // that version. if (is_object($config_dependency)) { $config = $config_dependency; } else { $config = $settings->getFromCache($dependency); if (!$config) { $config = ConfigurationManagement::createConfigurationInstance($dependency); } } $config->setContext($settings); $config->{$build_callback}(); $config->iterate($settings); } } if ($settings->alreadyProcessed($this)) { return; } // Now, after proccess the dependencies, proccess the current configuration. $this->setContext($settings); $this->{$callback}($settings); $settings->addToCache($this); // After proccess the dependencies and the current configuration, proccess // the optionals. if ($settings->processOptionals()) { foreach ($this->getOptionalConfigurations() as $optional => $optional_config) { $config = $settings->getFromCache($optional); // In some callbacks, the optionals storages the full config object // other simply use a plain string. If the object is available, use // that version. if (is_object($optional_config)) { $config = $optional_config; } else { if (!$config) { $config = ConfigurationManagement::createConfigurationInstance($optional); } } $config->setContext($settings); $config->{$build_callback}(); $config->iterate($settings); } } }
/** * Overrides Drupal\configuration\Config\Configuration::findDependencies(). */ public function findDependencies() { list($entity_type, $field_name, $bundle_name) = explode('.', $this->getIdentifier()); $supported_handler = FALSE; if ($entity_type == 'node') { $parent_config = ConfigurationManagement::createConfigurationInstance('content_type.' . $bundle_name); $this->addToDependencies($parent_config); } elseif ($entity_type == 'vocabulary') { $parent_config = ConfigurationManagement::createConfigurationInstance('vocabulary.' . $bundle_name); $this->addToDependencies($parent_config); } parent::findDependencies(); }