/** * main class method; Create the image and return the url to the image file; * @param string relative path to site root * @return mixt image url or error */ function getImageURL($relpath) { $this->garbageCollector(); // check write permissions on captcha folder $fld = new KT_folder(); $fld->createFolder(KT_CAPTCHA_TEMP_FOLDER); if (!$fld->checkRights(KT_CAPTCHA_TEMP_FOLDER, 'write')) { if ($GLOBALS['tNG_debug_mode'] == 'DEVELOPMENT') { $error = KT_getResource('FOLDER_ERROR_D', 'Captcha', array(KT_CAPTCHA_TEMP_FOLDER)); } else { $error = KT_getResource('FOLDER_ERROR', 'Captcha'); } return $this->formatError($error); } // with gd if ($this->lib == "gd") { $arr["GD Version"] = 'GD not available'; if (function_exists('gd_info')) { $arr = gd_info(); preg_match("/(2)\\.[\\d]+/i", $arr["GD Version"], $matches); } if (!isset($arr) || !isset($matches[1]) || (int) $matches[1] < 2) { $error = KT_getResource('PHP_GD_VERSION_ERROR', 'Captcha', array($arr["GD Version"])); return $this->formatError($error); } $im = imagecreatefrompng(dirname(__FILE__) . '/captcha.png') or $error = KT_getResource('PHP_GD_ERROR', 'Captcha', array()); if (isset($error)) { return $this->formatError($error); } $string = $this->getTextCaptcha(); $font = imageloadfont(dirname(__FILE__) . "/fonts/Courier.gdf"); if ($font === false) { $font = 5; } $fontFileName = dirname(__FILE__) . '/fonts/MyriadWebPro.ttf'; $wFont = 24; $hFont = 24; // write the letters for ($i = 0; $i < strlen($string); $i++) { $color1 = rand(0, 64); $color2 = rand(0, 64); $color3 = rand(0, 64); $text_color = imagecolorallocate($im, $color1, $color2, $color3); $okttf = false; if (function_exists('imagettftext')) { $okttf = @imagettftext($im, 14, rand(-25, 25), 10 + $i * $wFont, $hFont + rand(4, 26), $text_color, $fontFileName, $string[$i]); } if ($okttf === false) { $fim = imagecreatetruecolor($wFont + 9, $hFont + 9); $back = imagecolorallocate($fim, 255, 255, 255); imagefilledrectangle($fim, 0, 0, $wFont + 8, $hFont + 8, $back); $transparent2 = imagecolorallocate($fim, 255, 255, 255); $text_color = imagecolorallocate($fim, $color1, $color2, $color3); imagestring($fim, $font, 4, 4, $string[$i], $text_color); if (function_exists("imagerotate")) { $fim = imagerotate($fim, rand(-25, 25), $transparent2); } $iTranspa2 = imagecolortransparent($fim, $transparent2); imagecopymerge($im, $fim, 0 + $i * $wFont, rand(4, 26), 0, 0, $wFont + 9, $hFont + 9, 80); imagedestroy($fim); } } imagepng($im, KT_CAPTCHA_TEMP_FOLDER . $this->filename); imagedestroy($im); // with imagemagick } else { $sourceFileName = dirname(__FILE__) . '/captcha.png'; $fontFileName = dirname(__FILE__) . '/fonts/MyriadWebPro.ttf'; $destFileName = KT_CAPTCHA_TEMP_FOLDER . $this->filename; $arrCommands = array($GLOBALS['KT_prefered_imagemagick_path'] . 'convert'); $shell = new KT_shell(); $direction = rand(0, 10); if ($direction % 2 == 0) { $textRend = -rand(8, 11) . 'x0+' . (5 + (8 - strlen($this->text)) * 20) . '+' . (70 - (8 - strlen($this->text)) * 5); } else { $textRend = rand(8, 11) . 'x0+' . (5 + (8 - strlen($this->text)) * 20) . '+' . (35 + (8 - strlen($this->text)) * 5); } $arrArguments = array('-font', $fontFileName, '-pointsize', '34', '-fill', 'rgb(' . rand(0, 32) . ',' . rand(0, 32) . ',' . rand(0, 32) . ')', '-annotate', $textRend, $this->text, '-wave', '3x50', '-region', '100x70+' . rand(0, 100) . '+0', '-swirl', '25', '-region', '100x70+' . rand(0, 100) . '+0', '-swirl', '-25', $sourceFileName, $destFileName); $shell->execute($arrCommands, $arrArguments); if ($shell->hasError()) { $arr = $shell->getError(); $ret = $this->formatError($arr[0]); return $ret; } } return $relpath . KT_CAPTCHA_TEMP_URL . $this->filename; }
/** * Check if the uploaded folder exists and has write permissions. * If the folder does not exists, try to create it. * If the folder does not have write permissions or if could not create it, set error. * @return nothing; * @access public */ function checkFolder() { if ($this->fileExists) { $folder = new KT_folder(); $folder->createFolder($this->folder); $right = $folder->checkRights($this->folder, 'write'); if ($folder->hasError()) { $arr = $folder->getError(); $this->setError('PHP_UPLOAD_FOLDER_ERROR', array($arr[0]), array($arr[1])); } if ($right !== true) { $this->setError('PHP_UPLOAD_CHECK_FOLDER_ERROR', array(), array($this->folder)); } } }
/** * executes tidy and gets the value * @param string column name from transaction * @param string string to test * @return boolean true if tidy executed succesfully * @access private */ function execTidy($colName, $value) { $arg_test = array('--version'); if (isset($_SESSION['TidyContent']['ExecPath'])) { $loc = array($_SESSION['TidyContent']['ExecPath']); } else { $loc = $GLOBALS['TidyContent_TidyLocations']; if (isset($GLOBALS['KT_prefered_tidy_path'])) { array_unshift($loc, $GLOBALS['KT_prefered_tidy_path'] . 'tidy'); array_unshift($loc, $GLOBALS['KT_prefered_tidy_path'] . 'tidy.exe'); } } $shell = new KT_shell(); $shell->execute($loc, $arg_test); if ($shell->hasError()) { $arr = $shell->getError(); $this->setErrorMsg($arr[0], $arr[1]); return false; } $execPath = $shell->getExecutedCommand(); if (!isset($_SESSION['TidyContent']['ExecPath']) && $execPath != '') { $_SESSION['TidyContent']['ExecPath'] = $execPath; $loc = array($execPath); } $tidyEncoding = 'raw'; if (strtolower($this->outEncoding) == 'iso-8859-1') { $tidyEncoding = 'ascii'; } if (strpos(strtolower($this->outEncoding), 'utf-8') !== false) { $tidyEncoding = 'utf8'; } $string = $value; $string = str_replace("&nbsp;", "&amp;nbsp;", $string); $string = str_replace(" ", "&nbsp;", $string); if (!file_exists($this->folderName)) { $folder = new KT_folder(); $folder->createFolder($this->folderName); if ($folder->hasError()) { $arr = $folder->getError(); $this->setErrorMsg($arr[0], $arr[1]); return false; } } $f = tempnam(substr($this->folderName, 0, -1), 'tidy'); if ($f === false) { $err = KT_getResource('ERROR_TIDY_CONTENT', 'tNG', array()); $this->setErrorMsg($err, $err); return false; } $fout = $f . '_out'; $file = new KT_file(); $file->writeFile($f, 'append', $string); if ($file->hasError()) { $arr = $file->getError(); $this->setErrorMsg($arr[0], $arr[1]); return false; } $path = $GLOBALS['TidyContent_TidyConfiguration']; $arg = array("-config", $path, '-' . $tidyEncoding, "-o", $fout, $f); $shell = new KT_shell(); $output = $shell->execute($loc, $arg); if ($shell->hasError() && !file_exists($fout)) { $arr = $shell->getError(); $this->setErrorMsg($arr[0], $arr[1]); @unlink($f); @unlink($fout); return false; } $file = new KT_file(); $content = $file->readFile($fout); if ($file->hasError()) { $arr = $file->getError(); $this->setErrorMsg($arr[0], $arr[1]); @unlink($f); @unlink($fout); return false; } $file->deleteFile($f); if ($file->hasError()) { $arr = $file->getError(); $this->setErrorMsg($arr[0], $arr[1]); @unlink($fout); return false; } $file->deleteFile($fout); if ($file->hasError()) { $arr = $file->getError(); $this->setErrorMsg($arr[0], $arr[1]); return false; } $content = str_replace("&nbsp;", " ", $content); $content = str_replace("&amp;nbsp;", "&nbsp;", $content); $content = $this->cleanContent($content); $this->tidiedValues[$colName] = $content; return true; }
/** * Check if the folder exists and has write permissions. * If the folder does not exists, try to create it. * If the folder does not have write permissions or if could not create it, set error. * @param string $path the path * @param string $right the right to check * @param string $from from what function is called * @return boolean true if is installed or false if not; * @access private */ function checkFolder($path, $right, $from) { if (strtolower(substr(PHP_OS, 0, 1)) == 'w') { $path = str_replace('/', '\\', $path); } if (preg_match("/\\./ims", $path)) { $arr = split("[/\\]", $path); array_pop($arr); $path = implode(DIRECTORY_SEPARATOR, $arr); } if (is_file($path)) { $arr = explode(DIRECTORY_SEPARATOR, $path); array_pop($arr); $path = implode(DIRECTORY_SEPARATOR, $arr); } $folder = new KT_folder(); $folder->createFolder($path); if ($right != '') { $res = $folder->checkRights($path, $right); if ($res !== true) { $this->setError('PHP_IMAGE_CHECK_FOLDER_ERROR', array($from), array($from, $path, $right)); } } if ($folder->hasError()) { $arr = $folder->getError(); $this->setError('PHP_IMAGE_FOLDER_ERROR', array($from, $arr[0]), array($from, $arr[1])); } }
} //print_r($uploadHash); $folder = $uploadHashFile['folder']; if (substr($folder, -1, 1) != '/' || substr($folder, -1, 1) != '\\') { $folder .= '/'; } if ($uploadHash['relPath'] != '') { if (substr($folder, 0, strlen($uploadHash['relPath'])) == $uploadHash['relPath']) { $folder = substr($folder, strlen($uploadHash['relPath'])); } } $folder = '../../../' . $folder; // create the folder if not exists if (!file_exists($folder)) { $folderObj = new KT_folder(); $folderObj->createFolder($folder); if ($folderObj->hasError()) { $err = $folderObj->getError(); echo '<html><head><title>Multilpe Upload</title><link href="../../../includes/skins/mxkollection3.css" rel="stylesheet" type="text/css" media="all" /></head><body><div id="KT_tngerror"><label>' . KT_getResource('ERROR_LABEL', 'tNG') . '</label><div>'; echo isset($GLOBALS['tNG_debug_mode']) && $GLOBALS['tNG_debug_mode'] == 'DEVELOPMENT' ? $err[1] : $err[0]; echo '</div></div></body></html>'; exit; } } // delete selected file if (isset($_POST['delete']) && isset($_SESSION['tng_upload_delete'][$_POST['delete']])) { $file = new KT_file(); $file->deleteFile($folder . $_SESSION['tng_upload_delete'][$_POST['delete']]); if ($file->hasError()) { $err = $file->getError(); } else {
/** * verify the rights on the folder of the given file; * @param string $file the absolute path of the file to be checked; * @param string $mode the right to be checked: read/write: * @param string $from the function that needs the check; * @return nothing; * @access private */ function checkFolder($file, $mode, $from) { $folderName = $this->getFolder($file); $folder = new KT_folder(); $folder->createFolder($folderName); switch ($mode) { case 'read': $right = $folder->checkRights($folderName, 'read'); break; case 'write': default: $right = $folder->checkRights($folderName, 'write'); break; } if ($folder->hasError()) { $arr = $folder->getError(); $this->setError('PHP_FILE_FOLDER_ERROR', array($from, $arr[0]), array($from, $arr[1])); } if ($right !== true) { $this->setError('PHP_FILE_CHECK_FOLDER_ERROR', array($from), array($from, $mode, $folderName)); } }