[pmwiki-users] Double Custom Markup Prevents Page from Loading

Philippe Krait philippe at krait.net
Wed Nov 13 10:58:18 PST 2019


Many thanks, I really had no idea and this is really strange as the
function used to work when I was using it a while ago.

In any case, you're the boss, it solved it.

Cheers,

Philippe

On Wed, 13 Nov 2019 at 19:38, Petko Yotov <5ko at 5ko.fr> wrote:

> You have a function placed inside another function, so when the outer
> function is called for a second time, it tries to redefine the inner
> function again. This is forbidden, and if you check your error log, you
> will see something like:
>
>    Fatal error: Cannot redeclare UR_exists() (previously declared
>    in popbox.php:173) in popbox.php on line 173
>
> Just place the UR_exists(){...} function before or after the
> PopBox(){...} function.
>
> Petko
>
> On 09/11/2019 10:20, Philippe Krait wrote:
> > Hi,
> >
> > I have a very bizarre side effect from a custom markup, and the most
> > bizarre is that it is a "new" problem in the sense that it has worked
> > in the past (I can't remember under which PmWiki version it worked
> > last, though).
> >
> > The bizarre thing is that when, on a page, I invoke the custom markup
> > the second time, it prevents the save from working, the page stays
> > blank and does not reload. I am pretty sure that this is the cause,
> > because I went to some very old pages with the markup, and the pages
> > with only one instance of the markup load perfectly, but old pages
> > with two or more instances of the markup do not load anymore !
> >
> > I have no idea what might be causing this as I am not that good at
> > programming and at PHP in particular, but I have copied the code of
> > the recipe below. My apologies for the probably very badly written
> > code.
> >
> > Note that it's based on this:
> > http://ajaxian.com/archives/popbox-a-javascript-image-magnifier but I
> > am not sure how it's relevant to the issue... Note that I am using a
> > very old version of the script, do you think it might be the reason ?
> >
> > Can anyone please help me solve this mystery ?
> >
> > Thanks in advance,
> >
> > Philippe
> >
> > ========================================================
> >
> > <?php if (!defined('PmWiki')) exit();
> > /*  Copyright 2010 Philippe Krait (philippe at krait.net)
> >
> >     This script activates the (:popbox ...:) markup.
> >
> >     To activate this script, copy it into the cookbook/ directory,
> >     then add the following line to your local/config.php:
> >
> >         include_once('cookbook/popbox.php');
> > */
> >
> > # Creates the Markup
> > #Markup('popbox','fulltext', '/\\(:popbox(\\s.*?)?:\\)/e',
> > "Keep(PopBox(PSS('$1')))");
> > Markup_e('popbox','fulltext', '/\\(:popbox(\\s.*?)?:\\)/',
> > "Keep(PopBox(\$m[1]))");
> >
> > # Defines where the javascript, css and images are
> > SDV($popBoxDirUrl,$PubDirUrl."/cookbook/popBox");
> >
> > SDV($HTMLHeaderFmt['popboxjava'] , "<script
> > src='$popBoxDirUrl/scripts/PopBox.js' type='text/javascript'></script>
> > <script type='text/javascript'>
> > popBoxWaitImage.src = '$popBoxDirUrl/images/spinner40.gif';
> > popBoxRevertImage = '$popBoxDirUrl/images/magminus.gif';
> > popBoxPopImage = '$popBoxDirUrl/images/magplus.gif';
> > </script>");
> >
> > function PopBox($attr) {
> > $EnablePathInfo = 1;
> >
> > $attr = preg_replace('/ *([a-zA-Z]=)([^\']\\S*)/',"&\$1\$2",$attr);
> > $attr = substr($attr,1);
> > $el = explode("&", $attr);
> >
> > $Header = "";
> > $Tailer = "";
> >
> > $Img =
> > "http://
> ".$_SERVER['SERVER_NAME']."/pmwiki/uploads/Main/Images/Unknown.jpg";
> > $ImgPath = "";
> > $ImgDir =
> > "http://".$_SERVER['SERVER_NAME']."/pmwiki/uploads/Main/Images";
> > $ImgType = "";
> > $ImgName = "";
> > $ImgFormat = "jpg";
> >
> > $size = 250;
> > $title = 'Click to magnify/shrink';
> > $caption = 'Caption';
> > $align = '';
> > # $command = 'onmouseover';
> > $command = 'onclick';
> >
> > $startX = "startpos.x";
> > $startY = "startpos.y";
> > # The newLeft and newTop parameters are treated by default as
> > positions relative to the image starting point and can be either a
> > negative or positive number.
> > # If either value is a numeric string followed by an upper case "A"
> > then it is treated as an absolute position, relative to its containing
> > element (typically the browser window).
> > # Ex: "200A". If either value is null the image will be centered in
> > the browser window.
> > $endX = "null";
> > $endY = "null";
> >
> > $startW = "startpos.w";
> > $startH = "startpos.h";
> > # If the newWidth value is 0 the full width of the image will be used
> > up to a maximum of the browser window width.
> > # If the newWidth value is  null the full size of the image will be
> > used regardless of the browser window width.
> > # Passing either 0 or null will still scale the image against the
> > image height. An integer greater than 0 will not be scaled.
> > $endW = 0;
> > # If the newHeight value is 0 the full height of the image will be
> > used up to a maximum of the browser window height.
> > # If the newHeight value is  null the full size of the image will be
> > used regardless of the browser window height.
> > # Passing either 0 or null will still scale the image against the
> > image width. An integer greater than 0 will not be scaled.
> > $endH = 0;
> >
> > $sM = 100;
> > $sS = 100;
> >
> > $RevertBarAbove = "true";
> > $CaptionBelow = "true";
> >
> > $Style = "PopBoxImageLarge";
> >
> > foreach ($el as $k => $v) {
> > $cpl = explode("=", $v);
> > switch ($cpl[0]) {
> > case "A":
> > case "a":
> >
> > global $pagename, $UploadUrlFmt, $EnablePathInfo;
> >
> > $attpage = $pagename;
> > $path = str_replace(array('"', ' '), array('', '%20'), $cpl[1]);
> >
> > if (preg_match('!^(.*)/([^/]+)$!', $path, $match)) {
> > $attpage = MakePageName($attpage, $match[1]);
> > $path = $match[2];
> > }
> >
> > # if ($EnablePathInfo)
> > $attpage=str_replace(".", "/", $attpage);
> >
> > #echo $EnablePathInfo."<br>\n";
> > #echo $UploadUrlFmt."<br>\n";
> > #echo $attpage."<br>\n";
> > #echo $path."<br>\n";
> >
> > $ImgPath = FmtPageName("$UploadUrlFmt/$attpage/$path", $attpage);
> > #echo $ImgPath."<br>\n";
> > break;
> > case "I":
> > case "i":
> > $ImgPath = str_replace(array('"', ' '), array('', '%20'), $cpl[1]);
> > break;
> > case "T":
> > case "t":
> > $ImgType = str_replace('"', '', $cpl[1]);
> > break;
> > case "N":
> > case "n":
> > $ImgName = str_replace(array('"', ' '), array('', '%20'), $cpl[1]);
> > break;
> > case "F":
> > case "f":
> > $ImgFormat = str_replace('"', '', $cpl[1]);
> > break;
> > case "S":
> > case "s":
> > $size = str_replace('"', '', $cpl[1]);
> > break;
> > case "C":
> > case "c":
> > $caption = str_replace('"', '', $cpl[1]);
> > break;
> > case "P":
> > case "p":
> > $assignformat=array( "lfloat" => "lfloat", "rfloat" => "rfloat",
> > "lframe" => "lfloat frame", "rframe" => "rfloat frame",
> > "lfloatclear" => "lfloat lclear", "rfloatclear" => "rfloat rclear",
> > "lframeclear" => "lfloat frame lclear", "rframeclear" => "rfloat frame
> > rclear", );
> >
> > switch (str_replace('"', '', $cpl[1])) {
> > case "left": case "Left": case "LEFT":
> > case "right": case "Right": case "RIGHT":
> > $Header = "<div style='text-align: ".strtolower($cpl[1]).";'>";
> > $Tailer = "</div>";
> > break;
> > case "lfloat": case "Lfloat": case "LFloat": case "LFLOAT":
> > case "rfloat": case "Rfloat": case "RFloat": case "RFLOAT":
> > case "lfloatclear": case "Lfloatclear": case "LFloatClear": case
> > "LFLOATCLEAR":
> > case "rfloatclear": case "Rfloatclear": case "RFloatClear": case
> > "RFLOATCLEAR":
> > $Header = "<div class='".$assignformat[strtolower(str_replace('"', '',
> > $cpl[1]))]."' style='text-align: center;'>";
> > $Tailer = "</div>";
> > break;
> > case "lframe": case "Lframe": case "LFrame": case "LFRAME":
> > case "rframe": case "Rframe": case "RFrame": case "RFRAME":
> > case "lframeclear": case "Lframeclear": case "LFrameClear": case
> > "LFRAMECLEAR":
> > case "rframeclear": case "Rframeclear": case "RFrameClear": case
> > "RFRAMECLEAR":
> > $Header = "<div class='".$assignformat[strtolower(str_replace('"', '',
> > $cpl[1]))]."' style='text-align: center;'>";
> > $Tailer = "<br /><strong><em>$caption</em></strong></div>";
> > break;
> > case "note": case "Note": case "NOTE":
> > $Header = "<table class='widenote'><tr><td
> > class='noteheader'>$caption</td></tr><tr><td>";
> > $Tailer = "</td></tr></table>";
> > break;
> > }
> > break;
> > }
> > }
> >
> > $ImgPath = "$ImgPath.$ImgFormat";
> >
> > #echo "Path: |".$ImgPath."|<br>\n";
> >
> >         function UR_exists($uri) {
> >             $ch = curl_init($uri);
> >             curl_setopt($ch, CURLOPT_NOBODY, true);
> >             curl_exec($ch);
> >             $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
> >             curl_close($ch);
> >
> >             return $code == 200;
> >         }
> >
> > if (UR_exists($ImgPath)) $Img = $ImgPath;
> > else $caption = "Unknown Image ! ".$caption;
> >
> > return "$Header
> > <img src='$Img' pbsrc='$Img' title='$title' pbCaption='$caption'
> > $command=' var startPos = GetElementPosition(this);
> > popBoxRevertBarAbove=$RevertBarAbove;
> > popBoxCaptionBelow=$CaptionBelow;
> > PopEx(this, $endX, $endY, $endW, $endH, $sM,\"$Style\");'
> > alt='' width='".$size."px' $align  />
> > $Tailer";
> > }
> >
> > ?>
> > _______________________________________________
> > pmwiki-users mailing list
> > pmwiki-users at pmichaud.com
> > http://www.pmichaud.com/mailman/listinfo/pmwiki-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.pmichaud.com/pipermail/pmwiki-users/attachments/20191113/b5d2f44d/attachment-0001.html>


More information about the pmwiki-users mailing list