Revision 1301
Added by Luisehahne over 15 years ago
| branches/2.8.x/CHANGELOG | ||
|---|---|---|
| 11 | 11 |
! = Update/Change |
| 12 | 12 |
|
| 13 | 13 |
------------------------------------- 2.8.1 ------------------------------------- |
| 14 |
07-Mar-2010 Dietmar Woellbrink (Luisehahne) |
|
| 15 |
# Tickets #932 change deprecated eregi functions |
|
| 16 |
# Tickets #948 fixed Multiple use of same parametrised droplet - parameter handling |
|
| 17 |
! Upgrade Droplets to Version 1.0.3 |
|
| 18 |
! update some headerinfos |
|
| 19 |
! non existing pages will be created if clicking save in page settings |
|
| 20 |
07-Mar-2010 Dietmar Woellbrink (Luisehahne) |
|
| 14 | 21 |
# Ticket #950 missing classes in theme.css ( Tks to Ruebenwurzel ) |
| 15 | 22 |
! update jquery-min.js to version 1.4.2 |
| 16 | 23 |
20-Feb-2010 Dietmar Woellbrink (Luisehahne) |
| branches/2.8.x/wb/include/phpmailer/class.phpmailer.php | ||
|---|---|---|
| 583 | 583 |
* @access private |
| 584 | 584 |
* @return bool |
| 585 | 585 |
*/ |
| 586 |
function SmtpConnect() {
|
|
| 587 |
if($this->smtp == NULL) {
|
|
| 586 |
function SmtpConnect() |
|
| 587 |
{
|
|
| 588 |
if($this->smtp == NULL) |
|
| 589 |
{
|
|
| 588 | 590 |
$this->smtp = new SMTP(); |
| 589 | 591 |
} |
| 590 | 592 |
|
| ... | ... | |
| 594 | 596 |
$connection = ($this->smtp->Connected()); |
| 595 | 597 |
|
| 596 | 598 |
/* Retry while there is no connection */ |
| 597 |
while($index < count($hosts) && $connection == false) {
|
|
| 599 |
while($index < count($hosts) && $connection == false) |
|
| 600 |
{
|
|
| 598 | 601 |
$hostinfo = array(); |
| 599 |
if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) {
|
|
| 602 |
if(preg_match('/(.+):([0-9]+)/', $hosts[$index], $hostinfo))
|
|
| 603 |
{
|
|
| 600 | 604 |
$host = $hostinfo[1]; |
| 601 | 605 |
$port = $hostinfo[2]; |
| 602 | 606 |
} else {
|
| branches/2.8.x/wb/include/captcha/captchas/ttf_image.php | ||
|---|---|---|
| 1 |
<?php |
|
| 2 |
|
|
| 3 |
// $Id$ |
|
| 4 |
|
|
| 5 |
/* |
|
| 6 |
|
|
| 7 |
Website Baker Project <http://www.websitebaker.org/> |
|
| 8 |
Copyright (C) 2004-2009, Ryan Djurovich |
|
| 9 |
|
|
| 10 |
Website Baker is free software; you can redistribute it and/or modify |
|
| 11 |
it under the terms of the GNU General Public License as published by |
|
| 12 |
the Free Software Foundation; either version 2 of the License, or |
|
| 13 |
(at your option) any later version. |
|
| 14 |
|
|
| 15 |
Website Baker is distributed in the hope that it will be useful, |
|
| 16 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 17 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 18 |
GNU General Public License for more details. |
|
| 19 |
|
|
| 20 |
You should have received a copy of the GNU General Public License |
|
| 21 |
along with Website Baker; if not, write to the Free Software |
|
| 22 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
| 23 |
|
|
| 24 |
*/ |
|
| 25 |
|
|
| 26 |
require_once("../../../config.php");
|
|
| 27 |
require_once(WB_PATH.'/include/captcha/captcha.php'); |
|
| 28 |
|
|
| 29 |
if(!isset($_SESSION['captcha_time'])) |
|
| 30 |
exit; |
|
| 31 |
unset($_SESSION['captcha_time']); |
|
| 32 |
|
|
| 33 |
// get lists of fonts and backgrounds |
|
| 34 |
require_once(WB_PATH.'/framework/functions.php'); |
|
| 35 |
$t_fonts = file_list(WB_PATH.'/include/captcha/fonts'); |
|
| 36 |
$t_bgs = file_list(WB_PATH.'/include/captcha/backgrounds'); |
|
| 37 |
$fonts = array(); |
|
| 38 |
$bgs = array(); |
|
| 39 |
foreach($t_fonts as $file) if(eregi('\.ttf$',$file)) $fonts[]=$file;
|
|
| 40 |
foreach($t_bgs as $file) if(eregi('\.png$',$file)) $bgs[]=$file;
|
|
| 41 |
|
|
| 42 |
// make random string |
|
| 43 |
if(!function_exists('randomString')) {
|
|
| 44 |
function randomString($len) {
|
|
| 45 |
list($usec, $sec) = explode(' ', microtime());
|
|
| 46 |
mt_srand((float)$sec + ((float)$usec * 100000)); |
|
| 47 |
//$possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghkmnpqrstuvwxyz23456789"; |
|
| 48 |
$possible="abdfhkrsvwxz23456789"; |
|
| 49 |
$str=""; |
|
| 50 |
while(strlen($str)<$len) {
|
|
| 51 |
$str.=substr($possible,(mt_rand()%(strlen($possible))),1); |
|
| 52 |
} |
|
| 53 |
return($str); |
|
| 54 |
} |
|
| 55 |
} |
|
| 56 |
$text = randomString(5); // number of characters |
|
| 57 |
$_SESSION['captcha'] = $text; |
|
| 58 |
|
|
| 59 |
// choose a font and background |
|
| 60 |
$font = $fonts[array_rand($fonts)]; |
|
| 61 |
$bg = $bgs[array_rand($bgs)]; |
|
| 62 |
// get image-dimensions |
|
| 63 |
list($width, $height, $type, $attr) = getimagesize($bg); |
|
| 64 |
|
|
| 65 |
// create reload-image |
|
| 66 |
$reload = ImageCreateFromPNG(WB_PATH.'/include/captcha/reload_140_40.png'); // reload-overlay |
|
| 67 |
|
|
| 68 |
if(mt_rand(0,2)==0) { // 1 out of 3
|
|
| 69 |
|
|
| 70 |
// draw each character individualy |
|
| 71 |
$image = ImageCreateFromPNG($bg); // background image |
|
| 72 |
$grey = mt_rand(0,50); |
|
| 73 |
$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color |
|
| 74 |
$ttf = $font; |
|
| 75 |
$ttfsize = 25; // fontsize |
|
| 76 |
$count = 0; |
|
| 77 |
$image_failed = true; |
|
| 78 |
$angle = mt_rand(-15,15); |
|
| 79 |
$x = mt_rand(10,25); |
|
| 80 |
$y = mt_rand($height-10,$height-2); |
|
| 81 |
do {
|
|
| 82 |
for($i=0;$i<strlen($text);$i++) {
|
|
| 83 |
$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text{$i});
|
|
| 84 |
$angle = mt_rand(-15,15); |
|
| 85 |
$x = mt_rand($res[4],$res[4]+10); |
|
| 86 |
$y = mt_rand($height-15,$height-5); |
|
| 87 |
} |
|
| 88 |
if($res[4] > $width) {
|
|
| 89 |
$image_failed = true; |
|
| 90 |
} else {
|
|
| 91 |
$image_failed = false; |
|
| 92 |
} |
|
| 93 |
if(++$count > 4) // too many tries! Use the image |
|
| 94 |
break; |
|
| 95 |
} while($image_failed); |
|
| 96 |
|
|
| 97 |
} else {
|
|
| 98 |
|
|
| 99 |
// draw whole string at once |
|
| 100 |
$image_failed = true; |
|
| 101 |
$count=0; |
|
| 102 |
do {
|
|
| 103 |
$image = ImageCreateFromPNG($bg); // background image |
|
| 104 |
$grey = mt_rand(0,50); |
|
| 105 |
$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color |
|
| 106 |
$ttf = $font; |
|
| 107 |
$ttfsize = 25; // fontsize |
|
| 108 |
$angle = mt_rand(0,5); |
|
| 109 |
$x = mt_rand(5,30); |
|
| 110 |
$y = mt_rand($height-10,$height-2); |
|
| 111 |
$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text); |
|
| 112 |
// check if text fits into the image |
|
| 113 |
if(($res[0]>0 && $res[0]<$width) && ($res[1]>0 && $res[1]<$height) && |
|
| 114 |
($res[2]>0 && $res[2]<$width) && ($res[3]>0 && $res[3]<$height) && |
|
| 115 |
($res[4]>0 && $res[4]<$width) && ($res[5]>0 && $res[5]<$height) && |
|
| 116 |
($res[6]>0 && $res[6]<$width) && ($res[7]>0 && $res[7]<$height) |
|
| 117 |
) {
|
|
| 118 |
$image_failed = false; |
|
| 119 |
} |
|
| 120 |
if(++$count > 4) // too many tries! Use the image |
|
| 121 |
break; |
|
| 122 |
} while($image_failed); |
|
| 123 |
|
|
| 124 |
} |
|
| 125 |
|
|
| 126 |
imagealphablending($reload, TRUE); |
|
| 127 |
imagesavealpha($reload, TRUE); |
|
| 128 |
|
|
| 129 |
// overlay |
|
| 130 |
imagecopy($reload, $image, 0,0,0,0, 140,40); |
|
| 131 |
imagedestroy($image); |
|
| 132 |
$image = $reload; |
|
| 133 |
|
|
| 134 |
captcha_header(); |
|
| 135 |
ob_start(); |
|
| 136 |
imagepng($image); |
|
| 137 |
header("Content-Length: ".ob_get_length());
|
|
| 138 |
ob_end_flush(); |
|
| 139 |
imagedestroy($image); |
|
| 140 |
|
|
| 1 |
<?php
|
|
| 2 |
|
|
| 3 |
// $Id$
|
|
| 4 |
|
|
| 5 |
/*
|
|
| 6 |
|
|
| 7 |
Website Baker Project <http://www.websitebaker.org/>
|
|
| 8 |
Copyright (C) 2004-2009, Ryan Djurovich
|
|
| 9 |
|
|
| 10 |
Website Baker is free software; you can redistribute it and/or modify
|
|
| 11 |
it under the terms of the GNU General Public License as published by
|
|
| 12 |
the Free Software Foundation; either version 2 of the License, or
|
|
| 13 |
(at your option) any later version.
|
|
| 14 |
|
|
| 15 |
Website Baker is distributed in the hope that it will be useful,
|
|
| 16 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 17 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 18 |
GNU General Public License for more details.
|
|
| 19 |
|
|
| 20 |
You should have received a copy of the GNU General Public License
|
|
| 21 |
along with Website Baker; if not, write to the Free Software
|
|
| 22 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
| 23 |
|
|
| 24 |
*/
|
|
| 25 |
|
|
| 26 |
require_once("../../../config.php");
|
|
| 27 |
require_once(WB_PATH.'/include/captcha/captcha.php');
|
|
| 28 |
|
|
| 29 |
if(!isset($_SESSION['captcha_time']))
|
|
| 30 |
exit;
|
|
| 31 |
unset($_SESSION['captcha_time']);
|
|
| 32 |
|
|
| 33 |
// get lists of fonts and backgrounds
|
|
| 34 |
require_once(WB_PATH.'/framework/functions.php');
|
|
| 35 |
$t_fonts = file_list(WB_PATH.'/include/captcha/fonts');
|
|
| 36 |
$t_bgs = file_list(WB_PATH.'/include/captcha/backgrounds');
|
|
| 37 |
$fonts = array();
|
|
| 38 |
$bgs = array();
|
|
| 39 |
foreach($t_fonts as $file) { if(preg_match('/\.ttf/',$file)) { $fonts[]=$file; } }
|
|
| 40 |
foreach($t_bgs as $file) { if(preg_match('/\.png/',$file)) { $bgs[]=$file; } }
|
|
| 41 |
|
|
| 42 |
// make random string
|
|
| 43 |
if(!function_exists('randomString')) {
|
|
| 44 |
function randomString($len) {
|
|
| 45 |
list($usec, $sec) = explode(' ', microtime());
|
|
| 46 |
mt_srand((float)$sec + ((float)$usec * 100000));
|
|
| 47 |
//$possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghkmnpqrstuvwxyz23456789";
|
|
| 48 |
$possible="abdfhkrsvwxz23456789";
|
|
| 49 |
$str="";
|
|
| 50 |
while(strlen($str)<$len) {
|
|
| 51 |
$str.=substr($possible,(mt_rand()%(strlen($possible))),1);
|
|
| 52 |
}
|
|
| 53 |
return($str);
|
|
| 54 |
}
|
|
| 55 |
}
|
|
| 56 |
$text = randomString(5); // number of characters
|
|
| 57 |
$_SESSION['captcha'] = $text;
|
|
| 58 |
|
|
| 59 |
// choose a font and background
|
|
| 60 |
$font = $fonts[array_rand($fonts)];
|
|
| 61 |
$bg = $bgs[array_rand($bgs)];
|
|
| 62 |
// get image-dimensions
|
|
| 63 |
list($width, $height, $type, $attr) = getimagesize($bg);
|
|
| 64 |
|
|
| 65 |
// create reload-image
|
|
| 66 |
$reload = ImageCreateFromPNG(WB_PATH.'/include/captcha/reload_140_40.png'); // reload-overlay
|
|
| 67 |
|
|
| 68 |
if(mt_rand(0,2)==0) { // 1 out of 3
|
|
| 69 |
|
|
| 70 |
// draw each character individualy
|
|
| 71 |
$image = ImageCreateFromPNG($bg); // background image
|
|
| 72 |
$grey = mt_rand(0,50);
|
|
| 73 |
$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color
|
|
| 74 |
$ttf = $font;
|
|
| 75 |
$ttfsize = 25; // fontsize
|
|
| 76 |
$count = 0;
|
|
| 77 |
$image_failed = true;
|
|
| 78 |
$angle = mt_rand(-15,15);
|
|
| 79 |
$x = mt_rand(10,25);
|
|
| 80 |
$y = mt_rand($height-10,$height-2);
|
|
| 81 |
do {
|
|
| 82 |
for($i=0;$i<strlen($text);$i++) {
|
|
| 83 |
$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text{$i});
|
|
| 84 |
$angle = mt_rand(-15,15);
|
|
| 85 |
$x = mt_rand($res[4],$res[4]+10);
|
|
| 86 |
$y = mt_rand($height-15,$height-5);
|
|
| 87 |
}
|
|
| 88 |
if($res[4] > $width) {
|
|
| 89 |
$image_failed = true;
|
|
| 90 |
} else {
|
|
| 91 |
$image_failed = false;
|
|
| 92 |
}
|
|
| 93 |
if(++$count > 4) // too many tries! Use the image
|
|
| 94 |
break;
|
|
| 95 |
} while($image_failed);
|
|
| 96 |
|
|
| 97 |
} else {
|
|
| 98 |
|
|
| 99 |
// draw whole string at once
|
|
| 100 |
$image_failed = true;
|
|
| 101 |
$count=0;
|
|
| 102 |
do {
|
|
| 103 |
$image = ImageCreateFromPNG($bg); // background image
|
|
| 104 |
$grey = mt_rand(0,50);
|
|
| 105 |
$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color
|
|
| 106 |
$ttf = $font;
|
|
| 107 |
$ttfsize = 25; // fontsize
|
|
| 108 |
$angle = mt_rand(0,5);
|
|
| 109 |
$x = mt_rand(5,30);
|
|
| 110 |
$y = mt_rand($height-10,$height-2);
|
|
| 111 |
$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text);
|
|
| 112 |
// check if text fits into the image
|
|
| 113 |
if(($res[0]>0 && $res[0]<$width) && ($res[1]>0 && $res[1]<$height) &&
|
|
| 114 |
($res[2]>0 && $res[2]<$width) && ($res[3]>0 && $res[3]<$height) &&
|
|
| 115 |
($res[4]>0 && $res[4]<$width) && ($res[5]>0 && $res[5]<$height) &&
|
|
| 116 |
($res[6]>0 && $res[6]<$width) && ($res[7]>0 && $res[7]<$height)
|
|
| 117 |
) {
|
|
| 118 |
$image_failed = false;
|
|
| 119 |
}
|
|
| 120 |
if(++$count > 4) // too many tries! Use the image
|
|
| 121 |
break;
|
|
| 122 |
} while($image_failed);
|
|
| 123 |
|
|
| 124 |
}
|
|
| 125 |
|
|
| 126 |
imagealphablending($reload, TRUE);
|
|
| 127 |
imagesavealpha($reload, TRUE);
|
|
| 128 |
|
|
| 129 |
// overlay
|
|
| 130 |
imagecopy($reload, $image, 0,0,0,0, 140,40);
|
|
| 131 |
imagedestroy($image);
|
|
| 132 |
$image = $reload;
|
|
| 133 |
|
|
| 134 |
captcha_header();
|
|
| 135 |
ob_start();
|
|
| 136 |
imagepng($image);
|
|
| 137 |
header("Content-Length: ".ob_get_length());
|
|
| 138 |
ob_end_flush();
|
|
| 139 |
imagedestroy($image);
|
|
| 140 |
|
|
| 141 | 141 |
?> |
| 142 | 142 | |
| branches/2.8.x/wb/include/captcha/captchas/calc_ttf_image.php | ||
|---|---|---|
| 1 |
<?php |
|
| 2 |
|
|
| 3 |
// $Id$ |
|
| 4 |
|
|
| 5 |
/* |
|
| 6 |
|
|
| 7 |
Website Baker Project <http://www.websitebaker.org/> |
|
| 8 |
Copyright (C) 2004-2009, Ryan Djurovich |
|
| 9 |
|
|
| 10 |
Website Baker is free software; you can redistribute it and/or modify |
|
| 11 |
it under the terms of the GNU General Public License as published by |
|
| 12 |
the Free Software Foundation; either version 2 of the License, or |
|
| 13 |
(at your option) any later version. |
|
| 14 |
|
|
| 15 |
Website Baker is distributed in the hope that it will be useful, |
|
| 16 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 17 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 18 |
GNU General Public License for more details. |
|
| 19 |
|
|
| 20 |
You should have received a copy of the GNU General Public License |
|
| 21 |
along with Website Baker; if not, write to the Free Software |
|
| 22 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
| 23 |
|
|
| 24 |
*/ |
|
| 25 |
|
|
| 26 |
require_once("../../../config.php");
|
|
| 27 |
require_once(WB_PATH.'/include/captcha/captcha.php'); |
|
| 28 |
|
|
| 29 |
if(!isset($_SESSION['captcha_time'])) |
|
| 30 |
exit; |
|
| 31 |
unset($_SESSION['captcha_time']); |
|
| 32 |
|
|
| 33 |
// get lists of fonts and backgrounds |
|
| 34 |
require_once(WB_PATH.'/framework/functions.php'); |
|
| 35 |
$t_fonts = file_list(WB_PATH.'/include/captcha/fonts'); |
|
| 36 |
$t_bgs = file_list(WB_PATH.'/include/captcha/backgrounds'); |
|
| 37 |
$fonts = array(); |
|
| 38 |
$bgs = array(); |
|
| 39 |
foreach($t_fonts as $file) if(eregi('\.ttf$',$file)) $fonts[]=$file;
|
|
| 40 |
foreach($t_bgs as $file) if(eregi('\.png$',$file)) $bgs[]=$file;
|
|
| 41 |
|
|
| 42 |
// Captcha |
|
| 43 |
$_SESSION['captcha'] = ''; |
|
| 44 |
mt_srand((double)microtime()*1000000); |
|
| 45 |
$n = mt_rand(1,3); |
|
| 46 |
switch ($n) {
|
|
| 47 |
case 1: |
|
| 48 |
$x = mt_rand(1,9); |
|
| 49 |
$y = mt_rand(1,9); |
|
| 50 |
$_SESSION['captcha'] = $x + $y; |
|
| 51 |
$cap = "$x+$y"; |
|
| 52 |
break; |
|
| 53 |
case 2: |
|
| 54 |
$x = mt_rand(10,20); |
|
| 55 |
$y = mt_rand(1,9); |
|
| 56 |
$_SESSION['captcha'] = $x - $y; |
|
| 57 |
$cap = "$x-$y"; |
|
| 58 |
break; |
|
| 59 |
case 3: |
|
| 60 |
$x = mt_rand(2,10); |
|
| 61 |
$y = mt_rand(2,5); |
|
| 62 |
$_SESSION['captcha'] = $x * $y; |
|
| 63 |
$cap = "$x*$y"; |
|
| 64 |
break; |
|
| 65 |
} |
|
| 66 |
$text = $cap; |
|
| 67 |
|
|
| 68 |
// choose a font and background |
|
| 69 |
$font = $fonts[array_rand($fonts)]; |
|
| 70 |
$bg = $bgs[array_rand($bgs)]; |
|
| 71 |
// get image-dimensions |
|
| 72 |
list($width, $height, $type, $attr) = getimagesize($bg); |
|
| 73 |
|
|
| 74 |
// create reload-image |
|
| 75 |
$reload = ImageCreateFromPNG(WB_PATH.'/include/captcha/reload_140_40.png'); // reload-overlay |
|
| 76 |
|
|
| 77 |
if(mt_rand(0,2)==0) { // 1 out of 3
|
|
| 78 |
|
|
| 79 |
// draw each character individualy |
|
| 80 |
$image = ImageCreateFromPNG($bg); // background image |
|
| 81 |
$grey = mt_rand(0,50); |
|
| 82 |
$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color |
|
| 83 |
$ttf = $font; |
|
| 84 |
$ttfsize = 25; // fontsize |
|
| 85 |
$count = 0; |
|
| 86 |
$image_failed = true; |
|
| 87 |
$angle = mt_rand(-10,10); |
|
| 88 |
$x = mt_rand(20,35); |
|
| 89 |
$y = mt_rand($height-10,$height-2); |
|
| 90 |
do {
|
|
| 91 |
for($i=0;$i<strlen($text);$i++) {
|
|
| 92 |
$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text{$i});
|
|
| 93 |
$angle = mt_rand(-10,10); |
|
| 94 |
$x = mt_rand($res[4],$res[4]+10); |
|
| 95 |
$y = mt_rand($height-12,$height-7); |
|
| 96 |
} |
|
| 97 |
if($res[4] > $width) {
|
|
| 98 |
$image_failed = true; |
|
| 99 |
} else {
|
|
| 100 |
$image_failed = false; |
|
| 101 |
} |
|
| 102 |
if(++$count > 4) // too many tries! Use the image |
|
| 103 |
break; |
|
| 104 |
} while($image_failed); |
|
| 105 |
|
|
| 106 |
} else {
|
|
| 107 |
|
|
| 108 |
// draw whole string at once |
|
| 109 |
$image_failed = true; |
|
| 110 |
$count=0; |
|
| 111 |
do {
|
|
| 112 |
$image = ImageCreateFromPNG($bg); // background image |
|
| 113 |
$grey = mt_rand(0,50); |
|
| 114 |
$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color |
|
| 115 |
$ttf = $font; |
|
| 116 |
$ttfsize = 25; // fontsize |
|
| 117 |
$angle = mt_rand(0,5); |
|
| 118 |
$x = mt_rand(20,35); |
|
| 119 |
$y = mt_rand($height-10,$height-2); |
|
| 120 |
$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text); |
|
| 121 |
// check if text fits into the image |
|
| 122 |
if(($res[0]>0 && $res[0]<$width) && ($res[1]>0 && $res[1]<$height) && |
|
| 123 |
($res[2]>0 && $res[2]<$width) && ($res[3]>0 && $res[3]<$height) && |
|
| 124 |
($res[4]>0 && $res[4]<$width) && ($res[5]>0 && $res[5]<$height) && |
|
| 125 |
($res[6]>0 && $res[6]<$width) && ($res[7]>0 && $res[7]<$height) |
|
| 126 |
) {
|
|
| 127 |
$image_failed = false; |
|
| 128 |
} |
|
| 129 |
if(++$count > 4) // too many tries! Use the image |
|
| 130 |
break; |
|
| 131 |
} while($image_failed); |
|
| 132 |
|
|
| 133 |
} |
|
| 134 |
|
|
| 135 |
imagealphablending($reload, TRUE); |
|
| 136 |
imagesavealpha($reload, TRUE); |
|
| 137 |
|
|
| 138 |
// overlay |
|
| 139 |
imagecopy($reload, $image, 0,0,0,0, 140,40); |
|
| 140 |
imagedestroy($image); |
|
| 141 |
$image = $reload; |
|
| 142 |
|
|
| 143 |
captcha_header(); |
|
| 144 |
ob_start(); |
|
| 145 |
imagepng($image); |
|
| 146 |
header("Content-Length: ".ob_get_length());
|
|
| 147 |
ob_end_flush(); |
|
| 148 |
imagedestroy($image); |
|
| 149 |
|
|
| 1 |
<?php
|
|
| 2 |
|
|
| 3 |
// $Id$
|
|
| 4 |
|
|
| 5 |
/*
|
|
| 6 |
|
|
| 7 |
Website Baker Project <http://www.websitebaker.org/>
|
|
| 8 |
Copyright (C) 2004-2009, Ryan Djurovich
|
|
| 9 |
|
|
| 10 |
Website Baker is free software; you can redistribute it and/or modify
|
|
| 11 |
it under the terms of the GNU General Public License as published by
|
|
| 12 |
the Free Software Foundation; either version 2 of the License, or
|
|
| 13 |
(at your option) any later version.
|
|
| 14 |
|
|
| 15 |
Website Baker is distributed in the hope that it will be useful,
|
|
| 16 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 17 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 18 |
GNU General Public License for more details.
|
|
| 19 |
|
|
| 20 |
You should have received a copy of the GNU General Public License
|
|
| 21 |
along with Website Baker; if not, write to the Free Software
|
|
| 22 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
| 23 |
|
|
| 24 |
*/
|
|
| 25 |
|
|
| 26 |
require_once("../../../config.php");
|
|
| 27 |
require_once(WB_PATH.'/include/captcha/captcha.php');
|
|
| 28 |
|
|
| 29 |
if(!isset($_SESSION['captcha_time']))
|
|
| 30 |
exit;
|
|
| 31 |
unset($_SESSION['captcha_time']);
|
|
| 32 |
|
|
| 33 |
// get lists of fonts and backgrounds
|
|
| 34 |
require_once(WB_PATH.'/framework/functions.php');
|
|
| 35 |
$t_fonts = file_list(WB_PATH.'/include/captcha/fonts');
|
|
| 36 |
$t_bgs = file_list(WB_PATH.'/include/captcha/backgrounds');
|
|
| 37 |
$fonts = array();
|
|
| 38 |
$bgs = array();
|
|
| 39 |
foreach($t_fonts as $file) { if(preg_match('/\.ttf/',$file)) { $fonts[]=$file; } }
|
|
| 40 |
foreach($t_bgs as $file) { if(preg_match('/\.png/',$file)) { $bgs[]=$file; } }
|
|
| 41 |
|
|
| 42 |
// Captcha
|
|
| 43 |
$_SESSION['captcha'] = '';
|
|
| 44 |
mt_srand((double)microtime()*1000000);
|
|
| 45 |
$n = mt_rand(1,3);
|
|
| 46 |
switch ($n) {
|
|
| 47 |
case 1:
|
|
| 48 |
$x = mt_rand(1,9);
|
|
| 49 |
$y = mt_rand(1,9);
|
|
| 50 |
$_SESSION['captcha'] = $x + $y;
|
|
| 51 |
$cap = "$x+$y";
|
|
| 52 |
break;
|
|
| 53 |
case 2:
|
|
| 54 |
$x = mt_rand(10,20);
|
|
| 55 |
$y = mt_rand(1,9);
|
|
| 56 |
$_SESSION['captcha'] = $x - $y;
|
|
| 57 |
$cap = "$x-$y";
|
|
| 58 |
break;
|
|
| 59 |
case 3:
|
|
| 60 |
$x = mt_rand(2,10);
|
|
| 61 |
$y = mt_rand(2,5);
|
|
| 62 |
$_SESSION['captcha'] = $x * $y;
|
|
| 63 |
$cap = "$x*$y";
|
|
| 64 |
break;
|
|
| 65 |
}
|
|
| 66 |
$text = $cap;
|
|
| 67 |
|
|
| 68 |
// choose a font and background
|
|
| 69 |
$font = $fonts[array_rand($fonts)];
|
|
| 70 |
$bg = $bgs[array_rand($bgs)];
|
|
| 71 |
// get image-dimensions
|
|
| 72 |
list($width, $height, $type, $attr) = getimagesize($bg);
|
|
| 73 |
|
|
| 74 |
// create reload-image
|
|
| 75 |
$reload = ImageCreateFromPNG(WB_PATH.'/include/captcha/reload_140_40.png'); // reload-overlay
|
|
| 76 |
|
|
| 77 |
if(mt_rand(0,2)==0) { // 1 out of 3
|
|
| 78 |
|
|
| 79 |
// draw each character individualy
|
|
| 80 |
$image = ImageCreateFromPNG($bg); // background image
|
|
| 81 |
$grey = mt_rand(0,50);
|
|
| 82 |
$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color
|
|
| 83 |
$ttf = $font;
|
|
| 84 |
$ttfsize = 25; // fontsize
|
|
| 85 |
$count = 0;
|
|
| 86 |
$image_failed = true;
|
|
| 87 |
$angle = mt_rand(-10,10);
|
|
| 88 |
$x = mt_rand(20,35);
|
|
| 89 |
$y = mt_rand($height-10,$height-2);
|
|
| 90 |
do {
|
|
| 91 |
for($i=0;$i<strlen($text);$i++) {
|
|
| 92 |
$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text{$i});
|
|
| 93 |
$angle = mt_rand(-10,10);
|
|
| 94 |
$x = mt_rand($res[4],$res[4]+10);
|
|
| 95 |
$y = mt_rand($height-12,$height-7);
|
|
| 96 |
}
|
|
| 97 |
if($res[4] > $width) {
|
|
| 98 |
$image_failed = true;
|
|
| 99 |
} else {
|
|
| 100 |
$image_failed = false;
|
|
| 101 |
}
|
|
| 102 |
if(++$count > 4) // too many tries! Use the image
|
|
| 103 |
break;
|
|
| 104 |
} while($image_failed);
|
|
| 105 |
|
|
| 106 |
} else {
|
|
| 107 |
|
|
| 108 |
// draw whole string at once
|
|
| 109 |
$image_failed = true;
|
|
| 110 |
$count=0;
|
|
| 111 |
do {
|
|
| 112 |
$image = ImageCreateFromPNG($bg); // background image
|
|
| 113 |
$grey = mt_rand(0,50);
|
|
| 114 |
$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color
|
|
| 115 |
$ttf = $font;
|
|
| 116 |
$ttfsize = 25; // fontsize
|
|
| 117 |
$angle = mt_rand(0,5);
|
|
| 118 |
$x = mt_rand(20,35);
|
|
| 119 |
$y = mt_rand($height-10,$height-2);
|
|
| 120 |
$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text);
|
|
| 121 |
// check if text fits into the image
|
|
| 122 |
if(($res[0]>0 && $res[0]<$width) && ($res[1]>0 && $res[1]<$height) &&
|
|
| 123 |
($res[2]>0 && $res[2]<$width) && ($res[3]>0 && $res[3]<$height) &&
|
|
| 124 |
($res[4]>0 && $res[4]<$width) && ($res[5]>0 && $res[5]<$height) &&
|
|
| 125 |
($res[6]>0 && $res[6]<$width) && ($res[7]>0 && $res[7]<$height)
|
|
| 126 |
) {
|
|
| 127 |
$image_failed = false;
|
|
| 128 |
}
|
|
| 129 |
if(++$count > 4) // too many tries! Use the image
|
|
| 130 |
break;
|
|
| 131 |
} while($image_failed);
|
|
| 132 |
|
|
| 133 |
}
|
|
| 134 |
|
|
| 135 |
imagealphablending($reload, TRUE);
|
|
| 136 |
imagesavealpha($reload, TRUE);
|
|
| 137 |
|
|
| 138 |
// overlay
|
|
| 139 |
imagecopy($reload, $image, 0,0,0,0, 140,40);
|
|
| 140 |
imagedestroy($image);
|
|
| 141 |
$image = $reload;
|
|
| 142 |
|
|
| 143 |
captcha_header();
|
|
| 144 |
ob_start();
|
|
| 145 |
imagepng($image);
|
|
| 146 |
header("Content-Length: ".ob_get_length());
|
|
| 147 |
ob_end_flush();
|
|
| 148 |
imagedestroy($image);
|
|
| 149 |
|
|
| 150 | 150 |
?> |
| 151 | 151 | |
| branches/2.8.x/wb/admin/pages/settings.php | ||
|---|---|---|
| 277 | 277 |
|
| 278 | 278 |
while($page = $get_pages->fetchRow()) |
| 279 | 279 |
{
|
| 280 |
if($admin->page_is_visible($page)==false) |
|
| 281 |
continue; |
|
| 280 |
if($admin->page_is_visible($page)==false) { continue; }
|
|
| 281 |
|
|
| 282 | 282 |
$template->set_var('FLAG_CODE_ICON',' none ');
|
| 283 | 283 |
if( $page['parent'] == 0 ) |
| 284 | 284 |
{
|
| 285 | 285 |
$template->set_var('FLAG_CODE_ICON','url('.THEME_URL.'/images/flags/'.strtolower($page['language']).'.png)');
|
| 286 | 286 |
} |
| 287 |
|
|
| 287 | 288 |
// If the current page cannot be parent, then its children neither |
| 288 | 289 |
$list_next_level = true; |
| 289 | 290 |
// Stop users from adding pages with a level of more than the set page level limit |
| ... | ... | |
| 314 | 315 |
// $space = str_repeat(' ', 3); $space.'<'..'>'
|
| 315 | 316 |
$template->set_var(array( |
| 316 | 317 |
'VALUE' => $page['page_code'], |
| 317 |
'PAGE_VALUE' => $title_prefix.$page['page_code'],
|
|
| 318 |
'PAGE_CODE' => $title_prefix.$page['menu_title']
|
|
| 318 |
'PAGE_VALUE' => $title_prefix.$page['menu_title'],
|
|
| 319 |
'PAGE_CODE' => $title_prefix.$page['page_id']
|
|
| 319 | 320 |
) |
| 320 | 321 |
); |
| 321 |
if($results_array['page_code'] == $page['page_code']) {
|
|
| 322 |
if($results_array['page_code'] == $page['page_code']) |
|
| 323 |
{
|
|
| 322 | 324 |
$template->set_var('SELECTED', ' selected="selected"');
|
| 323 |
} elseif($results_array['page_code'] == $page['page_code']) {
|
|
| 325 |
} elseif($results_array['page_code'] == $page['page_code']) |
|
| 326 |
{
|
|
| 324 | 327 |
$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
|
| 325 | 328 |
$list_next_level=false; |
| 326 |
} elseif($can_modify != true) {
|
|
| 329 |
} elseif($can_modify != true) |
|
| 330 |
{
|
|
| 327 | 331 |
$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
|
| 328 | 332 |
} else {
|
| 329 | 333 |
$template->set_var('SELECTED', '');
|
| branches/2.8.x/wb/admin/pages/settings2.php | ||
|---|---|---|
| 34 | 34 |
require_once(WB_PATH.'/framework/functions.php'); |
| 35 | 35 |
|
| 36 | 36 |
// Get values |
| 37 |
$page_title = $admin->get_post_escaped('page_title');
|
|
| 38 |
$page_title = htmlspecialchars($page_title); |
|
| 39 |
$menu_title = $admin->get_post_escaped('menu_title');
|
|
| 40 |
$menu_title = htmlspecialchars($menu_title); |
|
| 37 |
$page_title = htmlspecialchars($admin->get_post_escaped('page_title') );
|
|
| 38 |
$menu_title = htmlspecialchars($admin->get_post_escaped('menu_title') );
|
|
| 41 | 39 |
$page_code = $admin->get_post_escaped('page_code');
|
| 42 |
$page_code = htmlspecialchars($page_code); |
|
| 43 |
$description = htmlspecialchars($admin->add_slashes($admin->get_post('description')));
|
|
| 44 |
$keywords = htmlspecialchars($admin->add_slashes($admin->get_post('keywords')));
|
|
| 40 |
$description = htmlspecialchars($admin->add_slashes($admin->get_post('description')) );
|
|
| 41 |
$keywords = htmlspecialchars($admin->add_slashes($admin->get_post('keywords')) );
|
|
| 45 | 42 |
$parent = $admin->get_post_escaped('parent');
|
| 46 | 43 |
$visibility = $admin->get_post_escaped('visibility');
|
| 47 | 44 |
$template = $admin->get_post_escaped('template');
|
| ... | ... | |
| 81 | 78 |
$field_set = $field_sql->numRows(); |
| 82 | 79 |
|
| 83 | 80 |
$in_old_group = FALSE; |
| 84 |
foreach($admin->get_groups_id() as $cur_gid){
|
|
| 85 |
if (in_array($cur_gid, $old_admin_groups)) {
|
|
| 81 |
foreach($admin->get_groups_id() as $cur_gid) |
|
| 82 |
{
|
|
| 83 |
if (in_array($cur_gid, $old_admin_groups)) |
|
| 84 |
{
|
|
| 86 | 85 |
$in_old_group = TRUE; |
| 87 | 86 |
} |
| 88 | 87 |
} |
| ... | ... | |
| 194 | 193 |
$sql .= '`language` = "'.$language.'", '; |
| 195 | 194 |
$sql .= '`admin_groups` = "'.$admin_groups.'", '; |
| 196 | 195 |
$sql .= '`viewing_groups` = "'.$viewing_groups.'"'; |
| 197 |
$sql .= (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES) && $field_set && (file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php')) ? ', `page_code` = "'.$page_code.'" ' : ' ';
|
|
| 196 |
$sql .= (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES) && $field_set && (file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php')) ? ', `page_code` = '.(int)$page_code.' ' : ' ';
|
|
| 198 | 197 |
$sql .= 'WHERE `page_id` = '.$page_id; |
| 199 | 198 |
$database->query($sql); |
| 200 | 199 |
|
| ... | ... | |
| 216 | 215 |
{
|
| 217 | 216 |
$admin->print_error($MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE']); |
| 218 | 217 |
} else {
|
| 218 |
$old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION; |
|
| 219 | 219 |
// First check if we need to create a new file |
| 220 |
if($old_link != $link)
|
|
| 220 |
if(($old_link != $link) || (!file_exists($old_filename)))
|
|
| 221 | 221 |
{
|
| 222 | 222 |
// Delete old file |
| 223 | 223 |
$old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION; |
| branches/2.8.x/wb/admin/pages/add.php | ||
|---|---|---|
| 1 |
<?php |
|
| 2 |
|
|
| 3 |
// $Id$ |
|
| 4 |
|
|
| 5 |
/* |
|
| 6 |
|
|
| 7 |
Website Baker Project <http://www.websitebaker.org/> |
|
| 8 |
Copyright (C) 2004-2009, Ryan Djurovich |
|
| 9 |
|
|
| 10 |
Website Baker is free software; you can redistribute it and/or modify |
|
| 11 |
it under the terms of the GNU General Public License as published by |
|
| 12 |
the Free Software Foundation; either version 2 of the License, or |
|
| 13 |
(at your option) any later version. |
|
| 14 |
|
|
| 15 |
Website Baker is distributed in the hope that it will be useful, |
|
| 16 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 17 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 18 |
GNU General Public License for more details. |
|
| 19 |
|
|
| 20 |
You should have received a copy of the GNU General Public License |
|
| 21 |
along with Website Baker; if not, write to the Free Software |
|
| 22 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
| 23 |
|
|
| 24 |
*/ |
|
| 25 |
|
|
| 26 |
// Create new admin object and print admin header |
|
| 27 |
require('../../config.php');
|
|
| 28 |
require_once(WB_PATH.'/framework/class.admin.php'); |
|
| 29 |
$admin = new admin('Pages', 'pages_add');
|
|
| 30 |
|
|
| 31 |
// Include the WB functions file |
|
| 32 |
require_once(WB_PATH.'/framework/functions.php'); |
|
| 33 |
|
|
| 34 |
// Get values |
|
| 35 |
$title = $admin->get_post_escaped('title');
|
|
| 36 |
$title = htmlspecialchars($title); |
|
| 37 |
$module = $admin->get_post('type');
|
|
| 38 |
$parent = $admin->get_post('parent');
|
|
| 39 |
$visibility = $admin->get_post('visibility');
|
|
| 40 |
$admin_groups = $admin->get_post('admin_groups');
|
|
| 41 |
$viewing_groups = $admin->get_post('viewing_groups');
|
|
| 42 |
|
|
| 43 |
// add Admin to admin and viewing-groups |
|
| 44 |
$admin_groups[] = 1; |
|
| 45 |
$viewing_groups[] = 1; |
|
| 46 |
|
|
| 47 |
if ($parent!=0) {
|
|
| 48 |
if (!$admin->get_page_permission($parent,'admin')) |
|
| 49 |
$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']); |
|
| 50 |
} elseif (!$admin->get_permission('pages_add_l0','system')) {
|
|
| 51 |
$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']); |
|
| 52 |
} |
|
| 53 |
|
|
| 54 |
// Validate data |
|
| 55 |
if($title == '' || substr($title,0,1)=='.') {
|
|
| 56 |
$admin->print_error($MESSAGE['PAGES']['BLANK_PAGE_TITLE']); |
|
| 57 |
} |
|
| 58 |
|
|
| 59 |
// Check to see if page created has needed permissions |
|
| 60 |
if(!in_array(1, $admin->get_groups_id())) {
|
|
| 61 |
$admin_perm_ok = false; |
|
| 62 |
foreach ($admin_groups as $adm_group) {
|
|
| 63 |
if (in_array($adm_group, $admin->get_groups_id())) {
|
|
| 64 |
$admin_perm_ok = true; |
|
| 65 |
} |
|
| 66 |
} |
|
| 67 |
if ($admin_perm_ok == false) {
|
|
| 68 |
$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']); |
|
| 69 |
} |
|
| 70 |
$admin_perm_ok = false; |
|
| 71 |
foreach ($viewing_groups as $view_group) {
|
|
| 72 |
if (in_array($view_group, $admin->get_groups_id())) {
|
|
| 73 |
$admin_perm_ok = true; |
|
| 74 |
} |
|
| 75 |
} |
|
| 76 |
if ($admin_perm_ok == false) {
|
|
| 77 |
$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']); |
|
| 78 |
} |
|
| 79 |
} |
|
| 80 |
|
|
| 81 |
$admin_groups = implode(',', $admin_groups);
|
|
| 82 |
$viewing_groups = implode(',', $viewing_groups);
|
|
| 83 |
|
|
| 84 |
// Work-out what the link and page filename should be |
|
| 85 |
if($parent == '0') {
|
|
| 86 |
$link = '/'.page_filename($title); |
|
| 87 |
// rename menu titles: index && intro to prevent clashes with intro page feature and WB core file /pages/index.php |
|
| 88 |
if($link == '/index' || $link == '/intro') {
|
|
| 89 |
$link .= '_0'; |
|
| 90 |
$filename = WB_PATH .PAGES_DIRECTORY .'/' .page_filename($title) .'_0' .PAGE_EXTENSION; |
|
| 91 |
} else {
|
|
| 92 |
$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($title).PAGE_EXTENSION; |
|
| 93 |
} |
|
| 94 |
} else {
|
|
| 95 |
$parent_section = ''; |
|
| 96 |
$parent_titles = array_reverse(get_parent_titles($parent)); |
|
| 97 |
foreach($parent_titles AS $parent_title) {
|
|
| 98 |
$parent_section .= page_filename($parent_title).'/'; |
|
| 99 |
} |
|
| 100 |
if($parent_section == '/') { $parent_section = ''; }
|
|
| 101 |
$link = '/'.$parent_section.page_filename($title); |
|
| 102 |
$filename = WB_PATH.PAGES_DIRECTORY.'/'.$parent_section.page_filename($title).PAGE_EXTENSION; |
|
| 103 |
make_dir(WB_PATH.PAGES_DIRECTORY.'/'.$parent_section); |
|
| 104 |
} |
|
| 105 |
|
|
| 106 |
// Check if a page with same page filename exists |
|
| 107 |
$get_same_page = $database->query("SELECT page_id FROM ".TABLE_PREFIX."pages WHERE link = '$link'");
|
|
| 108 |
if($get_same_page->numRows() > 0 OR file_exists(WB_PATH.PAGES_DIRECTORY.$link.PAGE_EXTENSION) OR file_exists(WB_PATH.PAGES_DIRECTORY.$link.'/')) {
|
|
| 109 |
$admin->print_error($MESSAGE['PAGES']['PAGE_EXISTS']); |
|
| 110 |
} |
|
| 111 |
|
|
| 112 |
// Include the ordering class |
|
| 113 |
require(WB_PATH.'/framework/class.order.php'); |
|
| 114 |
$order = new order(TABLE_PREFIX.'pages', 'position', 'page_id', 'parent'); |
|
| 115 |
// First clean order |
|
| 116 |
$order->clean($parent); |
|
| 117 |
// Get new order |
|
| 118 |
$position = $order->get_new($parent); |
|
| 119 |
|
|
| 120 |
// Work-out if the page parent (if selected) has a seperate template or language to the default |
|
| 121 |
$query_parent = $database->query("SELECT template, language FROM ".TABLE_PREFIX."pages WHERE page_id = '$parent'");
|
|
| 122 |
if($query_parent->numRows() > 0) {
|
|
| 123 |
$fetch_parent = $query_parent->fetchRow(); |
|
| 124 |
$template = $fetch_parent['template']; |
|
| 125 |
$language = $fetch_parent['language']; |
|
| 126 |
} else {
|
|
| 127 |
$template = ''; |
|
| 128 |
$language = DEFAULT_LANGUAGE; |
|
| 129 |
} |
|
| 130 |
|
|
| 131 |
// Insert page into pages table |
|
| 132 |
$query = "INSERT INTO ".TABLE_PREFIX."pages (page_title,menu_title,parent,template,target,position,visibility,searching,menu,language,admin_groups,viewing_groups,modified_when,modified_by) VALUES ('$title','$title','$parent','$template','_top','$position','$visibility','1','1','$language','$admin_groups','$viewing_groups','".time()."','".$admin->get_user_id()."')";
|
|
| 133 |
$database->query($query); |
|
| 134 |
if($database->is_error()) {
|
|
| 135 |
$admin->print_error($database->get_error()); |
|
| 136 |
} |
|
| 137 |
|
|
| 138 |
// Get the page id |
|
| 139 |
$page_id = $database->get_one("SELECT LAST_INSERT_ID()");
|
|
| 140 |
|
|
| 141 |
// Work out level |
|
| 142 |
$level = level_count($page_id); |
|
| 143 |
// Work out root parent |
|
| 144 |
$root_parent = root_parent($page_id); |
|
| 145 |
// Work out page trail |
|
| 146 |
$page_trail = get_page_trail($page_id); |
|
| 147 |
|
|
| 148 |
// Update page with new level and link |
|
| 149 |
$database->query("UPDATE ".TABLE_PREFIX."pages SET link = '$link', level = '$level', root_parent = '$root_parent', page_trail = '$page_trail' WHERE page_id = '$page_id'");
|
|
| 150 |
|
|
| 151 |
// Create a new file in the /pages dir |
|
| 152 |
create_access_file($filename, $page_id, $level); |
|
| 153 |
|
|
| 154 |
// add position 1 to new page |
|
| 155 |
$position = 1; |
|
| 156 |
|
|
| 157 |
// Add new record into the sections table |
|
| 158 |
$database->query("INSERT INTO ".TABLE_PREFIX."sections (page_id,position,module,block) VALUES ('$page_id','$position', '$module','1')");
|
|
| 159 |
|
|
| 160 |
// Get the section id |
|
| 161 |
$section_id = $database->get_one("SELECT LAST_INSERT_ID()");
|
|
| 162 |
|
|
| 163 |
// Include the selected modules add file if it exists |
|
| 164 |
if(file_exists(WB_PATH.'/modules/'.$module.'/add.php')) {
|
|
| 165 |
require(WB_PATH.'/modules/'.$module.'/add.php'); |
|
| 166 |
} |
|
| 167 |
|
|
| 168 |
// Check if there is a db error, otherwise say successful |
|
| 169 |
if($database->is_error()) {
|
|
| 170 |
$admin->print_error($database->get_error()); |
|
| 171 |
} else {
|
|
| 172 |
$admin->print_success($MESSAGE['PAGES']['ADDED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id); |
|
| 173 |
} |
|
| 174 |
|
|
| 175 |
// Print admin footer |
|
| 176 |
$admin->print_footer(); |
|
| 177 |
|
|
| 1 |
<?php |
|
| 2 |
/** |
|
| 3 |
* |
|
| 4 |
* @category admin |
|
| 5 |
* @package pages |
|
| 6 |
* @author WebsiteBaker Project |
|
| 7 |
* @copyright 2004-2009, Ryan Djurovich |
|
| 8 |
* @copyright 2009-2010, Website Baker Org. e.V. |
|
| 9 |
* @link http://www.websitebaker2.org/ |
|
| 10 |
* @license http://www.gnu.org/licenses/gpl.html |
|
| 11 |
* @platform WebsiteBaker 2.8.x |
|
| 12 |
* @requirements PHP 4.3.4 and higher |
|
| 13 |
* @version $Id$ |
|
| 14 |
* @filesource $HeadURL$ |
|
| 15 |
* @lastmodified $Date$ |
|
| 16 |
* |
|
| 17 |
*/ |
|
| 18 |
|
|
| 19 |
// Create new admin object and print admin header |
|
| 20 |
require('../../config.php');
|
|
| 21 |
require_once(WB_PATH.'/framework/class.admin.php'); |
|
| 22 |
$admin = new admin('Pages', 'pages_add');
|
|
| 23 |
|
|
| 24 |
// Include the WB functions file |
|
| 25 |
require_once(WB_PATH.'/framework/functions.php'); |
|
| 26 |
|
|
| 27 |
// Get values |
|
| 28 |
$title = $admin->get_post_escaped('title');
|
|
| 29 |
$title = htmlspecialchars($title); |
|
| 30 |
$module = $admin->get_post('type');
|
|
| 31 |
$parent = $admin->get_post('parent');
|
|
| 32 |
$visibility = $admin->get_post('visibility');
|
|
| 33 |
$admin_groups = $admin->get_post('admin_groups');
|
|
| 34 |
$viewing_groups = $admin->get_post('viewing_groups');
|
|
| 35 |
|
|
| 36 |
// Work-out if we should check for existing page_code |
|
| 37 |
$sql = 'DESCRIBE `'.TABLE_PREFIX.'pages` `page_code`'; |
|
| 38 |
$field_sql = $database->query($sql); |
|
| 39 |
$field_set = $field_sql->numRows(); |
|
| 40 |
|
|
| 41 |
// add Admin to admin and viewing-groups |
|
| 42 |
$admin_groups[] = 1; |
|
| 43 |
$viewing_groups[] = 1; |
|
| 44 |
|
|
| 45 |
if ($parent!=0) {
|
|
| 46 |
if (!$admin->get_page_permission($parent,'admin')) |
|
| 47 |
{
|
|
| 48 |
$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']); |
|
| 49 |
} |
|
| 50 |
|
|
| 51 |
} elseif (!$admin->get_permission('pages_add_l0','system'))
|
|
| 52 |
{
|
|
| 53 |
$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']); |
|
| 54 |
} |
|
| 55 |
|
|
| 56 |
// Validate data |
|
| 57 |
if($title == '' || substr($title,0,1)=='.') |
|
| 58 |
{
|
|
| 59 |
$admin->print_error($MESSAGE['PAGES']['BLANK_PAGE_TITLE']); |
|
| 60 |
} |
|
| 61 |
|
|
| 62 |
// Check to see if page created has needed permissions |
|
| 63 |
if(!in_array(1, $admin->get_groups_id())) |
|
| 64 |
{
|
|
| 65 |
$admin_perm_ok = false; |
|
| 66 |
foreach ($admin_groups as $adm_group) |
|
| 67 |
{
|
|
| 68 |
if (in_array($adm_group, $admin->get_groups_id())) |
|
| 69 |
{
|
|
| 70 |
$admin_perm_ok = true; |
|
| 71 |
} |
|
| 72 |
} |
|
| 73 |
if ($admin_perm_ok == false) |
|
| 74 |
{
|
|
| 75 |
$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']); |
|
| 76 |
} |
|
| 77 |
$admin_perm_ok = false; |
|
| 78 |
foreach ($viewing_groups as $view_group) |
|
| 79 |
{
|
|
| 80 |
if (in_array($view_group, $admin->get_groups_id())) |
|
| 81 |
{
|
|
| 82 |
$admin_perm_ok = true; |
|
| 83 |
} |
|
| 84 |
} |
|
| 85 |
if ($admin_perm_ok == false) |
|
| 86 |
{
|
|
| 87 |
$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']); |
|
| 88 |
} |
|
| 89 |
} |
|
| 90 |
|
|
| 91 |
$admin_groups = implode(',', $admin_groups);
|
|
| 92 |
$viewing_groups = implode(',', $viewing_groups);
|
|
| 93 |
|
|
| 94 |
// Work-out what the link and page filename should be |
|
| 95 |
if($parent == '0') |
|
| 96 |
{
|
|
| 97 |
$link = '/'.page_filename($title); |
|
| 98 |
// rename menu titles: index && intro to prevent clashes with intro page feature and WB core file /pages/index.php |
|
| 99 |
if($link == '/index' || $link == '/intro') |
|
| 100 |
{
|
|
| 101 |
$link .= '_0'; |
|
| 102 |
$filename = WB_PATH .PAGES_DIRECTORY .'/' .page_filename($title) .'_0' .PAGE_EXTENSION; |
|
| 103 |
} else {
|
|
| 104 |
$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($title).PAGE_EXTENSION; |
|
| 105 |
} |
|
| 106 |
} else {
|
|
| 107 |
$parent_section = ''; |
|
| 108 |
$parent_titles = array_reverse(get_parent_titles($parent)); |
|
| 109 |
foreach($parent_titles AS $parent_title) |
|
| 110 |
{
|
|
| 111 |
$parent_section .= page_filename($parent_title).'/'; |
|
| 112 |
} |
|
| 113 |
if($parent_section == '/') { $parent_section = ''; }
|
|
| 114 |
$link = '/'.$parent_section.page_filename($title); |
|
| 115 |
$filename = WB_PATH.PAGES_DIRECTORY.'/'.$parent_section.page_filename($title).PAGE_EXTENSION; |
|
| 116 |
make_dir(WB_PATH.PAGES_DIRECTORY.'/'.$parent_section); |
|
| 117 |
} |
|
| 118 |
|
|
| 119 |
// Check if a page with same page filename exists |
|
| 120 |
$get_same_page = $database->query("SELECT page_id FROM ".TABLE_PREFIX."pages WHERE link = '$link'");
|
|
| 121 |
if($get_same_page->numRows() > 0 OR file_exists(WB_PATH.PAGES_DIRECTORY.$link.PAGE_EXTENSION) OR file_exists(WB_PATH.PAGES_DIRECTORY.$link.'/')) |
|
| 122 |
{
|
|
| 123 |
$admin->print_error($MESSAGE['PAGES']['PAGE_EXISTS']); |
|
| 124 |
} |
|
| 125 |
|
|
| 126 |
// Include the ordering class |
|
| 127 |
require(WB_PATH.'/framework/class.order.php'); |
|
| 128 |
$order = new order(TABLE_PREFIX.'pages', 'position', 'page_id', 'parent'); |
|
| 129 |
// First clean order |
|
| 130 |
$order->clean($parent); |
|
| 131 |
// Get new order |
|
| 132 |
$position = $order->get_new($parent); |
|
| 133 |
|
|
| 134 |
// Work-out if the page parent (if selected) has a seperate template or language to the default |
|
| 135 |
$query_parent = $database->query("SELECT template, language FROM ".TABLE_PREFIX."pages WHERE page_id = '$parent'");
|
|
| 136 |
if($query_parent->numRows() > 0) |
|
| 137 |
{
|
|
| 138 |
$fetch_parent = $query_parent->fetchRow(); |
|
| 139 |
$template = $fetch_parent['template']; |
|
| 140 |
$language = $fetch_parent['language']; |
|
| 141 |
} else {
|
|
| 142 |
$template = ''; |
|
| 143 |
$language = DEFAULT_LANGUAGE; |
|
| 144 |
} |
|
| 145 |
|
|
| 146 |
// Insert page into pages table |
|
| 147 |
$sql = 'INSERT INTO `'.TABLE_PREFIX.'pages` SET '; |
|
| 148 |
$sql .= '`parent` = '.$parent.', '; |
|
| 149 |
$sql .= '`target` = "_top", '; |
|
| 150 |
$sql .= '`page_title` = "'.$title.'", '; |
|
| 151 |
$sql .= '`menu_title` = "'.$title.'", '; |
|
| 152 |
$sql .= '`template` = "'.$template.'", '; |
|
| 153 |
$sql .= '`visibility` = "'.$visibility.'", '; |
|
| 154 |
$sql .= '`position` = '.$position.', '; |
|
| 155 |
$sql .= '`menu` = 1, '; |
|
| 156 |
$sql .= '`language` = "'.$language.'", '; |
|
| 157 |
$sql .= '`searching` = 1, '; |
|
| 158 |
$sql .= '`modified_when` = '.time().', '; |
|
| 159 |
$sql .= '`modified_by` = '.$admin->get_user_id().', '; |
|
| 160 |
$sql .= '`admin_groups` = "'.$admin_groups.'", '; |
|
| 161 |
$sql .= '`viewing_groups` = "'.$viewing_groups.'"'; |
|
| 162 |
|
|
| 163 |
$database->query($sql); |
|
| 164 |
/* |
|
| 165 |
$query = "INSERT INTO ".TABLE_PREFIX."pages |
|
| 166 |
(page_title,menu_title,parent,template,target,position,visibility,searching,menu,language,admin_groups,viewing_groups,modified_when,modified_by) VALUES |
|
| 167 |
('$title','$title','$parent','$template','_top','$position','$visibility','1','1','$language','$admin_groups','$viewing_groups','".time()."','".$admin->get_user_id()."')";
|
|
| 168 |
$database->query($query); |
|
| 169 |
*/ |
|
| 170 |
if($database->is_error()) |
|
| 171 |
{
|
|
| 172 |
$admin->print_error($database->get_error()); |
|
| 173 |
} |
|
| 174 |
|
|
| 175 |
// Get the page id |
|
| 176 |
$page_id = $database->get_one("SELECT LAST_INSERT_ID()");
|
|
| 177 |
|
|
| 178 |
// Work out level |
|
| 179 |
$level = level_count($page_id); |
|
| 180 |
// Work out root parent |
|
| 181 |
$root_parent = root_parent($page_id); |
|
| 182 |
// Work out page trail |
|
| 183 |
$page_trail = get_page_trail($page_id); |
|
| 184 |
|
|
| 185 |
// Update page with new level and link |
|
| 186 |
$sql = 'UPDATE `'.TABLE_PREFIX.'pages` SET '; |
|
| 187 |
$sql .= '`root_parent` = '.$root_parent.', '; |
|
| 188 |
$sql .= '`level` = '.$level.', '; |
|
| 189 |
$sql .= '`link` = "'.$link.'", '; |
|
| 190 |
$sql .= '`page_trail` = "'.$page_trail.'"'; |
|
| 191 |
$sql .= (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES)
|
|
| 192 |
&& $field_set |
|
| 193 |
&& ($language == DEFAULT_LANGUAGE) |
|
| 194 |
&& (file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php') |
|
| 195 |
) |
|
| 196 |
? ', `page_code` = '.(int)$page_id.' ' : ' '; |
|
| 197 |
$sql .= 'WHERE `page_id` = '.$page_id; |
|
| 198 |
$database->query($sql); |
|
| 199 |
/* |
|
| 200 |
$database->query("UPDATE ".TABLE_PREFIX."pages SET link = '$link', level = '$level', root_parent = '$root_parent', page_trail = '$page_trail' WHERE page_id = '$page_id'");
|
|
| 201 |
*/ |
|
| 202 |
if($database->is_error()) |
|
| 203 |
{
|
|
| 204 |
$admin->print_error($database->get_error()); |
|
| 205 |
} |
|
| 206 |
// Create a new file in the /pages dir |
|
| 207 |
create_access_file($filename, $page_id, $level); |
|
| 208 |
|
|
| 209 |
// add position 1 to new page |
|
| 210 |
$position = 1; |
|
| 211 |
|
|
| 212 |
// Add new record into the sections table |
|
| 213 |
$database->query("INSERT INTO ".TABLE_PREFIX."sections (page_id,position,module,block) VALUES ('$page_id','$position', '$module','1')");
|
|
| 214 |
|
|
| 215 |
// Get the section id |
|
| 216 |
$section_id = $database->get_one("SELECT LAST_INSERT_ID()");
|
|
| 217 |
|
|
| 218 |
// Include the selected modules add file if it exists |
|
| 219 |
if(file_exists(WB_PATH.'/modules/'.$module.'/add.php')) {
|
|
| 220 |
require(WB_PATH.'/modules/'.$module.'/add.php'); |
|
| 221 |
} |
|
| 222 |
|
|
| 223 |
// Check if there is a db error, otherwise say successful |
|
| 224 |
if($database->is_error()) {
|
|
| 225 |
$admin->print_error($database->get_error()); |
|
| 226 |
} else {
|
|
| 227 |
$admin->print_success($MESSAGE['PAGES']['ADDED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id); |
|
| 228 |
} |
|
| 229 |
|
|
| 230 |
// Print admin footer |
|
| 231 |
$admin->print_footer(); |
|
| 232 |
|
|
| 178 | 233 |
?> |
| 179 | 234 | |
| branches/2.8.x/wb/admin/settings/save.php | ||
|---|---|---|
| 25 | 25 |
// Print admin header |
| 26 | 26 |
require('../../config.php');
|
| 27 | 27 |
require_once(WB_PATH.'/framework/class.admin.php'); |
| 28 |
if($advanced == '') {
|
|
| 28 |
if($advanced == '') |
|
| 29 |
{
|
|
| 29 | 30 |
$admin = new admin('Settings', 'settings_basic');
|
| 30 | 31 |
$_POST['database_password'] = DB_PASSWORD; |
| 31 | 32 |
} else {
|
| ... | ... | |
| 39 | 40 |
if(isset($_POST['server_email'])) |
| 40 | 41 |
{
|
| 41 | 42 |
$_POST['server_email'] = strip_tags($_POST['server_email']); |
| 42 |
if(!eregi("^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$", $_POST['server_email'])) {
|
|
| 43 |
$pattern = '/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9]([-a-z0-9_]?[a-z0-9])*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z]{2})|([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(\.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3})(:[0-9]{1,5})?\r/im';
|
|
| 44 |
// $pattern = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,6}))$/';
|
|
| 45 |
if(false == preg_match($pattern, $_POST['server_email'])) |
|
| 46 |
{
|
|
| 43 | 47 |
$admin->print_error($MESSAGE['USERS']['INVALID_EMAIL']. |
| 44 | 48 |
'<br /><strong>Email: '.htmlentities($_POST['server_email']).'</strong>', $js_back); |
| 45 | 49 |
} |
| branches/2.8.x/wb/search/search_modext.php | ||
|---|---|---|
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 | 19 |
// make the url-string for highlighting |
| 20 |
function make_url_searchstring($search_match, $search_url_array) {
|
|
| 20 |
function make_url_searchstring($search_match, $search_url_array) |
|
| 21 |
{
|
|
| 21 | 22 |
$link = ""; |
| 22 |
if ($search_match != 'exact') {
|
|
| 23 |
if ($search_match != 'exact') |
|
| 24 |
{
|
|
| 23 | 25 |
$str = implode(" ", $search_url_array);
|
| 24 | 26 |
$link = "?searchresult=1&sstring=".urlencode($str); |
| 25 | 27 |
} else {
|
| ... | ... | |
| 30 | 32 |
} |
| 31 | 33 |
|
| 32 | 34 |
// make date and time for "last modified by... on ..."-string |
| 33 |
function get_page_modified($page_modified_when) {
|
|
| 35 |
function get_page_modified($page_modified_when) |
|
| 36 |
{
|
|
| 34 | 37 |
global $TEXT; |
| 35 |
if($page_modified_when > 0) {
|
|
| 38 |
if($page_modified_when > 0) |
|
| 39 |
{
|
|
| 36 | 40 |
$date = gmdate(DATE_FORMAT, $page_modified_when+TIMEZONE); |
| 37 | 41 |
$time = gmdate(TIME_FORMAT, $page_modified_when+TIMEZONE); |
| 38 | 42 |
} else {
|
| ... | ... | |
| 43 | 47 |
} |
| 44 | 48 |
|
| 45 | 49 |
// make username and displayname for "last modified by... on ..."-string |
| 46 |
function get_page_modified_by($page_modified_by, $users) {
|
|
| 50 |
function get_page_modified_by($page_modified_by, $users) |
|
| 51 |
{
|
|
| 47 | 52 |
global $TEXT; |
| 48 | 53 |
// check for existing user-id |
| 49 | 54 |
if(!isset($users[$page_modified_by])) |
| 50 |
$page_modified_by = 0; |
|
| 51 |
|
|
| 55 |
{
|
|
| 56 |
$page_modified_by = 0; |
|
| 57 |
} |
|
| 58 |
|
|
| 52 | 59 |
$username = $users[$page_modified_by]['username']; |
| 53 | 60 |
$displayname = $users[$page_modified_by]['display_name']; |
| 54 | 61 |
return array($username, $displayname); |
| 55 | 62 |
} |
| 56 | 63 |
|
| 57 | 64 |
// checks if _all_ searchwords matches |
| 58 |
function is_all_matched($text, $search_words) {
|
|
| 65 |
function is_all_matched($text, $search_words) |
|
| 66 |
{
|
|
| 59 | 67 |
$all_matched = true; |
| 60 |
foreach ($search_words AS $word) {
|
|
| 61 |
if(!preg_match('/'.$word.'/ui', $text)) {
|
|
| 68 |
foreach ($search_words AS $word) |
|
| 69 |
{
|
|
| 70 |
if(!preg_match('/'.$word.'/ui', $text))
|
|
| 71 |
{
|
|
| 62 | 72 |
$all_matched = false; |
| 63 | 73 |
break; |
| 64 | 74 |
} |
| ... | ... | |
| 67 | 77 |
} |
| 68 | 78 |
|
| 69 | 79 |
// checks if _any_ of the searchwords matches |
| 70 |
function is_any_matched($text, $search_words) {
|
|
| 80 |
function is_any_matched($text, $search_words) |
|
| 81 |
{
|
|
| 71 | 82 |
$any_matched = false; |
| 72 | 83 |
$word = '('.implode('|', $search_words).')';
|
| 73 |
if(preg_match('/'.$word.'/ui', $text)) {
|
|
| 84 |
if(preg_match('/'.$word.'/ui', $text))
|
|
| 85 |
{
|
|
| 74 | 86 |
$any_matched = true; |
| 75 | 87 |
} |
| 76 | 88 |
return $any_matched; |
| 77 | 89 |
} |
| 78 | 90 |
|
| 79 | 91 |
// collects the matches from text in excerpt_array |
| 80 |
function get_excerpts($text, $search_words, $max_excerpt_num) {
|
|
| 92 |
function get_excerpts($text, $search_words, $max_excerpt_num) |
|
| 93 |
{
|
|
| 81 | 94 |
$match_array = array(); |
| 82 | 95 |
$excerpt_array = array(); |
| 83 | 96 |
$word = '('.implode('|', $search_words).')';
|
| 84 | 97 |
|
| 85 | 98 |
//Filter droplets from the page data |
| 86 | 99 |
preg_match_all('~\[\[(.*?)\]\]~', $text, $matches);
|
| 87 |
foreach ($matches[1] as $match) {
|
|
| 100 |
foreach ($matches[1] as $match) |
|
| 101 |
{
|
|
| 88 | 102 |
$text = str_replace('[['.$match.']]', '', $text);
|
| 89 | 103 |
} |
| 90 | 104 |
|
| 91 | 105 |
// Build the regex-string |
| 92 |
if(strpos(strtoupper(PHP_OS), 'WIN')===0) { // windows -> see below
|
|
| 106 |
if(strpos(strtoupper(PHP_OS), 'WIN')===0) // windows -> see below |
|
| 107 |
{
|
|
| 93 | 108 |
$str1=".!?;"; |
| 94 | 109 |
$str2=".!?;"; |
| 95 | 110 |
} else { // linux & Co.
|
| ... | ... | |
| 104 | 119 |
) { // this may crash windows server, so skip if on windows
|
| 105 | 120 |
// jump from match to match, get excerpt, stop if $max_excerpt_num is reached |
| 106 | 121 |
$last_end = 0; $offset = 0; |
| 107 |
while(preg_match('/'.$word.'/uis', $text, $match_array, PREG_OFFSET_CAPTURE, $last_end)) {
|
|
| 122 |
while(preg_match('/'.$word.'/uis', $text, $match_array, PREG_OFFSET_CAPTURE, $last_end))
|
|
| 123 |
{
|
|
| 108 | 124 |
$offset = ($match_array[0][1]-206 < $last_end)?$last_end:$match_array[0][1]-206; |
| 109 |
if(preg_match($regex, $text, $matches, PREG_OFFSET_CAPTURE, $offset)) {
|
|
| 125 |
if(preg_match($regex, $text, $matches, PREG_OFFSET_CAPTURE, $offset)) |
|
| 126 |
{
|
|
| 110 | 127 |
$last_end = $matches[1][1]+strlen($matches[1][0])-1; |
| 111 | 128 |
if(!preg_match('/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\./', $matches[1][0])) // skip excerpts with email-addresses
|
| 112 |
$excerpt_array[] = trim($matches[1][0]); |
|
| 113 |
if(count($excerpt_array)>=$max_excerpt_num) {
|
|
| 129 |
{
|
|
| 130 |
$excerpt_array[] = trim($matches[1][0]); |
|
| 131 |
} |
|
| 132 |
if(count($excerpt_array)>=$max_excerpt_num) |
|
| 133 |
{
|
|
| 114 | 134 |
$excerpt_array = array_unique($excerpt_array); |
| 115 |
if(count($excerpt_array) >= $max_excerpt_num) |
|
| 116 |
break; |
|
| 135 |
if(count($excerpt_array) >= $max_excerpt_num) { break; }
|
|
| 117 | 136 |
} |
| 118 | 137 |
} else { // problem: preg_match failed - can't find a start- or stop-sign
|
| 119 | 138 |
$last_end += 201; // jump forward and try again |
| 120 | 139 |
} |
| 121 | 140 |
} |
| 122 | 141 |
} else { // compatible, but may be very slow with large pages
|
| 123 |
if(preg_match_all($regex, $text, $match_array)) {
|
|
| 124 |
foreach($match_array[1] AS $string) {
|
|
| 142 |
if(preg_match_all($regex, $text, $match_array)) |
|
| 143 |
{
|
|
| 144 |
foreach($match_array[1] AS $string) |
|
| 145 |
{
|
|
| 125 | 146 |
if(!preg_match('/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\./', $string)) // skip excerpts with email-addresses
|
| 126 |
$excerpt_array[] = trim($string); |
|
| 127 |
|
|
| 147 |
{
|
|
| 148 |
$excerpt_array[] = trim($string); |
|
| 149 |
} |
|
| 150 |
|
|
| 128 | 151 |
} |
| 129 | 152 |
} |
| 130 | 153 |
} |
| ... | ... | |
| 132 | 155 |
} |
| 133 | 156 |
|
| 134 | 157 |
// makes excerpt_array a string ready to print out |
| 135 |
function prepare_excerpts($excerpt_array, $search_words, $max_excerpt_num) {
|
|
| 158 |
function prepare_excerpts($excerpt_array, $search_words, $max_excerpt_num) |
|
| 159 |
{
|
|
| 136 | 160 |
// excerpts: text before and after a single excerpt, html-tag for markup |
| 137 | 161 |
$EXCERPT_BEFORE = '... '; |
| 138 | 162 |
$EXCERPT_AFTER = ' ...<br />'; |
| ... | ... | |
| 141 | 165 |
// remove duplicate matches from $excerpt_array, if any. |
| 142 | 166 |
$excerpt_array = array_unique($excerpt_array); |
| 143 | 167 |
// use the first $max_excerpt_num excerpts only |
| 144 |
if(count($excerpt_array) > $max_excerpt_num) {
|
|
| 168 |
if(count($excerpt_array) > $max_excerpt_num) |
|
| 169 |
{
|
|
| 145 | 170 |
$excerpt_array = array_slice($excerpt_array, 0, $max_excerpt_num); |
| 146 | 171 |
} |
| 147 | 172 |
// prepare search-string |
| ... | ... | |
| 149 | 174 |
// we want markup on search-results page, |
| 150 | 175 |
// but we need some 'magic' to prevent <br />, <b>... from being highlighted |
| 151 | 176 |
$excerpt = ''; |
| 152 |
foreach($excerpt_array as $str) {
|
|
| 177 |
foreach($excerpt_array as $str) |
|
| 178 |
{
|
|
| 153 | 179 |
$excerpt .= '#,,#'.preg_replace("/($string)/iu","#,,,,#$1#,,,,,#",$str).'#,,,#';
|
| 154 | 180 |
} |
| 155 | 181 |
$excerpt = str_replace(array('&','<','>','"','\'',"\xC2\xA0"), array('&','<','>','"',''',' '), $excerpt);
|
| 156 | 182 |
$excerpt = str_replace(array('#,,,,#','#,,,,,#'), array($EXCERPT_MARKUP_START,$EXCERPT_MARKUP_END), $excerpt);
|
| 157 | 183 |
$excerpt = str_replace(array('#,,#','#,,,#'), array($EXCERPT_BEFORE,$EXCERPT_AFTER), $excerpt);
|
| 158 | 184 |
// prepare to write out |
| 159 |
if(DEFAULT_CHARSET != 'utf-8') {
|
|
| 185 |
if(DEFAULT_CHARSET != 'utf-8') |
|
| 186 |
{
|
|
| 160 | 187 |
$excerpt = umlauts_to_entities($excerpt, 'UTF-8'); |
| 161 | 188 |
} |
| 162 | 189 |
return $excerpt; |
| 163 | 190 |
} |
| 164 | 191 |
|
| 165 | 192 |
// work out what the link-anchor should be |
| 166 |
function make_url_target($page_link_target, $text, $search_words) {
|
|
| 193 |
function make_url_target($page_link_target, $text, $search_words) |
|
| 194 |
{
|
|
| 167 | 195 |
// 1. e.g. $page_link_target=="&monthno=5&year=2007" - module-dependent target. Do nothing. |
| 168 | 196 |
// 2. $page_link_target=="#!wb_section_..." - the user wants the section-target, so do nothing. |
| 169 | 197 |
// 3. $page_link_target=="#wb_section_..." - try to find a better target, use the section-target as fallback. |
| 170 | 198 |
// 4. $page_link_target=="" - do nothing |
| 171 |
if(version_compare(PHP_VERSION, '4.3.3', ">=") && substr($page_link_target,0,12)=='#wb_section_') {
|
|
| 199 |
if(version_compare(PHP_VERSION, '4.3.3', ">=") && substr($page_link_target,0,12)=='#wb_section_') |
|
| 200 |
{
|
|
| 172 | 201 |
$word = '('.implode('|', $search_words).')';
|
| 173 | 202 |
preg_match('/'.$word.'/ui', $text, $match, PREG_OFFSET_CAPTURE);
|
| 174 |
if($match && is_array($match[0])) {
|
|
| 203 |
if($match && is_array($match[0])) |
|
| 204 |
{
|
|
| 175 | 205 |
$x=$match[0][1]; // position of first match |
| 176 | 206 |
// is there an anchor nearby? |
| 177 |
if(preg_match_all('/<(?:[^>]+id|\s*a[^>]+name)\s*=\s*"(.*)"/iU', substr($text,0,$x), $match, PREG_OFFSET_CAPTURE)) {
|
|
| 207 |
if(preg_match_all('/<(?:[^>]+id|\s*a[^>]+name)\s*=\s*"(.*)"/iU', substr($text,0,$x), $match, PREG_OFFSET_CAPTURE))
|
|
| 208 |
{
|
|
| 178 | 209 |
$anchor=''; |
| 179 |
foreach($match[1] AS $array) {
|
|
| 180 |
if($array[1] > $x) {
|
|
| 210 |
foreach($match[1] AS $array) |
|
| 211 |
{
|
|
| 212 |
if($array[1] > $x) |
|
| 213 |
{
|
|
| 181 | 214 |
break; |
| 182 | 215 |
} |
| 183 | 216 |
$anchor = $array[0]; |
| 184 | 217 |
} |
| 185 |
if($anchor != '') {
|
|
| 218 |
if($anchor != '') |
|
| 219 |
{
|
|
| 186 | 220 |
$page_link_target = '#'.$anchor; |
| 187 | 221 |
} |
| 188 | 222 |
} |
| 189 | 223 |
} |
| 190 |
} |
|
| 191 |
elseif(substr($page_link_target,0,13)=='#!wb_section_') {
|
|
| 224 |
} elseif(substr($page_link_target,0,13)=='#!wb_section_') {
|
|
| 192 | 225 |
$page_link_target = '#'.substr($page_link_target, 2); |
| 193 | 226 |
} |
| 194 | 227 |
|
| 195 | 228 |
// since wb 2.7.1 the section-anchor is configurable - SEC_ANCHOR holds the anchor name |
| 196 |
if(substr($page_link_target,0,12)=='#wb_section_') {
|
|
| 197 |
if(defined('SEC_ANCHOR') && SEC_ANCHOR!='') {
|
|
| 229 |
if(substr($page_link_target,0,12)=='#wb_section_') |
|
| 230 |
{
|
|
| 231 |
if(defined('SEC_ANCHOR') && SEC_ANCHOR!='')
|
|
| 232 |
{
|
|
| 198 | 233 |
$sec_id = substr($page_link_target, 12); |
| 199 | 234 |
$page_link_target = '#'.SEC_ANCHOR.$sec_id; |
| 200 | 235 |
} else { // section-anchors are disabled
|
| ... | ... | |
| 206 | 241 |
} |
| 207 | 242 |
|
| 208 | 243 |
// wrapper for compatibility with old print_excerpt() |
| 209 |
function print_excerpt($page_link, $page_link_target, $page_title, $page_description, $page_modified_when, $page_modified_by, $text, $max_excerpt_num, $func_vars, $pic_link="") {
|
|
| 244 |
function print_excerpt($page_link, $page_link_target, $page_title, $page_description, $page_modified_when, $page_modified_by, $text, $max_excerpt_num, $func_vars, $pic_link="") |
|
| 245 |
{
|
|
| 210 | 246 |
$mod_vars = array( |
| 211 | 247 |
'page_link' => $page_link, |
| 212 | 248 |
'page_link_target' => $page_link_target, |
| ... | ... | |
| 228 | 264 |
* list_files_dirs() - lists all files and dirs below a given directory |
| 229 | 265 |
* clear_filelist() - keeps only wanted or removes unwanted entries in file-list. |
| 230 | 266 |
*/ |
| 231 |
|
|
| 267 |
|
|
| 232 | 268 |
// prints the excerpts for one section |
| 233 |
function print_excerpt2($mod_vars, $func_vars) {
|
|
| 269 |
function print_excerpt2($mod_vars, $func_vars) |
|
| 270 |
{
|
|
| 234 | 271 |
extract($func_vars, EXTR_PREFIX_ALL, 'func'); |
| 235 | 272 |
extract($mod_vars, EXTR_PREFIX_ALL, 'mod'); |
| 236 | 273 |
global $TEXT; |
| 237 | 274 |
// check $mod_...vars |
| 238 |
if(!isset($mod_page_link)) $mod_page_link = $func_page_link; |
|
Also available in: Unified diff
Tickets #932 change deprecated eregi functions
Tickets #948 fixed Multiple use of same parametrised droplet - parameter handling
Upgrade Droplets to Version 1.0.3
update some headerinfos
non existing pages, will be created if clicking save in page settings