Yes, I suppose this is a bug. I'm wondering if it would be more efficient
to simply add an optional basepage parameter to the pageshortcuts function,
and use that within the pageshortcuts function when needed?  Seems it might
be handy to have this functionality within the pageshortcuts function down
the road. Could you test this out for me:

function BOLTpageshortcuts($link, $basepage='') {
## VARIOUS SHORTCUTS THAT CAN BE USED IN MISC WAYS TO MODIFY LINKS (OR
PAGES IN COMMANDS).  USE LEADING .'S LIKE ..PAGE TO PRODUCE P1.P2.PAGE. USE
+ TIMESTAMP, ^ ID, ~ LOGIN, @ GROUP, ! ACTION, .. -> . (FOR OOPS), SPACE ->
_ , & ENDING # IS THREAD
if (function_exists(myBOLTpageshortcuts)) return myBOLTpageshortcuts($link);
global $pageLink, $pageArray, $BOLTvar, $BOLTid, $BOLTtime;
if ($basepage != '') {
$myPage = $basepage;
$myArray = explode('.', $basepage);
}
else {
$myPage = $pageLink;
$myArray = $pageArray;
}
$BOLTloginPages = BOLTconfig('BOLTloginPages', 'login');
$BOLTgroupPages = BOLTconfig('BOLTgroupPages', 'group');
if ($link == '') return $myPage;
$link = str_replace('&', '&', $link);
if (strpos($link, "/")) $link = str_replace("/", ".", $link);
$get = '';
if (strpos($link, '&') !== false) {
$get = substr($link, strpos($link, "&"));
$link = substr($link, 0, strpos($link, "&"));
}
if (substr($link, -1) == '#') {
$thread = true;
$link = substr($link, 0, -1);
}
if (strpos($link, '#') !== false) {
$anchor = '#' . BOLTutf2url(substr($link, strpos($link, "#") + 1));
$link = substr($link, 0, strpos($link, "#"));
}
$link = str_replace(' ', '_', $link);
if (BOLTconfig('BOLTutfpages', 'true') == 'true') $link =
BOLTutf2url($link);
else $link = BOLTutf8_strip($link);
if (substr($link, 0, 1) == '=') $link = $myPage . '.' . substr($link, 1);
$link = strtolower(trim($link));
if (substr($link, 0, 1) == '.') {
$tempArray = $myArray;
$dots = strlen($link) - strlen(ltrim($link, '.'));
for ($i=0; $i<$dots; $i++) {
if (isset($tempArray[$i])) $temp .= $tempArray[$i] . '.';
}
$link = $temp . substr($link, $dots);
}
$rr1 = array('+','@','!','..',' ','^','~');
$rr2 =
array($BOLTtime,"$BOLTgroupPages.",'action','.','_',$BOLTid,"$BOLTloginPages.");
$link = trim(str_replace($rr1, $rr2, $link), '.');
if ($thread) $link = $link . '.' . BOLTthread("$link.0");
return $link . $anchor . $get;
}

Then of course the index function would be:

// index links
preg_match_all('/\[\[(.*?)(\&|\#|\||\])/', $content, $links);
foreach($links[1] as $pp) $outlinks[] = BOLTpageshortcuts($pp, $p);
$linksArray = array_unique($outlinks);
$mylinks = implode("<>", $linksArray);

A couple problems I see would be the + and # shortcuts but probably no way
around that...

Also looks like there was a glitch in the $rr1 and $rr2 arrays. Supposed to
be ~~ goes to viewers login page--but it conflicts with some things so I
just deleted that. And I added dots to the action, login and group
shortcuts (!,~,@) so now you can just do [[!edit]], [[~id]], [[@admin]]
rather than [[!.edit]] [[~.id]] [[@.admin]]. This would be a change from
existing systems but seems a better way to go...

Incidentally, I also changed markups.php around 524 to this:

if ($label == '') {
if (BOLTconfig('BOLTlinkTitles') == 'true') $label = '+';
else $label = BOLTpageshortcuts($link);  // slight change here to show
proper links in display
}

Cheers,
Dan

P.S. Let me know if this works. I've just put into the core and this code
on page test.index seems to works:

[[@admin]]
[[~caveman]]
[[.]]

{(index test.index)}

<(search link=group.admin)>
<(search link=login.caveman)>
<(search link=test)>




On Sun, Oct 28, 2012 at 10:38 AM, DrunkenMonk <[email protected]> wrote:

> Hej Dan, everyone
>
> I was trying to get some functionality on an old site to work, and I
> realised I was having a problem with backlinks that's pretty easilly solved.
>
> There is a discrepancy in the way the search function handles links (they
> are passed to BOLTpageshortcuts) and the way the indexing function handles
> them (they are not).
>
> I got much better, more intuitive, results with some minor changes. I've
> included my code below, in case you are interested. I would class this as a
> bug fix, but I don't know if you would class the issue as a bug in the
> first place.
>
> I tried to use your coding style as much as possible :/
>
> The following is a change to BOLTindex:
> ---------------------------------------------------
> // index links
>     preg_match_all('/\[\[([^{}:&#|@\/\]]+)(\&|\#|\||\])/', $content,
> $links);
>     // filter and tidy links
>     $linksArray = array_unique($links[1]);
>     BOLTsetPageLink($p, $store);
>     $linksArray = array_map('BOLTpageshortcuts', $linksArray);
>     BOLTrevertPageLink($store);
>     $linksArray = array_unique($linksArray); // refilter after
> pageshortcuts
>     // done
>     $mylinks = implode("<>", $linksArray);
>     $mylinks = BOLTutf2url(str_replace('~', "$loginPages.", $mylinks));
> ----------------------------
>
> Where I use the following helper functions to set the "current page":
> --------------------------------
> function BOLTsetPageLink($page, &$store) {
>   global $pageLink, $pageArray;
>   $store = array($pageLink, $pageArray);
>   $pageLink = $page;
>   $pageArray = explode('.', $page);
>   }
> function BOLTrevertPageLink($store) {
>   global $pageLink, $pageArray;
>   $pageLink = $store[0];
>   $pageArray = $store[1];
>   }
> --------------------------------
>
> It was nice to play around with some BW again. Good luck with 4.x!
>
> --
> You received this message because you are subscribed to the Google Groups
> "BoltWire" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/boltwire/-/_blHH11U_KoJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/boltwire?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"BoltWire" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/boltwire?hl=en.

Reply via email to