/** * Provide a unique, sanitized version of a group slug. * * @param string $slug Group slug to check. * * @return string $slug A unique and sanitized slug. */ function groups_check_slug($slug) { $bp = buddypress(); if ('wp' == substr($slug, 0, 2)) { $slug = substr($slug, 2, strlen($slug) - 2); } if (in_array($slug, (array) $bp->groups->forbidden_names)) { $slug = $slug . '-' . rand(); } if (BP_Groups_Group::check_slug($slug)) { do { $slug = $slug . '-' . rand(); } while (BP_Groups_Group::check_slug($slug)); } return $slug; }
function check_slug($id, $slug) { global $bp; /* Allow save if no change */ if ($slug == $bp->groups->current_group->slug) { return true; } /* Group slugs cannot start with wp */ if ('wp' == substr($slug, 0, 2)) { $slug = substr($slug, 2, strlen($slug) - 2); } /* Don't allow forbidden names */ if (in_array($slug, (array) $bp->groups->forbidden_names)) { return false; } /* Run it through the BP core slug checker */ if (BP_Groups_Group::check_slug($slug)) { if ($slug != BP_Groups_Group::get_slug($id)) { return false; } } /* Slug is good, return true */ return true; }