| [ PHPXref.com ] | [ Generated: Sun Jul 20 21:03:16 2008 ] | [ Wikepage 2006.1b ] |
| [ Index ] [ Variables ] [ Functions ] [ Classes ] [ Constants ] [ Statistics ] | ||
[Summary view] [Print] [Text view]
1 <?php 2 /* Cyrocom-WIKEPAGE 2006.1b Opus 8 "Fermi-Dirac" Wiki/Personal Site Engine 3 Copyleft (C) 2006, 2005, 2004. Ankara, Turkey. 4 http://www.wikepage.org/ 5 For latest licence please visit [ www.gnu.org/copyleft/gpl.html ] 6 7 Tipiwiki2 : Copyleft (C) 2003, Andreas Zwinkau, andi@buxach.de, GPL 8 */ 9 10 // Logo or Sitename? 11 // ---------------- 12 // Put // for deactivate logo and remove // infront of $sitename 13 // and $siteheader for activate sitename on page. 14 //$logo="logo.gif"; 15 $sitename="My Site"; 16 $siteheader="Your site's slogan here."; 17 18 // Site Owner 19 // ---------- 20 $author="CyrocomWikepage"; 21 22 // Banner Information 23 // ------------------ 24 $bannerwriting="ADVERTISEMENT"; 25 //Use http:// for external links.. 26 $bannerlink="http://www.wikepage.org/"; 27 // Remove // before $bannerimage for activate banner. 28 $bannerimage="wikebanner.gif"; 29 30 // Theme 31 $theme="2006-1"; 32 33 // Upload config 34 // ------------------ 35 // Set maximum file limit (in bits) (~1Mb in default) 36 $maxlimit = 8500000; 37 // Set allowed extensions (split using comma) 38 $allowed_ext = "jpg,gif,png,jpeg,pdf,doc,xls,ppt,odb,odm,odt,ods,odp"; 39 // Allow file overwrite? yes/no 40 $overwrite = "yes"; 41 42 error_reporting(1); 43 44 // Default Language 45 $lang_def="en"; 46 47 // Timezone according to Greenwich 48 $timezone = -6; 49 50 /* 51 ++++++++ DON'T MAKE CHANGES BELOW HERE ! (unless you're a developer) ++++++++ 52 */ 53 session_start(); 54 55 $wiki_get = "wiki"; 56 $bannerimage = "data/files/".$bannerimage; 57 58 if ($version_info[0] < 5 ) { 59 $servpath = $HTTP_SERVER_VARS['PATH_TRANSLATED']; 60 61 }else{ 62 $servpath = $HTTP_SERVER_VARS['SCRIPT_FILENAME']; 63 } 64 65 $info = pathinfo( $servpath ); 66 $path = $info[ 'dirname' ]; 67 68 if ($version_info[0] < 4 || ($version_info[0] > 3 && $version_info[1] < 1)) { 69 $_POST = $HTTP_POST_VARS; 70 $_GET = $HTTP_GET_VARS; 71 } 72 73 if( isset( $_GET["lng"] ) ){ 74 $lang_def=$_GET["lng"]; 75 $_SESSION['lang'] = $lang_def; 76 } 77 78 if(strlen($_SESSION['lang']) < 5 && strlen($_SESSION['lang']) <> 0){ 79 $lang_def = $_SESSION["lang"]; 80 } 81 82 $langu=$lang_def; 83 84 //if lng variable is wrong, take default 85 @ $fp = fopen("lang/$lang.inc","a", 1); 86 if (!$fp){ 87 $langu=$lang_def; 88 } 89 fclose($fp); 90 91 include ('data/passwd.php'); 92 include('lang/'.$langu.'.inc'); 93 $version_info = explode('.', phpversion()); 94 95 96 // some special chars 97 function htmlchars ($string) { 98 $string= str_replace("&", "&", $string); 99 $string= str_replace("\"", """, $string); 100 $string= str_replace("<", "<", $string); 101 $string= str_replace(">", ">", $string); 102 return $string; 103 } 104 105 // little security enchancement 106 function secure ($string){ 107 $string = str_replace("..","",$string); 108 $string = str_replace("%2E%2E","",$string); 109 $string = str_replace(".%2E","",$string); 110 $string = str_replace("%2E.","",$string); 111 $string = str_replace(".php","_php",$string); 112 $string = str_replace(".phtml","_phtml",$string); 113 $string = str_replace(".php3","_php3",$string); 114 return $string; 115 } 116 117 function delpagefile($depa,$defi){ 118 global $data_dir,$lang; 119 if($depa != ""){ 120 $willdelete="$data_dir/".$depa; 121 @unlink(secure($willdelete)); 122 } 123 124 if($defi != ""){ 125 $willdelete="data/files/".$defi; 126 @unlink(secure($willdelete)); 127 } 128 die($lang['processesok']." <p> <a href=\"index.php\">".$lang['returnhomepage']."</a>"); 129 } 130 131 function findpage() { 132 global $wiki_get, $name, $data_dir, $langu; 133 require ('lang/'.$langu.'.inc'); 134 $name = basename($name); 135 $content = ""; 136 $formular = "<form method=\"get\" action=\"index.php\">\n<input type=\"hidden\" name=\"$wiki_get\" value=\"$name\" /><table id=\"find\">\n<tr>\n<td>".$lang['searchpage']."</td>\n<td><input type=\"text\" name=\"PageName\" /></td>\n</tr><tr>\n<td>".$lang['orsearchcontent']."</td>\n<td><input type=\"text\" name=\"PageContent\" /></td>\n</tr><tr>\n<td colspan=\"2\"><input type=\"submit\" value=\"".$lang['search']."\" /></td>\n</tr>\n</table>\n</form>\n"; 137 // get all pages in folder 138 $handle = opendir("$data_dir"); 139 while( $newdir = readdir($handle) ) 140 if(preg_match("/([\w]+)/",$newdir) ) 141 $allpages[] = $newdir; 142 // Look at wanted pages 143 if( $_GET["PageName"] != "" ) { 144 $pagename = $_GET["PageName"]; 145 $content .= "<h3>".$lang['searchingpage']." $pagename </h3>\n<ul>\n"; 146 foreach ($allpages as $page) 147 if (preg_match("/$pagename/i",$page) ) 148 $content .= "<li><a href=\"index.php?$wiki_get=$page\">$page</a></li>\n"; 149 $content .= "</ul>\n"; 150 } 151 // Look at wanted content 152 if ( $_GET["PageContent"] != "" ) { 153 $pagecontent = $_GET["PageContent"]; 154 $content .= "<h3>".$lang['searchingcontent']." $pagecontent </h3>\n<ul>\n"; 155 foreach ($allpages as $page) { 156 $current = implode( "", file("$data_dir/$page") ); 157 if (preg_match("/$pagecontent/i",$current) ) 158 $content .= "<li><a href=\"index.php?$wiki_get=$page\">$page</a></li>\n"; 159 } 160 $content .= "</ul>\n"; 161 } 162 if( $content == "" ) 163 $content = $formular; 164 return $content; 165 } 166 167 function recentchanges() { 168 global $data_dir, $timezone, $wiki_get; 169 $content = ""; 170 $handle = opendir($data_dir); 171 $allpages = array(); 172 while( $newfile = readdir($handle) ) 173 if(preg_match("/([\w]+)/",$newfile) ) 174 $allpages[] = $newfile; 175 $max_pages = sizeof($allpages) / 3; 176 if( $max_pages < 30 ) 177 $max_pages = 30; 178 $counter = 0; 179 $date = mktime(12,0,0,date('m'),date('d')); 180 $day = 0; 181 while( $counter < $max_pages && $day < 40 ) { 182 $today = array(); 183 foreach( $allpages as $page ) { 184 $filetime = filemtime("$data_dir/$page"); 185 if( (($filetime + 43199) > $date) && (($filetime - 43200) < $date) ) 186 $today[] = $page; 187 } 188 if( sizeof($today) > 0 ) { 189 $content .= "<h3>".date("d.m.Y",$date)."</h3>\n<ul>\n"; 190 foreach( $today as $page ) 191 $content .= "<li><a href=\"index.php?$wiki_get=$page\">$page</a> (".date("G:i", filemtime("$data_dir/$page")+(3600*$timezone) ).")</li>"; 192 $content .= "</ul>\n"; 193 } 194 $counter += sizeof($today); 195 $date -= 86400; 196 $day += 1; 197 } 198 $content .= "</ul>\n"; 199 return $content; 200 } 201 202 function allpages() { 203 global $data_dir, $wiki_get; 204 // list all pages 205 $content = "<ul>\n"; 206 $handle = opendir($data_dir); 207 while( $newfile = readdir($handle) ) 208 if(preg_match("/([\w]+)/",$newfile) ) 209 $allpages[] = $newfile; 210 sort($allpages); 211 foreach( $allpages as $page ) 212 $content .= "<li><a href=\"index.php?$wiki_get=$page\">$page</a></li>\n"; 213 $content .= "</ul>\n"; 214 return $content; 215 } 216 217 function yonetim() { 218 global $data_dir, $wiki_get, $adminpassword, $passworks, $langu, $page_admin; 219 require ('lang/'.$langu.'.inc'); 220 // admin part 221 if($adminpassword){ 222 $content .= "<form method=\"post\" action=\"index.php\">\n<input type=\"hidden\" name=\"wiki\" value=\"".$page_admin."\" /><table id=\"find\">\n<tr><td colspan=\"2\"><b>".$lang['password']."</b></td></tr><tr>\n<td>".$lang['oldadminpass']."</td>\n<td><input type=\"password\" name=\"password0\" /></td>\n</tr><tr><td colspan=\"2\"><b>".$lang['changepass']."</b></td></tr><tr>\n<td>".$lang['adminpass']."</td>\n<td><input type=\"password\" name=\"password1\" /></td>\n</tr><tr>\n<td>".$lang['againadminpass']."</td>\n<td><input type=\"password\" name=\"password2\" /></td>\n</tr><tr><td colspan=\"2\"><b>".$lang['othersett']."</b></td></tr><tr>\n<td>".$lang['passless']."</td>\n<td><input type=\"checkbox\" name=\"passwrks\" value=\"checkbox\" "; 223 if ($passworks == "1"){ 224 $content .= "checked></td>\n</tr>"; 225 }else{ 226 $content .= "></td>\n</tr>"; 227 } 228 229 $content .= "<tr>\n<td>".$lang['delpage']."</td>\n<td><input type=\"text\" name=\"delpage\" /></td>\n</tr><tr>\n<td>".$lang['delfile']."</td>\n<td><input type=\"text\" name=\"delfile\" /></td>\n</tr><tr>\n<td colspan=\"2\"><input type=\"submit\" value=\"".$lang['change']."\" /></td>\n</tr>\n</table>\n</form>\n"; 230 }else{ 231 $content .= "<form method=\"post\" action=\"index.php\">\n<input type=\"hidden\" name=\"wiki\" value=\"".$page_admin."\" /><table id=\"find\">\n<tr>\n<tr><td colspan=\"2\"><b>".$lang['setpass']."</b></td></tr><td>".$lang['adminpass']."</td>\n<td><input type=\"password\" name=\"password1\" /></td>\n</tr><tr>\n<td>".$lang['againadminpass']."</td>\n<td><input type=\"password\" name=\"password2\" /></td>\n</tr><tr>\n<td colspan=\"2\"><input type=\"submit\" value=\"".$lang['change']."\" /></td>\n</tr>\n</table>\n</form>\n"; 232 } 233 234 235 return $content; 236 } 237 238 // Wiki Style to HTML 239 function filter($raw) { 240 global $wiki_get, $langu; 241 require ('lang/'.$langu.'.inc'); 242 $filtered = stripslashes(htmlchars("\n\n".$raw)); 243 // php-special 244 $filtered = str_replace("\r\n","\n",$filtered); 245 // [ url | link ] outlinks 246 $filtered = preg_replace("/\[((http|ftp|https|mailto):\/\/[\w\.\:\@\?~\%=\+\-\/]+)\|([\w ]+)\]/i","<a href=\"\\1\" rel=\"nofollow\">\\3 <img src=\"data/files/ext.gif\" border=\"0\" class=\"wikiimage\" /></a>", $filtered); 247 $filtered = preg_replace("/\[([\w\.\:\~@\?~\%=\+\-\/]+)\|([\w ]+)\]/i","<a href=\"\\1\">\\2</a>", $filtered); 248 // linked picture [ url | [picture] ] 249 $filtered = preg_replace("/\[((http|ftp|https|mailto):\/\/[\w\.\:\@\?~\%=\+\-\/]+)\|([\w\.:\/~@\,\?\%=\+\-;#&]+\.(png|gif|jpg))\]/i","<a href=\"\\1\" rel=\"nofollow\"><img src=\"\\3\" border=\"0\" class=\"wikiimage\" /></a>", $filtered); 250 $filtered = preg_replace("/\[([\w\.\:\~@\?~\%=\+\-\/]+)\|([\w\.:\/~@\,\?\%=\+\-;#&]+\.(png|gif|jpg))\]/i","<a href=\"\\1\" rel=\"nofollow\"><img src=\"data/files/\\2\" border=\"0\" class=\"wikiimage\" /></a>", $filtered); 251 // pictures [ url ] 252 $filtered = preg_replace("/\[((http|ftp|https|mailto):\/\/[\w\.\:\@\?~\%=\+\-\/]+\.(png|gif|jpg))\]/","<img src=\"\\1\" border=\"0\" class=\"wikiimage\" />",$filtered); 253 $filtered = preg_replace("/\[([\w\.:\/~@\,\?\%=\+\-;#&]+\.(png|gif|jpg))\]/","<img src=\"data/files/\\1\" border=\"0\" class=\"wikiimage\" />",$filtered); 254 // plain URLs 255 $filtered = preg_replace("/\[((http|ftp|https|mailto):\/\/[\w\.:\/~@\,\?\%=\+\-;#&]+)\|([\w\:\#\- ]+)\]/i","<a href=\"\\1\">\\3</a>", $filtered); 256 // []'ed words 257 $filtered = preg_replace("/\[([\w]+)\]/","<a href=\"index.php?$wiki_get=\\1\">\\1</a>", $filtered); 258 // Headers <h1><h2><h3> 259 $filtered = preg_replace("/\n(!!!)(.+)\n/","</p>\n<h3>\\2</h3>\n<p>",$filtered); 260 $filtered = preg_replace("/\n(!!)(.+)\n/","</p>\n<h2>\\2</h2>\n<p>",$filtered); 261 $filtered = preg_replace("/\n(!)(.+)\n/","</p>\n<h1>\\2</h1>\n<p>",$filtered); 262 // Decorations (bold, italic, underlined, boxed) 263 $filtered = preg_replace("/\*\*(.+)\*\*/U","<strong>\\1</strong>", $filtered); 264 $filtered = preg_replace("/__(.+)__/U","<u>\\1</u>", $filtered); 265 $filtered = preg_replace("/\'\'(.+)\'\'/U","<em>\\1</em>", $filtered); 266 $filtered = preg_replace("/\:\:(.+)\:\:/U","<span class=\"box\">\\1</span>", $filtered); 267 // horizontal line 268 $filtered = preg_replace("/\n---.*\n/","\n<hr class=\"wiki\"/>\n",$filtered); 269 // lists <ul> 270 $filtered = preg_replace("/(?<=[\n>])\* (.+)\n/","<li>\\1</li>",$filtered); 271 $filtered = preg_replace("/<li>(.+)\<\/li>/","</p><ul>\\0</ul><p>",$filtered); 272 // take out pre and post new lines 273 $filtered = preg_replace("/^(\n+)/","",$filtered); 274 $filtered = preg_replace("/\n{3,}/","\n\n",$filtered); 275 // <pre> blocks 276 $filtered = preg_replace("/(?<=\n) (.*)(\n)/","<pre>\\1</pre>", $filtered); 277 // html new lines <br /> 278 $filtered = str_replace("\n","<br />\n",$filtered); 279 $filtered = str_replace("</pre><pre>","\n", $filtered); 280 // add specials, control first for improper usage 281 if( strpos($filtered, "<".$lang['abbrev_findpage'].">") !== FALSE ) 282 $filtered = str_replace("<".$lang['abbrev_findpage'].">", findpage(), $filtered); 283 if( strpos($filtered, "<".$lang['abbrev_admin'].">") !== FALSE ) 284 $filtered = str_replace("<".$lang['abbrev_admin'].">", yonetim(), $filtered); 285 if( strpos($filtered, "<".$lang['abbrev_allpages'].">") !== FALSE ) 286 $filtered = str_replace("<".$lang['abbrev_allpages'].">", allpages(), $filtered); 287 if( strpos($filtered, "<".$lang['abbrev_recentchanges'].">") !== FALSE ) 288 $filtered = str_replace("<".$lang['abbrev_recentchanges'].">", recentchanges(), $filtered); 289 //html table 290 $filtered = preg_replace("/\|\|\|\|(.+)\|\|\|\|/U","<table><tr><td>\\1</td></tr></table>", $filtered); 291 $filtered = preg_replace("/(.+)\|\|/U","\\1</td><td>", $filtered); 292 $filtered = preg_replace("/<\/table><br \/>\n<table>/","", $filtered); 293 //font color 294 $filtered = preg_replace("/\#\#(.+)\#\#/U","<font color=\\1>", $filtered); 295 $filtered = preg_replace("/(.+)\#\#/U","\\1</font>", $filtered); 296 // html beauty 297 $filtered = str_replace("</li>","</li>\n",$filtered); 298 $filtered = str_replace("ul>","ul>\n",$filtered); 299 $filtered = str_replace("<br />\n<h","\n<h", $filtered); 300 $filtered = preg_replace("/(<\/h[1-3]>)<br \/>\n/","\\1\n", $filtered); 301 $filtered = str_replace("<p></p>","",$filtered); 302 303 304 return $filtered; 305 } 306 307 // output of program 308 function output($data, $file) { 309 global $sitename, $siteheader, $bannerwriting, $bannerimage, $lang, $langu, $encoding, $author, $logo, $theme, $passworks; 310 require ('lang/'.$langu.'.inc'); 311 $pagename = basename($file); 312 $modified = ""; 313 if( file_exists($file) ) { 314 $modified = date("H:i:s d/m/Y",filemtime($file)); 315 } 316 $data = str_replace("<!--lang_edit-->",$lang['edit'],$data); 317 $data = str_replace("<!--theme-->",$theme,$data); 318 $data = str_replace("<!--lang_recent-->",$lang['recent'],$data); 319 $data = str_replace("<!--lang_advsearch-->",$lang['advsearch'],$data); 320 $data = str_replace("<!--lang_all-->",$lang['all'],$data); 321 $data = str_replace("<!--lang_admin-->",$lang['admin'],$data); 322 $data = str_replace("<!--lang_index-->",$lang['index'],$data); 323 $data = str_replace("<!--lang_lastupdate-->",$lang['lastupdate'],$data); 324 $data = str_replace("<!--lang_editing-->",$lang['editing'],$data); 325 if($passworks == "0"){ 326 $buf=$lang['pass']."<input type=\"password\" name=\"mypassword\">"; 327 }else{ 328 $buf=""; 329 } 330 $data = str_replace("<!--lang_pass-->",$buf,$data); 331 $data = str_replace("<!--lang_mainmenu-->",$lang['mainmenu'],$data); 332 $data = str_replace("<!--lang_pagecontents-->",$lang['pagecontents'],$data); 333 $data = str_replace("<!--lang_search-->",$lang['search'],$data); 334 $data = str_replace("<!--lang_navi-->",$lang['navi'],$data); 335 $data = str_replace("<!--copyleft-->",$lang['copyleft'],$data); 336 $data = str_replace("<!--encoding-->",$encoding,$data); 337 $data = str_replace("<!--author-->",$author,$data); 338 $data = str_replace("<!--wikiname-->",$pagename,$data); 339 $data = str_replace("<!--sitename-->",$sitename,$data); 340 $data = str_replace("<!--siteheader-->",$siteheader,$data); 341 $data = str_replace("<!--bannerwriting-->",$bannerwriting,$data); 342 $data = str_replace("<!--bannerimage-->",$bannerimage,$data); 343 $data = str_replace("<!--lastupdate-->",$modified,$data); 344 $data = str_replace("<!--logo-->",$logo,$data); 345 $data = str_replace("<!--writingrules-->",$lang['writingrules'],$data); 346 echo $data; 347 } 348 // load page content 349 function showpage($file) { 350 global $theme, $wiki_get, $langu; 351 $content = ""; 352 $menucontent =""; 353 // load file 354 $raw = implode("", file($file) ); 355 // load menu 356 $raw2 = implode("", file('data/'.$langu.'_menu.txt') ); 357 // filter! 358 $content = filter( $raw ) . $content; 359 $menucontent = filter( $raw2 ) . $menucontent; 360 // load template 361 $template = implode( "", file('theme/'.$theme.'/index.html') ); 362 $whole = str_replace("<!--wikicontent-->",$content,$template); 363 $whole = str_replace("<!--menucontent-->",$menucontent,