ktutil.inc.tmp
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· TMP 代码 · 共 1,277 行 · 第 1/3 页
TMP
1,277 行
// for exec, check return code and output... $aRet = array(); $aOutput = array(); $iRet = ''; if(OS_WINDOWS){ $sCmd = 'call '.$sCmd; } exec($sCmd, $aOutput, $iRet); $aRet['ret'] = $iRet; $aRet['out'] = $aOutput; return $aRet; } // }}} // {{{ winexec /** * Execute a command on a windows platform. */ function winexec($aCmd, $aOptions = null) { if (is_array($aCmd)) { $sCmd = KTUtil::safeShellString($aCmd); } else { $sCmd = $aCmd; } $sAppend = KTUtil::arrayGet($aOptions, 'append'); if ($sAppend) { $sCmd .= " >> " . escapeshellarg($sAppend); } $sCmd = str_replace( '/','\\',$sCmd); // Set wait to true if the execute must wait for the script to complete before continuing $wait = true; if(isset($aOptions['exec_wait']) && ($aOptions['exec_wait'] == 'false')){ $wait = false; } // Iterate through the various execute functions till one works. $WshShell = new COM("WScript.Shell"); $res = $WshShell->Run($sCmd, 0, $wait); if($res){ return $res; } $sCmd = "start /b \"kt\" " . $sCmd; $fp = popen($sCmd, 'r'); fclose($fp); if($wait){ sleep(1); } return 1; } // }}} // {{{ copyDirectory function copyDirectory($sSrc, $sDst, $bMove = false) { if (file_exists($sDst)) { return PEAR::raiseError(_kt("Destination directory already exists.")); } if (OS_UNIX) { if ($bMove && file_exists('/bin/mv')) { KTUtil::pexec(array('/bin/mv', $sSrc, $sDst)); return; } if (!$bMove && file_exists('/bin/cp')) { KTUtil::pexec(array('/bin/cp', '-R', $sSrc, $sDst)); return; } } if (substr($sDst, 0, strlen($sSrc)) === $sSrc) { return PEAR::raiseError(_kt("Destination of move is within source")); } $hSrc = @opendir($sSrc); if ($hSrc === false) { return PEAR::raiseError(sprintf(_kt("Could not open source directory: %s"), $sSrc)); } if (@mkdir($sDst, 0777) === false) { return PEAR::raiseError(sprintf(_kt("Could not create destination directory: %s"), $sDst)); } while (($sFilename = readdir($hSrc)) !== false) { if (in_array($sFilename, array('.', '..'))) { continue; } $sOldFile = sprintf("%s/%s", $sSrc, $sFilename); $sNewFile = sprintf("%s/%s", $sDst, $sFilename); if (is_dir($sOldFile)) { KTUtil::copyDirectory($sOldFile, $sNewFile, $bMove); continue; } if ($bMove) { KTUtil::moveFile($sOldFile, $sNewFile); } else { copy($sOldFile, $sNewFile); } } if ($bMove) { @rmdir($sSrc); } } // }}} // {{{ moveDirectory function moveDirectory($sSrc, $sDst) { return KTUtil::copyDirectory($sSrc, $sDst, true); } // }}} // {{{ deleteDirectory function deleteDirectory($sPath) { if (OS_UNIX) { if (file_exists('/bin/rm')) { KTUtil::pexec(array('/bin/rm', '-rf', $sPath)); return; } } if (OS_WINDOWS) { // Potentially kills off all the files in the path, speeding // things up a bit exec("del /q /s " . escapeshellarg($sPath)); } $hPath = @opendir($sPath); while (($sFilename = readdir($hPath)) !== false) { if (in_array($sFilename, array('.', '..'))) { continue; } $sFullFilename = sprintf("%s/%s", $sPath, $sFilename); if (is_dir($sFullFilename)) { KTUtil::deleteDirectory($sFullFilename); continue; } @chmod($sFullFilename, 0666); @unlink($sFullFilename); } closedir($hPath); @rmdir($sPath); } // }}} // {{{ moveFile function moveFile ($sSrc, $sDst) { // Only 4.3.3 and above allow us to use rename across partitions // on Unix-like systems. if (OS_UNIX) { // If /bin/mv exists, just use it. if (file_exists('/bin/mv')) { KTUtil::pexec(array('/bin/mv', $sSrc, $sDst)); return; } $aSrcStat = stat($sSrc); if ($aSrcStat === false) { return PEAR::raiseError(sprintf(_kt("Couldn't stat source file: %s"), $sSrc)); } $aDstStat = stat(dirname($sDst)); if ($aDstStat === false) { return PEAR::raiseError(sprintf(_kt("Couldn't stat destination location: %s"), $sDst)); } if ($aSrcStat["dev"] === $aDstStat["dev"]) { $res = @rename($sSrc, $sDst); if ($res === false) { return PEAR::raiseError(sprintf(_kt("Couldn't move file to destination: %s"), $sDst)); } return; } $res = @copy($sSrc, $sDst); if ($res === false) { return PEAR::raiseError(sprintf(_kt("Could not copy to destination: %s"), $sDst)); } $res = @unlink($sSrc); if ($res === false) { return PEAR::raiseError(sprintf(_kt("Could not remove source: %s"), $sSrc)); } } else { $res = @rename($sSrc, $sDst); if ($res === false) { return PEAR::raiseError(sprintf(_kt("Could not move to destination: %s"), $sDst)); } } } // }}} // {{{ copyFile function copyFile ($sSrc, $sDst) { // Only 4.3.3 and above allow us to use rename across partitions // on Unix-like systems. if (OS_UNIX) { $aSrcStat = stat($sSrc); if ($aSrcStat === false) { return PEAR::raiseError(sprintf(_kt("Couldn't stat source file: %s"), $sSrc)); } $aDstStat = stat(dirname($sDst)); if ($aDstStat === false) { return PEAR::raiseError(sprintf(_kt("Couldn't stat destination location: %s"), $sDst)); } $res = @copy($sSrc, $sDst); if ($res === false) { return PEAR::raiseError(sprintf(_kt("Could not copy to destination: %s"), $sDst)); } } else { $res = @copy($sSrc, $sDst); if ($res === false) { return PEAR::raiseError(sprintf(_kt("Could not copy to destination: %s"), $sDst)); } } } // }}} // {{{ getTableName /** * The one true way to get the correct name for a table whilst * respecting the administrator's choice of table naming. */ static function getTableName($sTable) { $sDefaultsTable = $sTable . "_table"; if (isset($GLOBALS['default']->$sDefaultsTable)) { return $GLOBALS['default']->$sDefaultsTable; } return $sTable; } // }}} // {{{ getId function getId($oEntity) { if (is_object($oEntity)) { if (method_exists($oEntity, 'getId')) { return $oEntity->getId(); } return PEAR::raiseError(_kt('Non-entity object')); } if (is_numeric($oEntity)) { return $oEntity; } return PEAR::raiseError(_kt('Non-entity object')); } // }}} // {{{ getObject function getObject($sClassName, &$iId) { if (is_object($iId)) { return $iId; } if (is_numeric($iId)) { return call_user_func(array($sClassName, 'get'), $iId); } return PEAR::raiseError(_kt('Non-entity object')); } // }}} // {{{ meldOptions static function meldOptions($aStartOptions, $aAddOptions) { if (!is_array($aStartOptions)) { $aStartOptions = array(); } if (!is_array($aAddOptions)) { $aAddOptions = array(); } return array_merge($aStartOptions, $aAddOptions); } // }}} // {{{ getRequestScriptName function getRequestScriptName($server) { $request_uri = $server['REQUEST_URI']; $script_name = $server['SCRIPT_NAME']; /* * Until script_name is fully inside request_uri, strip off bits * of script_name. */ //print "Checking if $script_name is in $request_uri\n"; while ($script_name && strpos($request_uri, $script_name) === false) { //print "No it isn't.\n"; $lastslash = strrpos($script_name, '/'); $lastdot = strrpos($script_name, '.'); //print "Last slash is at: $lastslash\n"; //print "Last dot is at: $lastdot\n"; if ($lastslash > $lastdot) { $script_name = substr($script_name, 0, $lastslash); } else { $script_name = substr($script_name, 0, $lastdot); } //print "Checking is $script_name is in $request_uri\n"; } return $script_name; } // }}} // {{{ nameToLocalNamespace function nameToLocalNamespace ($sSection, $sName) { $sBase = generateLink(""); $sName = trim($sName); $sName = strtolower($sName); $sName = str_replace(array("'", "/",'"', " "), array(), $sName); $sSection = trim($sSection); $sSection = strtolower($sSection); $sSection = str_replace(array("'", "/",'"', " "), array(), $sSection); return $sBase . 'local' . '/' . $sSection . '/' . $sName; } // }}} // {{{ findCommand function findCommand($sConfigVar, $sDefault = null) { // Check for the stack command before using the user defined command $result = KTUtil::checkForStackCommand($sConfigVar); if (!empty($result)) { return $result; } $oKTConfig =& KTConfig::getSingleton(); $sCommand = $oKTConfig->get($sConfigVar, $sDefault); if (empty($sCommand)) { return false; } if (file_exists($sCommand)) { return $sCommand; } if (file_exists($sCommand . ".exe")) { return $sCommand . ".exe"; } $sExecSearchPath = $oKTConfig->get("KnowledgeTree/execSearchPath"); $sExecSearchPath .= PATH_SEPARATOR . KT_DIR . "/../common/"; $sExecSearchPath .= PATH_SEPARATOR . KT_DIR . "/../bin/xpdf/"; $sExecSearchPath .= PATH_SEPARATOR . KT_DIR . "/../bin/antiword/"; $sExecSearchPath .= PATH_SEPARATOR . KT_DIR . "/../bin/zip/"; $sExecSearchPath .= PATH_SEPARATOR . KT_DIR . "/../bin/unzip/"; $paths = split(PATH_SEPARATOR, $sExecSearchPath); foreach ($paths as $path) { if (file_exists($path . '/' . $sCommand)) { return $path . '/' . $sCommand; } if (file_exists($path . '/' . $sCommand . ".exe")) { return $path . '/' . $sCommand . ".exe"; } } return false; } // }}} function checkForStackCommand($configCommand) { $config = KTConfig::getSingleton(); $stackPath = realpath(KT_DIR . '/..'); switch ($configCommand) { case 'externalBinary/xls2csv': if (OS_WINDOWS) { $script = $stackPath . '/bin/catdoc/xls2csv.exe'; } else { $script = $stackPath . '/common/bin/xls2csv'; } break; case 'externalBinary/pdftotext':; if (OS_WINDOWS) { $script = $stackPath . '/bin/xpdf/pdftotext.exe'; } else { $script = $stackPath . '/common/bin/pdftotext'; } break; case 'externalBinary/catppt': if (OS_WINDOWS) { $script = $stackPath . '/bin/catdoc/catppt.exe'; } else { $script = $stackPath . '/common/bin/catppt'; } break; case 'externalBinary/pstotext': if (OS_WINDOWS) { $script = $stackPath . '/bin/pstotext/pstotext.exe'; } else { $script = $stackPath . '/common/bin/pstotext'; } break; case 'externalBinary/catdoc': if (OS_WINDOWS) { $script = $stackPath . '/bin/catdoc/catdoc.exe'; } else { $script = $stackPath . '/common/bin/catdoc'; } break; case 'externalBinary/antiword': if (OS_WINDOWS) { $script = $stackPath . '/bin/antiword/antiword.exe'; } else { $script = $stackPath . '/common/bin/antiword'; } break;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?