diff --git a/0001-repatched-entityrefeerence-module.patch b/0001-repatched-entityrefeerence-module.patch new file mode 100644 index 00000000..37aa9393 --- /dev/null +++ b/0001-repatched-entityrefeerence-module.patch @@ -0,0 +1,73 @@ +From 1f82c4ef9b474a12d160813f767128d645f524cc Mon Sep 17 00:00:00 2001 +From: Bachir Soussi Chiadmi +Date: Sun, 19 Apr 2015 21:04:36 +0200 +Subject: [PATCH] repatched entityrefeerence module + +--- + ...ityReference_SelectionHandler_Generic.class.php | 43 +++++++++++++++++++--- + 1 file changed, 38 insertions(+), 5 deletions(-) + +diff --git a/sites/all/modules/contrib/fields/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php b/sites/all/modules/contrib/fields/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php +index 444a74c..660fe3d 100644 +--- a/sites/all/modules/contrib/fields/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php ++++ b/sites/all/modules/contrib/fields/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php +@@ -370,6 +370,28 @@ class EntityReference_SelectionHandler_Generic_node extends EntityReference_Sele + * This only exists to workaround core bugs. + */ + class EntityReference_SelectionHandler_Generic_user extends EntityReference_SelectionHandler_Generic { ++ ++ /** ++ * Implements EntityReferenceHandler::settingsForm(). ++ */ ++ public static function settingsForm($field, $instance) { ++ $settings = $field['settings']['handler_settings']; ++ $form = parent::settingsForm($field, $instance); ++ $form['referenceable_roles'] = array( ++ '#type' => 'checkboxes', ++ '#title' => t('User roles that can be referenced'), ++ '#default_value' => isset($settings['referenceable_roles']) ? array_filter($settings['referenceable_roles']) : array(), ++ '#options' => user_roles(TRUE), ++ ); ++ $form['referenceable_status'] = array( ++ '#type' => 'checkboxes', ++ '#title' => t('User status that can be referenced'), ++ '#default_value' => isset($settings['referenceable_status']) ? array_filter($settings['referenceable_status']) : array('active' => 'active'), ++ '#options' => array('active' => t('Active'), 'blocked' => t('Blocked')), ++ ); ++ return $form; ++ } ++ + public function buildEntityFieldQuery($match = NULL, $match_operator = 'CONTAINS') { + $query = parent::buildEntityFieldQuery($match, $match_operator); + +@@ -378,11 +400,22 @@ class EntityReference_SelectionHandler_Generic_user extends EntityReference_Sele + $query->propertyCondition('name', $match, $match_operator); + } + +- // Adding the 'user_access' tag is sadly insufficient for users: core +- // requires us to also know about the concept of 'blocked' and +- // 'active'. +- if (!user_access('administer users')) { +- $query->propertyCondition('status', 1); ++ $field = $this->field; ++ $settings = $field['settings']['handler_settings']; ++ $referenceable_roles = isset($settings['referenceable_roles']) ? array_filter($settings['referenceable_roles']) : array(); ++ $referenceable_status = isset($settings['referenceable_status']) ? array_filter($settings['referenceable_status']) : array('active' => 'active'); ++ ++ // If this filter is not filled, use the users access permissions. ++ if (empty($referenceable_status)) { ++ // Adding the 'user_access' tag is sadly insufficient for users: core ++ // requires us to also know about the concept of 'blocked' and 'active'. ++ if (!user_access('administer users')) { ++ $query->propertyCondition('status', 1); ++ } ++ } ++ elseif (count($referenceable_status) == 1) { ++ $values = array('active' => 1, 'blocked' => 0); ++ $query->propertyCondition('status', $values[key($referenceable_status)]); + } + return $query; + } +-- +2.3.5 +