function updateJSStrings($lang) { include INCLUDES . "emoticons.inc"; // local $_emoticons include_once INCLUDES . "files.php"; forceFolders("scripts/strings"); $neededStrings = array("_ARE_YOU_SURE" => "_ARE_YOU_SURE", "_BB_ALIGN_CENTER" => "_BB_ALIGN_CENTER", "_BB_ALIGN_JUSTIFY" => "_BB_ALIGN_JUSTIFY", "_BB_ALIGN_LEFT" => "_BB_ALIGN_LEFT", "_BB_ALIGN_RIGHT" => "_BB_ALIGN_RIGHT", "_BB_BOLD" => "_BB_BOLD", "_BB_CLUBICON" => "_BB_CLUBICON", "_BB_EMOTICON" => "_BB_EMOTICON", "_BB_ITALIC" => "_BB_ITALIC", "_BB_STRIKED" => "_BB_STRIKED", "_BB_UNDERLINE" => "_BB_UNDERLINE", "_BB_SUBSCRIPT" => "_BB_SUBSCRIPT", "_BB_SUPERSCRIPT" => "_BB_SUPERSCRIPT", "_BB_THUMB" => "_BB_THUMB", "_BB_URL" => "_BB_URL", "_BB_USERICON" => "_BB_USERICON", "_BLANK_COMMENT" => "_BLANK_COMMENT", "_EMOTICONS" => "_EMOTICONS", "_EMOTICON_EXPLAIN" => "_EMOTICON_EXPLAIN", "_ENTER_CLUBNAME" => "_ENTER_CLUBNAME", "_ENTER_LINK_TEXT" => "_ENTER_LINK_TEXT", "_ENTER_LINK_URL" => "_ENTER_LINK_URL", "_ENTER_THUMBID" => "_ENTER_THUMBID", "_ENTER_USERNAME" => "_ENTER_USERNAME", "_FUZZY_0" => "_FUZZY_0", "_FUZZY_1" => "_FUZZY_1", "_FUZZY_2" => "_FUZZY_2", "_FUZZY_3" => "_FUZZY_3", "_FUZZY_7" => "_FUZZY_7", "_FUZZY_11" => "_FUZZY_11", "_FUZZY_24" => "_FUZZY_24", "_FUZZY_48" => "_FUZZY_48", "_FUZZY_99" => "_FUZZY_99", "_FUZZY_234" => "_FUZZY_234", "_FUZZY_456" => "_FUZZY_456", "_FUZZY_987" => "_FUZZY_987", "_HIDE" => "_HIDE", "_INVALID_FILE_TYPE" => "_JS_INVALID_FILE_TYPE", "_MORE" => "_MORE", "_NO_BBCODE" => "_NO_BBCODE", "_NO_EMOTICONS" => "_NO_EMOTICONS", "_NO_SIG" => "_NO_SIG", "_OEKAKI_NO_EDITOR" => "_JS_OEKAKI_NO_EDITOR", "_PLEASE_WAIT" => "_JS_PLEASE_WAIT", "_PREVIEW" => "_PREVIEW", "_PREV_FLASH_MOVIE" => "_JS_PREV_FLASH_MOVIE", "_PREV_TEXT_FILE" => "_JS_PREV_TEXT_FILE", "_READONLY" => "_READONLY", "_REQUIRE_LOGIN" => "_REQUIRE_LOGIN", "_SEND_COMMENT" => "_SEND_COMMENT", "_UPDATES" => "_UPDATES", "_MESSAGES" => "_MESSAGES", "_FAVOURITES" => "_FAVOURITES", "_COMMENTS" => "_COMMENTS", "_JOURNALS" => "_JOURNALS", "_SUBMISSIONS" => "_SUBMISSIONS", "_SUBMIT_TYPE_EXTRA" => "_SUBMIT_TYPE_EXTRA"); $filename = "scripts/strings/" . $lang . ".js"; $fp = fopen($filename . "_tmp", "w"); foreach ($neededStrings as $key => $value) { $result = sql_query("SELECT `strText` FROM `strings` " . "WHERE `strLanguage` = '{$lang}' AND `strName` = '" . $value . "' LIMIT 1"); if ($data = mysql_fetch_assoc($result)) { $text = formatText($data["strText"], true); } else { $result = sql_query("SELECT `strText` FROM `strings` " . "WHERE `strLanguage` = 'en' AND `strName` = '" . $value . "' LIMIT 1"); if ($data = mysql_fetch_assoc($result)) { $text = formatText($data["strText"], true); } else { $text = "???"; } } fwrite($fp, "var {$key} = '" . str_replace("\n", "", addslashes($text)) . "';\n"); } fwrite($fp, "var Emoticons = new Array( "); $emots = array(); foreach ($_emoticons as $emo1) { if (!$emo1["emoExtra"]) { $emots[$emo1["emoExpr"]] = $emo1; } } ksort($emots); $first = true; foreach ($emots as $emo1) { if ($first) { $first = false; } else { fwrite($fp, ","); } fwrite($fp, "{ expr: '" . $emo1["emoExpr"] . "', icon: '" . $emo1["emoFilename"] . "' }"); } unset($emots); fwrite($fp, " );\n"); fclose($fp); if (file_exists($filename)) { unlink($filename); } rename($filename . "_tmp", $filename); }
$_FILES["submission"]["also_move_ext"] = ".oeb"; $oekakiExtras = ", `objAniType` = 'oeb'"; } else { $oekakiExtras = ", `objAniType` = 'no'"; } $_POST["submit"] = true; } else { redirect(url("oekaki/" . $objid)); } } include_once INCLUDES . "submission.php"; include_once INCLUDES . "files.php"; // file uploading functions if (isset($_POST["textfile"]) && $_POST["textfile"] != "") { $tempfilename = "files/texttemp/" . $_auth["useid"] . ".txt"; forceFolders(dirname($tempfilename)); $fp = fopen($tempfilename, "wb"); fputs($fp, $_POST["textfile"]); fclose($fp); $_FILES["submission"]["error"] = UPLOAD_ERR_OK; $_FILES["submission"]["tmp_name"] = $tempfilename; $_FILES["submission"]["name"] = "textfile.txt"; $_FILES["submission"]["type"] = "text/plain"; $_FILES["submission"]["simple_move"] = true; if (checkUploadedFile("thumb") == _UPL_NO_FILE) { $thumbfilename = applyIdToPath("files/thumbs/", $objData["objid"]) . "-" . preg_replace('/[^0-9]/', "", $objData["objLastEdit"]) . ".jpg"; $_FILES["thumb"]["error"] = UPLOAD_ERR_OK; $_FILES["thumb"]["tmp_name"] = $thumbfilename; $_FILES["thumb"]["name"] = "thumbnail.jpg"; $_FILES["thumb"]["type"] = "image/jpeg"; $_FILES["thumb"]["simple_move"] = true;
function oekakiProcess($editor, $saveAnimation = false) { // user's global session id is used as oekaki session id $oekakiSession = $_GET["oekakiSession"]; $baseFilename = "files/oekakitemp/" . $oekakiSession; include_once INCLUDES . "files.php"; // for forceFolders() forceFolders(dirname($baseFilename)); // delete old files if any foreach (glob($baseFilename . "-*.*") as $filename) { @unlink($filename); } $baseFilename .= "-" . strval(time()); $data = $GLOBALS["HTTP_RAW_POST_DATA"]; switch ($editor) { case OEK_SHI: case OEK_SHIPRO: case OEK_PAINTBBS: $signature = $editor == OEK_PAINTBBS ? "P" : "S"; if (substr($data, 0, 1) != $signature) { return; } $headerLength = intval(substr($data, 1, 8)); $header = substr($data, 9, $headerLength); $imageLength = intval(substr($data, $headerLength + 9, 8)); $image = substr($data, $headerLength + 19, $imageLength); $animLength = intval(substr($data, $headerLength + $imageLength + 19, 8)); $anim = substr($data, $headerLength + $imageLength + 27, $animLength); $animExt = ".pch"; break; case OEK_OEKAKIBBS: $start = strpos($data, "Content-type:"); $middle = 0; $end = 0; while ($start) { $end = strpos($data, "Content-type:", $start + 1); $middle = strpos($data, "\r", $start); $type = substr($data, $start + 13, $middle - $start - 13); $middle = strpos($data, "\r", $middle + 1); if ($end === false) { $end = null; $block = substr($data, $middle + 2); } else { $block = substr($data, $middle + 2, $end - $middle - 2); } $start = $end; if ($type == "image/0") { // PNG $image = $block; } if ($type == "animation/") { $anim = $block; $animLength = strlen($anim); $animExt = ".oeb"; } unset($block); } break; } // save the image $fp = fopen($baseFilename . ".png", "wb"); fwrite($fp, $image); fclose($fp); // save the animation if ($saveAnimation && $animLength > 0) { $fp = fopen($baseFilename . $animExt, "wb"); fwrite($fp, $anim); fclose($fp); } }
function updateCustomTheme($useid, $isClub, $data, &$errors) { $themePath = getCustomThemePath($useid, $isClub); forceFolders($themePath); $lastThemeFile = getLastCustomThemeFile($useid, $isClub); $err = !uploadSingleImage("logo", 0, 0, 51200, $fnLogo, $errors, $themePath); $err |= !uploadSingleImage("outer", 0, 0, 25600, $fnOuter, $errors, $themePath); $err |= !uploadSingleImage("container", 0, 0, 51200, $fnContainer, $errors, $themePath); $err |= !uploadSingleImage("container2", 0, 0, 25600, $fnContainer2, $errors, $themePath); if ($err) { return false; } $fileLogo = urlf() . findNewestFile($themePath . "logo-*.jpg"); $fileOuter = urlf() . findNewestFile($themePath . "outer-*.jpg"); $fileContainer = urlf() . findNewestFile($themePath . "container-*.jpg"); $fileContainer2 = urlf() . findNewestFile($themePath . "container2-*.jpg"); $pixLogo = PIX($fnLogo); $pixOuter = PIX($fnOuter); $pixContainer = PIX($fnContainer); $pixContainer2 = PIX($fnContainer2); $pix00Container = PIX($fnContainer, 0, 0); $avgLogo = AVG($fnLogo); $avgOuter = AVG($fnOuter); $avgContainer = AVG($fnContainer); $avgContainer2 = AVG($fnContainer2); $colors = array('{bBody}' => $pixLogo, '{bOuter}' => $pixOuter, '{bContainer}' => $pixContainer, '{bContainer2}' => $pixContainer2, '{bInput}' => BRIGHT($pixContainer2, 1.2), '{bInputHover}' => BRIGHT($pixContainer2, 1.5), '{bInputFocus}' => $pix00Container, '{bButton}' => BRIGHT($pixContainer2, 1.2), '{bButtonHover}' => BRIGHT($pixContainer2, 1.5), '{bTabActive}' => $pix00Container, '{bTabInactive}' => $pixOuter, '{bUI2Layout}' => $pixContainer2, '{cBody}' => BRIGHT(CONTRAST($avgLogo), 1.3), '{cOuter}' => BRIGHT(CONTRAST($avgOuter), 1.2), '{cContainer}' => BRIGHT(CONTRAST($avgContainer), 1.3), '{cContainer2}' => BRIGHT(CONTRAST($avgContainer2), 1.3), '{cOutline}' => BRIGHT(CONTRAST($avgContainer2), 1.3), '{cTabActive}' => CONTRAST($avgContainer), '{cTabInactive}' => CONTRAST($avgOuter), '{cInput}' => CONTRAST($avgContainer2), '{cLink}' => RICH(BRIGHT($pixContainer2, -2.5), 1.1), '{cLinkHover}' => RICH(BRIGHT($pixContainer2, -3), 1.1), '{cHeaderLink}' => RICH(BRIGHT($pixOuter, -2.5), 1.1), '{cHeaderLinkHover}' => RICH(BRIGHT($pixOuter, -3), 1.1), '{cMarkedText}' => BRIGHT(HARMONY($pixContainer2), 1.5), '{cTabOutline}' => BRIGHT(CONTRAST($avgContainer2), 1.3), '{cThumbBorder}' => BRIGHT(CONTRAST($avgContainer2), 1.3), '{cThumbBorderMature}' => RICH(BRIGHT($pixContainer2, -3), 1.1)); if (tooClose($colors['{cLink}'], $colors['{cContainer2}'], 32)) { $colors['{cLink}'] = RICH(PIX($fnOuter), 2); $colors['{cLinkHover}'] = BRIGHT($colors['{cLink}'], 2.5); } if (tooClose($colors['{cContainer}'], $colors['{cMarkedText}'], 140)) { $colors['{cMarkedText}'] = BRIGHT(HARMONY(PIX($fnContainer2)), -1.3); } // Override auto-generated colors with POSTed colors. if (!isset($data["c"])) { $data["c"] = array(); } $acceptedColors = array("cBody", "cOuter", "cContainer", "cContainer2", "cOutline", "cTabActive", "cTabInactive", "cInput", "cLink", "cLinkHover", "cHeaderLink", "cHeaderLinkHover", "cMarkedText", "cTabOutline", "cThumbBorder", "cThumbBorderMature", "sOutline", "sTitleMargin", "bButton", "bButtonHover", "bInput", "bInputFocus", "bUI2Layout"); // Override some data from POST (if available) foreach ($acceptedColors as $c1) { if (isset($_POST[$c1]) && $_POST[$c1] != "") { $data["c"][$c1] = $_POST[$c1]; } } foreach ($data["c"] as $key => $value) { if (preg_match('/^[0-9A-Fa-f]{3}$/', $value)) { $r = hexdec(substr($value, 0, 1)) * 17; $g = hexdec(substr($value, 1, 1)) * 17; $b = hexdec(substr($value, 2, 1)) * 17; $colors["{" . $key . "}"] = getColor($r, $g, $b); } if (preg_match('/^[0-9A-Fa-f]{6}$/', $value)) { $r = hexdec(substr($value, 0, 2)); $g = hexdec(substr($value, 2, 2)); $b = hexdec(substr($value, 4, 2)); $colors["{" . $key . "}"] = getColor($r, $g, $b); } } $sOutline = 'border-width: 1px;'; if (isset($data["c"]["sOutline"])) { switch ($data["c"]["sOutline"]) { case 2: $sOutline = 'border-width: 2px;'; break; case 3: $sOutline = 'border-width: 2px; border-left: none; border-right: none;'; break; case 4: $sOutline = 'border: none;'; break; } } $sTitleMargin = 'padding-left: 0px;'; if (isset($data["c"]["sTitleMargin"])) { $m = intval($data["c"]["sTitleMargin"]); $m = $m > 400 ? 400 : $m; $m = $m < 0 ? 0 : $m; $data["c"]["sTitleMargin"] = $m; $sTitleMargin = 'padding-left: ' . $m . 'px;'; } $css = file_get_contents(INCLUDES . "p_themedesigner.css"); $css = str_replace('{sOutline}', $sOutline, $css); $css = str_replace('{sTitleMargin}', $sTitleMargin, $css); $css = str_replace('{fileLogo}', $fileLogo, $css); $css = str_replace('{fileOuter}', $fileOuter, $css); $css = str_replace('{fileContainer}', $fileContainer, $css); $css = str_replace('{fileContainer2}', $fileContainer2, $css); foreach ($colors as $colorVar => $colorValue) { $css = str_replace($colorVar, getWebColor($colorValue), $css); } if (!isset($data["Tile"]) || isset($_POST["submitTheme"])) { $data["Tile"] = 0; } // Override some data from POST (if available) if (isset($_POST["BGLayoutTiledH"])) { $data["Tile"] |= 1; } if (isset($_POST["BGOuterTiledH"])) { $data["Tile"] |= 2; } if (isset($_POST["BGContainerTiledH"])) { $data["Tile"] |= 4; } if (isset($_POST["BGContainer2TiledH"])) { $data["Tile"] |= 8; } if (isset($_POST["BGLayoutTiledV"])) { $data["Tile"] |= 16; } if (isset($_POST["BGOuterTiledV"])) { $data["Tile"] |= 32; } if (isset($_POST["BGContainerTiledV"])) { $data["Tile"] |= 64; } if (isset($_POST["BGContainer2TiledV"])) { $data["Tile"] |= 128; } $css = str_replace('{layoutTiling}', getTiling($data["Tile"] & 1, $data["Tile"] & 16), $css); $css = str_replace('{outerTiling}', getTiling($data["Tile"] & 2, $data["Tile"] & 32), $css); $css = str_replace('{containerTiling}', getTiling($data["Tile"] & 4, $data["Tile"] & 64), $css); $css = str_replace('{container2Tiling}', getTiling($data["Tile"] & 8, $data["Tile"] & 128), $css); // Remove comments from the final CSS file. $css = preg_replace('/\\/\\*(.+?)\\*\\//', "", $css); if ($lastThemeFile != "") { $css_orig = file_get_contents($lastThemeFile); } else { $css_orig = ""; } if ($css != $css_orig) { // Create new CSS file and delete the previous CSS file. $fp = fopen($themePath . "style-" . time() . ".css", "w"); fwrite($fp, $css); fclose($fp); if ($lastThemeFile != "") { unlink($lastThemeFile); } // Store updated data to the database. $cusWhere = dbWhere(array("cusUser" => $useid, "cusIsClub" => $isClub)); $result = sql_query("SELECT `cusid` FROM `customThemes`" . $cusWhere . "LIMIT 1"); if (mysql_num_rows($result) == 0) { sql_query("INSERT INTO `customThemes`" . dbValues(array("cusUser" => $useid, "cusIsClub" => $isClub, "cusData" => serialize($data)))); } else { sql_query("UPDATE `customThemes`" . dbSet(array("cusData" => serialize($data))) . $cusWhere . "LIMIT 1"); } return true; } else { return false; } }
function forceFolders($path) { if (strlen($path) == 0) { return false; } if (strlen($path) < 3) { return true; } elseif (is_dir($path)) { return true; } elseif (dirname($path) == $path) { return true; } return forceFolders(dirname($path)) and mkdir($path, 0755); }