Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F197234
setup.php
taoqiping (Darren Tao)
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
•
taoqiping
Sep 3 2014, 1:49 AM
2014-09-03 01:49:32 (UTC+0)
Size
23 KB
Referenced Files
None
Subscribers
None
setup.php
View Options
<?php
// setup.php
//
// Global setup
// --- DON'T CHANGE THIS FILE ---
//
// User changes should be done in config.php
if
(
!
function_exists
(
'json_encode'
)
||
!
function_exists
(
'json_decode'
))
{
function
json_encode
(
$nodes
)
{
require_once
'../lib/pear/Services/JSON.php'
;
$json
=
new
Services_JSON
();
return
$json
->
encode
(
$nodes
);
}
function
json_decode
(
$string
)
{
require_once
'../lib/pear/Services/JSON.php'
;
$json
=
new
Services_JSON
();
return
$json
->
decode
(
$string
);
}
}
$tke_url
=
"https://"
.
$_SERVER
[
'HTTP_HOST'
].
"/general/tke_cma_query_2.0.php?query=getSVNInfo"
;
$rid
=
isset
(
$_REQUEST
[
'rid'
])
?
$_REQUEST
[
'rid'
]
:
0
;
$int_instance_id
=
isset
(
$_REQUEST
[
'int_instance_id'
])
?
$_REQUEST
[
'int_instance_id'
]
:
0
;
$post_data
=
array
(
'rid'
=>
$rid
);
$ch
=
curl_init
();
curl_setopt
(
$ch
,
CURLOPT_URL
,
$tke_url
);
curl_setopt
(
$ch
,
CURLOPT_RETURNTRANSFER
,
1
);
curl_setopt
(
$ch
,
CURLOPT_POST
,
1
);
curl_setopt
(
$ch
,
CURLOPT_POSTFIELDS
,
$post_data
);
$output
=
curl_exec
(
$ch
);
curl_close
(
$ch
);
$svnInfoArr
=
json_decode
(
$output
);
// Include the configuration class
require_once
'include/configclass.php'
;
// Create the config
$config
=
new
WebSvnConfig
();
if
(
DIRECTORY_SEPARATOR
==
'
\\
'
)
{
$config
->
setServerIsWindows
();
}
// Set up locwebsvnhttp
// Note: we will use nothing in MultiViews mode so that the URLs use the root
// directory by default.
if
(
empty
(
$locwebsvnhttp
))
{
$locwebsvnhttp
=
defined
(
'WSVN_MULTIVIEWS'
)
?
''
:
'.'
;
}
if
(
empty
(
$locwebsvnreal
))
{
$locwebsvnreal
=
'.'
;
}
$vars
[
'locwebsvnhttp'
]
=
$locwebsvnhttp
;
// {{{ Content Types
// Set up the default content-type extension handling
$contentType
=
array
(
'.dwg'
=>
'application/acad'
,
// AutoCAD Drawing files
'.arj'
=>
'application/arj'
,
// ?
'.ccad'
=>
'application/clariscad'
,
// ClarisCAD files
'.drw'
=>
'application/drafting'
,
// MATRA Prelude drafting
'.dxf'
=>
'application/dxf'
,
// DXF (AutoCAD)
'.xl'
=>
'application/excel'
,
// Microsoft Excel
'.unv'
=>
'application/i-deas'
,
//SDRC I-DEAS files
'.igs'
=>
'application/iges'
,
// IGES graphics format
'.iges'
=>
'application/iges'
,
// IGES graphics format
'.hqx'
=>
'application/mac-binhex40'
,
// Macintosh BinHex format
'.word'
=>
'application/msword'
,
// Microsoft Word
'.w6w'
=>
'application/msword'
,
// Microsoft Word
'.doc'
=>
'application/msword'
,
// Microsoft Word
'.wri'
=>
'application/mswrite'
,
// Microsoft Write
'.bin'
=>
'application/octet-stream'
,
// Uninterpreted binary
'.exe'
=>
'application/x-msdownload'
,
// Windows EXE
'.oda'
=>
'application/oda'
,
// ?
'.pdf'
=>
'application/pdf'
,
// PDF (Adobe Acrobat)
'.ai'
=>
'application/postscript'
,
// PostScript
'.ps'
=>
'application/postscript'
,
// PostScript
'.eps'
=>
'application/postscript'
,
// PostScript
'.prt'
=>
'application/pro_eng'
,
// PTC Pro/ENGINEER
'.part'
=>
'application/pro_eng'
,
// PTC Pro/ENGINEER
'.rtf'
=>
'application/rtf'
,
// Rich Text Format
'.set'
=>
'application/set'
,
// SET (French CAD standard)
'.stl'
=>
'application/sla'
,
// Stereolithography
'.sol'
=>
'application/solids'
,
// MATRA Prelude Solids
'.stp'
=>
'application/STEP'
,
// ISO-10303 STEP data files
'.step'
=>
'application/STEP'
,
// ISO-10303 STEP data files
'.vda'
=>
'application/vda'
,
// VDA-FS Surface data
'.dir'
=>
'application/x-director'
,
// Macromedia Director
'.dcr'
=>
'application/x-director'
,
// Macromedia Director
'.dxr'
=>
'application/x-director'
,
// Macromedia Director
'.mif'
=>
'application/x-mif'
,
// FrameMaker MIF Format
'.csh'
=>
'application/x-csh'
,
// C-shell script
'.dvi'
=>
'application/x-dvi'
,
// TeX DVI
'.gz'
=>
'application/x-gzip'
,
// GNU Zip
'.gzip'
=>
'application/x-gzip'
,
// GNU Zip
'.hdf'
=>
'application/x-hdf'
,
// ncSA HDF Data File
'.latex'
=>
'application/x-latex'
,
// LaTeX source
'.nc'
=>
'application/x-netcdf'
,
// Unidata netCDF
'.cdf'
=>
'application/x-netcdf'
,
// Unidata netCDF
'.sit'
=>
'application/x-stuffit'
,
// Stiffut Archive
'.tcl'
=>
'application/x-tcl'
,
// TCL script
'.texinfo'
=>
'application/x-texinfo'
,
// Texinfo (Emacs)
'.texi'
=>
'application/x-texinfo'
,
// Texinfo (Emacs)
'.t'
=>
'application/x-troff'
,
// Troff
'.tr'
=>
'application/x-troff'
,
// Troff
'.roff'
=>
'application/x-troff'
,
// Troff
'.man'
=>
'application/x-troff-man'
,
// Troff with MAN macros
'.me'
=>
'application/x-troff-me'
,
// Troff with ME macros
'.ms'
=>
'application/x-troff-ms'
,
// Troff with MS macros
'.src'
=>
'application/x-wais-source'
,
// WAIS source
'.bcpio'
=>
'application/x-bcpio'
,
// Old binary CPIO
'.cpio'
=>
'application/x-cpio'
,
// POSIX CPIO
'.gtar'
=>
'application/x-gtar'
,
// GNU tar
'.shar'
=>
'application/x-shar'
,
// Shell archive
'.sv4cpio'
=>
'application/x-sv4cpio'
,
// SVR4 CPIO
'.sv4crc'
=>
'application/x-sv4crc'
,
// SVR4 CPIO with CRC
'.tar'
=>
'application/x-tar'
,
// 4.3BSD tar format
'.ustar'
=>
'application/x-ustar'
,
// POSIX tar format
'.hlp'
=>
'application/x-winhelp'
,
// Windows Help
'.zip'
=>
'application/zip'
,
// ZIP archive
'.au'
=>
'audio/basic'
,
// Basic audio (usually m-law)
'.snd'
=>
'audio/basic'
,
// Basic audio (usually m-law)
'.aif'
=>
'audio/x-aiff'
,
// AIFF audio
'.aiff'
=>
'audio/x-aiff'
,
// AIFF audio
'.aifc'
=>
'audio/x-aiff'
,
// AIFF audio
'.ra'
=>
'audio/x-pn-realaudio'
,
// RealAudio
'.ram'
=>
'audio/x-pn-realaudio'
,
// RealAudio
'.rpm'
=>
'audio/x-pn-realaudio-plugin'
,
// RealAudio (plug-in)
'.wav'
=>
'audio/x-wav'
,
// Windows WAVE audio
'.mp3'
=>
'audio/x-mp3'
,
// MP3 files
'.gif'
=>
'image/gif'
,
// gif image
'.ief'
=>
'image/ief'
,
// Image Exchange Format
'.jpg'
=>
'image/jpeg'
,
// JPEG image
'.jpe'
=>
'image/jpeg'
,
// JPEG image
'.jpeg'
=>
'image/jpeg'
,
// JPEG image
'.pict'
=>
'image/pict'
,
// Macintosh PICT
'.tiff'
=>
'image/tiff'
,
// TIFF image
'.tif'
=>
'image/tiff'
,
// TIFF image
'.ras'
=>
'image/x-cmu-raster'
,
// CMU raster
'.pnm'
=>
'image/x-portable-anymap'
,
// PBM Anymap format
'.pbm'
=>
'image/x-portable-bitmap'
,
// PBM Bitmap format
'.pgm'
=>
'image/x-portable-graymap'
,
// PBM Graymap format
'.ppm'
=>
'image/x-portable-pixmap'
,
// PBM Pixmap format
'.rgb'
=>
'image/x-rgb'
,
// RGB Image
'.xbm'
=>
'image/x-xbitmap'
,
// X Bitmap
'.xpm'
=>
'image/x-xpixmap'
,
// X Pixmap
'.xwd'
=>
'image/x-xwindowdump'
,
// X Windows dump (xwd) format
'.zip'
=>
'multipart/x-zip'
,
// PKZIP Archive
'.gzip'
=>
'multipart/x-gzip'
,
// GNU ZIP Archive
'.mpeg'
=>
'video/mpeg'
,
// MPEG video
'.mpg'
=>
'video/mpeg'
,
// MPEG video
'.mpe'
=>
'video/mpeg'
,
// MPEG video
'.mpeg'
=>
'video/mpeg'
,
// MPEG video
'.qt'
=>
'video/quicktime'
,
// QuickTime Video
'.mov'
=>
'video/quicktime'
,
// QuickTime Video
'.avi'
=>
'video/msvideo'
,
// Microsoft Windows Video
'.movie'
=>
'video/x-sgi-movie'
,
// SGI Movieplayer format
'.wrl'
=>
'x-world/x-vrml'
,
// VRML Worlds
'.ods'
=>
'application/vnd.oasis.opendocument.spreadsheet'
,
// OpenDocument Spreadsheet
'.ots'
=>
'application/vnd.oasis.opendocument.spreadsheet-template'
,
// OpenDocument Spreadsheet Template
'.odp'
=>
'application/vnd.oasis.opendocument.presentation'
,
// OpenDocument Presentation
'.otp'
=>
'application/vnd.oasis.opendocument.presentation-template'
,
// OpenDocument Presentation Template
'.odg'
=>
'application/vnd.oasis.opendocument.graphics'
,
// OpenDocument Drawing
'.otg'
=>
'application/vnd.oasis.opendocument.graphics-template'
,
// OpenDocument Drawing Template
'.odc'
=>
'application/vnd.oasis.opendocument.chart'
,
// OpenDocument Chart
'.otc'
=>
'application/vnd.oasis.opendocument.chart-template'
,
// OpenDocument Chart Template
'.odf'
=>
'application/vnd.oasis.opendocument.formula'
,
// OpenDocument Formula
'.otf'
=>
'application/vnd.oasis.opendocument.formula-template'
,
// OpenDocument Formula Template
'.odi'
=>
'application/vnd.oasis.opendocument.image'
,
// OpenDocument Image
'.oti'
=>
'application/vnd.oasis.opendocument.image-template'
,
// OpenDocument Image Template
'.odb'
=>
'application/vnd.oasis.opendocument.database'
,
// OpenDocument Database
'.odt'
=>
'application/vnd.oasis.opendocument.text'
,
// OpenDocument Text
'.ott'
=>
'application/vnd.oasis.opendocument.text-template'
,
// OpenDocument Text Template
'.odm'
=>
'application/vnd.oasis.opendocument.text-master'
,
// OpenDocument Master Document
'.oth'
=>
'application/vnd.oasis.opendocument.text-web'
,
// OpenDocument HTML Template
);
// }}}
// {{{ Enscript file extensions
// List of extensions recognised by enscript.
$extEnscript
=
array
(
'.ada'
=>
'ada'
,
'.adb'
=>
'ada'
,
'.ads'
=>
'ada'
,
'.awk'
=>
'awk'
,
'.c'
=>
'c'
,
'.c++'
=>
'cpp'
,
'.cc'
=>
'cpp'
,
'.cmake'
=>
'cmake'
,
'CMakeLists.txt'
=>
'cmake'
,
'.cpp'
=>
'cpp'
,
'.csh'
=>
'csh'
,
'.cxx'
=>
'cpp'
,
'.diff'
=>
'diffu'
,
'.dpr'
=>
'delphi'
,
'.e'
=>
'eiffel'
,
'.el'
=>
'elisp'
,
'.eps'
=>
'postscript'
,
'.f'
=>
'fortran'
,
'.for'
=>
'fortran'
,
'.gs'
=>
'haskell'
,
'.h'
=>
'c'
,
'.hpp'
=>
'cpp'
,
'.hs'
=>
'haskell'
,
'.htm'
=>
'html'
,
'.html'
=>
'html'
,
'.idl'
=>
'idl'
,
'.java'
=>
'java'
,
'.js'
=>
'javascript'
,
'.json'
=>
'javascript'
,
'.lgs'
=>
'haskell'
,
'.lhs'
=>
'haskell'
,
'.m'
=>
'objc'
,
'.m4'
=>
'm4'
,
'.man'
=>
'nroff'
,
'.nr'
=>
'nroff'
,
'.p'
=>
'pascal'
,
'.pas'
=>
'delphi'
,
'.patch'
=>
'diffu'
,
'.pkg'
=>
'sql'
,
'.pl'
=>
'perl'
,
'.pm'
=>
'perl'
,
'.pp'
=>
'pascal'
,
'.ps'
=>
'postscript'
,
'.s'
=>
'asm'
,
'.scheme'
=>
'scheme'
,
'.scm'
=>
'scheme'
,
'.scr'
=>
'synopsys'
,
'.sh'
=>
'sh'
,
'.shtml'
=>
'html'
,
'.sql'
=>
'sql'
,
'.st'
=>
'states'
,
'.syn'
=>
'synopsys'
,
'.synth'
=>
'synopsys'
,
'.tcl'
=>
'tcl'
,
'.tex'
=>
'tex'
,
'.texi'
=>
'tex'
,
'.texinfo'
=>
'tex'
,
'.v'
=>
'verilog'
,
'.vba'
=>
'vba'
,
'.vh'
=>
'verilog'
,
'.vhd'
=>
'vhdl'
,
'.vhdl'
=>
'vhdl'
,
'.py'
=>
'python'
,
);
// }}}
// {{{ GeSHi file extensions
// List of extensions recognised by GeSHi.
$extGeshi
=
array
(
'actionscript3'
=>
array
(
'as'
),
'ada'
=>
array
(
'ada'
,
'adb'
,
'ads'
),
'asm'
=>
array
(
'ash'
,
'asi'
,
'asm'
),
'asp'
=>
array
(
'asp'
),
'bash'
=>
array
(
'sh'
),
'bibtex'
=>
array
(
'bib'
),
'c'
=>
array
(
'c'
),
'cfm'
=>
array
(
'cfm'
,
'cfml'
),
'cmake'
=>
array
(
'cmake'
,
'CMakeLists.txt'
),
'cobol'
=>
array
(
'cbl'
),
'cpp'
=>
array
(
'cc'
,
'cpp'
,
'cxx'
,
'c++'
,
'h'
,
'hpp'
),
'csharp'
=>
array
(
'cs'
),
'css'
=>
array
(
'css'
),
'd'
=>
array
(
'd'
),
'delphi'
=>
array
(
'dpk'
,
'dpr'
,
'pas'
),
'diff'
=>
array
(
'diff'
,
'patch'
),
'dos'
=>
array
(
'bat'
,
'cmd'
),
'eiffel'
=>
array
(
'e'
),
'erlang'
=>
array
(
'erl'
),
'email'
=>
array
(
'eml'
),
'fortran'
=>
array
(
'f'
,
'for'
),
'gettext'
=>
array
(
'po'
,
'pot'
),
'gml'
=>
array
(
'gml'
),
'gnuplot'
=>
array
(
'plt'
),
'groovy'
=>
array
(
'groovy'
),
'haskell'
=>
array
(
'gs'
,
'hs'
,
'lgs'
,
'lhs'
),
'html4strict'
=>
array
(
'html'
,
'htm'
),
'idl'
=>
array
(
'idl'
),
'ini'
=>
array
(
'desktop'
,
'ini'
),
'java5'
=>
array
(
'java'
),
'javascript'
=>
array
(
'js'
,
'json'
),
'latex'
=>
array
(
'tex'
),
'lisp'
=>
array
(
'lisp'
),
'lua'
=>
array
(
'lua'
),
'make'
=>
array
(
'make'
),
'matlab'
=>
array
(
'm'
),
'perl'
=>
array
(
'pl'
,
'pm'
),
'php'
=>
array
(
'php'
,
'php3'
,
'php4'
,
'php5'
,
'phps'
,
'phtml'
),
'povray'
=>
array
(
'pov'
),
'providex'
=>
array
(
'pvc'
,
'pvx'
),
'python'
=>
array
(
'py'
),
'reg'
=>
array
(
'reg'
),
'ruby'
=>
array
(
'rb'
),
'scala'
=>
array
(
'scala'
),
'scheme'
=>
array
(
'scm'
,
'scheme'
),
'scilab'
=>
array
(
'sci'
),
'smalltalk'
=>
array
(
'st'
),
'sql'
=>
array
(
'sql'
),
'tcl'
=>
array
(
'tcl'
),
'vb'
=>
array
(
'bas'
),
'vbnet'
=>
array
(
'vb'
),
'vh'
=>
array
(
'v'
,
'verilog'
),
'vhdl'
=>
array
(
'vhd'
,
'vhdl'
),
'vim'
=>
array
(
'vim'
),
'whitespace'
=>
array
(
'ws'
),
'xml'
=>
array
(
'xml'
,
'xsl'
,
'xsd'
,
'xib'
,
'wsdl'
,
'svg'
,
'plist'
),
'z80'
=>
array
(
'z80'
),
);
// }}}
// Loads English localized strings by default (must go before config.php)
require
'languages/english.php'
;
// Get the user's personalised config (requires the locwebsvnhttp stuff above)
if
(
file_exists
(
'include/config.php'
))
{
require_once
'include/config.php'
;
}
else
{
die
(
'File "include/config.php" does not exist, please create one. The example file "include/distconfig.php" may be copied and modified as needed.'
);
}
$revision
=
@
$_REQUEST
[
'revision'
]
?
$_REQUEST
[
'revision'
]
:
0
;
$revision
=
str_replace
(
' '
,
''
,
$revision
);
//get svn repository configurate;
$config
->
addRepository
(
$svnInfoArr
->
message
->
repository_name
,
$svnInfoArr
->
message
->
subversion_path
,
null
,
$svnInfoArr
->
message
->
username
,
$svnInfoArr
->
message
->
passwd
);
$revArr
=
explode
(
','
,
$revision
);
$currentrev
=
@
$_REQUEST
[
'currentrev'
]
?
(
int
)
$_REQUEST
[
'currentrev'
]
:
$revArr
[
0
];
$post_data
[
'revision'
]
=
$revision
;
$post_data
[
'currentrev'
]
=
$currentrev
;
$config
->
setAdditionalParams
(
$post_data
);
$vars
[
'svnpath'
]
=
$svnInfoArr
->
message
->
subversion_path
;
// Make sure that the input locale is set up correctly
setlocale
(
LC_ALL
,
''
);
// assure that a default timezone is set
if
(
function_exists
(
'date_default_timezone_get'
))
{
$timezone
=
@
date_default_timezone_get
();
date_default_timezone_set
(
$timezone
);
}
$vars
[
'showageinsteadofdate'
]
=
$config
->
showAgeInsteadOfDate
();
// Initialize the version of SVN that is being used by WebSVN internally.
require_once
'include/svnlook.php'
;
$vars
[
'svnversion'
]
=
$config
->
getSubversionVersion
();
// Initialize an array with all query parameters except language and template.
$queryParams
=
$_GET
+
$_POST
;
unset
(
$queryParams
[
'language'
]);
unset
(
$queryParams
[
'template'
]);
$hidden
=
''
;
foreach
(
$queryParams
as
$key
=>
$value
)
{
if
(
is_array
(
$value
))
{
for
(
$i
=
0
;
$i
<
count
(
$value
);
$i
++)
{
$hidden
.=
'<input type="hidden" name="'
.
escape
(
$key
).
'[]" value="'
.
escape
(
$value
[
$i
]).
'"/>'
;
}
}
else
{
$hidden
.=
'<input type="hidden" name="'
.
escape
(
$key
).
'" value="'
.
escape
(
$value
).
'"/>'
;
}
}
// If the request specifies a language, store in a permanent/session cookie.
// Otherwise, check for cookies specifying a particular language.
$language
=
''
;
// RFC 4646 language tag for representing the selected language.
if
(!
empty
(
$_REQUEST
[
'language'
]))
{
$language
=
$_REQUEST
[
'language'
];
setcookie
(
'storedlang'
,
$language
,
time
()
+
(
60
*
60
*
24
*
356
*
10
),
'/'
);
setcookie
(
'storedsesslang'
,
$language
);
}
else
if
(
isset
(
$_COOKIE
[
'storedlang'
]))
{
$language
=
$_COOKIE
[
'storedlang'
];
}
else
if
(
isset
(
$_COOKIE
[
'storedsesslang'
]))
{
$language
=
$_COOKIE
[
'storedsesslang'
];
}
// Load available languages (populates $languages array)
require
'languages/languages.php'
;
// Get the default language as defined by config.php
$defaultLanguage
=
$config
->
getDefaultLanguage
();
if
(!
isset
(
$languages
[
$defaultLanguage
]))
$defaultLanguage
=
'en'
;
// Determine which language to actually use
$language
=
getUserLanguage
(
$languages
,
$defaultLanguage
,
$language
);
$vars
[
'language_code'
]
=
$language
;
// For languages other than English, load translated strings over existing ones.
if
(
$language
!=
'en'
)
require
'languages/'
.
$languages
[
$language
][
0
].
'.php'
;
// Generate the HTML form for selecting a different language
$vars
[
'language_form'
]
=
'<form method="get" action="" id="language">'
.
$hidden
;
$vars
[
'language_select'
]
=
'<select name="language" onchange="javascript:this.form.submit();">'
;
foreach
(
$languages
as
$code
=>
$names
)
{
$sel
=
(
$code
==
$language
)
?
'" selected="selected'
:
''
;
$vars
[
'language_select'
]
.=
'<option value="'
.
$code
.
$sel
.
'">'
.
$names
[
2
].
' - '
.
$names
[
1
].
'</option>'
;
}
$vars
[
'language_select'
]
.=
'</select>'
;
$vars
[
'language_submit'
]
=
'<noscript><input type="submit" value="'
.
$lang
[
'GO'
].
'" /></noscript>'
;
$vars
[
'language_endform'
]
=
'</form>'
;
// Load repository if possible
if
(
$config
->
multiViews
)
{
$rep
=
null
;
// MultiViews has custom code to load a repository
}
else
{
// Load repository matching 'repname' parameter (if set) or the default.
$repname
=
@
$_REQUEST
[
'repname'
];
if
(
isset
(
$repname
))
{
$rep
=
$config
->
findRepository
(
$repname
);
}
else
{
$reps
=
$config
->
getRepositories
();
$rep
=
(
isset
(
$reps
[
0
])
?
$reps
[
0
]
:
null
);
}
// Make sure that the user has set up a repository
if
(
$rep
==
null
)
{
$vars
[
'error'
]
=
$lang
[
'SUPPLYREP'
];
}
else
if
(
is_string
(
$rep
))
{
$vars
[
'error'
]
=
$rep
;
$rep
=
null
;
}
else
{
$vars
[
'repurl'
]
=
$config
->
getURL
(
$rep
,
''
,
'dir'
);
$vars
[
'clientrooturl'
]
=
$rep
->
clientRootURL
;
$vars
[
'repname'
]
=
escape
(
$rep
->
getDisplayName
());
$vars
[
'allowdownload'
]
=
$rep
->
getAllowDownload
();
}
}
// If the request specifies a template, store in a permanent/session cookie.
// Otherwise, check for cookies specifying a particular template.
$template
=
''
;
if
(!
empty
(
$_REQUEST
[
'template'
]))
{
$template
=
$_REQUEST
[
'template'
];
setcookie
(
'storedtemplate'
,
$template
,
time
()
+
(
60
*
60
*
24
*
365
*
10
),
'/'
);
setcookie
(
'storedsesstemplate'
,
$template
);
}
else
if
(
isset
(
$_COOKIE
[
'storedtemplate'
]))
{
$template
=
$_COOKIE
[
'storedtemplate'
];
}
else
if
(
isset
(
$_COOKIE
[
'storedsesstemplate'
]))
{
$template
=
$_COOKIE
[
'storedsesstemplate'
];
}
$templates
=
array
();
// Skip creating template list when selected repository has specific template.
if
(
$rep
==
null
||
$rep
->
templatePath
===
false
)
{
// Get all templates defined in config.php; use last path component as name.
foreach
(
$config
->
templatePaths
as
$path
)
{
$templates
[
$path
]
=
basename
(
$path
);
}
$selectedTemplatePath
=
$config
->
getTemplatePath
();
if
(
$template
!=
''
&&
in_array
(
$template
,
$templates
))
{
$selectedTemplatePath
=
array_search
(
$template
,
$templates
);
$config
->
userTemplate
=
$selectedTemplatePath
;
}
}
// Generate the HTML form for selecting a different template
if
(
count
(
$templates
)
>
1
)
{
$vars
[
'template_form'
]
=
'<form method="get" action="" id="template">'
.
$hidden
;
$vars
[
'template_select'
]
=
'<select name="template" onchange="javascript:this.form.submit();">'
;
natcasesort
(
$templates
);
foreach
(
$templates
as
$path
=>
$name
)
{
$sel
=
(
$path
==
$selectedTemplatePath
)
?
' selected="selected"'
:
''
;
$vars
[
'template_select'
]
.=
'<option value="'
.
$name
.
'"'
.
$sel
.
'>'
.
$name
.
'</option>'
;
}
$vars
[
'template_select'
]
.=
'</select>'
;
$vars
[
'template_submit'
]
=
'<noscript><input type="submit" value="'
.
$lang
[
'GO'
].
'" /></noscript>'
;
$vars
[
'template_endform'
]
=
'</form>'
;
}
else
{
$vars
[
'template_form'
]
=
''
;
$vars
[
'template_select'
]
=
''
;
$vars
[
'template_submit'
]
=
''
;
$vars
[
'template_endform'
]
=
''
;
}
$vars
[
'indexurl'
]
=
$config
->
getURL
(
''
,
''
,
'index'
);
$vars
[
'validationurl'
]
=
getFullURL
(
$_SERVER
[
'SCRIPT_NAME'
]).
'?'
.
buildQuery
(
$queryParams
+
array
(
'template'
=>
$template
,
'language'
=>
$language
),
'%26'
);
// To avoid a possible XSS exploit, need to clean up the passed-in path first
$path
=
!
empty
(
$_REQUEST
[
'path'
])
?
$_REQUEST
[
'path'
]
:
null
;
if
(
$path
===
null
||
$path
===
''
)
$path
=
'/'
;
$vars
[
'safepath'
]
=
escape
(
$path
);
$rev
=
@
$_REQUEST
[
'rev'
]
?
(
int
)
$_REQUEST
[
'rev'
]
:
$revArr
[
0
];
$peg
=
@
$_REQUEST
[
'peg'
]
?
(
int
)
$_REQUEST
[
'peg'
]
:
$rev
;
$php_self
=
$_SERVER
[
'PHP_SELF'
];
$urlFileName
=
basename
(
$php_self
,
".php"
);
if
(
in_array
(
$urlFileName
,
array
(
'revision'
))
&&
!
in_array
(
$rev
,
$revArr
)){
$rev
=
$peg
=
$currentrev
;
}
if
(
$peg
===
0
)
$peg
=
''
;
$passrev
=
$rev
;
$revision_hidden
=
''
;
$revision_hidden
.=
'<input type="hidden" name="repname" value="'
.
$repname
.
'" />'
;
$revision_hidden
.=
'<input type="hidden" name="revision" value="'
.
$revision
.
'" />'
;
$revision_hidden
.=
'<input type="hidden" name="currentrev" id="currentrev" value="'
.
$currentrev
.
'" />'
;
$revision_hidden
.=
'<input type="hidden" name="rid" id="currentrev" value="'
.
$rid
.
'" />'
;
$vars
[
's_revision_form'
]
=
'<form method="get" action="" name="revisionForm" id="revisionForm">'
;
$vars
[
's_revision_select'
]
=
'<select name="rev" id="rev" onchange="javascript:changeCurrentRevision(this.form);">'
;
foreach
(
$revArr
as
$val
){
$sel
=
(
$val
==
$rev
)
?
'" selected="selected'
:
''
;
$vars
[
's_revision_select'
]
.=
'<option value="'
.
$val
.
$sel
.
'">'
.
$val
.
'</option>'
;
}
$vars
[
's_revision_select'
]
.=
'</select>'
;
$vars
[
's_revision_endform'
]
=
$revision_hidden
.
'</form>'
;
if
(!
$config
->
multiViews
)
{
// With MultiViews, wsvn creates the form once the current project is found.
createProjectSelectionForm
();
createRevisionSelectionForm
();
}
// set flag if robots should be blocked
$vars
[
'blockrobots'
]
=
$config
->
areRobotsBlocked
();
$listing
=
array
();
// Set up response headers
header
(
'Content-Type: text/html; charset=UTF-8'
);
header
(
'Content-Language: '
.
$language
);
// Function to create the project selection HTML form
function
createProjectSelectionForm
()
{
global
$config
,
$vars
,
$rep
,
$lang
;
$vars
[
'projects_form'
]
=
''
;
$vars
[
'projects_select'
]
=
''
;
$vars
[
'projects_submit'
]
=
''
;
$vars
[
'projects_endform'
]
=
''
;
if
(!
$config
->
showRepositorySelectionForm
()
||
count
(
$config
->
getRepositories
())
<
2
)
return
;
if
(
$rep
)
{
$currentRepoName
=
$rep
->
getDisplayName
();
$options
=
''
;
}
else
{
$currentRepoName
=
''
;
$options
=
'<option value="" selected="selected"></option>'
;
}
foreach
(
$config
->
getRepositories
()
as
$repository
)
{
if
(
$repository
->
hasReadAccess
(
'/'
,
true
))
{
$repoName
=
$repository
->
getDisplayName
();
$sel
=
(
$repoName
==
$currentRepoName
)
?
' selected="selected"'
:
''
;
$options
.=
'<option value="'
.
escape
(
$repoName
).
'"'
.
$sel
.
'>'
.
escape
(
$repoName
).
'</option>'
;
}
}
if
(
strlen
(
$options
)
===
0
)
return
;
$vars
[
'projects_form'
]
=
'<form method="get" action="" id="project">'
;
if
(
$config
->
multiViews
)
$vars
[
'projects_form'
]
.=
'<input type="hidden" name="op" value="rep" />'
;
$vars
[
'projects_select'
]
=
'<select name="repname" onchange="javascript:this.form.submit();">'
.
$options
.
'</select>'
;
$vars
[
'projects_submit'
]
=
'<noscript><input type="submit" value="'
.
$lang
[
'GO'
].
'" /></noscript>'
;
$vars
[
'projects_endform'
]
=
'</form>'
;
}
// Function to create the revision selection HTML form
function
createRevisionSelectionForm
()
{
global
$config
,
$lang
,
$vars
,
$rep
,
$path
,
$rev
,
$peg
;
if
(
$rep
==
null
)
return
;
$params
=
array
();
if
(!
$config
->
multiViews
)
{
$params
[
'repname'
]
=
$rep
->
getDisplayName
();
if
(
$path
===
null
)
$path
=
!
empty
(
$_REQUEST
[
'path'
])
?
$_REQUEST
[
'path'
]
:
null
;
if
(
$path
&&
$path
!=
'/'
)
$params
[
'path'
]
=
$path
;
}
if
(
$peg
||
$rev
)
$params
[
'peg'
]
=
(
$peg
?
$peg
:
$rev
);
$hidden
=
''
;
foreach
(
$params
as
$key
=>
$value
)
{
$hidden
.=
'<input type="hidden" name="'
.
$key
.
'" value="'
.
escape
(
$value
).
'" />'
;
}
// The blank "action" attribute makes form link back to the containing page.
$vars
[
'revision_form'
]
=
'<form method="get" action="" id="revision">'
.
$hidden
;
if
(
$rev
===
null
)
$rev
=
(
int
)@
$_REQUEST
[
'rev'
];
$vars
[
'revision_input'
]
=
'<input type="text" size="5" name="rev" placeholder="'
.(
$rev
?
$rev
:
'HEAD'
).
'" />'
;
$vars
[
'revision_submit'
]
=
'<input type="submit" value="'
.
$lang
[
'GO'
].
'" />'
;
$vars
[
'revision_endform'
]
=
'</form>'
;
}
function
checkSendingAuthHeader
(
$rep
=
false
)
{
global
$config
;
$auth
=
null
;
if
(
$rep
)
{
$auth
=&
$rep
->
getAuth
();
}
else
{
$auth
=&
$config
->
getAuth
();
}
$loggedin
=
$auth
->
hasUsername
();
/*if (!$loggedin) {
header('WWW-Authenticate: Basic realm="'.str_replace('"', '\"', $auth->getBasicRealm()).'"');
header('HTTP/1.x 401 Unauthorized', true, 401);
} else {*/
header
(
'HTTP/1.x 403 Forbidden'
,
true
,
403
);
//}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Storage Engine
amazon-s3
Storage Format
Raw Data
Storage Handle
phabricator/og/34/pqtnvskxfvcykryh
Default Alt Text
setup.php (23 KB)
Attached To
Mode
T6021: Diffusion marked all as red when compare some files while only several rows are changed
Attached
Detach File
Event Timeline
Log In to Comment