When changes are made via the admin socket, post Aide messages indicating that the...
[citadel.git] / citadel / room_ops.c
index 1c68a340c585f7048355f189c54773c6498a7970..c9e651b155ab9d2f8a81a9f49caba3e07cdef84a 100644 (file)
@@ -163,6 +163,7 @@ void CtdlRoomAccess(struct ctdlroom *roombuf, struct ctdluser *userbuf,
                 * - User is not validated
                 * - User has no net privileges and it is a shared network room
                 * - It is a read-only room
+                * - It is a blog room (in which case we only allow replies to existing messages)
                 */
                int post_allowed = 1;
                int reply_allowed = 1;
@@ -178,6 +179,9 @@ void CtdlRoomAccess(struct ctdlroom *roombuf, struct ctdluser *userbuf,
                        post_allowed = 0;
                        reply_allowed = 0;
                }
+               if (roombuf->QRdefaultview == VIEW_BLOG) {
+                       post_allowed = 0;
+               }
                if (post_allowed) {
                        retval = retval | UA_POSTALLOWED | UA_REPLYALLOWED;
                }
@@ -1604,7 +1608,9 @@ void cmd_setr(char *args)
                mkdir(buf, 0755);
        }
        snprintf(buf, sizeof buf, "The room \"%s\" has been edited by %s.\n",
-               CC->room.QRname, CC->curr_user);
+               CC->room.QRname,
+               (CC->logged_in ? CC->curr_user : "an administrator")
+       );
        CtdlAideMessage(buf, "Room modification Message");
        cprintf("%d Ok\n", CIT_OK);
 }
@@ -1849,7 +1855,9 @@ void cmd_kill(char *argbuf)
 
                /* tell the world what we did */
                snprintf(msg, sizeof msg, "The room \"%s\" has been deleted by %s.\n",
-                        deleted_room_name, CC->curr_user);
+                        deleted_room_name,
+                       (CC->logged_in ? CC->curr_user : "an administrator")
+               );
                CtdlAideMessage(msg, "Room Purger Message");
                cprintf("%d '%s' deleted.\n", CIT_OK, deleted_room_name);
        } else {
@@ -1910,12 +1918,20 @@ unsigned CtdlCreateRoom(char *new_room_name,
        }
 
        /* If the room is private, and the system administrator has elected
-        * to automatically grant room aide privileges, do so now; otherwise,
-        * set the room aide to undefined.
+        * to automatically grant room aide privileges, do so now.
         */
        if ((qrbuf.QRflags & QR_PRIVATE) && (CREATAIDE == 1)) {
                qrbuf.QRroomaide = CC->user.usernum;
-       } else {
+       }
+       /* Blog owners automatically become room aides of their blogs.
+        * (In the future we will offer a site-wide configuration setting to suppress this behavior.)
+        */
+       else if (new_room_view == VIEW_BLOG) {
+               qrbuf.QRroomaide = CC->user.usernum;
+       }
+       /* Otherwise, set the room aide to undefined.
+        */
+       else {
                qrbuf.QRroomaide = (-1L);
        }
 
@@ -2059,7 +2075,7 @@ void cmd_cre8(char *args)
        snprintf(notification_message, 1024,
                "A new room called \"%s\" has been created by %s%s%s%s%s%s\n",
                new_room_name,
-               CC->user.fullname,
+               (CC->logged_in ? CC->curr_user : "an administrator"),
                ((newflags & QR_MAILBOX) ? " [personal]" : ""),
                ((newflags & QR_PRIVATE) ? " [private]" : ""),
                ((newflags & QR_GUESSNAME) ? " [hidden]" : ""),