@@ -1,44 +1,44 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | /** This file is part of KCFinder project |
| 4 | - * |
|
| 5 | - * @desc GD extension class |
|
| 6 | - * @package KCFinder |
|
| 7 | - * @version 2.51 |
|
| 8 | - * @author Pavel Tzonkov <[email protected]> |
|
| 9 | - * @copyright 2010, 2011 KCFinder Project |
|
| 10 | - * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 |
|
| 11 | - * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 |
|
| 12 | - * @link http://kcfinder.sunhater.com |
|
| 13 | - */ |
|
| 4 | + * |
|
| 5 | + * @desc GD extension class |
|
| 6 | + * @package KCFinder |
|
| 7 | + * @version 2.51 |
|
| 8 | + * @author Pavel Tzonkov <[email protected]> |
|
| 9 | + * @copyright 2010, 2011 KCFinder Project |
|
| 10 | + * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 |
|
| 11 | + * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 |
|
| 12 | + * @link http://kcfinder.sunhater.com |
|
| 13 | + */ |
|
| 14 | 14 | |
| 15 | 15 | class gd {
|
| 16 | 16 | |
| 17 | - /** GD resource |
|
| 18 | - * @var resource */ |
|
| 17 | + /** GD resource |
|
| 18 | + * @var resource */ |
|
| 19 | 19 | protected $image; |
| 20 | 20 | |
| 21 | - /** Image width |
|
| 22 | - * @var integer */ |
|
| 21 | + /** Image width |
|
| 22 | + * @var integer */ |
|
| 23 | 23 | protected $width; |
| 24 | 24 | |
| 25 | - /** Image height |
|
| 26 | - * @var integer */ |
|
| 25 | + /** Image height |
|
| 26 | + * @var integer */ |
|
| 27 | 27 | protected $height; |
| 28 | 28 | |
| 29 | - /** Init error |
|
| 30 | - * @var bool */ |
|
| 29 | + /** Init error |
|
| 30 | + * @var bool */ |
|
| 31 | 31 | public $init_error = false; |
| 32 | 32 | |
| 33 | - /** Last builded image type constant (IMAGETYPE_XXX) |
|
| 34 | - * @var integer */ |
|
| 33 | + /** Last builded image type constant (IMAGETYPE_XXX) |
|
| 34 | + * @var integer */ |
|
| 35 | 35 | public $type; |
| 36 | 36 | |
| 37 | - /** Returns an array. Element 0 - GD resource. Element 1 - width. Element 2 - height. |
|
| 38 | - * Returns FALSE on failure. The only one parameter $image can be an instance of this class, |
|
| 39 | - * a GD resource, an array(width, height) or path to image file. |
|
| 40 | - * @param mixed $image |
|
| 41 | - * @return array */ |
|
| 37 | + /** Returns an array. Element 0 - GD resource. Element 1 - width. Element 2 - height. |
|
| 38 | + * Returns FALSE on failure. The only one parameter $image can be an instance of this class, |
|
| 39 | + * a GD resource, an array(width, height) or path to image file. |
|
| 40 | + * @param mixed $image |
|
| 41 | + * @return array */ |
|
| 42 | 42 | |
| 43 | 43 | protected function build_image($image) {
|
| 44 | 44 | |
@@ -87,16 +87,16 @@ discard block |
||
| 87 | 87 | return $return; |
| 88 | 88 | } |
| 89 | 89 | |
| 90 | - /** Parameter $image can be: |
|
| 91 | - * 1. An instance of this class (copy instance). |
|
| 92 | - * 2. A GD resource. |
|
| 93 | - * 3. An array with two elements. First - width, second - height. Create a blank image. |
|
| 94 | - * 4. A filename string. Get image form file. |
|
| 95 | - * The non-required parameter $bigger_size is the bigger dimension (width or height) the image |
|
| 96 | - * will be resized to. The other dimension (height or width) will be calculated autamaticaly |
|
| 97 | - * @param mixed $image |
|
| 98 | - * @param integer $bigger_size |
|
| 99 | - * @return gd */ |
|
| 90 | + /** Parameter $image can be: |
|
| 91 | + * 1. An instance of this class (copy instance). |
|
| 92 | + * 2. A GD resource. |
|
| 93 | + * 3. An array with two elements. First - width, second - height. Create a blank image. |
|
| 94 | + * 4. A filename string. Get image form file. |
|
| 95 | + * The non-required parameter $bigger_size is the bigger dimension (width or height) the image |
|
| 96 | + * will be resized to. The other dimension (height or width) will be calculated autamaticaly |
|
| 97 | + * @param mixed $image |
|
| 98 | + * @param integer $bigger_size |
|
| 99 | + * @return gd */ |
|
| 100 | 100 | |
| 101 | 101 | public function __construct($image, $bigger_size=null) {
|
| 102 | 102 | $this->image = $this->width = $this->height = null; |
@@ -123,30 +123,30 @@ discard block |
||
| 123 | 123 | } |
| 124 | 124 | } |
| 125 | 125 | |
| 126 | - /** Returns the GD resource |
|
| 127 | - * @return resource */ |
|
| 126 | + /** Returns the GD resource |
|
| 127 | + * @return resource */ |
|
| 128 | 128 | |
| 129 | 129 | public function get_image() {
|
| 130 | 130 | return $this->image; |
| 131 | 131 | } |
| 132 | 132 | |
| 133 | - /** Returns the image width |
|
| 134 | - * @return integer */ |
|
| 133 | + /** Returns the image width |
|
| 134 | + * @return integer */ |
|
| 135 | 135 | |
| 136 | 136 | public function get_width() {
|
| 137 | 137 | return $this->width; |
| 138 | 138 | } |
| 139 | 139 | |
| 140 | - /** Returns the image height |
|
| 141 | - * @return integer */ |
|
| 140 | + /** Returns the image height |
|
| 141 | + * @return integer */ |
|
| 142 | 142 | |
| 143 | 143 | public function get_height() {
|
| 144 | 144 | return $this->height; |
| 145 | 145 | } |
| 146 | 146 | |
| 147 | - /** Returns calculated proportional width from the given height |
|
| 148 | - * @param integer $resized_height |
|
| 149 | - * @return integer */ |
|
| 147 | + /** Returns calculated proportional width from the given height |
|
| 148 | + * @param integer $resized_height |
|
| 149 | + * @return integer */ |
|
| 150 | 150 | |
| 151 | 151 | public function get_prop_width($resized_height) {
|
| 152 | 152 | $width = intval(($this->width * $resized_height) / $this->height); |
@@ -154,9 +154,9 @@ discard block |
||
| 154 | 154 | return $width; |
| 155 | 155 | } |
| 156 | 156 | |
| 157 | - /** Returns calculated proportional height from the given width |
|
| 158 | - * @param integer $resized_width |
|
| 159 | - * @return integer */ |
|
| 157 | + /** Returns calculated proportional height from the given width |
|
| 158 | + * @param integer $resized_width |
|
| 159 | + * @return integer */ |
|
| 160 | 160 | |
| 161 | 161 | public function get_prop_height($resized_width) {
|
| 162 | 162 | $height = intval(($this->height * $resized_width) / $this->width); |
@@ -164,11 +164,11 @@ discard block |
||
| 164 | 164 | return $height; |
| 165 | 165 | } |
| 166 | 166 | |
| 167 | - /** Returns an array with calculated proportional width & height. |
|
| 168 | - * The parameter $bigger_size is the bigger dimension (width or height) of calculated sizes. |
|
| 169 | - * The other dimension (height or width) will be calculated autamaticaly |
|
| 170 | - * @param integer $bigger_size |
|
| 171 | - * @return array */ |
|
| 167 | + /** Returns an array with calculated proportional width & height. |
|
| 168 | + * The parameter $bigger_size is the bigger dimension (width or height) of calculated sizes. |
|
| 169 | + * The other dimension (height or width) will be calculated autamaticaly |
|
| 170 | + * @param integer $bigger_size |
|
| 171 | + * @return array */ |
|
| 172 | 172 | |
| 173 | 173 | public function get_prop_size($bigger_size) {
|
| 174 | 174 | |
@@ -186,10 +186,10 @@ discard block |
||
| 186 | 186 | return array($width, $height); |
| 187 | 187 | } |
| 188 | 188 | |
| 189 | - /** Resize image. Returns TRUE on success or FALSE on failure |
|
| 190 | - * @param integer $width |
|
| 191 | - * @param integer $height |
|
| 192 | - * @return bool */ |
|
| 189 | + /** Resize image. Returns TRUE on success or FALSE on failure |
|
| 190 | + * @param integer $width |
|
| 191 | + * @param integer $height |
|
| 192 | + * @return bool */ |
|
| 193 | 193 | |
| 194 | 194 | public function resize($width, $height) {
|
| 195 | 195 | if (!$width) $width = 1; |
@@ -203,10 +203,10 @@ discard block |
||
| 203 | 203 | ); |
| 204 | 204 | } |
| 205 | 205 | |
| 206 | - /** Resize the given image source (GD, gd object or image file path) to fit in the own image. |
|
| 207 | - * The outside ares will be cropped out. Returns TRUE on success or FALSE on failure |
|
| 208 | - * @param mixed $src |
|
| 209 | - * @return bool */ |
|
| 206 | + /** Resize the given image source (GD, gd object or image file path) to fit in the own image. |
|
| 207 | + * The outside ares will be cropped out. Returns TRUE on success or FALSE on failure |
|
| 208 | + * @param mixed $src |
|
| 209 | + * @return bool */ |
|
| 210 | 210 | |
| 211 | 211 | public function resize_crop($src) {
|
| 212 | 212 | $image_details = $this->build_image($src); |
@@ -233,10 +233,10 @@ discard block |
||
| 233 | 233 | return false; |
| 234 | 234 | } |
| 235 | 235 | |
| 236 | - /** Resize image to fit in given resolution. Returns TRUE on success or FALSE on failure |
|
| 237 | - * @param integer $width |
|
| 238 | - * @param integer $height |
|
| 239 | - * @return bool */ |
|
| 236 | + /** Resize image to fit in given resolution. Returns TRUE on success or FALSE on failure |
|
| 237 | + * @param integer $width |
|
| 238 | + * @param integer $height |
|
| 239 | + * @return bool */ |
|
| 240 | 240 | |
| 241 | 241 | public function resize_fit($width, $height) {
|
| 242 | 242 | if ((!$width && !$height) || (($width == $this->width) && ($height == $this->height))) |
@@ -250,12 +250,12 @@ discard block |
||
| 250 | 250 | return $this->resize($width, $height); |
| 251 | 251 | } |
| 252 | 252 | |
| 253 | - /** Neka si predstavim vyobrazhaem pravoygylnik s razmeri $width i $height. |
|
| 254 | - * Izobrazhenieto shte se preorazmeri taka che to shte izliza ot tozi pravoygylnik, |
|
| 255 | - * no samo po edno (x ili y) izmerenie |
|
| 256 | - * @param integer $width |
|
| 257 | - * @param integer $height |
|
| 258 | - * @return bool */ |
|
| 253 | + /** Neka si predstavim vyobrazhaem pravoygylnik s razmeri $width i $height. |
|
| 254 | + * Izobrazhenieto shte se preorazmeri taka che to shte izliza ot tozi pravoygylnik, |
|
| 255 | + * no samo po edno (x ili y) izmerenie |
|
| 256 | + * @param integer $width |
|
| 257 | + * @param integer $height |
|
| 258 | + * @return bool */ |
|
| 259 | 259 | |
| 260 | 260 | public function resize_overflow($width, $height) {
|
| 261 | 261 | |
@@ -368,30 +368,30 @@ discard block |
||
| 368 | 368 | |
| 369 | 369 | |
| 370 | 370 | |
| 371 | - /*** gif transparent fix - 1.10.2013 ***/ |
|
| 371 | + /*** gif transparent fix - 1.10.2013 ***/ |
|
| 372 | 372 | |
| 373 | - $transindex = imagecolortransparent($src); |
|
| 374 | - $palletsize = imagecolorstotal($src); |
|
| 375 | - if($transindex >= 0 && $transindex < $palletsize) {
|
|
| 376 | - $transcol = imagecolorsforindex($src, $transindex); |
|
| 373 | + $transindex = imagecolortransparent($src); |
|
| 374 | + $palletsize = imagecolorstotal($src); |
|
| 375 | + if($transindex >= 0 && $transindex < $palletsize) {
|
|
| 376 | + $transcol = imagecolorsforindex($src, $transindex); |
|
| 377 | 377 | |
| 378 | - /*** end gif transparent fix ***/ |
|
| 378 | + /*** end gif transparent fix ***/ |
|
| 379 | 379 | |
| 380 | - $transindex = imagecolorallocatealpha($this->image, $transcol['red'], $transcol['green'], $transcol['blue'], 127); |
|
| 381 | - imagefilledrectangle($this->image, 0, 0, $dst_w, $dst_h, $transindex); |
|
| 382 | - imagecopyresampled($this->image, $src, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); |
|
| 383 | - imagecolortransparent($this->image, $transindex); |
|
| 384 | - for($y=0; $y<$dst_h; ++$y) |
|
| 385 | - for($x=0; $x<$dst_w; ++$x) |
|
| 386 | - if(((imagecolorat($this->image, $x, $y)>>24) & 0x7F) >= 100) imagesetpixel($this->image, $x, $y, $transindex); |
|
| 387 | - imagetruecolortopalette($this->image, true, 255); |
|
| 388 | - } |
|
| 389 | - else {
|
|
| 390 | - $transparent = imagecolorallocatealpha($this->image, 255, 255, 255, 127); |
|
| 391 | - imagefilledrectangle($this->image, 0, 0, $dst_w, $dst_h, $transparent); |
|
| 392 | - imagecopyresampled($this->image, $src, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); |
|
| 393 | - } |
|
| 394 | - return $this->image; |
|
| 380 | + $transindex = imagecolorallocatealpha($this->image, $transcol['red'], $transcol['green'], $transcol['blue'], 127); |
|
| 381 | + imagefilledrectangle($this->image, 0, 0, $dst_w, $dst_h, $transindex); |
|
| 382 | + imagecopyresampled($this->image, $src, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); |
|
| 383 | + imagecolortransparent($this->image, $transindex); |
|
| 384 | + for($y=0; $y<$dst_h; ++$y) |
|
| 385 | + for($x=0; $x<$dst_w; ++$x) |
|
| 386 | + if(((imagecolorat($this->image, $x, $y)>>24) & 0x7F) >= 100) imagesetpixel($this->image, $x, $y, $transindex); |
|
| 387 | + imagetruecolortopalette($this->image, true, 255); |
|
| 388 | + } |
|
| 389 | + else {
|
|
| 390 | + $transparent = imagecolorallocatealpha($this->image, 255, 255, 255, 127); |
|
| 391 | + imagefilledrectangle($this->image, 0, 0, $dst_w, $dst_h, $transparent); |
|
| 392 | + imagecopyresampled($this->image, $src, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); |
|
| 393 | + } |
|
| 394 | + return $this->image; |
|
| 395 | 395 | |
| 396 | 396 | } else |
| 397 | 397 | return false; |
@@ -419,7 +419,7 @@ discard block |
||
| 419 | 419 | public function imagegif($filename=null) {
|
| 420 | 420 | if (is_null($filename) && !headers_sent()) |
| 421 | 421 | header("Content-Type: image/gif");
|
| 422 | - @imagesavealpha($this->image, true); |
|
| 422 | + @imagesavealpha($this->image, true); |
|
| 423 | 423 | return imagegif($this->image, $filename); |
| 424 | 424 | } |
| 425 | 425 | } |
@@ -1,16 +1,16 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | /** This file is part of KCFinder project |
| 4 | - * |
|
| 5 | - * @desc Base configuration file |
|
| 6 | - * @package KCFinder |
|
| 7 | - * @version 2.54 |
|
| 8 | - * @author Pavel Tzonkov <[email protected]> |
|
| 9 | - * @copyright 2010-2014 KCFinder Project |
|
| 10 | - * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 |
|
| 11 | - * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 |
|
| 12 | - * @link http://kcfinder.sunhater.com |
|
| 13 | - */ |
|
| 4 | + * |
|
| 5 | + * @desc Base configuration file |
|
| 6 | + * @package KCFinder |
|
| 7 | + * @version 2.54 |
|
| 8 | + * @author Pavel Tzonkov <[email protected]> |
|
| 9 | + * @copyright 2010-2014 KCFinder Project |
|
| 10 | + * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 |
|
| 11 | + * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 |
|
| 12 | + * @link http://kcfinder.sunhater.com |
|
| 13 | + */ |
|
| 14 | 14 | |
| 15 | 15 | // IMPORTANT!!! Do not remove uncommented settings in this file even if |
| 16 | 16 | // you are using session configuration. |
@@ -70,7 +70,7 @@ discard block |
||
| 70 | 70 | 'dirnameChangeChars' => array( |
| 71 | 71 | ' ' => "_", |
| 72 | 72 | ':' => "." |
| 73 | - ), |
|
| 73 | + ), |
|
| 74 | 74 | 'mime_magic' => "", |
| 75 | 75 | |
| 76 | 76 | 'maxImageWidth' => $modx->config['maxImageWidth'], |
@@ -16,35 +16,35 @@ discard block |
||
| 16 | 16 | $install_language = "english"; |
| 17 | 17 | |
| 18 | 18 | $_langFiles= array ( |
| 19 | - "en" => "english", |
|
| 20 | - "bg" => "bulgarian", |
|
| 21 | - "cs" => "czech", |
|
| 22 | - "da" => "danish", |
|
| 23 | - "fi" => "finnish-utf8", |
|
| 24 | - "fr" => "francais-utf8", |
|
| 25 | - "de" => "german", |
|
| 26 | - "he" => "hebrew", |
|
| 27 | - "it" => "italian", |
|
| 28 | - "ja" => "japanese-utf8", |
|
| 29 | - "nl" => "nederlands-utf8", |
|
| 30 | - "no" => "norwegian", |
|
| 31 | - "fa" => "persian", |
|
| 32 | - "pl" => "polish-utf8", |
|
| 33 | - "pt" => "portuguese-br-utf8", |
|
| 19 | + "en" => "english", |
|
| 20 | + "bg" => "bulgarian", |
|
| 21 | + "cs" => "czech", |
|
| 22 | + "da" => "danish", |
|
| 23 | + "fi" => "finnish-utf8", |
|
| 24 | + "fr" => "francais-utf8", |
|
| 25 | + "de" => "german", |
|
| 26 | + "he" => "hebrew", |
|
| 27 | + "it" => "italian", |
|
| 28 | + "ja" => "japanese-utf8", |
|
| 29 | + "nl" => "nederlands-utf8", |
|
| 30 | + "no" => "norwegian", |
|
| 31 | + "fa" => "persian", |
|
| 32 | + "pl" => "polish-utf8", |
|
| 33 | + "pt" => "portuguese-br-utf8", |
|
| 34 | 34 | // "pt" => "portuguese", |
| 35 | - "ru" => "russian-UTF8", |
|
| 36 | - "es" => "spanish-utf8", |
|
| 37 | - "sv" => "svenska" |
|
| 35 | + "ru" => "russian-UTF8", |
|
| 36 | + "es" => "spanish-utf8", |
|
| 37 | + "sv" => "svenska" |
|
| 38 | 38 | ); |
| 39 | 39 | $_langISO6391 = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2); |
| 40 | 40 | if (!empty($_langFiles[$_langISO6391])) $install_language = $_langFiles[$_langISO6391]; |
| 41 | 41 | |
| 42 | 42 | |
| 43 | 43 | if (isset($_POST['language']) && !stristr($_POST['language'],"..")) { |
| 44 | - $install_language = $_POST['language']; |
|
| 44 | + $install_language = $_POST['language']; |
|
| 45 | 45 | } else { |
| 46 | - if (isset($_GET['language']) && !stristr($_GET['language'],"..")) |
|
| 47 | - $install_language = $_GET['language']; |
|
| 46 | + if (isset($_GET['language']) && !stristr($_GET['language'],"..")) |
|
| 47 | + $install_language = $_GET['language']; |
|
| 48 | 48 | } |
| 49 | 49 | # load language file |
| 50 | 50 | require_once("lang/english.inc.php"); // As fallback |
@@ -53,14 +53,14 @@ discard block |
||
| 53 | 53 | $manager_language = $install_language; |
| 54 | 54 | |
| 55 | 55 | if (isset($_POST['managerlanguage']) && !stristr($_POST['managerlanguage'],"..")) { |
| 56 | - $manager_language = $_POST['managerlanguage']; |
|
| 56 | + $manager_language = $_POST['managerlanguage']; |
|
| 57 | 57 | } else { |
| 58 | - if (isset($_GET['managerlanguage']) && !stristr($_GET['managerlanguage'],"..")) |
|
| 59 | - $manager_language = $_GET['managerlanguage']; |
|
| 58 | + if (isset($_GET['managerlanguage']) && !stristr($_GET['managerlanguage'],"..")) |
|
| 59 | + $manager_language = $_GET['managerlanguage']; |
|
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | foreach($_lang as $k=>$v) |
| 63 | 63 | { |
| 64 | - if(strpos($v,'[+MGR_DIR+]')!==false) |
|
| 65 | - $_lang[$k] = str_replace('[+MGR_DIR+]', MGR_DIR, $v); |
|
| 64 | + if(strpos($v,'[+MGR_DIR+]')!==false) |
|
| 65 | + $_lang[$k] = str_replace('[+MGR_DIR+]', MGR_DIR, $v); |
|
| 66 | 66 | } |
@@ -47,7 +47,7 @@ discard block |
||
| 47 | 47 | |
| 48 | 48 | $autoloader = __DIR__.'/vendor/autoload.php'; |
| 49 | 49 | if (file_exists($autoloader) && is_readable($autoloader)) { |
| 50 | - include_once($autoloader); |
|
| 50 | + include_once($autoloader); |
|
| 51 | 51 | } |
| 52 | 52 | |
| 53 | 53 | if(!isset($_SERVER['REQUEST_TIME_FLOAT'])) $_SERVER['REQUEST_TIME_FLOAT'] = microtime(true); |
@@ -56,11 +56,11 @@ discard block |
||
| 56 | 56 | if(is_file($base_path . 'assets/cache/siteManager.php')) |
| 57 | 57 | include_once($base_path . 'assets/cache/siteManager.php'); |
| 58 | 58 | if(!defined('MGR_DIR') && is_dir("{$base_path}manager")) |
| 59 | - define('MGR_DIR', 'manager'); |
|
| 59 | + define('MGR_DIR', 'manager'); |
|
| 60 | 60 | if(is_file($base_path . 'assets/cache/siteHostnames.php')) |
| 61 | 61 | include_once($base_path . 'assets/cache/siteHostnames.php'); |
| 62 | 62 | if(!defined('MODX_SITE_HOSTNAMES')) |
| 63 | - define('MODX_SITE_HOSTNAMES', ''); |
|
| 63 | + define('MODX_SITE_HOSTNAMES', ''); |
|
| 64 | 64 | |
| 65 | 65 | // get start time |
| 66 | 66 | $mstart = memory_get_usage(); |
@@ -84,7 +84,7 @@ discard block |
||
| 84 | 84 | |
| 85 | 85 | define('IN_PARSER_MODE', true); |
| 86 | 86 | if ( ! defined('IN_MANAGER_MODE')) { |
| 87 | - define('IN_MANAGER_MODE', false); |
|
| 87 | + define('IN_MANAGER_MODE', false); |
|
| 88 | 88 | } |
| 89 | 89 | if (!defined('MODX_API_MODE')) { |
| 90 | 90 | define('MODX_API_MODE', false); |
@@ -92,12 +92,12 @@ discard block |
||
| 92 | 92 | |
| 93 | 93 | // get the required includes |
| 94 | 94 | if(!isset($database_user) || $database_user=="") { |
| 95 | - $rt = @include_once(dirname(__FILE__).'/'.MGR_DIR.'/includes/config.inc.php'); |
|
| 96 | - // Be sure config.inc.php is there and that it contains some important values |
|
| 97 | - if(!$rt || !$database_type || !$database_server || !$database_user || !$dbase) { |
|
| 98 | - readfile('install/not_installed.tpl'); |
|
| 99 | - exit; |
|
| 100 | - } |
|
| 95 | + $rt = @include_once(dirname(__FILE__).'/'.MGR_DIR.'/includes/config.inc.php'); |
|
| 96 | + // Be sure config.inc.php is there and that it contains some important values |
|
| 97 | + if(!$rt || !$database_type || !$database_server || !$database_user || !$dbase) { |
|
| 98 | + readfile('install/not_installed.tpl'); |
|
| 99 | + exit; |
|
| 100 | + } |
|
| 101 | 101 | } |
| 102 | 102 | |
| 103 | 103 | // start session |
@@ -105,11 +105,11 @@ discard block |
||
| 105 | 105 | |
| 106 | 106 | // initiate a new document parser |
| 107 | 107 | if (isset($coreClass) && class_exists($coreClass)) { |
| 108 | - $modx = new $coreClass; |
|
| 108 | + $modx = new $coreClass; |
|
| 109 | 109 | } |
| 110 | 110 | if (!isset($modx) || !($modx instanceof \DocumentParser)) { |
| 111 | - include_once(MODX_MANAGER_PATH.'includes/document.parser.class.inc.php'); |
|
| 112 | - $modx = new \DocumentParser; |
|
| 111 | + include_once(MODX_MANAGER_PATH.'includes/document.parser.class.inc.php'); |
|
| 112 | + $modx = new \DocumentParser; |
|
| 113 | 113 | } |
| 114 | 114 | |
| 115 | 115 | // set some parser options |
@@ -85,7 +85,7 @@ discard block |
||
| 85 | 85 | echo "<span class=\"notok\" style='color:#707070'>".$_lang['setup_database_selection_failed']."</span>".$_lang['setup_database_selection_failed_note']."</p>"; |
| 86 | 86 | $create = true; |
| 87 | 87 | } else { |
| 88 | - if (function_exists('mysqli_set_charset')) mysqli_set_charset($conn, $database_charset); |
|
| 88 | + if (function_exists('mysqli_set_charset')) mysqli_set_charset($conn, $database_charset); |
|
| 89 | 89 | mysqli_query($conn, "{$database_connection_method} {$database_connection_charset}"); |
| 90 | 90 | echo '<span class="ok">'.$_lang['ok']."</span></p>"; |
| 91 | 91 | } |
@@ -280,23 +280,23 @@ discard block |
||
| 280 | 280 | |
| 281 | 281 | // Reset database for installation of demo-site |
| 282 | 282 | if ($installData && $moduleSQLDataFile && $moduleSQLResetFile) { |
| 283 | - echo "<p>" . $_lang['resetting_database']; |
|
| 284 | - $sqlParser->process($moduleSQLResetFile); |
|
| 285 | - // display database results |
|
| 286 | - if ($sqlParser->installFailed == true) { |
|
| 287 | - $errors += 1; |
|
| 288 | - echo "<span class=\"notok\"><b>" . $_lang['database_alerts'] . "</span></p>"; |
|
| 289 | - echo "<p>" . $_lang['setup_couldnt_install'] . "</p>"; |
|
| 290 | - echo "<p>" . $_lang['installation_error_occured'] . "<br /><br />"; |
|
| 291 | - for ($i = 0; $i < count($sqlParser->mysqlErrors); $i++) { |
|
| 292 | - echo "<em>" . $sqlParser->mysqlErrors[$i]["error"] . "</em>" . $_lang['during_execution_of_sql'] . "<span class='mono'>" . strip_tags($sqlParser->mysqlErrors[$i]["sql"]) . "</span>.<hr />"; |
|
| 293 | - } |
|
| 294 | - echo "</p>"; |
|
| 295 | - echo "<p>" . $_lang['some_tables_not_updated'] . "</p>"; |
|
| 296 | - return; |
|
| 297 | - } else { |
|
| 298 | - echo '<span class="ok">'.$_lang['ok']."</span></p>"; |
|
| 299 | - } |
|
| 283 | + echo "<p>" . $_lang['resetting_database']; |
|
| 284 | + $sqlParser->process($moduleSQLResetFile); |
|
| 285 | + // display database results |
|
| 286 | + if ($sqlParser->installFailed == true) { |
|
| 287 | + $errors += 1; |
|
| 288 | + echo "<span class=\"notok\"><b>" . $_lang['database_alerts'] . "</span></p>"; |
|
| 289 | + echo "<p>" . $_lang['setup_couldnt_install'] . "</p>"; |
|
| 290 | + echo "<p>" . $_lang['installation_error_occured'] . "<br /><br />"; |
|
| 291 | + for ($i = 0; $i < count($sqlParser->mysqlErrors); $i++) { |
|
| 292 | + echo "<em>" . $sqlParser->mysqlErrors[$i]["error"] . "</em>" . $_lang['during_execution_of_sql'] . "<span class='mono'>" . strip_tags($sqlParser->mysqlErrors[$i]["sql"]) . "</span>.<hr />"; |
|
| 293 | + } |
|
| 294 | + echo "</p>"; |
|
| 295 | + echo "<p>" . $_lang['some_tables_not_updated'] . "</p>"; |
|
| 296 | + return; |
|
| 297 | + } else { |
|
| 298 | + echo '<span class="ok">'.$_lang['ok']."</span></p>"; |
|
| 299 | + } |
|
| 300 | 300 | } |
| 301 | 301 | |
| 302 | 302 | // Install Templates |
@@ -418,7 +418,7 @@ discard block |
||
| 418 | 418 | $tRow = mysqli_fetch_assoc($ts); |
| 419 | 419 | $templateId = $tRow['id']; |
| 420 | 420 | mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`" . $table_prefix . "site_tmplvar_templates` (tmplvarid, templateid) VALUES($id, $templateId)"); |
| 421 | - } |
|
| 421 | + } |
|
| 422 | 422 | } |
| 423 | 423 | } |
| 424 | 424 | } |
@@ -687,51 +687,51 @@ discard block |
||
| 687 | 687 | |
| 688 | 688 | // Install Dependencies |
| 689 | 689 | foreach ($moduleDependencies as $dependency) { |
| 690 | - $ds = mysqli_query($sqlParser->conn, 'SELECT id, guid FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_modules` WHERE name="' . $dependency['module'] . '"'); |
|
| 691 | - if (!$ds) { |
|
| 692 | - echo "<p>" . mysqli_error($sqlParser->conn) . "</p>"; |
|
| 693 | - return; |
|
| 694 | - } else { |
|
| 695 | - $row = mysqli_fetch_assoc($ds); |
|
| 696 | - $moduleId = $row["id"]; |
|
| 697 | - $moduleGuid = $row["guid"]; |
|
| 698 | - } |
|
| 699 | - // get extra id |
|
| 700 | - $ds = mysqli_query($sqlParser->conn, 'SELECT id FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` WHERE ' . $dependency['column'] . '="' . $dependency['name'] . '"'); |
|
| 701 | - if (!$ds) { |
|
| 702 | - echo "<p>" . mysqli_error($sqlParser->conn) . "</p>"; |
|
| 703 | - return; |
|
| 704 | - } else { |
|
| 705 | - $row = mysqli_fetch_assoc($ds); |
|
| 706 | - $extraId = $row["id"]; |
|
| 707 | - } |
|
| 708 | - // setup extra as module dependency |
|
| 709 | - $ds = mysqli_query($sqlParser->conn, 'SELECT module FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` WHERE module=' . $moduleId . ' AND resource=' . $extraId . ' AND type=' . $dependency['type'] . ' LIMIT 1'); |
|
| 710 | - if (!$ds) { |
|
| 711 | - echo "<p>" . mysqli_error($sqlParser->conn) . "</p>"; |
|
| 712 | - return; |
|
| 713 | - } else { |
|
| 714 | - if (mysqli_num_rows($ds) === 0) { |
|
| 715 | - mysqli_query($sqlParser->conn, 'INSERT INTO ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` (module, resource, type) VALUES(' . $moduleId . ',' . $extraId . ',' . $dependency['type'] . ')'); |
|
| 716 | - echo '<p> ' . $dependency['module'] . ' Module: <span class="ok">' . $_lang['depedency_create'] . '</span></p>'; |
|
| 717 | - } else { |
|
| 718 | - mysqli_query($sqlParser->conn, 'UPDATE ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` SET module = ' . $moduleId . ', resource = ' . $extraId . ', type = ' . $dependency['type'] . ' WHERE module=' . $moduleId . ' AND resource=' . $extraId . ' AND type=' . $dependency['type']); |
|
| 719 | - echo '<p> ' . $dependency['module'] . ' Module: <span class="ok">' . $_lang['depedency_update'] . '</span></p>'; |
|
| 720 | - } |
|
| 721 | - if ($dependency['type'] == 30 || $dependency['type'] == 40) { |
|
| 722 | - // set extra guid for plugins and snippets |
|
| 723 | - $ds = mysqli_query($sqlParser->conn, 'SELECT id FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` WHERE id=' . $extraId . ' LIMIT 1'); |
|
| 724 | - if (!$ds) { |
|
| 725 | - echo "<p>" . mysqli_error($sqlParser->conn) . "</p>"; |
|
| 726 | - return; |
|
| 727 | - } else { |
|
| 728 | - if (mysqli_num_rows($ds) != 0) { |
|
| 729 | - mysqli_query($sqlParser->conn, 'UPDATE ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` SET moduleguid = ' . $moduleGuid . ' WHERE id=' . $extraId); |
|
| 730 | - echo '<p> ' . $dependency['name'] . ': <span class="ok">' . $_lang['guid_set'] . '</span></p>'; |
|
| 731 | - } |
|
| 732 | - } |
|
| 733 | - } |
|
| 734 | - } |
|
| 690 | + $ds = mysqli_query($sqlParser->conn, 'SELECT id, guid FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_modules` WHERE name="' . $dependency['module'] . '"'); |
|
| 691 | + if (!$ds) { |
|
| 692 | + echo "<p>" . mysqli_error($sqlParser->conn) . "</p>"; |
|
| 693 | + return; |
|
| 694 | + } else { |
|
| 695 | + $row = mysqli_fetch_assoc($ds); |
|
| 696 | + $moduleId = $row["id"]; |
|
| 697 | + $moduleGuid = $row["guid"]; |
|
| 698 | + } |
|
| 699 | + // get extra id |
|
| 700 | + $ds = mysqli_query($sqlParser->conn, 'SELECT id FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` WHERE ' . $dependency['column'] . '="' . $dependency['name'] . '"'); |
|
| 701 | + if (!$ds) { |
|
| 702 | + echo "<p>" . mysqli_error($sqlParser->conn) . "</p>"; |
|
| 703 | + return; |
|
| 704 | + } else { |
|
| 705 | + $row = mysqli_fetch_assoc($ds); |
|
| 706 | + $extraId = $row["id"]; |
|
| 707 | + } |
|
| 708 | + // setup extra as module dependency |
|
| 709 | + $ds = mysqli_query($sqlParser->conn, 'SELECT module FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` WHERE module=' . $moduleId . ' AND resource=' . $extraId . ' AND type=' . $dependency['type'] . ' LIMIT 1'); |
|
| 710 | + if (!$ds) { |
|
| 711 | + echo "<p>" . mysqli_error($sqlParser->conn) . "</p>"; |
|
| 712 | + return; |
|
| 713 | + } else { |
|
| 714 | + if (mysqli_num_rows($ds) === 0) { |
|
| 715 | + mysqli_query($sqlParser->conn, 'INSERT INTO ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` (module, resource, type) VALUES(' . $moduleId . ',' . $extraId . ',' . $dependency['type'] . ')'); |
|
| 716 | + echo '<p> ' . $dependency['module'] . ' Module: <span class="ok">' . $_lang['depedency_create'] . '</span></p>'; |
|
| 717 | + } else { |
|
| 718 | + mysqli_query($sqlParser->conn, 'UPDATE ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` SET module = ' . $moduleId . ', resource = ' . $extraId . ', type = ' . $dependency['type'] . ' WHERE module=' . $moduleId . ' AND resource=' . $extraId . ' AND type=' . $dependency['type']); |
|
| 719 | + echo '<p> ' . $dependency['module'] . ' Module: <span class="ok">' . $_lang['depedency_update'] . '</span></p>'; |
|
| 720 | + } |
|
| 721 | + if ($dependency['type'] == 30 || $dependency['type'] == 40) { |
|
| 722 | + // set extra guid for plugins and snippets |
|
| 723 | + $ds = mysqli_query($sqlParser->conn, 'SELECT id FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` WHERE id=' . $extraId . ' LIMIT 1'); |
|
| 724 | + if (!$ds) { |
|
| 725 | + echo "<p>" . mysqli_error($sqlParser->conn) . "</p>"; |
|
| 726 | + return; |
|
| 727 | + } else { |
|
| 728 | + if (mysqli_num_rows($ds) != 0) { |
|
| 729 | + mysqli_query($sqlParser->conn, 'UPDATE ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` SET moduleguid = ' . $moduleGuid . ' WHERE id=' . $extraId); |
|
| 730 | + echo '<p> ' . $dependency['name'] . ': <span class="ok">' . $_lang['guid_set'] . '</span></p>'; |
|
| 731 | + } |
|
| 732 | + } |
|
| 733 | + } |
|
| 734 | + } |
|
| 735 | 735 | } |
| 736 | 736 | |
| 737 | 737 | // call back function |
@@ -13,227 +13,227 @@ |
||
| 13 | 13 | |
| 14 | 14 | class fastImage |
| 15 | 15 | { |
| 16 | - private $strpos = 0; |
|
| 17 | - private $str; |
|
| 18 | - private $uri; |
|
| 19 | - private $type; |
|
| 20 | - private $handle; |
|
| 16 | + private $strpos = 0; |
|
| 17 | + private $str; |
|
| 18 | + private $uri; |
|
| 19 | + private $type; |
|
| 20 | + private $handle; |
|
| 21 | 21 | |
| 22 | - public function __construct($uri = null) |
|
| 23 | - { |
|
| 24 | - if ($uri) $this->load($uri); |
|
| 25 | - } |
|
| 22 | + public function __construct($uri = null) |
|
| 23 | + { |
|
| 24 | + if ($uri) $this->load($uri); |
|
| 25 | + } |
|
| 26 | 26 | |
| 27 | 27 | |
| 28 | - public function load($uri) |
|
| 29 | - { |
|
| 30 | - if ($this->handle) $this->close(); |
|
| 31 | - |
|
| 32 | - $this->uri = $uri; |
|
| 33 | - $this->handle = fopen($uri, 'r'); |
|
| 34 | - } |
|
| 35 | - |
|
| 36 | - |
|
| 37 | - public function close() |
|
| 38 | - { |
|
| 39 | - if (is_resource($this->handle)) fclose($this->handle); |
|
| 40 | - } |
|
| 28 | + public function load($uri) |
|
| 29 | + { |
|
| 30 | + if ($this->handle) $this->close(); |
|
| 31 | + |
|
| 32 | + $this->uri = $uri; |
|
| 33 | + $this->handle = fopen($uri, 'r'); |
|
| 34 | + } |
|
| 35 | + |
|
| 36 | + |
|
| 37 | + public function close() |
|
| 38 | + { |
|
| 39 | + if (is_resource($this->handle)) fclose($this->handle); |
|
| 40 | + } |
|
| 41 | 41 | |
| 42 | 42 | |
| 43 | - public function getSize() |
|
| 44 | - { |
|
| 45 | - $this->strpos = 0; |
|
| 46 | - if ($this->getType()) |
|
| 47 | - { |
|
| 48 | - return array_values($this->parseSize()); |
|
| 49 | - } |
|
| 50 | - |
|
| 51 | - return false; |
|
| 52 | - } |
|
| 53 | - |
|
| 54 | - |
|
| 55 | - public function getType() |
|
| 56 | - { |
|
| 57 | - $this->strpos = 0; |
|
| 58 | - |
|
| 59 | - if (!$this->type) |
|
| 60 | - { |
|
| 61 | - switch ($this->getChars(2)) |
|
| 62 | - { |
|
| 63 | - case "BM": |
|
| 64 | - return $this->type = 'bmp'; |
|
| 65 | - case "GI": |
|
| 66 | - return $this->type = 'gif'; |
|
| 67 | - case chr(0xFF).chr(0xd8): |
|
| 68 | - return $this->type = 'jpeg'; |
|
| 69 | - case chr(0x89).'P': |
|
| 70 | - return $this->type = 'png'; |
|
| 71 | - default: |
|
| 72 | - return false; |
|
| 73 | - } |
|
| 74 | - } |
|
| 75 | - |
|
| 76 | - return $this->type; |
|
| 77 | - } |
|
| 78 | - |
|
| 79 | - |
|
| 80 | - private function parseSize() |
|
| 81 | - { |
|
| 82 | - $this->strpos = 0; |
|
| 83 | - |
|
| 84 | - switch ($this->type) |
|
| 85 | - { |
|
| 86 | - case 'png': |
|
| 87 | - return $this->parseSizeForPNG(); |
|
| 88 | - case 'gif': |
|
| 89 | - return $this->parseSizeForGIF(); |
|
| 90 | - case 'bmp': |
|
| 91 | - return $this->parseSizeForBMP(); |
|
| 92 | - case 'jpeg': |
|
| 93 | - return $this->parseSizeForJPEG(); |
|
| 94 | - } |
|
| 95 | - |
|
| 96 | - return null; |
|
| 97 | - } |
|
| 98 | - |
|
| 99 | - |
|
| 100 | - private function parseSizeForPNG() |
|
| 101 | - { |
|
| 102 | - $chars = $this->getChars(25); |
|
| 103 | - |
|
| 104 | - return unpack("N*", substr($chars, 16, 8)); |
|
| 105 | - } |
|
| 106 | - |
|
| 107 | - |
|
| 108 | - private function parseSizeForGIF() |
|
| 109 | - { |
|
| 110 | - $chars = $this->getChars(11); |
|
| 111 | - |
|
| 112 | - return unpack("S*", substr($chars, 6, 4)); |
|
| 113 | - } |
|
| 114 | - |
|
| 115 | - |
|
| 116 | - private function parseSizeForBMP() |
|
| 117 | - { |
|
| 118 | - $chars = $this->getChars(29); |
|
| 119 | - $chars = substr($chars, 14, 14); |
|
| 120 | - $type = unpack('C', $chars); |
|
| 121 | - |
|
| 122 | - return (reset($type) == 40) ? unpack('L*', substr($chars, 4)) : unpack('L*', substr($chars, 4, 8)); |
|
| 123 | - } |
|
| 124 | - |
|
| 125 | - |
|
| 126 | - private function parseSizeForJPEG() |
|
| 127 | - { |
|
| 128 | - $state = null; |
|
| 129 | - |
|
| 130 | - while (true) |
|
| 131 | - { |
|
| 132 | - switch ($state) |
|
| 133 | - { |
|
| 134 | - default: |
|
| 135 | - $this->getChars(2); |
|
| 136 | - $state = 'started'; |
|
| 137 | - break; |
|
| 138 | - |
|
| 139 | - case 'started': |
|
| 140 | - $b = $this->getByte(); |
|
| 141 | - if ($b === false) return false; |
|
| 142 | - |
|
| 143 | - $state = $b == 0xFF ? 'sof' : 'started'; |
|
| 144 | - break; |
|
| 145 | - |
|
| 146 | - case 'sof': |
|
| 147 | - $b = $this->getByte(); |
|
| 148 | - if (in_array($b, range(0xe0, 0xef))) |
|
| 149 | - { |
|
| 150 | - $state = 'skipframe'; |
|
| 151 | - } |
|
| 152 | - elseif (in_array($b, array_merge(range(0xC0,0xC3), range(0xC5,0xC7), range(0xC9,0xCB), range(0xCD,0xCF)))) |
|
| 153 | - { |
|
| 154 | - $state = 'readsize'; |
|
| 155 | - } |
|
| 156 | - elseif ($b == 0xFF) |
|
| 157 | - { |
|
| 158 | - $state = 'sof'; |
|
| 159 | - } |
|
| 160 | - else |
|
| 161 | - { |
|
| 162 | - $state = 'skipframe'; |
|
| 163 | - } |
|
| 164 | - break; |
|
| 165 | - |
|
| 166 | - case 'skipframe': |
|
| 167 | - $skip = $this->readInt($this->getChars(2)) - 2; |
|
| 168 | - $state = 'doskip'; |
|
| 169 | - break; |
|
| 170 | - |
|
| 171 | - case 'doskip': |
|
| 172 | - $this->getChars($skip); |
|
| 173 | - $state = 'started'; |
|
| 174 | - break; |
|
| 175 | - |
|
| 176 | - case 'readsize': |
|
| 177 | - $c = $this->getChars(7); |
|
| 178 | - |
|
| 179 | - return array($this->readInt(substr($c, 5, 2)), $this->readInt(substr($c, 3, 2))); |
|
| 180 | - } |
|
| 181 | - } |
|
| 182 | - } |
|
| 183 | - |
|
| 184 | - |
|
| 185 | - private function getChars($n) |
|
| 186 | - { |
|
| 187 | - $response = null; |
|
| 188 | - |
|
| 189 | - // do we need more data? |
|
| 190 | - if ($this->strpos + $n -1 >= strlen($this->str)) |
|
| 191 | - { |
|
| 192 | - $end = ($this->strpos + $n); |
|
| 193 | - |
|
| 194 | - while (strlen($this->str) < $end && $response !== false) |
|
| 195 | - { |
|
| 196 | - // read more from the file handle |
|
| 197 | - $need = $end - ftell($this->handle); |
|
| 198 | - |
|
| 199 | - if ($response = fread($this->handle, $need)) |
|
| 200 | - { |
|
| 201 | - $this->str .= $response; |
|
| 202 | - } |
|
| 203 | - else |
|
| 204 | - { |
|
| 205 | - return false; |
|
| 206 | - } |
|
| 207 | - } |
|
| 208 | - } |
|
| 209 | - |
|
| 210 | - $result = substr($this->str, $this->strpos, $n); |
|
| 211 | - $this->strpos += $n; |
|
| 212 | - |
|
| 213 | - // we are dealing with bytes here, so force the encoding |
|
| 214 | - return mb_convert_encoding($result, "8BIT"); |
|
| 215 | - } |
|
| 216 | - |
|
| 217 | - |
|
| 218 | - private function getByte() |
|
| 219 | - { |
|
| 220 | - $c = $this->getChars(1); |
|
| 221 | - $b = unpack("C", $c); |
|
| 222 | - |
|
| 223 | - return reset($b); |
|
| 224 | - } |
|
| 225 | - |
|
| 226 | - |
|
| 227 | - private function readInt($str) |
|
| 228 | - { |
|
| 229 | - $size = unpack("C*", $str); |
|
| 230 | - |
|
| 231 | - return ($size[1] << 8) + $size[2]; |
|
| 232 | - } |
|
| 233 | - |
|
| 234 | - |
|
| 235 | - public function __destruct() |
|
| 236 | - { |
|
| 237 | - $this->close(); |
|
| 238 | - } |
|
| 43 | + public function getSize() |
|
| 44 | + { |
|
| 45 | + $this->strpos = 0; |
|
| 46 | + if ($this->getType()) |
|
| 47 | + { |
|
| 48 | + return array_values($this->parseSize()); |
|
| 49 | + } |
|
| 50 | + |
|
| 51 | + return false; |
|
| 52 | + } |
|
| 53 | + |
|
| 54 | + |
|
| 55 | + public function getType() |
|
| 56 | + { |
|
| 57 | + $this->strpos = 0; |
|
| 58 | + |
|
| 59 | + if (!$this->type) |
|
| 60 | + { |
|
| 61 | + switch ($this->getChars(2)) |
|
| 62 | + { |
|
| 63 | + case "BM": |
|
| 64 | + return $this->type = 'bmp'; |
|
| 65 | + case "GI": |
|
| 66 | + return $this->type = 'gif'; |
|
| 67 | + case chr(0xFF).chr(0xd8): |
|
| 68 | + return $this->type = 'jpeg'; |
|
| 69 | + case chr(0x89).'P': |
|
| 70 | + return $this->type = 'png'; |
|
| 71 | + default: |
|
| 72 | + return false; |
|
| 73 | + } |
|
| 74 | + } |
|
| 75 | + |
|
| 76 | + return $this->type; |
|
| 77 | + } |
|
| 78 | + |
|
| 79 | + |
|
| 80 | + private function parseSize() |
|
| 81 | + { |
|
| 82 | + $this->strpos = 0; |
|
| 83 | + |
|
| 84 | + switch ($this->type) |
|
| 85 | + { |
|
| 86 | + case 'png': |
|
| 87 | + return $this->parseSizeForPNG(); |
|
| 88 | + case 'gif': |
|
| 89 | + return $this->parseSizeForGIF(); |
|
| 90 | + case 'bmp': |
|
| 91 | + return $this->parseSizeForBMP(); |
|
| 92 | + case 'jpeg': |
|
| 93 | + return $this->parseSizeForJPEG(); |
|
| 94 | + } |
|
| 95 | + |
|
| 96 | + return null; |
|
| 97 | + } |
|
| 98 | + |
|
| 99 | + |
|
| 100 | + private function parseSizeForPNG() |
|
| 101 | + { |
|
| 102 | + $chars = $this->getChars(25); |
|
| 103 | + |
|
| 104 | + return unpack("N*", substr($chars, 16, 8)); |
|
| 105 | + } |
|
| 106 | + |
|
| 107 | + |
|
| 108 | + private function parseSizeForGIF() |
|
| 109 | + { |
|
| 110 | + $chars = $this->getChars(11); |
|
| 111 | + |
|
| 112 | + return unpack("S*", substr($chars, 6, 4)); |
|
| 113 | + } |
|
| 114 | + |
|
| 115 | + |
|
| 116 | + private function parseSizeForBMP() |
|
| 117 | + { |
|
| 118 | + $chars = $this->getChars(29); |
|
| 119 | + $chars = substr($chars, 14, 14); |
|
| 120 | + $type = unpack('C', $chars); |
|
| 121 | + |
|
| 122 | + return (reset($type) == 40) ? unpack('L*', substr($chars, 4)) : unpack('L*', substr($chars, 4, 8)); |
|
| 123 | + } |
|
| 124 | + |
|
| 125 | + |
|
| 126 | + private function parseSizeForJPEG() |
|
| 127 | + { |
|
| 128 | + $state = null; |
|
| 129 | + |
|
| 130 | + while (true) |
|
| 131 | + { |
|
| 132 | + switch ($state) |
|
| 133 | + { |
|
| 134 | + default: |
|
| 135 | + $this->getChars(2); |
|
| 136 | + $state = 'started'; |
|
| 137 | + break; |
|
| 138 | + |
|
| 139 | + case 'started': |
|
| 140 | + $b = $this->getByte(); |
|
| 141 | + if ($b === false) return false; |
|
| 142 | + |
|
| 143 | + $state = $b == 0xFF ? 'sof' : 'started'; |
|
| 144 | + break; |
|
| 145 | + |
|
| 146 | + case 'sof': |
|
| 147 | + $b = $this->getByte(); |
|
| 148 | + if (in_array($b, range(0xe0, 0xef))) |
|
| 149 | + { |
|
| 150 | + $state = 'skipframe'; |
|
| 151 | + } |
|
| 152 | + elseif (in_array($b, array_merge(range(0xC0,0xC3), range(0xC5,0xC7), range(0xC9,0xCB), range(0xCD,0xCF)))) |
|
| 153 | + { |
|
| 154 | + $state = 'readsize'; |
|
| 155 | + } |
|
| 156 | + elseif ($b == 0xFF) |
|
| 157 | + { |
|
| 158 | + $state = 'sof'; |
|
| 159 | + } |
|
| 160 | + else |
|
| 161 | + { |
|
| 162 | + $state = 'skipframe'; |
|
| 163 | + } |
|
| 164 | + break; |
|
| 165 | + |
|
| 166 | + case 'skipframe': |
|
| 167 | + $skip = $this->readInt($this->getChars(2)) - 2; |
|
| 168 | + $state = 'doskip'; |
|
| 169 | + break; |
|
| 170 | + |
|
| 171 | + case 'doskip': |
|
| 172 | + $this->getChars($skip); |
|
| 173 | + $state = 'started'; |
|
| 174 | + break; |
|
| 175 | + |
|
| 176 | + case 'readsize': |
|
| 177 | + $c = $this->getChars(7); |
|
| 178 | + |
|
| 179 | + return array($this->readInt(substr($c, 5, 2)), $this->readInt(substr($c, 3, 2))); |
|
| 180 | + } |
|
| 181 | + } |
|
| 182 | + } |
|
| 183 | + |
|
| 184 | + |
|
| 185 | + private function getChars($n) |
|
| 186 | + { |
|
| 187 | + $response = null; |
|
| 188 | + |
|
| 189 | + // do we need more data? |
|
| 190 | + if ($this->strpos + $n -1 >= strlen($this->str)) |
|
| 191 | + { |
|
| 192 | + $end = ($this->strpos + $n); |
|
| 193 | + |
|
| 194 | + while (strlen($this->str) < $end && $response !== false) |
|
| 195 | + { |
|
| 196 | + // read more from the file handle |
|
| 197 | + $need = $end - ftell($this->handle); |
|
| 198 | + |
|
| 199 | + if ($response = fread($this->handle, $need)) |
|
| 200 | + { |
|
| 201 | + $this->str .= $response; |
|
| 202 | + } |
|
| 203 | + else |
|
| 204 | + { |
|
| 205 | + return false; |
|
| 206 | + } |
|
| 207 | + } |
|
| 208 | + } |
|
| 209 | + |
|
| 210 | + $result = substr($this->str, $this->strpos, $n); |
|
| 211 | + $this->strpos += $n; |
|
| 212 | + |
|
| 213 | + // we are dealing with bytes here, so force the encoding |
|
| 214 | + return mb_convert_encoding($result, "8BIT"); |
|
| 215 | + } |
|
| 216 | + |
|
| 217 | + |
|
| 218 | + private function getByte() |
|
| 219 | + { |
|
| 220 | + $c = $this->getChars(1); |
|
| 221 | + $b = unpack("C", $c); |
|
| 222 | + |
|
| 223 | + return reset($b); |
|
| 224 | + } |
|
| 225 | + |
|
| 226 | + |
|
| 227 | + private function readInt($str) |
|
| 228 | + { |
|
| 229 | + $size = unpack("C*", $str); |
|
| 230 | + |
|
| 231 | + return ($size[1] << 8) + $size[2]; |
|
| 232 | + } |
|
| 233 | + |
|
| 234 | + |
|
| 235 | + public function __destruct() |
|
| 236 | + { |
|
| 237 | + $this->close(); |
|
| 238 | + } |
|
| 239 | 239 | } |
@@ -98,8 +98,8 @@ discard block |
||
| 98 | 98 | # |
| 99 | 99 | if (!function_exists('xml_parser_create')) { |
| 100 | 100 | $this->error( "Failed to load PHP's XML Extension. " . |
| 101 | - "http://www.php.net/manual/en/ref.xml.php", |
|
| 102 | - E_USER_ERROR ); |
|
| 101 | + "http://www.php.net/manual/en/ref.xml.php", |
|
| 102 | + E_USER_ERROR ); |
|
| 103 | 103 | } |
| 104 | 104 | |
| 105 | 105 | list($parser, $source) = $this->create_parser($source, |
@@ -108,8 +108,8 @@ discard block |
||
| 108 | 108 | |
| 109 | 109 | if (!is_resource($parser)) { |
| 110 | 110 | $this->error( "Failed to create an instance of PHP's XML parser. " . |
| 111 | - "http://www.php.net/manual/en/ref.xml.php", |
|
| 112 | - E_USER_ERROR ); |
|
| 111 | + "http://www.php.net/manual/en/ref.xml.php", |
|
| 112 | + E_USER_ERROR ); |
|
| 113 | 113 | } |
| 114 | 114 | |
| 115 | 115 | |
@@ -445,9 +445,9 @@ discard block |
||
| 445 | 445 | } |
| 446 | 446 | |
| 447 | 447 | /** |
| 448 | - * return XML parser, and possibly re-encoded source |
|
| 449 | - * |
|
| 450 | - */ |
|
| 448 | + * return XML parser, and possibly re-encoded source |
|
| 449 | + * |
|
| 450 | + */ |
|
| 451 | 451 | function create_parser($source, $out_enc, $in_enc, $detect) { |
| 452 | 452 | if ( substr(phpversion(),0,1) == 5) { |
| 453 | 453 | $parser = $this->php5_create_parser($in_enc, $detect); |
@@ -464,14 +464,14 @@ discard block |
||
| 464 | 464 | } |
| 465 | 465 | |
| 466 | 466 | /** |
| 467 | - * Instantiate an XML parser under PHP5 |
|
| 468 | - * |
|
| 469 | - * PHP5 will do a fine job of detecting input encoding |
|
| 470 | - * if passed an empty string as the encoding. |
|
| 471 | - * |
|
| 472 | - * All hail libxml2! |
|
| 473 | - * |
|
| 474 | - */ |
|
| 467 | + * Instantiate an XML parser under PHP5 |
|
| 468 | + * |
|
| 469 | + * PHP5 will do a fine job of detecting input encoding |
|
| 470 | + * if passed an empty string as the encoding. |
|
| 471 | + * |
|
| 472 | + * All hail libxml2! |
|
| 473 | + * |
|
| 474 | + */ |
|
| 475 | 475 | function php5_create_parser($in_enc, $detect) { |
| 476 | 476 | // by default php5 does a fine job of detecting input encodings |
| 477 | 477 | if(!$detect && $in_enc) { |
@@ -483,20 +483,20 @@ discard block |
||
| 483 | 483 | } |
| 484 | 484 | |
| 485 | 485 | /** |
| 486 | - * Instaniate an XML parser under PHP4 |
|
| 487 | - * |
|
| 488 | - * Unfortunately PHP4's support for character encodings |
|
| 489 | - * and especially XML and character encodings sucks. As |
|
| 490 | - * long as the documents you parse only contain characters |
|
| 491 | - * from the ISO-8859-1 character set (a superset of ASCII, |
|
| 492 | - * and a subset of UTF-8) you're fine. However once you |
|
| 493 | - * step out of that comfy little world things get mad, bad, |
|
| 494 | - * and dangerous to know. |
|
| 495 | - * |
|
| 496 | - * The following code is based on SJM's work with FoF |
|
| 497 | - * @see http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss |
|
| 498 | - * |
|
| 499 | - */ |
|
| 486 | + * Instaniate an XML parser under PHP4 |
|
| 487 | + * |
|
| 488 | + * Unfortunately PHP4's support for character encodings |
|
| 489 | + * and especially XML and character encodings sucks. As |
|
| 490 | + * long as the documents you parse only contain characters |
|
| 491 | + * from the ISO-8859-1 character set (a superset of ASCII, |
|
| 492 | + * and a subset of UTF-8) you're fine. However once you |
|
| 493 | + * step out of that comfy little world things get mad, bad, |
|
| 494 | + * and dangerous to know. |
|
| 495 | + * |
|
| 496 | + * The following code is based on SJM's work with FoF |
|
| 497 | + * @see http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss |
|
| 498 | + * |
|
| 499 | + */ |
|
| 500 | 500 | function php4_create_parser($source, $in_enc, $detect) { |
| 501 | 501 | if ( !$detect ) { |
| 502 | 502 | return array(xml_parser_create($in_enc), $source); |
@@ -540,8 +540,8 @@ discard block |
||
| 540 | 540 | |
| 541 | 541 | // else |
| 542 | 542 | $this->error("Feed is in an unsupported character encoding. ($in_enc) " . |
| 543 | - "You may see strange artifacts, and mangled characters.", |
|
| 544 | - E_USER_NOTICE); |
|
| 543 | + "You may see strange artifacts, and mangled characters.", |
|
| 544 | + E_USER_NOTICE); |
|
| 545 | 545 | |
| 546 | 546 | return array(xml_parser_create(), $source); |
| 547 | 547 | } |
@@ -587,26 +587,26 @@ discard block |
||
| 587 | 587 | // courtesy, Ryan Currie, [email protected] |
| 588 | 588 | |
| 589 | 589 | if (!function_exists('array_change_key_case')) { |
| 590 | - define('CASE_UPPER', 1); |
|
| 591 | - define('CASE_LOWER', 0); |
|
| 590 | + define('CASE_UPPER', 1); |
|
| 591 | + define('CASE_LOWER', 0); |
|
| 592 | 592 | |
| 593 | 593 | |
| 594 | - function array_change_key_case($array, $case=CASE_LOWER) { |
|
| 594 | + function array_change_key_case($array, $case=CASE_LOWER) { |
|
| 595 | 595 | $output = array(); |
| 596 | 596 | switch($case){ |
| 597 | - case CASE_LOWER: |
|
| 597 | + case CASE_LOWER: |
|
| 598 | 598 | $cmd='strtolower'; |
| 599 | - break; |
|
| 600 | - case CASE_UPPER: |
|
| 599 | + break; |
|
| 600 | + case CASE_UPPER: |
|
| 601 | 601 | $cmd='strtoupper'; |
| 602 | - break; |
|
| 603 | - default: |
|
| 602 | + break; |
|
| 603 | + default: |
|
| 604 | 604 | $cmd = ''; |
| 605 | 605 | } |
| 606 | 606 | foreach($array as $key=>$value) { |
| 607 | 607 | $output[empty($cmd) ? $key : $cmd($key)] = $value; |
| 608 | 608 | } |
| 609 | 609 | return $output; |
| 610 | - } |
|
| 610 | + } |
|
| 611 | 611 | |
| 612 | 612 | } |
@@ -1,9 +1,9 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | if( ! defined('IN_MANAGER_MODE') || IN_MANAGER_MODE !== true) {
|
| 3 | - die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly.");
|
|
| 3 | + die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly.");
|
|
| 4 | 4 | } |
| 5 | 5 | if(!$modx->hasPermission('view_eventlog')) {
|
| 6 | - $modx->webAlertAndQuit($_lang["error_no_privileges"]); |
|
| 6 | + $modx->webAlertAndQuit($_lang["error_no_privileges"]); |
|
| 7 | 7 | } |
| 8 | 8 | ?> |
| 9 | 9 | <script type="text/javascript" src="media/script/tablesort.js"></script> |
@@ -17,14 +17,14 @@ discard block |
||
| 17 | 17 | <div class="form-group" id="lyr1"> |
| 18 | 18 | <b><?= $_lang["publish_events"] ?></b> |
| 19 | 19 | <?php |
| 20 | - $rs = $modx->db->select('id, pagetitle, pub_date', $modx->getFullTableName('site_content'), "pub_date > " . time() . "", 'pub_date ASC');
|
|
| 21 | - $limit = $modx->db->getRecordCount($rs); |
|
| 22 | - if($limit < 1) {
|
|
| 23 | - ?> |
|
| 20 | + $rs = $modx->db->select('id, pagetitle, pub_date', $modx->getFullTableName('site_content'), "pub_date > " . time() . "", 'pub_date ASC');
|
|
| 21 | + $limit = $modx->db->getRecordCount($rs); |
|
| 22 | + if($limit < 1) {
|
|
| 23 | + ?> |
|
| 24 | 24 | <p><?= $_lang["no_docs_pending_publishing"] ?></p> |
| 25 | 25 | <?php |
| 26 | - } else {
|
|
| 27 | - ?> |
|
| 26 | + } else {
|
|
| 27 | + ?> |
|
| 28 | 28 | <div class="table-responsive"> |
| 29 | 29 | <table class="grid sortabletable" id="table-1"> |
| 30 | 30 | <thead> |
@@ -36,34 +36,34 @@ discard block |
||
| 36 | 36 | </thead> |
| 37 | 37 | <tbody> |
| 38 | 38 | <?php |
| 39 | - while($row = $modx->db->getRow($rs)) {
|
|
| 40 | - ?> |
|
| 39 | + while($row = $modx->db->getRow($rs)) {
|
|
| 40 | + ?> |
|
| 41 | 41 | <tr> |
| 42 | 42 | <td class="text-right"><?= $row['id'] ?></td> |
| 43 | 43 | <td><a href="index.php?a=3&id=<?= $row['id'] ?>"><?= $row['pagetitle'] ?></a></td> |
| 44 | 44 | <td class="text-nowrap text-right"><?= $modx->toDateFormat($row['pub_date'] + $server_offset_time) ?></td> |
| 45 | 45 | </tr> |
| 46 | 46 | <?php |
| 47 | - } |
|
| 48 | - ?> |
|
| 47 | + } |
|
| 48 | + ?> |
|
| 49 | 49 | </tbody> |
| 50 | 50 | </table> |
| 51 | 51 | </div> |
| 52 | 52 | <?php |
| 53 | - } |
|
| 54 | - ?> |
|
| 53 | + } |
|
| 54 | + ?> |
|
| 55 | 55 | </div> |
| 56 | 56 | <div class="form-group" id="lyr2"> |
| 57 | 57 | <b><?= $_lang["unpublish_events"] ?></b> |
| 58 | 58 | <?php |
| 59 | - $rs = $modx->db->select('id, pagetitle, unpub_date', $modx->getFullTableName('site_content'), "unpub_date > " . time() . "", 'unpub_date ASC');
|
|
| 60 | - $limit = $modx->db->getRecordCount($rs); |
|
| 61 | - if($limit < 1) {
|
|
| 62 | - ?> |
|
| 59 | + $rs = $modx->db->select('id, pagetitle, unpub_date', $modx->getFullTableName('site_content'), "unpub_date > " . time() . "", 'unpub_date ASC');
|
|
| 60 | + $limit = $modx->db->getRecordCount($rs); |
|
| 61 | + if($limit < 1) {
|
|
| 62 | + ?> |
|
| 63 | 63 | <p><?= $_lang["no_docs_pending_unpublishing"] ?></p> |
| 64 | 64 | <?php |
| 65 | - } else {
|
|
| 66 | - ?> |
|
| 65 | + } else {
|
|
| 66 | + ?> |
|
| 67 | 67 | <div class="table-responsive"> |
| 68 | 68 | <table class="grid sortabletable" id="table-2"> |
| 69 | 69 | <thead> |
@@ -75,34 +75,34 @@ discard block |
||
| 75 | 75 | </thead> |
| 76 | 76 | <tbody> |
| 77 | 77 | <?php |
| 78 | - while($row = $modx->db->getRow($rs)) {
|
|
| 79 | - ?> |
|
| 78 | + while($row = $modx->db->getRow($rs)) {
|
|
| 79 | + ?> |
|
| 80 | 80 | <tr> |
| 81 | 81 | <td class="text-right"><?= $row['id'] ?></td> |
| 82 | 82 | <td><a href="index.php?a=3&id=<?= $row['id'] ?>"><?= $row['pagetitle'] ?></a></td> |
| 83 | 83 | <td class="text-nowrap text-right"><?= $modx->toDateFormat($row['unpub_date'] + $server_offset_time) ?></td> |
| 84 | 84 | </tr> |
| 85 | 85 | <?php |
| 86 | - } |
|
| 87 | - ?> |
|
| 86 | + } |
|
| 87 | + ?> |
|
| 88 | 88 | </tbody> |
| 89 | 89 | </table> |
| 90 | 90 | </div> |
| 91 | 91 | <?php |
| 92 | - } |
|
| 93 | - ?> |
|
| 92 | + } |
|
| 93 | + ?> |
|
| 94 | 94 | </div> |
| 95 | 95 | <div class="form-group"> |
| 96 | 96 | <b><?= $_lang["all_events"] ?></b> |
| 97 | 97 | <?php |
| 98 | - $rs = $modx->db->select('id, pagetitle, pub_date, unpub_date', $modx->getFullTableName('site_content'), "pub_date > 0 OR unpub_date > 0", "pub_date DESC");
|
|
| 99 | - $limit = $modx->db->getRecordCount($rs); |
|
| 100 | - if($limit < 1) {
|
|
| 101 | - ?> |
|
| 98 | + $rs = $modx->db->select('id, pagetitle, pub_date, unpub_date', $modx->getFullTableName('site_content'), "pub_date > 0 OR unpub_date > 0", "pub_date DESC");
|
|
| 99 | + $limit = $modx->db->getRecordCount($rs); |
|
| 100 | + if($limit < 1) {
|
|
| 101 | + ?> |
|
| 102 | 102 | <p><?= $_lang["no_docs_pending_pubunpub"] ?></p> |
| 103 | 103 | <?php |
| 104 | - } else {
|
|
| 105 | - ?> |
|
| 104 | + } else {
|
|
| 105 | + ?> |
|
| 106 | 106 | <div class="table-responsive"> |
| 107 | 107 | <table class="grid sortabletable" id="table-3"> |
| 108 | 108 | <thead> |
@@ -115,8 +115,8 @@ discard block |
||
| 115 | 115 | </thead> |
| 116 | 116 | <tbody> |
| 117 | 117 | <?php |
| 118 | - while($row = $modx->db->getRow($rs)) {
|
|
| 119 | - ?> |
|
| 118 | + while($row = $modx->db->getRow($rs)) {
|
|
| 119 | + ?> |
|
| 120 | 120 | <tr> |
| 121 | 121 | <td class="text-right"><?= $row['id'] ?></td> |
| 122 | 122 | <td><a href="index.php?a=3&id=<?= $row['id'] ?>"><?= $row['pagetitle'] ?></a></td> |
@@ -124,14 +124,14 @@ discard block |
||
| 124 | 124 | <td class="text-nowrap text-right"><?= $row['unpub_date'] == 0 ? "" : $modx->toDateFormat($row['unpub_date'] + $server_offset_time) ?></td> |
| 125 | 125 | </tr> |
| 126 | 126 | <?php |
| 127 | - } |
|
| 128 | - ?> |
|
| 127 | + } |
|
| 128 | + ?> |
|
| 129 | 129 | </tbody> |
| 130 | 130 | </table> |
| 131 | 131 | </div> |
| 132 | 132 | <?php |
| 133 | - } |
|
| 134 | - ?> |
|
| 133 | + } |
|
| 134 | + ?> |
|
| 135 | 135 | </div> |
| 136 | 136 | </div> |
| 137 | 137 | </div> |
@@ -1,6 +1,6 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | if( ! defined('IN_MANAGER_MODE') || IN_MANAGER_MODE !== true) { |
| 3 | - die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly."); |
|
| 3 | + die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly."); |
|
| 4 | 4 | } |
| 5 | 5 | |
| 6 | 6 | // (un)publishing of documents, version 2! |
@@ -32,9 +32,9 @@ discard block |
||
| 32 | 32 | <?php if($num_rows_pub) printf('<p>' . $_lang["refresh_published"] . '</p>', $num_rows_pub) ?> |
| 33 | 33 | <?php if($num_rows_unpub) printf('<p>' . $_lang["refresh_unpublished"] . '</p>', $num_rows_unpub) ?> |
| 34 | 34 | <?php |
| 35 | - $modx->clearCache('full', true); |
|
| 36 | - // invoke OnSiteRefresh event |
|
| 37 | - $modx->invokeEvent("OnSiteRefresh"); |
|
| 38 | - ?> |
|
| 35 | + $modx->clearCache('full', true); |
|
| 36 | + // invoke OnSiteRefresh event |
|
| 37 | + $modx->invokeEvent("OnSiteRefresh"); |
|
| 38 | + ?> |
|
| 39 | 39 | </div> |
| 40 | 40 | </div> |