Skip to content

Commit 66ebf66

Browse files
bpamiriclaude
andcommitted
fix: Revert broken params in remaining controllers/models, fix seed IDs
Complete the revert of the unsupported params={} syntax across all remaining controllers (AuthController, BookmarkController, ReadingHistoryController, RolesController, NewsletterController) and models (LoginAttempt, PasswordReset, RememberToken, Log). Also add migration to re-insert post_statuses and post_types with explicit sequential IDs matching blogStatuses(), fixing the CockroachDB unique_rowid() mismatch that broke PostStatus JOINs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a1e9923 commit 66ebf66

File tree

10 files changed

+100
-95
lines changed

10 files changed

+100
-95
lines changed

app/controllers/admin/NewsletterController.cfc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ component extends="app.Controllers.Controller" {
202202
);
203203

204204
if (type == "user") {
205-
var user = model("User").findOne(where="email = :email", params={email={value=email, cfsqltype="cf_sql_varchar"}});
205+
var user = model("User").findOne(where="email = '#email#'");
206206
if (isObject(user)) {
207207
user.update(newsletter=false);
208208
model("Log").log(
@@ -227,7 +227,7 @@ component extends="app.Controllers.Controller" {
227227
};
228228
}
229229
} else {
230-
var subscriber = model("NewsletterSubscriber").findOne(where="email = :email", params={email={value=email, cfsqltype="cf_sql_varchar"}});
230+
var subscriber = model("NewsletterSubscriber").findOne(where="email = '#email#'");
231231
if (isObject(subscriber)) {
232232
subscriber.update(status="inactive");
233233
model("Log").log(
@@ -371,8 +371,7 @@ component extends="app.Controllers.Controller" {
371371
// Search in users table
372372
var searchPattern = "%" & searchTerm & "%";
373373
var userSubscribers = model("User").findAll(
374-
where="newsletter = 1 AND (email LIKE :term OR firstname LIKE :term OR lastname LIKE :term)",
375-
params={term={value=searchPattern, cfsqltype="cf_sql_varchar"}}
374+
where="newsletter = 1 AND (email LIKE '#searchPattern#' OR firstname LIKE '#searchPattern#' OR lastname LIKE '#searchPattern#')"
376375
);
377376
for (var user in userSubscribers) {
378377
subscribers.append({
@@ -385,8 +384,7 @@ component extends="app.Controllers.Controller" {
385384

386385
// Search in newsletter_subscribers table
387386
var nonUserSubscribers = model("NewsletterSubscriber").findAll(
388-
where="email LIKE :term",
389-
params={term={value=searchPattern, cfsqltype="cf_sql_varchar"}}
387+
where="email LIKE '#searchPattern#'"
390388
);
391389
for (var subscriber in nonUserSubscribers) {
392390
subscribers.append({

app/controllers/admin/RolesController.cfc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ component extends="app.Controllers.Controller" {
1818
if(id > 0) {
1919
role = model("role").findByKey(params.id);
2020
permissions = model("permission").findAll();
21-
activePermission = model("RolePermission").findAll(select="permissionId", where="roleId = :roleId", params={roleId={value=val(params.id), cfsqltype="cf_sql_integer"}});
21+
activePermission = model("RolePermission").findAll(select="permissionId", where="roleId = #val(params.id)#");
2222
existingPermissionIds = [];
2323
for (row in activePermission) {
2424
arrayAppend(existingPermissionIds, row.permissionId);
@@ -32,7 +32,7 @@ component extends="app.Controllers.Controller" {
3232
}
3333

3434
function checkRoleExistance(){
35-
var checkExistingRole = model("Role").findAll(where="name = :name", params={name={value=params.Name, cfsqltype="cf_sql_varchar"}});
35+
var checkExistingRole = model("Role").findAll(where="name = '#params.Name#'");
3636
if(checkExistingRole.recordcount != 0){
3737
renderText('<p class="fs-12 ms-2">A role already exist with this name! Role name must be unique.');
3838
return;
@@ -43,7 +43,7 @@ component extends="app.Controllers.Controller" {
4343

4444
function store(){
4545
try {
46-
var checkExistingRole = model("Role").findAll(where="name = :name", params={name={value=params.Name, cfsqltype="cf_sql_varchar"}});
46+
var checkExistingRole = model("Role").findAll(where="name = '#params.Name#'");
4747
if(checkExistingRole.recordcount != 0 && params.id == 0){
4848
redirectTo(action="index", error="A role already exist with name' #params.Name#'. Role name must be unique.");
4949
return;
@@ -85,7 +85,7 @@ component extends="app.Controllers.Controller" {
8585

8686
// Update role permissions
8787
permissionList = [];
88-
model("RolePermission").deleteAll(where="roleId = :roleId", params={roleId={value=val(RoleData.id), cfsqltype="cf_sql_integer"}});
88+
model("RolePermission").deleteAll(where="roleId = #val(RoleData.id)#");
8989
for (fieldName in RoleData) {
9090
if (left(fieldName, 11) == "permission-") {
9191
// Extract the numeric part after the dash

app/controllers/web/AuthController.cfc

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ component extends="app.Controllers.Controller" {
5353
}
5454
);
5555
// Check if user exists first (regardless of status)
56-
var existingUser = model("User").findOne(where="email = :email", params={email={value=params.email, cfsqltype="cf_sql_varchar"}}, include="Role");
56+
var existingUser = model("User").findOne(where="email = '#params.email#'", include="Role");
5757

5858
// If user doesn't exist, send registration invitation but return generic message
5959
if (!isObject(existingUser)) {
@@ -81,7 +81,7 @@ component extends="app.Controllers.Controller" {
8181
// Check if user is locked out
8282
if (model("LoginAttempt").isUserLocked(params.email)) {
8383
// Check if it's a manual lock by admin
84-
var user = model("User").findOne(where="email = :email", params={email={value=params.email, cfsqltype="cf_sql_varchar"}});
84+
var user = model("User").findOne(where="email = '#params.email#'");
8585
var isManuallyLocked = isObject(user) && structKeyExists(user, "locked") && user.locked;
8686

8787
model("Log").log(
@@ -303,7 +303,7 @@ component extends="app.Controllers.Controller" {
303303

304304
// Check if user needs to submit testimonial
305305
if (isObject(user.role) && user.role.name != 'Admin') {
306-
var testimonial = model("Testimonial").findOne(where="userId = :userId", params={userId={value=val(user.id), cfsqltype="cf_sql_integer"}});
306+
var testimonial = model("Testimonial").findOne(where="userId = #val(user.id)#");
307307

308308
model("Log").log(
309309
category = "wheels.auth",
@@ -369,7 +369,7 @@ component extends="app.Controllers.Controller" {
369369
if (structKeyExists(cookie, "remember_me")) {
370370
var rawToken = cookie.remember_me;
371371
var hashedToken = hash(rawToken, "SHA-256");
372-
var rememberToken = model("RememberToken").findOne(where="token = :token", params={token={value=hashedToken, cfsqltype="cf_sql_varchar"}});
372+
var rememberToken = model("RememberToken").findOne(where="token = '#hashedToken#'");
373373
if (isObject(rememberToken)) {
374374
rememberToken.delete();
375375
}
@@ -451,7 +451,7 @@ component extends="app.Controllers.Controller" {
451451
return;
452452
}
453453
// Check for duplicate email before calling saveUser
454-
var existingUser = model("User").findFirst(where="email = :email", params={email={value=params.email, cfsqltype="cf_sql_varchar"}});
454+
var existingUser = model("User").findFirst(where="email = '#params.email#'");
455455
if (isObject(existingUser)) {
456456
renderText("<p style='color:red;'>An account with this email address already exists.</p>");
457457
return;
@@ -608,7 +608,7 @@ component extends="app.Controllers.Controller" {
608608
}
609609

610610
private function validateCredentials(required string email, required string password) {
611-
var user = model("User").findOne(where="email = :email AND status = 'True'", params={email={value=email, cfsqltype="cf_sql_varchar"}}, include="Role");
611+
var user = model("User").findOne(where="email = '#email#' AND status = 'True'", include="Role");
612612
if (!isObject(user)) {
613613
return false; // User not found
614614
}
@@ -749,7 +749,7 @@ component extends="app.Controllers.Controller" {
749749
// Skip email sending in test mode
750750
return true;
751751
}
752-
var user = model("User").findOne(where="email = :email", params={email={value=email, cfsqltype="cf_sql_varchar"}});
752+
var user = model("User").findOne(where="email = '#email#'");
753753
if (!isObject(user)) return false;
754754
var verifyUrl = urlFor(action="verify", onlyPath=false) & "?token=" & token;
755755
return sendTemplateEmail("Sign Up Account Verification", user.email, user.fullname, verifyUrl);
@@ -791,7 +791,7 @@ component extends="app.Controllers.Controller" {
791791

792792
try {
793793
// Check if user already has a verification token
794-
var existingToken = model("UserToken").findOne(where="user_id = :userId AND status = 'false'", params={userId={value=val(user.id), cfsqltype="cf_sql_integer"}});
794+
var existingToken = model("UserToken").findOne(where="user_id = #val(user.id)# AND status = 'false'");
795795

796796
if (!isObject(existingToken)) {
797797
// Generate a new verification token
@@ -828,7 +828,7 @@ component extends="app.Controllers.Controller" {
828828

829829
private function verifyToken(required string token) {
830830
var message="";
831-
var tokenRecord = model("UserToken").findOne(where="token = :token", params={token={value=token, cfsqltype="cf_sql_varchar"}});
831+
var tokenRecord = model("UserToken").findOne(where="token = '#token#'");
832832

833833
if (isObject(tokenRecord)) {
834834
// Check if token has expired
@@ -854,7 +854,7 @@ component extends="app.Controllers.Controller" {
854854
}
855855

856856
private boolean function isRateLimited(required string ipAddress) {
857-
var attempts = model("LoginAttempt").findAll(where="ip_address = :ipAddress AND created_at > :cutoff", params={ipAddress={value=ipAddress, cfsqltype="cf_sql_varchar"}, cutoff={value=dateTimeFormat(dateAdd("n", -15, now()), "yyyy-MM-dd HH:nn:ss"), cfsqltype="cf_sql_timestamp"}});
857+
var attempts = model("LoginAttempt").findAll(where="ip_address = '#ipAddress#' AND created_at > '#dateTimeFormat(dateAdd("n", -15, now()), "yyyy-MM-dd HH:nn:ss")#'");
858858
return attempts.recordCount >= 3;
859859
}
860860

@@ -919,7 +919,7 @@ component extends="app.Controllers.Controller" {
919919
param name="params.email" default="";
920920

921921
try {
922-
var user = model("User").findOne(where="email = :email", params={email={value=params.email, cfsqltype="cf_sql_varchar"}});
922+
var user = model("User").findOne(where="email = '#params.email#'");
923923

924924
if (isObject(user)) {
925925
// Generate reset token
@@ -971,8 +971,7 @@ component extends="app.Controllers.Controller" {
971971

972972
try {
973973
var reset = model("PasswordReset").findOne(
974-
where="token = :token AND expiresAt > :now AND used = 0",
975-
params={token={value=params.token, cfsqltype="cf_sql_varchar"}, now={value=dateTimeFormat(now(), "yyyy-MM-dd HH:nn:ss"), cfsqltype="cf_sql_timestamp"}}
974+
where="token = '#params.token#' AND expiresAt > '#dateTimeFormat(now(), "yyyy-MM-dd HH:nn:ss")#' AND used = 0"
976975
);
977976

978977
if (!isObject(reset)) {
@@ -1005,8 +1004,7 @@ component extends="app.Controllers.Controller" {
10051004
try {
10061005
// Validate token
10071006
var reset = model("PasswordReset").findOne(
1008-
where="token = :token AND expiresAt > :now AND used = 0",
1009-
params={token={value=params.token, cfsqltype="cf_sql_varchar"}, now={value=dateTimeFormat(now(), "yyyy-MM-dd HH:nn:ss"), cfsqltype="cf_sql_timestamp"}}
1007+
where="token = '#params.token#' AND expiresAt > '#dateTimeFormat(now(), "yyyy-MM-dd HH:nn:ss")#' AND used = 0"
10101008
);
10111009

10121010
if (!isObject(reset)) {

app/controllers/web/BookmarkController.cfc

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,7 @@ component extends="app.Controllers.Controller" {
2020

2121
// Find bookmark
2222
bookmark = model("Bookmark").findOne(
23-
where="userId = :userId AND blogId = :blogId",
24-
params={
25-
userId={value=val(session.userID), cfsqltype="cf_sql_integer"},
26-
blogId={value=val(params.blogId), cfsqltype="cf_sql_integer"}
27-
}
23+
where="userId = #val(session.userID)# AND blogId = #val(params.blogId)#"
2824
);
2925

3026
if (IsObject(bookmark)) {
@@ -39,11 +35,7 @@ component extends="app.Controllers.Controller" {
3935
} else {
4036
// Check if a soft-deleted bookmark exists
4137
deletedBookmark = model("Bookmark").findOne(
42-
where="userId = :userId AND blogId = :blogId",
43-
params={
44-
userId={value=val(session.userID), cfsqltype="cf_sql_integer"},
45-
blogId={value=val(params.blogId), cfsqltype="cf_sql_integer"}
46-
},
38+
where="userId = #val(session.userID)# AND blogId = #val(params.blogId)#",
4739
includeSoftDeletes=true
4840
);
4941

@@ -86,8 +78,7 @@ component extends="app.Controllers.Controller" {
8678

8779
bookmarks = model("Bookmark")
8880
.findAll(
89-
where="userId = :userId",
90-
params={userId={value=val(session.userID), cfsqltype="cf_sql_integer"}},
81+
where="userId = #val(session.userID)#",
9182
include="Blog",
9283
order="createdAt DESC",
9384
perPage=20,
@@ -106,16 +97,13 @@ component extends="app.Controllers.Controller" {
10697
params.page = 1;
10798
}
10899

109-
var whereClause = "userId = :userId";
110-
var queryParams = {userId={value=val(session.userID), cfsqltype="cf_sql_integer"}};
100+
var whereClause = "userId = #val(session.userID)#";
111101
if (StructKeyExists(params, "searchTerm") && params.searchTerm != "") {
112-
whereClause &= " AND Blog.title LIKE :searchTerm";
113-
queryParams.searchTerm = {value="%" & params.searchTerm & "%", cfsqltype="cf_sql_varchar"};
102+
whereClause &= " AND Blog.title LIKE '%#params.searchTerm#%'";
114103
}
115104

116105
bookmarks = model("Bookmark").findAll(
117106
where=whereClause,
118-
params=queryParams,
119107
include="Blog",
120108
order="createdAt DESC",
121109
perPage=20,

app/controllers/web/ReadingHistoryController.cfc

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ component extends="app.Controllers.Controller" {
1818
params.page = 1;
1919
}
2020

21-
var userIdParam = {userId={value=val(session.userID), cfsqltype="cf_sql_integer"}};
22-
2321
histories = model("ReadingHistory")
2422
.findAll(
25-
where="userId = :userId",
26-
params=userIdParam,
23+
where="userId = #val(session.userID)#",
2724
include="Blog",
2825
order="lastReadAt DESC",
2926
perPage=20,
@@ -32,8 +29,7 @@ component extends="app.Controllers.Controller" {
3229

3330
bookmarks = model("Bookmark")
3431
.findAll(
35-
where="userId = :userId",
36-
params=userIdParam,
32+
where="userId = #val(session.userID)#",
3733
include="Blog",
3834
order="createdAt DESC"
3935
);
@@ -51,11 +47,7 @@ component extends="app.Controllers.Controller" {
5147
}
5248

5349
history = model("ReadingHistory").findOne(
54-
where="userId = :userId AND blogId = :blogId",
55-
params={
56-
userId={value=val(session.userID), cfsqltype="cf_sql_integer"},
57-
blogId={value=val(params.blogId), cfsqltype="cf_sql_integer"}
58-
}
50+
where="userId = #val(session.userID)# AND blogId = #val(params.blogId)#"
5951
);
6052

6153
if (IsObject(history)) {
@@ -87,11 +79,7 @@ component extends="app.Controllers.Controller" {
8779
}
8880

8981
history = model("ReadingHistory").findOne(
90-
where="userId = :userId AND blogId = :blogId",
91-
params={
92-
userId={value=val(session.userID), cfsqltype="cf_sql_integer"},
93-
blogId={value=val(params.blogId), cfsqltype="cf_sql_integer"}
94-
}
82+
where="userId = #val(session.userID)# AND blogId = #val(params.blogId)#"
9583
);
9684

9785
if (IsObject(history)) {
@@ -113,8 +101,7 @@ component extends="app.Controllers.Controller" {
113101
}
114102

115103
model("ReadingHistory").deleteAll(
116-
where="userId = :userId",
117-
params={userId={value=val(session.userID), cfsqltype="cf_sql_integer"}}
104+
where="userId = #val(session.userID)#"
118105
);
119106

120107
flashInsert(success="Reading history cleared");
@@ -132,16 +119,13 @@ component extends="app.Controllers.Controller" {
132119
params.page = 1;
133120
}
134121

135-
var whereClause = "userId = :userId";
136-
var queryParams = {userId={value=val(session.userID), cfsqltype="cf_sql_integer"}};
122+
var whereClause = "userId = #val(session.userID)#";
137123
if (StructKeyExists(params, "searchTerm") && params.searchTerm != "") {
138-
whereClause &= " AND Blog.title LIKE :searchTerm";
139-
queryParams.searchTerm = {value="%" & params.searchTerm & "%", cfsqltype="cf_sql_varchar"};
124+
whereClause &= " AND Blog.title LIKE '%#params.searchTerm#%'";
140125
}
141126

142127
histories = model("ReadingHistory").findAll(
143128
where=whereClause,
144-
params=queryParams,
145129
include="Blog",
146130
order="lastReadAt DESC",
147131
perPage=20,
@@ -162,8 +146,7 @@ component extends="app.Controllers.Controller" {
162146
params.page = 1;
163147
}
164148

165-
var whereClause = "userId = :userId";
166-
var queryParams = {userId={value=val(session.userID), cfsqltype="cf_sql_integer"}};
149+
var whereClause = "userId = #val(session.userID)#";
167150
if (StructKeyExists(params, "status")) {
168151
if (params.status == "completed") {
169152
whereClause &= " AND isCompleted=1";
@@ -174,7 +157,6 @@ component extends="app.Controllers.Controller" {
174157

175158
histories = model("ReadingHistory").findAll(
176159
where=whereClause,
177-
params=queryParams,
178160
include="Blog",
179161
order="lastReadAt DESC",
180162
perPage=20,

0 commit comments

Comments
 (0)