Browse code

version 3.5.7

Jimako authored on 2024/04/08 12:21:57
Showing 1 changed files
... ...
@@ -42,7 +42,7 @@ function deleteStory($story) {
42 42
 	if($logging) {
43 43
 		$authorquery = dbquery("SELECT "._PENNAMEFIELD." as penname FROM "._AUTHORTABLE." WHERE "._UIDFIELD." = '".$story['uid']."' LIMIT 1");
44 44
 		list($penname) = dbrow($authorquery);
45
-		dbquery("INSERT INTO ".TABLEPREFIX."fanfiction_log (`log_action`, `log_uid`, `log_ip`, `log_type`, `log_timestamp`) VALUES('".escapestring(sprintf(_LOG_ADMIN_DEL, USERPENNAME, USERUID, $story['title'], $sid, $penname, $story['uid']))."', '".USERUID."', INET_ATON('".$_SERVER['REMOTE_ADDR'].
45
+		dbquery("INSERT INTO ".TABLEPREFIX."fanfiction_log (`log_action`, `log_uid`, `log_ip`, `log_type`, `log_timestamp`) VALUES('".escapestring(sprintf(_LOG_ADMIN_DEL, USERPENNAME, USERUID, $story['title'], $sid, $penname, $story['uid']))."', '".USERUID. "', INET6_ATON('".$_SERVER['REMOTE_ADDR'].
46 46
 		"'), 'DL', " . time() . ")");
47 47
 	}
48 48
 	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_stories WHERE sid = '$sid' LIMIT 1");
... ...
@@ -193,7 +193,7 @@ function deleteSeries($seriesid) {
193 193
 			eval($code['code_text']);
194 194
 	}
195 195
 	if($logging && isADMIN) {
196
-		if($uid != USERUID) dbquery("INSERT INTO ".TABLEPREFIX."fanfiction_log (`log_action`, `log_uid`, `log_ip`, `log_type`, `log_timestamp`) VALUES('".escapestring(sprintf(_LOG_ADMIN_DEL_SERIES, USERPENNAME, USERUID, $title))."', '".USERUID."', INET_ATON('".$_SERVER['REMOTE_ADDR']."'), 'DL', " . time() . ")");
196
+		if($uid != USERUID) dbquery("INSERT INTO ".TABLEPREFIX."fanfiction_log (`log_action`, `log_uid`, `log_ip`, `log_type`, `log_timestamp`) VALUES('".escapestring(sprintf(_LOG_ADMIN_DEL_SERIES, USERPENNAME, USERUID, $title))."', '".USERUID. "', INET6_ATON('".$_SERVER['REMOTE_ADDR']."'), 'DL', " . time() . ")");
197 197
 	}
198 198
 }
199
-?>
200 199
\ No newline at end of file
200
+?>
Browse code

3.5.6 efiction version

Jimako authored on 2024/03/09 16:09:42
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,199 @@
1
+<?php
2
+// ----------------------------------------------------------------------
3
+// Copyright (c) 2007 by Tammy Keefer
4
+// Based on eFiction 1.1
5
+// Copyright (C) 2003 by Rebecca Smallwood.
6
+// http://efiction.sourceforge.net/
7
+// ----------------------------------------------------------------------
8
+// LICENSE
9
+//
10
+// This program is free software; you can redistribute it and/or
11
+// modify it under the terms of the GNU General Public License (GPL)
12
+// as published by the Free Software Foundation; either version 2
13
+// of the License, or (at your option) any later version.
14
+//
15
+// This program is distributed in the hope that it will be useful,
16
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
+// GNU General Public License for more details.
19
+//
20
+// To read the license please visit http://www.gnu.org/copyleft/gpl.html
21
+// ----------------------------------------------------------------------
22
+
23
+if(!defined("_CHARSET")) exit( );
24
+
25
+function deleteStory($story) {
26
+	global $store, $logging;
27
+	$sid = $story['sid'];
28
+	if($story['validated']) {
29
+		$cats = explode(",", $story['catid']);
30
+		foreach($cats as $cat) {
31
+			categoryitems($cat, -1);			
32
+		}	
33
+	}
34
+	if($store == "files") {
35
+		$chapterquery = dbquery("SELECT chapid, uid FROM ".TABLEPREFIX."fanfiction_chapters WHERE sid = '$sid'");
36
+		while($chapter = dbassoc($chapterquery)) {
37
+			if (file_exists(STORIESPATH . "/" . $chapter['uid'] . "/" . $chapter['chapid'] . ".txt")) {
38
+				unlink(STORIESPATH."/".$chapter['uid']."/".$chapter['chapid'].".txt"); 
39
+			}
40
+		}
41
+	}
42
+	if($logging) {
43
+		$authorquery = dbquery("SELECT "._PENNAMEFIELD." as penname FROM "._AUTHORTABLE." WHERE "._UIDFIELD." = '".$story['uid']."' LIMIT 1");
44
+		list($penname) = dbrow($authorquery);
45
+		dbquery("INSERT INTO ".TABLEPREFIX."fanfiction_log (`log_action`, `log_uid`, `log_ip`, `log_type`, `log_timestamp`) VALUES('".escapestring(sprintf(_LOG_ADMIN_DEL, USERPENNAME, USERUID, $story['title'], $sid, $penname, $story['uid']))."', '".USERUID."', INET_ATON('".$_SERVER['REMOTE_ADDR'].
46
+		"'), 'DL', " . time() . ")");
47
+	}
48
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_stories WHERE sid = '$sid' LIMIT 1");
49
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_chapters WHERE sid = '$sid'");
50
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_reviews WHERE item = '$sid' AND type = 'ST'");
51
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_favorites WHERE item = '$sid' AND type = 'ST'");
52
+	// get the coauthors list before we delete the coauthors info.
53
+	$array_coauthors = array();
54
+	if($story['coauthors'] == 1) {
55
+		$coauth = dbquery("SELECT uid FROM ".TABLEPREFIX."fanfiction_coauthors WHERE sid = '$sid'");
56
+		while($c = dbassoc($coauth)) {
57
+			$array_coauthors[] = $c['uid'];
58
+			
59
+		}
60
+	}	
61
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_coauthors WHERE sid = '$sid'");
62
+	// Delete story from all series it is in.
63
+	$serieslist = dbquery("SELECT inorder, seriesid FROM ".TABLEPREFIX."fanfiction_inseries WHERE sid = '".$story['sid']."' LIMIT 1");
64
+	while($series = dbassoc($serieslist)) {
65
+		$countquery = dbquery("SELECT count(seriesid) FROM ".TABLEPREFIX."fanfiction_inseries WHERE seriesid = '".$series['seriesid']."'");
66
+		list($count) = dbrow($countquery);
67
+		dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_inseries WHERE seriesid = '".$series['seriesid']."' AND sid = '".$story['sid']."' LIMIT 1");
68
+		if($series['inorder'] < $count) dbquery("UPDATE ".TABLEPREFIX."fanfiction_inseries SET inorder = (inorder - 1) WHERE seriesid = '".$series['seriesid']."' AND inorder > '".$series['inorder']."'");
69
+		seriesreview($series); 
70
+	}
71
+	$codequery = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_codeblocks WHERE code_type = 'delstory'");
72
+	while($code = dbassoc($codequery)) {
73
+		eval($code['code_text']);
74
+	}
75
+	if($story['validated'] > 0) {
76
+		dbquery("UPDATE ".TABLEPREFIX."fanfiction_stats SET stories = stories - 1");
77
+		if(!empty($array_coauthors)) {
78
+			$array_coauthors[] = $story['uid'];
79
+			dbquery("UPDATE ".TABLEPREFIX."fanfiction_authorprefs SET stories = stories - 1 WHERE FIND_IN_SET(uid, '".implode(",", $array_coauthors)."') > 0");
80
+		}
81
+		else dbquery("UPDATE ".TABLEPREFIX."fanfiction_authorprefs SET stories = stories - 1 WHERE uid = '".$story['uid']."' LIMIT 1");
82
+		list($chapters, $words) = dbrow(dbquery("SELECT COUNT(chapid), SUM(wordcount) FROM ".TABLEPREFIX."fanfiction_chapters WHERE validated > 0"));
83
+		list($authors) = dbrow(dbquery("SELECT COUNT(uid) FROM ".TABLEPREFIX."fanfiction_authorprefs WHERE stories > 0"));
84
+		dbquery("UPDATE ".TABLEPREFIX."fanfiction_stats set wordcount = '$words', chapters = '$chapters', authors = '$authors'");
85
+	}
86
+}
87
+
88
+function deleteUser($uid) {
89
+	global $logging;
90
+	
91
+	list($penname) = dbrow(dbquery("SELECT penname FROM ".TABLEPREFIX."fanfiction_authors WHERE uid = '".$uid."' LIMIT 1"));
92
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_authorprefs where uid = '".$uid."'");
93
+	$stories = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_stories where uid = '".$uid."'");
94
+	$numstories = dbnumrows($stories);
95
+	if($numstories > 0 ) {
96
+		while($story = dbassoc($stories)) {
97
+			if($story['uid'] == $uid) {
98
+				if(empty($story['coauthors'])) { // No co-authors...delete the story
99
+					deleteStory($story);
100
+				}
101
+				else { // Co-authors found...give the story a new author.
102
+					$cQuery = dbquery("SELECT uid FROM ".TABLEPREFIX."fanfiction_coauthors WHERE sid = '".$story['sid']."' LIMIT 1");
103
+					$newauthor = 0; $coauthors = 0;
104
+					$array_coauthors = array();
105
+					while($cRes= dbassoc($cQuery)) {
106
+						if(!$newauthor) $newauthor = $cRes['uid'];
107
+						else $array_coauthors[] = $cRes['uid'];
108
+					}			
109
+					if(!empty($newauthor)) {
110
+						$coauthors = count($array_coauthors) > 0 ? 1 : 0;
111
+						dbquery("UPDATE ".TABLEPREFIX."fanfiction_stories SET uid = '$newauthor', coauthors = '$coauthors' WHERE sid = '".$story['sid']."' LIMIT 1");
112
+						$chapters = dbquery("SELECT chapid FROM ".TABLEPREFIX."fanfiction_chapters WHERE sid = '".$story['sid']."' AND uid = '$uid'");
113
+						while($chap = dbassoc($chapters)) {
114
+							$chapid = $chap['chapid'];
115
+							$storytext = "";
116
+							if($out = fopen (STORIESPATH."/$uid/$chapid.txt", "r"))
117
+							while (!feof($out)) {
118
+								$storytext .= fgets($out, 10000);
119
+							}
120
+							fclose($out);
121
+							unlink(STORIESPATH."/$uid/$chapid.txt"); 
122
+							if($storytext) {
123
+								if( !file_exists( STORIESPATH."/$newauthor/" ) ) {
124
+									mkdir(STORIESPATH."/$newauthor", 0755);
125
+									chmod(STORIESPATH."/$newauthor", 0777);
126
+								}
127
+								$handle = fopen(STORIESPATH."/$newauthor/$chapid.txt", 'w');
128
+								if ($handle) {
129
+									fwrite($handle, $storytext);
130
+									fclose($handle);
131
+								}
132
+								chmod(STORIESPATH."/$newauthor/$chapid.txt", 0644);
133
+							}
134
+							dbquery("UPDATE ".TABLEPREFIX."fanfiction_chapters SET uid = '$newauthor' WHERE chapid = '$chapid' LIMIT 1");
135
+						}
136
+					}
137
+					else deleteStory($story);
138
+				}
139
+			}
140
+		}
141
+	}
142
+	$stories = dbquery("SELECT *, COUNT(uid) AS count FROM ".TABLEPREFIX."fanfiction_coauthors WHERE uid = '$uid' GROUP BY uid");
143
+	while($s = dbassoc($stories)) {
144
+		if($s['count'] > 1) dbquery("UPDATE ".TABLEPREFIX."fanfiction_stories SET coauthors = 0 WHERE sid = '".$s['sid']."'");
145
+	}
146
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_coauthors WHERE uid = '$uid'");
147
+	$stories = dbquery("SELECT seriesid FROM ".TABLEPREFIX."fanfiction_series where uid = '".$uid."'");
148
+	$numstories = dbnumrows($stories);
149
+	while($story = dbassoc($stories)) {
150
+		deleteSeries($story['seriesid']);
151
+	}
152
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_authorinfo WHERE uid = '".$uid."'");
153
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_favorites WHERE uid = '".$uid."'");
154
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_favorites WHERE item = '".$uid."' AND type = 'AU'");
155
+	dbquery("UPDATE ".TABLEPREFIX."fanfiction_comments SET uid = '0' WHERE uid = '".$uid."'");
156
+	dbquery("UPDATE ".TABLEPREFIX."fanfiction_reviews SET uid = '0', reviewer = '$penname' WHERE uid = '".$uid."'");
157
+	$codeblocks = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_codeblocks WHERE code_type = 'deluser'");
158
+	while($code = dbassoc($codeblocks)) {
159
+		eval($code['code_text']);
160
+	}
161
+	if(strpos(_AUTHORTABLE, "fanfiction_authors as author") === false) { 
162
+		$output = write_message(_FOREIGNAUTHORTABLE." "._FOREIGNDELETE);
163
+	}
164
+	else {
165
+		dbquery("DELETE FROM ".substr(_AUTHORTABLE, 0, strpos(_AUTHORTABLE, "as author"))." WHERE ".substr(_UIDFIELD, 7)." = '".$uid."'");
166
+		$output = write_message(_ACTIONSUCCESSFUL);
167
+	}
168
+	dbquery("UPDATE ".TABLEPREFIX."fanfiction_stats SET members = members - 1");
169
+	return $output;
170
+}
171
+
172
+function deleteSeries($seriesid) {
173
+	global $logging;
174
+
175
+	$seriesinfo = dbquery("SELECT title, uid FROM ".TABLEPREFIX."fanfiction_series WHERE seriesid = '$seriesid'");
176
+	list($title, $uid) = dbrow($seriesinfo);
177
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_inseries WHERE seriesid = '$seriesid'");
178
+	// Delete series from other series where it is a sub-series
179
+	$serieslist = dbquery("SELECT inorder, seriesid FROM ".TABLEPREFIX."fanfiction_inseries WHERE subseriesid = '".$seriesid."' LIMIT 1");
180
+	while($series = dbassoc($serieslist)) {
181
+		$countquery = dbquery("SELECT count(seriesid) FROM ".TABLEPREFIX."fanfiction_inseries WHERE seriesid = '".$series['seriesid']."'");
182
+		list($count) = dbrow($countquery);
183
+		dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_inseries WHERE seriesid = '".$series['seriesid']."' AND subseriesid = '".$seriesid."' LIMIT 1");
184
+		if($series['inorder'] < $count) dbquery("UPDATE ".TABLEPREFIX."fanfiction_inseries SET inorder = (inorder - 1) WHERE seriesid = '".$series['seriesid']."' AND inorder > '".$series['inorder']."'");
185
+		seriesreview($series); 
186
+	}	
187
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_series WHERE seriesid = '$seriesid'");
188
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_favorites WHERE type = 'SE' AND item = '$seriesid'");
189
+	dbquery("DELETE FROM ".TABLEPREFIX."fanfiction_reviews WHERE type = 'SE' AND item = '$seriesid'");
190
+	dbquery("UPDATE ".TABLEPREFIX."fanfiction_stats SET series = series - 1");
191
+	$codequery = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_codeblocks WHERE code_type = 'deleteseries'");
192
+	while($code = dbassoc($codequery)) {
193
+			eval($code['code_text']);
194
+	}
195
+	if($logging && isADMIN) {
196
+		if($uid != USERUID) dbquery("INSERT INTO ".TABLEPREFIX."fanfiction_log (`log_action`, `log_uid`, `log_ip`, `log_type`, `log_timestamp`) VALUES('".escapestring(sprintf(_LOG_ADMIN_DEL_SERIES, USERPENNAME, USERUID, $title))."', '".USERUID."', INET_ATON('".$_SERVER['REMOTE_ADDR']."'), 'DL', " . time() . ")");
197
+	}
198
+}
199
+?>
0 200
\ No newline at end of file