Overwrite default access permissions could be acomplished easily using the "Elgg way" philosophy. In other words you just need to overwrite the default behavior using the plugin architecture.
In this specific case you need:
if(empty($vars["value"]) && strval($vars["value"])!=="0"){
$vars["value"]=2;
}
You can use this method for add specific access permissions or to overwrite the display order.
Note: This approach assumes that $vars["value"] comes empty when your are creating a new content, unfortunately looky deeply the access_id values is hardcoded in the code of some forms like blog/views/default/blog/forms/edit.php so you can not diferentiate when the "0" value from private access comes from default or it is setting by the user.
However you can use the same approach for overwrite those forms and acomplish the same objetive. In fact you can mix both. In this way you can get your desired functionality without modify the core and in case the feature is implemented you only needs to drop those files.
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by Raül Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.