PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4", ] ); // --- Fetch newest completed CA entry --- // Assumes h305_ca77_entries is either a view or table already filtered to "completed" rows $sql = " SELECT model_year, model, ADM_StateOrProvince, ADM_Country, condition_value, opinion_value_today FROM h305_ca77_entries ORDER BY submitdate DESC, id DESC LIMIT 1 "; $row = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC); // --- Helpers for casing normalization (same pattern as CB / CL) --- $keepCaps = static function (string $w): bool { // Keep original word case if it's already an acronym (2+ caps) or has a digit return (bool)preg_match('/[A-Z]{2,}/', $w) || (bool)preg_match('/\d/', $w); }; $word = static function (?string $w) use ($keepCaps): string { if ($w === null || $w === '') { return ''; } // Respect hyphenated parts independently if (strpos($w, '-') !== false) { $parts = explode('-', $w); foreach ($parts as &$x) { $x = $keepCaps($x) ? $x : ucfirst(strtolower($x)); } return implode('-', $parts); } // Already looks like an acronym or has digits -> leave alone if ($keepCaps($w)) { return $w; } $dot = substr($w, -1) === '.'; $base = $dot ? substr($w, 0, -1) : $w; $done = ucfirst(strtolower($base)); return $dot ? ($done . '.') : $done; }; $titleCase = static function (?string $s) use ($word): string { if ($s === null) { return ''; } $s = trim($s); if ($s === '') { return ''; } $t = preg_split('/\s+/', $s) ?: []; foreach ($t as &$x) { $x = $word($x); } return trim(implode(' ', $t), ", "); }; // --- Build display line --- if (!$row) { $line = 'Latest Registry Entry: No completed entries found.'; } else { // Location: "WA, Australia" (skip empties, title-case each part) $region = $titleCase($row['ADM_StateOrProvince'] ?? ''); $country = $titleCase($row['ADM_Country'] ?? ''); $loc = trim( implode(', ', array_filter([$region, $country], static fn($v) => $v !== '')), ', ' ); // Normalize opinion_value_today using CL rules: // >=1000 => use as-is ($12500 => $12,500) // 100..999 => treat as dollars ($750 => $750) // 1..99 => treat as thousands (6 => $6,000) // otherwise => "Not Entered" $valFinal = 'Not Entered'; if (isset($row['opinion_value_today']) && $row['opinion_value_today'] !== '') { $n = (float)$row['opinion_value_today']; if ($n >= 1000) { $valFinal = '$' . number_format($n, 0); } elseif ($n >= 100) { $valFinal = '$' . number_format($n, 0); } elseif ($n > 0) { $valFinal = '$' . number_format($n * 1000, 0); } } // Condition decoding (same mapping you provided, with fallback) $condRaw = $row['condition_value'] ?? ''; $condMap = [ 'E' => 'Excellent', 'Exc' => 'Excellent', 'G' => 'Good', 'Goo' => 'Good', 'F' => 'Fair', 'P' => 'Poor', 'Par' => 'Parts Bike', 'R' => 'Restored', 'Res' => 'Restored', 'Rat' => 'Rat', ]; $condNice = $condMap[$condRaw] ?? ($condRaw !== '' ? $condRaw : 'Not Entered'); // Gracefully handle blanks so we don't get double-spaces like " Honda " $yr = isset($row['model_year']) ? trim((string)$row['model_year']) : ''; $model = isset($row['model']) ? trim((string)$row['model']) : ''; $bikePart = trim($yr . ' Honda ' . $model); $locPart = $loc !== '' ? (' — ' . $loc) : ''; $line = 'Latest Registry Entry: ' . $bikePart . $locPart . ' — Condition: ' . $condNice . ' — Value: ' . $valFinal; } // --- Build final HTML snippet (static, safe to INCLUDEPHP in phpBB) --- $builtTs = (new DateTime('now'))->format('Y-m-d H:i:s T'); // These first two lines are harmless in phpBB output: and $charset = ''; $stamp = ''; $htmlOut = $charset . "\n" . $stamp . "\n" . $line . "\n"; // --- Write atomically to shared include dir --- $jobDir = __DIR__; // wherever this script lives $includeDir = '/home/mstoic3/public_html/shared/include'; $includeTmp = $includeDir . '/latest_ca77.tmp'; $includeDst = $includeDir . '/latest_ca77.html'; $jsonPath = $jobDir . '/latest_ca77.json'; $logPath = $jobDir . '/logs/latest_ca77.log'; // reserved for future logging if (!is_dir($includeDir)) { if (!mkdir($includeDir, 0755, true) && !is_dir($includeDir)) { throw new RuntimeException("Failed to create include dir: $includeDir"); } } if (file_put_contents($includeTmp, $htmlOut, LOCK_EX) === false) { throw new RuntimeException('Failed to write temp include file'); } if (!rename($includeTmp, $includeDst)) { @unlink($includeTmp); throw new RuntimeException('Failed to move include into place'); } // --- Optional JSON breadcrumb for debugging / external consumption --- @file_put_contents( $jsonPath, json_encode( [ 'line' => $line, 'stamp' => $builtTs, 'ts' => date('c'), ], JSON_UNESCAPED_UNICODE ) ); // --- Done --- echo "OK\n"; exit(0); } catch (Throwable $e) { // Minimal error surface; log server-side, generic public output error_log("[generate_latest_ca77.php] " . $e->getMessage()); if (function_exists('http_response_code')) { @http_response_code(500); } echo "ERROR\n"; exit(1); }

Keyed Flat Washer Found

Post Reply
GeorgeP1111
honda305.com Member
Posts: 114
Joined: Wed Jun 16, 2010 3:58 pm
Location: St.Paul, MN

Keyed Flat Washer Found

Post by GeorgeP1111 » Mon Jan 31, 2011 8:51 pm

When I removed the Oil Separator Plates on my CA77 motor, I found this keyed washer in the sump of the right cylinder. It measures 19.81mmOD x 14.13ID and the Key is 2.4mm wide. I looked thru all the drawings in the parts book but did not see anything that looks like it. It's keyed so it must come from a shaft, but which one? Look familiar to anyone?

Also, my bottom crank case has two Knock Pins, one 10x20 in front center #11 and one 10x20 in the rear center #3. The drawing for my CA77 shows two other Knock Pins # 4 and #5 (28/29 on theCB77 drawing) but I don't seem to have them or even see where they would go. Engine #CA77E-1023944. Are these other two pins not used here?

tnx
George
Attachments
Mystery Washer
Mystery Washer

LOUD MOUSE
honda305.com Member
Posts: 7818
Joined: Mon Aug 15, 2005 8:23 am
Location: KERRVILLE, TEXAS

Re: Keyed Flat Washer Found

Post by LOUD MOUSE » Mon Jan 31, 2011 8:57 pm

It is from the Neoprene Cam Chain guide in the middle of the cylinders.
4 at the crank and 1 on each end of the gears with the Kick Starter Shaft. ..............................lm

GeorgeP1111 wrote:When I removed the Oil Separator Plates on my CA77 motor, I found this keyed washer in the sump of the right cylinder. It measures 19.81mmOD x 14.13ID and the Key is 2.4mm wide. I looked thru all the drawings in the parts book but did not see anything that looks like it. It's keyed so it must come from a shaft, but which one? Look familiar to anyone?

Also, my bottom crank case has two Knock Pins, one 10x20 in front center #11 and one 10x20 in the rear center #3. The drawing for my CA77 shows two other Knock Pins # 4 and #5 (28/29 on theCB77 drawing) but I don't seem to have them or even see where they would go. Engine #CA77E-1023944. Are these other two pins not used here?

tnx
George

GeorgeP1111
honda305.com Member
Posts: 114
Joined: Wed Jun 16, 2010 3:58 pm
Location: St.Paul, MN

Post by GeorgeP1111 » Mon Jan 31, 2011 9:00 pm

I found it!! It goes on the Cam Chain Guide Roller Pin. When I opened up my motor, the Guide Roller was just floating in the chain because the center part of the pin was gone. The drawing doesn't show it, but there must have been this washer between the roller and the snap ring... it does fit. Ok, that mystery answered . :-)

Anyone on the Knock Pins?

tnx
George

GeorgeP1111
honda305.com Member
Posts: 114
Joined: Wed Jun 16, 2010 3:58 pm
Location: St.Paul, MN

Re: Keyed Flat Washer Found

Post by GeorgeP1111 » Mon Jan 31, 2011 9:04 pm

LOUD MOUSE wrote:It is from the Neoprene Cam Chain guide in the middle of the cylinders.
4 at the crank and 1 on each end of the gears with the Kick Starter Shaft. ..............................lm
Wow... You beat me to it.

Ok, I haven't pulled the gears out yet so that's where they are hiding. I'll do that next.

Thanks
George

Post Reply

Return to “Motors - 247cc | 305cc | 337cc | 350cc”