/**
  * Callback for the "Login Required" settings field.
  * This ensure all roles are set to have the connections_view_public
  * capability to ensures all roles can at least view the public entries.
  *
  * @access private
  * @since  0.7.3
  *
  * @param $loginRequired
  *
  * @return int
  */
 public static function setAllowPublic($loginRequired)
 {
     global $wp_roles;
     if ($loginRequired) {
         if (!isset($wp_roles)) {
             $wp_roles = new WP_Roles();
         }
         $roles = $wp_roles->get_names();
         foreach ($roles as $role => $name) {
             cnRole::add($role, 'connections_view_public');
         }
     }
     return $loginRequired;
 }
 /**
  * Update the role settings.
  *
  * @access private
  * @since 0.7.5
  * @uses current_user_can()
  * @uses check_admin_referer()
  * @uses wp_redirect()
  * @uses get_admin_url()
  * @uses get_current_blog_id()
  * @return void
  */
 public static function updateRoleCapabilities()
 {
     /** @var $wp_roles WP_Roles */
     global $wp_roles;
     $form = new cnFormObjects();
     /*
      * Check whether user can edit roles
      */
     if (current_user_can('connections_change_roles')) {
         check_admin_referer($form->getNonce('update_role_settings'), '_cn_wpnonce');
         if (isset($_POST['roles'])) {
             // Cycle thru each role available because checkboxes do not report a value when not checked.
             foreach ($wp_roles->get_names() as $role => $name) {
                 if (!isset($_POST['roles'][$role])) {
                     continue;
                 }
                 foreach ($_POST['roles'][$role]['capabilities'] as $capability => $grant) {
                     // the administrator should always have all capabilities
                     if ($role == 'administrator') {
                         continue;
                     }
                     if ($grant == 'true') {
                         cnRole::add(esc_attr($role), esc_attr($capability));
                     } else {
                         cnRole::remove(esc_attr($role), esc_attr($capability));
                     }
                 }
             }
         }
         if (isset($_POST['reset'])) {
             cnRole::reset(array_map('esc_attr', $_POST['reset']));
         }
         if (isset($_POST['reset_all'])) {
             cnRole::reset();
         }
         cnMessage::set('success', 'role_settings_updated');
         wp_redirect(get_admin_url(get_current_blog_id(), 'admin.php?page=connections_roles'));
         exit;
     } else {
         cnMessage::set('error', 'capability_roles');
     }
 }