// Note: cannot use user_get_default_fields() here because it is not possible to decide which fields user can modify.
$dfields = array('firstname', 'lastname', 'email', 'address', 'phone1', 'phone2', 'icq', 'skype', 'yahoo',
- 'aim', 'msn', 'department', 'institution', 'description', 'city', 'url', 'country');
+ 'aim', 'msn', 'department', 'institution', 'description', 'picture', 'city', 'url', 'country');
$sql = "SELECT uf.id as fieldid, uf.name as name, ic.id as categoryid, ic.name as categoryname, uf.datatype
FROM {user_info_field} uf
$whereparts[] = "uid{$idx}.id IS NOT NULL";
} else {
// This is a field from {user} table.
- $whereparts[] = $DB->sql_isnotempty('u', "u.{$param['field']}", false, true);
+ if ($param['field'] == 'picture') {
+ // The picture field is numeric and requires special handling.
+ $whereparts[] = "u.{$param['field']} != 0";
+ } else {
+ $whereparts[] = $DB->sql_isnotempty('u', "u.{$param['field']}", false, true);
+ }
}
}
$params["fieldid{$idx}"] = $param['field'];
$whereparts[] = "uid{$idx}.id IS NOT NULL";
} else {
- $whereparts[] = $DB->sql_isnotempty('u', "u.{$param['field']}", false, true);
+ // This is a field from {user} table.
+ if ($param['field'] == 'picture') {
+ // The picture field is numeric and requires special handling.
+ $whereparts[] = "u.{$param['field']} != 0";
+ } else {
+ $whereparts[] = $DB->sql_isnotempty('u', "u.{$param['field']}", false, true);
+ }
}
}
--- /dev/null
+@core @core_badges @_file_upload
+Feature: Award badges based on user profile field
+ In order to award badges to users based on completion of their user profile
+ As an admin
+ I need to add profile completion criteria to badges in the system
+
+ @javascript
+ Scenario: Award badge for a uploading a profile picture.
+ Given the following "users" exist:
+ | username | firstname | lastname | email |
+ | user1 | First | User | first@example.com |
+ And I log in as "admin"
+ And I navigate to "Add a new badge" node in "Site administration > Badges"
+ And I set the following fields to these values:
+ | Name | Site Badge |
+ | Description | Site badge description |
+ | issuername | Tester of site badge |
+ And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
+ And I press "Create badge"
+ And I set the field "type" to "Profile completion"
+ And I set the field "id_field_picture" to "1"
+ And I press "Save"
+ And I press "Enable access"
+ And I press "Continue"
+ And I log out
+ When I log in as "user1"
+ And I follow "Profile" in the user menu
+ And I click on "Edit profile" "link" in the "region-main" "region"
+ And I upload "badges/tests/behat/badge.png" file to "New picture" filemanager
+ And I press "Update profile"
+ Then I should see "Site Badge"