- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * it under the terms of the GNU General Public License, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* - User is not validated
* - User has no net privileges and it is a shared network room
* - It is a read-only room
* - User is not validated
* - User has no net privileges and it is a shared network room
* - It is a read-only room
- cdb_store(CDB_ROOMS,
- lowercase_name, len,
- qrbuf, sizeof(struct ctdlroom));
+ cdb_store(CDB_ROOMS, lowercase_name, len, qrbuf, sizeof(struct ctdlroom));
memset(&qrbuf, 0, sizeof(struct ctdlroom));
memcpy(&qrbuf, cdbqr->ptr,
((cdbqr->len > sizeof(struct ctdlroom)) ?
memset(&qrbuf, 0, sizeof(struct ctdlroom));
memcpy(&qrbuf, cdbqr->ptr,
((cdbqr->len > sizeof(struct ctdlroom)) ?
- memmove(&listptrs[0], &listptrs[1],
- (sizeof(long) * (numitems - 1)));
+ memmove(&listptrs[0], &listptrs[1], (sizeof(long) * (numitems - 1)));
void CtdlUserGoto(char *where, int display_result, int transiently,
int *retmsgs, int *retnew)
{
void CtdlUserGoto(char *where, int display_result, int transiently,
int *retmsgs, int *retnew)
{
- safestrncpy(CC->room.QRname, where, sizeof CC->room.QRname);
- CtdlGetRoom(&CC->room, where);
+ safestrncpy(CCC->room.QRname, where, sizeof CCC->room.QRname);
+ CtdlGetRoom(&CCC->room, where);
original_v_flags = vbuf.v_flags;
/* Know the room ... but not if it's the page log room, or if the
* caller specified that we're only entering this room transiently.
*/
original_v_flags = vbuf.v_flags;
/* Know the room ... but not if it's the page log room, or if the
* caller specified that we're only entering this room transiently.
*/
&& (transiently == 0) ) {
vbuf.v_flags = vbuf.v_flags & ~V_FORGET & ~V_LOCKOUT;
vbuf.v_flags = vbuf.v_flags | V_ACCESS;
&& (transiently == 0) ) {
vbuf.v_flags = vbuf.v_flags & ~V_FORGET & ~V_LOCKOUT;
vbuf.v_flags = vbuf.v_flags | V_ACCESS;
/* Only rewrite the database record if we changed something */
if (vbuf.v_flags != original_v_flags) {
/* Only rewrite the database record if we changed something */
if (vbuf.v_flags != original_v_flags) {
num_sets = num_tokens(vbuf.v_seen, ',');
for (s=0; s<num_sets; ++s) {
extract_token(setstr, vbuf.v_seen, s, ',', sizeof setstr);
num_sets = num_tokens(vbuf.v_seen, ',');
for (s=0; s<num_sets; ++s) {
extract_token(setstr, vbuf.v_seen, s, ',', sizeof setstr);
- safestrncpy(truncated_roomname, CC->room.QRname, sizeof truncated_roomname);
- if ( (CC->room.QRflags & QR_MAILBOX)
- && (atol(CC->room.QRname) == CC->user.usernum) ) {
+ safestrncpy(truncated_roomname, CCC->room.QRname, sizeof truncated_roomname);
+ if ( (CCC->room.QRflags & QR_MAILBOX)
+ && (atol(CCC->room.QRname) == CCC->user.usernum) ) {
- syslog(LOG_DEBUG, "<%s> %d new of %d total messages\n",
- CC->room.QRname,
- new_messages, total_messages
- );
+ MSG_syslog(LOG_INFO, "<%s> %d new of %d total messages\n",
+ CCC->room.QRname,
+ new_messages, total_messages
+ );
mkdir(buf, 0755);
}
snprintf(buf, sizeof buf, "The room \"%s\" has been edited by %s.\n",
mkdir(buf, 0755);
}
snprintf(buf, sizeof buf, "The room \"%s\" has been edited by %s.\n",
CtdlAideMessage(buf, "Room modification Message");
cprintf("%d Ok\n", CIT_OK);
}
CtdlAideMessage(buf, "Room modification Message");
cprintf("%d Ok\n", CIT_OK);
}
if (post_notice == 1) {
if (!IsEmptyStr(usbuf.fullname))
snprintf(buf, sizeof buf,
if (post_notice == 1) {
if (!IsEmptyStr(usbuf.fullname))
snprintf(buf, sizeof buf,
usbuf.fullname, CC->room.QRname);
else
snprintf(buf, sizeof buf,
usbuf.fullname, CC->room.QRname);
else
snprintf(buf, sizeof buf,
/* tell the world what we did */
snprintf(msg, sizeof msg, "The room \"%s\" has been deleted by %s.\n",
/* tell the world what we did */
snprintf(msg, sizeof msg, "The room \"%s\" has been deleted by %s.\n",
CtdlAideMessage(msg, "Room Purger Message");
cprintf("%d '%s' deleted.\n", CIT_OK, deleted_room_name);
} else {
CtdlAideMessage(msg, "Room Purger Message");
cprintf("%d '%s' deleted.\n", CIT_OK, deleted_room_name);
} else {
- * to automatically grant room aide privileges, do so now; otherwise,
- * set the room aide to undefined.
+ * to automatically grant room admin privileges, do so now.
+ }
+ /* Blog owners automatically become room admins 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 admin to undefined.
+ */
+ else {
snprintf(notification_message, 1024,
"A new room called \"%s\" has been created by %s%s%s%s%s%s\n",
new_room_name,
snprintf(notification_message, 1024,
"A new room called \"%s\" has been created by %s%s%s%s%s%s\n",
new_room_name,
((newflags & QR_MAILBOX) ? " [personal]" : ""),
((newflags & QR_PRIVATE) ? " [private]" : ""),
((newflags & QR_GUESSNAME) ? " [hidden]" : ""),
((newflags & QR_MAILBOX) ? " [personal]" : ""),
((newflags & QR_PRIVATE) ? " [private]" : ""),
((newflags & QR_GUESSNAME) ? " [hidden]" : ""),
+
+/*
+ * cmd_stat() - return the modification time of the current room (maybe other things in the future)
+ */
+void cmd_stat(char *gargs)
+{
+ if (CtdlAccessCheck(ac_logged_in_or_guest)) return;
+ CtdlGetRoom(&CC->room, CC->room.QRname);
+ cprintf("%d %s|%ld|\n", CIT_OK, CC->room.QRname, CC->room.QRmtime);
+}
+
+
+
/*****************************************************************************/
/* MODULE INITIALIZATION STUFF */
/*****************************************************************************/
/*****************************************************************************/
/* MODULE INITIALIZATION STUFF */
/*****************************************************************************/
CtdlRegisterProtoHook(cmd_lzrm, "LZRM", "List zapped rooms");
CtdlRegisterProtoHook(cmd_lprm, "LPRM", "List public rooms");
CtdlRegisterProtoHook(cmd_goto, "GOTO", "Goto a named room");
CtdlRegisterProtoHook(cmd_lzrm, "LZRM", "List zapped rooms");
CtdlRegisterProtoHook(cmd_lprm, "LPRM", "List public rooms");
CtdlRegisterProtoHook(cmd_goto, "GOTO", "Goto a named room");
CtdlRegisterProtoHook(cmd_whok, "WHOK", "List users who know this room");
CtdlRegisterProtoHook(cmd_rdir, "RDIR", "List files in room directory");
CtdlRegisterProtoHook(cmd_getr, "GETR", "Get room parameters");
CtdlRegisterProtoHook(cmd_setr, "SETR", "Set room parameters");
CtdlRegisterProtoHook(cmd_whok, "WHOK", "List users who know this room");
CtdlRegisterProtoHook(cmd_rdir, "RDIR", "List files in room directory");
CtdlRegisterProtoHook(cmd_getr, "GETR", "Get room parameters");
CtdlRegisterProtoHook(cmd_setr, "SETR", "Set room parameters");
- CtdlRegisterProtoHook(cmd_geta, "GETA", "Get the room aide name");
- CtdlRegisterProtoHook(cmd_seta, "SETA", "Set the room aide for this room");
+ CtdlRegisterProtoHook(cmd_geta, "GETA", "Get the room admin name");
+ CtdlRegisterProtoHook(cmd_seta, "SETA", "Set the room admin for this room");
CtdlRegisterProtoHook(cmd_rinf, "RINF", "Fetch room info file");
CtdlRegisterProtoHook(cmd_kill, "KILL", "Kill (delete) the current room");
CtdlRegisterProtoHook(cmd_cre8, "CRE8", "Create a new room");
CtdlRegisterProtoHook(cmd_rinf, "RINF", "Fetch room info file");
CtdlRegisterProtoHook(cmd_kill, "KILL", "Kill (delete) the current room");
CtdlRegisterProtoHook(cmd_cre8, "CRE8", "Create a new room");