<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[BuddyPress][13983] trunk/src: Require singular and plural names for BuddyPress custom types.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://buddypress.trac.wordpress.org/changeset/13983">13983</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://buddypress.trac.wordpress.org/changeset/13983","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>espellcaste</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2024-07-27 18:44:41 +0000 (Sat, 27 Jul 2024)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Require singular and plural names for BuddyPress custom types.

When creating a member or group type, require that both singular and plural names are provided. This ensures that the type can be properly registered and used throughout BuddyPress.

Props 1naveengiri, imath, imranmd.

Fixes <a href="http://buddypress.trac.wordpress.org/ticket/9092">#9092</a>
Closes https://github.com/buddypress/buddypress/pull/335/</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcbpcoreadminbpcoreadmintypesphp">trunk/src/bp-core/admin/bp-core-admin-types.php</a></li>
<li><a href="#trunksrcbpcorebpcorefunctionsphp">trunk/src/bp-core/bp-core-functions.php</a></li>
<li><a href="#trunksrcbpgroupsbpgroupsadminphp">trunk/src/bp-groups/bp-groups-admin.php</a></li>
<li><a href="#trunksrcbpgroupsbpgroupsfunctionsphp">trunk/src/bp-groups/bp-groups-functions.php</a></li>
<li><a href="#trunksrcbpmembersbpmembersadminphp">trunk/src/bp-members/bp-members-admin.php</a></li>
<li><a href="#trunksrcbpmembersbpmembersfunctionsphp">trunk/src/bp-members/bp-members-functions.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcbpcoreadminbpcoreadmintypesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-core/admin/bp-core-admin-types.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-core/admin/bp-core-admin-types.php   2024-07-27 17:14:13 UTC (rev 13982)
+++ trunk/src/bp-core/admin/bp-core-admin-types.php     2024-07-27 18:44:41 UTC (rev 13983)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -44,14 +44,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  *     @type string $taxonomy   The Type's taxonomy. Required.
</span><span class="cx" style="display: block; padding: 0 10px">  *     @type string $bp_type_id Unique string identifier for the member type. Required.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ *     @type string $bp_type_singular_name Singular name for the member type. Required.
+ *     @type string $bp_type_name Plural name for the member type. Required.
</ins><span class="cx" style="display: block; padding: 0 10px">  *     @see keys of the array returned by bp_get_type_metadata_schema() for the other arguments.
</span><span class="cx" style="display: block; padding: 0 10px">  * }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @return integer|WP_Error The Type's term ID on success. A WP_Error object otherwise.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @return int|WP_Error The Type's term ID on success. A WP_Error object otherwise.
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function bp_core_admin_insert_type( $args = array() ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $default_args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                'taxonomy'   => '',
</span><span class="cx" style="display: block; padding: 0 10px">                'bp_type_id' => '',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'bp_type_singular_name' => '',
+               'bp_type_name' => '',
</ins><span class="cx" style="display: block; padding: 0 10px">         );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $args = array_map( 'wp_unslash', $args );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -69,6 +73,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if ( ! $args['bp_type_singular_name'] ) {
+               return new WP_Error(
+                       'empty_field_singular',
+                       __( 'The Singular Name value is missing', 'buddypress' ),
+                       array(
+                               'message' => 11,
+                       )
+               );
+       }
+
+       if ( ! $args['bp_type_name'] ) {
+               return new WP_Error(
+                       'empty_field_plural',
+                       __( 'The Plural Name value is missing', 'buddypress' ),
+                       array(
+                               'message' => 12,
+                       )
+               );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         $type_id       = sanitize_title( $args['bp_type_id'] );
</span><span class="cx" style="display: block; padding: 0 10px">        $type_taxonomy = sanitize_key( $args['taxonomy'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -116,6 +140,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return $type_term_id;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        $type_term_id = reset( $type_term_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Hook here to add code once the type has been inserted.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span></span></pre></div>
<a id="trunksrcbpcorebpcorefunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-core/bp-core-functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-core/bp-core-functions.php   2024-07-27 17:14:13 UTC (rev 13982)
+++ trunk/src/bp-core/bp-core-functions.php     2024-07-27 18:44:41 UTC (rev 13983)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3380,8 +3380,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function bp_get_taxonomy_common_labels() {
</span><span class="cx" style="display: block; padding: 0 10px">        return array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'bp_type_name'           => _x( 'Plural Name', 'BP Type name label', 'buddypress' ),
-               'bp_type_singular_name'  => _x( 'Singular name', 'BP Type singular name label', 'buddypress' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'bp_type_name'           => _x( 'Plural Name (required)', 'BP Type name label', 'buddypress' ),
+               'bp_type_singular_name'  => _x( 'Singular Name (required)', 'BP Type singular name label', 'buddypress' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 'bp_type_has_directory'  => _x( 'Has Directory View', 'BP Type has directory checkbox label', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                'bp_type_directory_slug' => _x( 'Custom type directory slug', 'BP Type slug label', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">        );
</span></span></pre></div>
<a id="trunksrcbpgroupsbpgroupsadminphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-groups/bp-groups-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-groups/bp-groups-admin.php   2024-07-27 17:14:13 UTC (rev 13982)
+++ trunk/src/bp-groups/bp-groups-admin.php     2024-07-27 18:44:41 UTC (rev 13983)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1512,6 +1512,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                8  => __( 'Sorry, there was an error while trying to delete this Group type.', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                9  => __( 'Group type successfully deleted.', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                10 => __( 'Group type could not be updated due to missing required information.', 'buddypress' ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                11 => __( 'Please define the Group Type Singular Name field.', 'buddypress' ),
+               12 => __( 'Please define the Group Type Plural Name field.', 'buddypress' ),
</ins><span class="cx" style="display: block; padding: 0 10px">         );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        return $messages;
</span></span></pre></div>
<a id="trunksrcbpgroupsbpgroupsfunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-groups/bp-groups-functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-groups/bp-groups-functions.php       2024-07-27 17:14:13 UTC (rev 13982)
+++ trunk/src/bp-groups/bp-groups-functions.php 2024-07-27 18:44:41 UTC (rev 13983)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2839,7 +2839,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'back_to_items'                 => _x( '&larr; Back to Group Types', 'Group type taxonomy back to items label', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Specific to BuddyPress.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'bp_type_id_label'              => _x( 'Group Type ID', 'BP Member type ID label', 'buddypress' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'bp_type_id_label'              => _x( 'Group Type ID (required)', 'BP Member type ID label', 'buddypress' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'bp_type_id_description'        => _x( 'Lower-case string, no spaces or special characters. Used to identify the group type.', 'BP Group type ID description', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'bp_type_show_in_create_screen' => _x( 'Show on Group Creation', 'BP Group type show in create screen', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'bp_type_show_in_list'          => _x( 'Show on Group', 'BP Group type show in list', 'buddypress' ),
</span></span></pre></div>
<a id="trunksrcbpmembersbpmembersadminphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-members/bp-members-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-members/bp-members-admin.php 2024-07-27 17:14:13 UTC (rev 13982)
+++ trunk/src/bp-members/bp-members-admin.php   2024-07-27 18:44:41 UTC (rev 13983)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -107,6 +107,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                8  => __( 'Sorry, there was an error while trying to delete this Member type.', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                9  => __( 'Member type successfully deleted.', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                10 => __( 'Member type could not be updated due to missing required information.', 'buddypress' ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                11 => __( 'Please define the Member Type Singular Name field.', 'buddypress' ),
+               12 => __( 'Please define the Member Type Plural Name field.', 'buddypress' ),
</ins><span class="cx" style="display: block; padding: 0 10px">         );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        return $messages;
</span></span></pre></div>
<a id="trunksrcbpmembersbpmembersfunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-members/bp-members-functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-members/bp-members-functions.php     2024-07-27 17:14:13 UTC (rev 13982)
+++ trunk/src/bp-members/bp-members-functions.php       2024-07-27 18:44:41 UTC (rev 13983)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2766,7 +2766,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'back_to_items'              => _x( '&larr; Back to Member Types', 'Member type taxonomy back to items label', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Specific to BuddyPress.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'bp_type_id_label'           => _x( 'Member Type ID', 'BP Member type ID label', 'buddypress' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'bp_type_id_label'           => _x( 'Member Type ID (required)', 'BP Member type ID label', 'buddypress' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'bp_type_id_description'     => _x( 'Enter a lower-case string without spaces or special characters (used internally to identify the member type).', 'BP Member type ID description', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'bp_type_show_in_list'       => _x( 'Show on Member', 'BP Member type show in list', 'buddypress' ),
</span><span class="cx" style="display: block; padding: 0 10px">                )
</span></span></pre>
</div>
</div>

</body>
</html>