Revision 2026
Added by darkviper almost 11 years ago
branches/2.8.x/CHANGELOG | ||
---|---|---|
11 | 11 |
! = Update/Change |
12 | 12 |
=============================================================================== |
13 | 13 |
|
14 |
08 Dec-2013 Build 2026 Manuela v.d.Decken(DarkViper) |
|
15 |
! [wblink] outputfilter now can handle ancors too |
|
16 |
! WbLink Interface is much more easier to use now. |
|
14 | 17 |
07 Dec-2013 Build 2025 Manuela v.d.Decken(DarkViper) |
15 | 18 |
# mod-MultiLingual forgotten fix in Lib.php :( |
16 | 19 |
07 Dec-2013 Build 2024 Manuela v.d.Decken(DarkViper) |
branches/2.8.x/wb/admin/interface/version.php | ||
---|---|---|
51 | 51 |
|
52 | 52 |
// check if defined to avoid errors during installation (redirect to admin panel fails if PHP error/warnings are enabled) |
53 | 53 |
if(!defined('VERSION')) define('VERSION', '2.8.3'); |
54 |
if(!defined('REVISION')) define('REVISION', '2025');
|
|
54 |
if(!defined('REVISION')) define('REVISION', '2026');
|
|
55 | 55 |
if(!defined('SP')) define('SP', ''); |
branches/2.8.x/wb/framework/WbLinkAbstract.php | ||
---|---|---|
35 | 35 |
*/ |
36 | 36 |
abstract class WbLinkAbstract { |
37 | 37 |
|
38 |
protected $oDb = null; |
|
39 |
protected $oReg = null; |
|
40 |
|
|
38 |
/** |
|
39 |
* @var object $oDb the active instance of WbDatabase |
|
40 |
*/ |
|
41 |
protected $oDb = null; |
|
42 |
/** |
|
43 |
* @var object $oReg the active instance of WbAdaptor |
|
44 |
*/ |
|
45 |
protected $oReg = null; |
|
46 |
/** |
|
47 |
* @var string $sAddon the name of the addon, which extends this class |
|
48 |
*/ |
|
49 |
protected $sAddon = ''; |
|
50 |
/** |
|
51 |
* protected constructor |
|
52 |
*/ |
|
41 | 53 |
final public function __construct() |
42 | 54 |
{ |
43 |
$this->oDb = WbDatabase::getInstance(); |
|
44 |
$this->oReg = WbAdaptor::getInstance(); |
|
55 |
$this->oDb = WbDatabase::getInstance(); |
|
56 |
$this->oReg = WbAdaptor::getInstance(); |
|
57 |
$this->sAddon = preg_replace('/^.*?_([^_]+)_[^_]*?$/', '\1', get_class($this)); |
|
45 | 58 |
} |
46 | 59 |
|
60 |
|
|
47 | 61 |
abstract public function makeLinkFromTag(array $aReplacement); |
48 | 62 |
abstract public function &generateOptionsList(); |
49 | 63 |
|
50 | 64 |
/** |
51 |
* |
|
52 |
* @param string $sAddonName |
|
53 |
* @param string $sAddonTableName |
|
54 |
* @param string $sPageIdName |
|
55 |
* @param string $sSectionIdName |
|
56 |
* @param string $sItemIdName |
|
57 |
* @param string $sDateTimeName |
|
58 |
* @param string $sTitleName |
|
59 |
* @param string $sActivatedName |
|
65 |
* executeListGeneration |
|
60 | 66 |
* @return array by reference |
61 | 67 |
*/ |
62 |
final protected function &_executeListGeneration( |
|
63 |
$sAddonName = 'news', |
|
64 |
$sAddonTableName = 'mod_news_posts', |
|
65 |
$sPageIdName = 'page_id', |
|
66 |
$sSectionIdName = 'section_id', |
|
67 |
$sItemIdName = 'post_id', |
|
68 |
$sDateTimeName = 'created_when', |
|
69 |
$sTitleName = 'title', |
|
70 |
$sActivatedName = 'active' |
|
71 |
) |
|
68 |
final protected function &_executeListGeneration() |
|
72 | 69 |
{ |
73 | 70 |
$aAddonItems = array(); |
74 | 71 |
//generate news lists |
75 |
$sql = 'SELECT `p`.`'.$sItemIdName.'` `ItemId`, `p`.`'.$sPageIdName.'` `PageId`, '
|
|
76 |
. '`s`.`section_id` `SectionId`, `p`.`'.$sTitleName.'` `Title` '
|
|
72 |
$sql = 'SELECT `p`.`'.$this::FIELDNAME_ITEM_ID.'` `ItemId`, `p`.`'.$this::FIELDNAME_PAGE_ID.'` `PageId`, '
|
|
73 |
. '`s`.`section_id` `SectionId`, `p`.`'.$this::FIELDNAME_TITLE.'` `Title` '
|
|
77 | 74 |
. 'FROM `'.$this->oDb->TablePrefix.'sections` `s` ' |
78 |
. 'LEFT JOIN `'.$this->oDb->TablePrefix.$sAddonTableName.'` `p` ON `s`.`section_id`= `p`.`'.$sSectionIdName.'` ' |
|
79 |
. 'WHERE `p`.`'.$sActivatedName.'`>0 AND `s`.`module`=\''.$sAddonName.'\' ' |
|
80 |
. 'ORDER BY `s`.`page_id`, `s`.`section_id`, `p`.`'.$sDateTimeName.'` DESC'; |
|
75 |
. 'LEFT JOIN `'.$this->oDb->TablePrefix.$this::TABLE_NAME.'` `p` ON `s`.`section_id`= `p`.`'.$this::FIELDNAME_SECTION_ID.'` ' |
|
76 |
. 'WHERE `s`.`module`=\''.$this->sAddon.'\' ' |
|
77 |
. ($this->FIELDNAME_ACTIVE != '' ? 'AND `p`.`'.$this::FIELDNAME_ACTIVE.'`>0 ' : '') |
|
78 |
. 'ORDER BY `s`.`page_id`, `s`.`section_id`'.($this::FIELDNAME_TIMESTAMP != '' ? ', `p`.`'.$this::FIELDNAME_TIMESTAMP.'` DESC' : ''); |
|
81 | 79 |
if (( $oRes = $this->oDb->doQuery($sql))) { |
80 |
// preset group changer flags |
|
82 | 81 |
$iCurrentPage = 0; |
83 | 82 |
$iCurrentSection = 0; |
84 | 83 |
$iSectionCounter = 0; |
85 | 84 |
while ($aItem = $oRes->fetchRow(MYSQL_ASSOC)) { |
85 |
// iterate all matches |
|
86 | 86 |
if ($iCurrentPage != $aItem['PageId']) { |
87 |
// change group by PageId |
|
87 | 88 |
$iCurrentPage = $aItem['PageId']; |
88 | 89 |
$aAddonItems[$iCurrentPage.'P'] = array(); |
89 | 90 |
} |
90 | 91 |
if ($iCurrentSection != $aItem['SectionId']) { |
92 |
// change group by SectionId |
|
91 | 93 |
$iCurrentSection = $aItem['SectionId']; |
92 | 94 |
$aAddonItems[$iCurrentPage.'P'][] = array(); |
93 | 95 |
$iSectionCounter = sizeof($aAddonItems[$iCurrentPage.'P'])-1; |
94 | 96 |
} |
97 |
// save current record |
|
95 | 98 |
$aAddonItems[$iCurrentPage.'P'][$iSectionCounter][] = array( |
96 |
'wblink' => '[wblink'.$aItem['PageId'].'?addon='.$sAddonName.'&item='.$aItem['ItemId'].']',
|
|
99 |
'wblink' => '[wblink'.$aItem['PageId'].'?addon='.$sAddon.'&item='.$aItem['ItemId'].']', |
|
97 | 100 |
'title' => preg_replace("/\r?\n/", "\\n", $this->oDb->escapeString($aItem['Title'])) |
98 | 101 |
); |
99 | 102 |
} |
100 | 103 |
} |
101 | 104 |
return $aAddonItems; |
102 | 105 |
} |
103 |
|
|
104 |
|
|
106 |
/** |
|
107 |
* makeLinkFromTag |
|
108 |
* @param string $sBasePath |
|
109 |
* @param array $aReplacement |
|
110 |
* @return string a valid URL or '#' on error |
|
111 |
*/ |
|
112 |
protected function _makeLinkFromTag($sBasePath, array $aReplacement) |
|
113 |
{ |
|
114 |
// set link on failure ('#' means, still stay on current page) |
|
115 |
$sRetval = '#'; |
|
116 |
// search `link` from posts table and create absolute URL |
|
117 |
$sql = 'SELECT `'.$this::FIELDNAME_LINK.'` ' |
|
118 |
. 'FROM `'.$this->oDb->TablePrefix.$this::TABLE_NAME.'` ' |
|
119 |
. 'WHERE `'.$this::FIELDNAME_ITEM_ID.'`='.$aReplacement['item']; |
|
120 |
if (($sLink = $this->oDb->get_one($sql))) { |
|
121 |
$sLink = trim(str_replace('\\', '/', $sLink), '/'); |
|
122 |
$sBasePath = trim(str_replace('\\', '/', $sBasePath), '/').'/'; |
|
123 |
// test if valid accessfile is available |
|
124 |
$sFilePath = $sBasePath.$sLink.$this->oReg->PageExtension; |
|
125 |
if (is_readable($sFilePath)) { |
|
126 |
$sRelPath = preg_replace('/^'.preg_quote($this->oReg->AppPath, '/').'/', '', $sFilePath); |
|
127 |
$sRetval = $this->oReg->AppUrl.$sRelPath.$aReplacement['ancor']; |
|
128 |
} |
|
129 |
} |
|
130 |
return $sRetval; |
|
131 |
} |
|
105 | 132 |
} // end of class WbLinkAbstract |
branches/2.8.x/wb/modules/output_filter/filters/filterWbLink.php | ||
---|---|---|
1 | 1 |
<?php |
2 |
|
|
3 |
|
|
4 |
/** |
|
5 |
* ParseWbLink |
|
6 |
* @param string $sContent |
|
7 |
* @return array details of all found Wblink-Tags |
|
8 |
* @description parse |
|
9 |
*/ |
|
10 |
function _parseWbLink(&$sContent) |
|
11 |
{ |
|
12 |
$aResults = array(); |
|
13 |
$aMatches = array(); |
|
14 |
$sPattern = '/\[wblink([0-9]+)(\#([^\?]+))?(\?([^\]]+))?\]/is'; |
|
15 |
if (preg_match_all($sPattern, $sContent, $aMatches, PREG_SET_ORDER)) { |
|
16 |
foreach ($aMatches as $aTag) { |
|
17 |
$aResults[$aTag[0]] = array(); |
|
18 |
$aResults[$aTag[0]]['pageid'] = $aTag[1]; |
|
19 |
$aResults[$aTag[0]]['ancor'] = (isset($aTag[3]) ? $aTag[3] : ''); |
|
20 |
$aResults[$aTag[0]]['params'] = array(); |
|
21 |
$aTag[5] = (isset($aTag[5]) ? $aTag[5] : ''); |
|
22 |
$aTmpArgs = preg_split('/&|&/i', $aTag[5], -1, PREG_SPLIT_NO_EMPTY); |
|
23 |
foreach ($aTmpArgs as $sArgument) { |
|
24 |
$aArgs = explode('=', $sArgument); |
|
25 |
$aResults[$aTag[0]]['params'][$aArgs[0]] = $aArgs[1]; |
|
26 |
} |
|
27 |
} |
|
28 |
} |
|
29 |
return $aResults; |
|
30 |
} |
|
2 | 31 |
/* |
3 | 32 |
* @param string $content : contains the full content of the current page |
4 | 33 |
* @return string |
... | ... | |
10 | 39 |
$oDb = WbDatabase::getInstance(); |
11 | 40 |
$oReg = WbAdaptor::getInstance(); |
12 | 41 |
$aReplaceList = array(); |
13 |
$sPattern = '/\[wblink([0-9]+)\??([^\]]*)\]/is';
|
|
14 |
if(preg_match_all($sPattern,$sContent,$aMatches))
|
|
15 |
{ |
|
16 |
// iterate through all found matches
|
|
17 |
foreach($aMatches[0] as $iKey => $sKeyString )
|
|
18 |
{
|
|
19 |
$aReplaceList[$sKeyString] = array();
|
|
20 |
// use original Tag to save PageId
|
|
21 |
$aReplaceList[$sKeyString]['PageId'] = $aMatches[1][$iKey];
|
|
22 |
// if there are additional arguments given
|
|
23 |
if($aMatches[2][$iKey])
|
|
42 |
$aTagList = _parseWblink($sContent);
|
|
43 |
// iterate list if replacements are available
|
|
44 |
foreach ($aTagList as $sKey=>$aTag) {
|
|
45 |
// set link on failure ('#' means, still stay on current page)
|
|
46 |
$aReplaceList[$sKey] = '#';
|
|
47 |
// sanitize possible ancor
|
|
48 |
$aTag['ancor'] = ($aTag['ancor'] == '' ? '' : '#'.$aTag['ancor']);
|
|
49 |
// handle normal pages links
|
|
50 |
if (sizeof($aTag['params']) == 0) {
|
|
51 |
$sql = 'SELECT `link` FROM `'.$oDb->TablePrefix.'pages` WHERE `page_id` = '.(int)$aTag['pageid'];
|
|
52 |
if(($sLink = $oDb->get_one($sql)))
|
|
24 | 53 |
{ |
25 |
$aReplaceList[$sKeyString]['Args'] = array();
|
|
26 |
$aArgs = preg_split('/&|&/i', $aMatches[2][$iKey], -1, PREG_SPLIT_NO_EMPTY);
|
|
27 |
foreach($aArgs as $sArgument)
|
|
54 |
$sLink = trim(str_replace('\\', '/', $sLink), '/');
|
|
55 |
// test if valid accessfile is available
|
|
56 |
if(is_readable($oReg->AppPath.$oReg->PagesDir.$sLink.$oReg->PageExtension))
|
|
28 | 57 |
{ |
29 |
$aTmp = explode('=', $sArgument);
|
|
30 |
$aReplaceList[$sKeyString]['Args'][$aTmp[0]] = $aTmp[1];
|
|
58 |
// create absolute URL
|
|
59 |
$aReplaceList[$sKey] = $oReg->AppUrl.$oReg->PagesDir.$sLink.$oReg->PageExtension.$aTag['ancor'];
|
|
31 | 60 |
} |
32 | 61 |
} |
33 |
} |
|
34 |
if(sizeof($aReplaceList) > 0) |
|
35 |
{ // iterate list if replacements are available |
|
36 |
foreach($aReplaceList as $sKey => $aReplacement) |
|
62 |
// handle links of modules |
|
63 |
} else { |
|
64 |
// build name of the needed class |
|
65 |
$sClass = 'm_'.$aTag['params']['addon'].'_WbLink'; |
|
66 |
// remove addon name from replacement array |
|
67 |
// unset($aReplacement['Args']['addon']); |
|
68 |
if(class_exists($sClass)) |
|
37 | 69 |
{ |
38 |
// set link on failure ('#' means, still stay on current page)
|
|
39 |
$aReplaceList[$sKey] = '#';
|
|
40 |
// handle normal pages links
|
|
41 |
if(!isset($aReplacement['Args']))
|
|
70 |
// instantiate class
|
|
71 |
$oWbLink = new $sClass();
|
|
72 |
// the class must implement the interface
|
|
73 |
if($oWbLink instanceof WbLinkAbstract)
|
|
42 | 74 |
{ |
43 |
// read corresponding link from table 'pages' |
|
44 |
$sql = 'SELECT `link` FROM `'.$oDb->TablePrefix.'pages` WHERE `page_id` = '.(int)$aReplacement['PageId']; |
|
45 |
if(($sLink = $oDb->get_one($sql))) |
|
46 |
{ |
|
47 |
$sLink = trim(str_replace('\\', '/', $sLink), '/'); |
|
48 |
// test if valid accessfile is available |
|
49 |
if(is_readable($oReg->AppPath.$oReg->PagesDir.$sLink.$oReg->PageExtension)) |
|
50 |
{ |
|
51 |
// create absolute URL |
|
52 |
$aReplaceList[$sKey] = $oReg->AppUrl.$oReg->PagesDir.$sLink.$oReg->PageExtension; |
|
53 |
} |
|
54 |
} |
|
55 |
// handle links of modules |
|
56 |
}else |
|
57 |
{ |
|
58 |
// build name of the needed class |
|
59 |
$sClass = 'm_'.$aReplacement['Args']['addon'].'_WbLink'; |
|
60 |
// remove addon name from replacement array |
|
61 |
unset($aReplacement['Args']['addon']); |
|
62 |
if(class_exists($sClass)) |
|
63 |
{ |
|
64 |
// instantiate class |
|
65 |
$oWbLink = new $sClass(); |
|
66 |
// the class must implement the interface |
|
67 |
if($oWbLink instanceof WbLinkAbstract) |
|
68 |
{ |
|
69 |
// create real link from replacement data |
|
70 |
$aReplaceList[$sKey] = $oWbLink->makeLinkFromTag($aReplacement['Args']); |
|
71 |
} |
|
72 |
} |
|
75 |
$aTag['params']['pageid'] = $aTag['pageid']; |
|
76 |
$aTag['params']['ancor'] = $aTag['ancor']; |
|
77 |
// create real link from replacement data |
|
78 |
$aReplaceList[$sKey] = $oWbLink->makeLinkFromTag($aTag['params']); |
|
73 | 79 |
} |
74 | 80 |
} |
75 |
// extract indexes into a new array |
|
76 |
$aSearchList = array_keys($aReplaceList); |
|
77 |
// replace all identified wblink-tags in content |
|
78 |
$sContent = str_replace($aSearchList, $aReplaceList, $sContent); |
|
79 | 81 |
} |
82 |
// extract indexes into a new array |
|
83 |
$aSearchList = array_keys($aReplaceList); |
|
84 |
// replace all identified wblink-tags in content |
|
85 |
$sContent = str_replace($aSearchList, $aReplaceList, $sContent); |
|
80 | 86 |
} |
81 | 87 |
return $sContent; |
82 | 88 |
} |
89 |
|
|
90 |
|
|
91 |
// $oDb = WbDatabase::getInstance(); |
|
92 |
// $oReg = WbAdaptor::getInstance(); |
|
93 |
// $aReplaceList = array(); |
|
94 |
// $sPattern = '/\[wblink([0-9]+)\??([^\]]*)\]/is'; |
|
95 |
// if(preg_match_all($sPattern,$sContent,$aMatches)) |
|
96 |
// { |
|
97 |
// // iterate through all found matches |
|
98 |
// foreach($aMatches[0] as $iKey => $sKeyString ) |
|
99 |
// { |
|
100 |
// $aReplaceList[$sKeyString] = array(); |
|
101 |
// // use original Tag to save PageId |
|
102 |
// $aReplaceList[$sKeyString]['PageId'] = $aMatches[1][$iKey]; |
|
103 |
// // if there are additional arguments given |
|
104 |
// if($aMatches[2][$iKey]) |
|
105 |
// { |
|
106 |
// $aReplaceList[$sKeyString]['Args'] = array(); |
|
107 |
// $aArgs = preg_split('/&|&/i', $aMatches[2][$iKey], -1, PREG_SPLIT_NO_EMPTY); |
|
108 |
// foreach($aArgs as $sArgument) |
|
109 |
// { |
|
110 |
// $aTmp = explode('=', $sArgument); |
|
111 |
// $aReplaceList[$sKeyString]['Args'][$aTmp[0]] = $aTmp[1]; |
|
112 |
// } |
|
113 |
// } |
|
114 |
// } |
|
115 |
// if(sizeof($aReplaceList) > 0) |
|
116 |
// { // iterate list if replacements are available |
|
117 |
// foreach($aReplaceList as $sKey => $aReplacement) |
|
118 |
// { |
|
119 |
// // set link on failure ('#' means, still stay on current page) |
|
120 |
// $aReplaceList[$sKey] = '#'; |
|
121 |
// // handle normal pages links |
|
122 |
// if(!isset($aReplacement['Args'])) |
|
123 |
// { |
|
124 |
// // read corresponding link from table 'pages' |
|
125 |
// $sql = 'SELECT `link` FROM `'.$oDb->TablePrefix.'pages` WHERE `page_id` = '.(int)$aReplacement['PageId']; |
|
126 |
// if(($sLink = $oDb->get_one($sql))) |
|
127 |
// { |
|
128 |
// $sLink = trim(str_replace('\\', '/', $sLink), '/'); |
|
129 |
// // test if valid accessfile is available |
|
130 |
// if(is_readable($oReg->AppPath.$oReg->PagesDir.$sLink.$oReg->PageExtension)) |
|
131 |
// { |
|
132 |
// // create absolute URL |
|
133 |
// $aReplaceList[$sKey] = $oReg->AppUrl.$oReg->PagesDir.$sLink.$oReg->PageExtension; |
|
134 |
// } |
|
135 |
// } |
|
136 |
// // handle links of modules |
|
137 |
// }else |
|
138 |
// { |
|
139 |
// // build name of the needed class |
|
140 |
// $sClass = 'm_'.$aReplacement['Args']['addon'].'_WbLink'; |
|
141 |
// // remove addon name from replacement array |
|
142 |
// unset($aReplacement['Args']['addon']); |
|
143 |
// if(class_exists($sClass)) |
|
144 |
// { |
|
145 |
// // instantiate class |
|
146 |
// $oWbLink = new $sClass(); |
|
147 |
// // the class must implement the interface |
|
148 |
// if($oWbLink instanceof WbLinkAbstract) |
|
149 |
// { |
|
150 |
// // create real link from replacement data |
|
151 |
// $aReplaceList[$sKey] = $oWbLink->makeLinkFromTag($aReplacement['Args']); |
|
152 |
// } |
|
153 |
// } |
|
154 |
// } |
|
155 |
// } |
|
156 |
// // extract indexes into a new array |
|
157 |
// $aSearchList = array_keys($aReplaceList); |
|
158 |
// // replace all identified wblink-tags in content |
|
159 |
// $sContent = str_replace($aSearchList, $aReplaceList, $sContent); |
|
160 |
// } |
|
161 |
// } |
|
162 |
// return $sContent; |
|
163 |
// } |
branches/2.8.x/wb/modules/news/WbLink.php | ||
---|---|---|
30 | 30 |
* @link $HeadURL: $ |
31 | 31 |
* @lastmodified $Date: $ |
32 | 32 |
* @since File available since 04.11.2013 |
33 |
* @description This class implements an interface for the wblink-outputfilter |
|
33 |
* @description This class implements an interface for i.e. the wblink-outputfilter
|
|
34 | 34 |
* |
35 | 35 |
* @inherited WbDatabase $oDb |
36 | 36 |
* @inherited WbAdaptor $oReg |
... | ... | |
39 | 39 |
|
40 | 40 |
class m_news_WbLink extends WbLinkAbstract |
41 | 41 |
{ |
42 |
/* *** BEGIN define the environment of your addon! ************************************ */ |
|
43 |
/* (this section is a MUST and it MUST have all 8 consts defined!!) */ |
|
42 | 44 |
/** |
45 |
* name of the needed table |
|
46 |
* @description do NOT use the TablePrefix in this name! |
|
47 |
*/ |
|
48 |
const TABLE_NAME = 'mod_news_posts'; |
|
49 |
|
|
50 |
/** |
|
51 |
* name of the field with the PageId |
|
52 |
*/ |
|
53 |
const FIELDNAME_PAGE_ID = 'page_id'; |
|
54 |
|
|
55 |
/** |
|
56 |
* name of the field with the SectionId |
|
57 |
*/ |
|
58 |
const FIELDNAME_SECTION_ID = 'section_id'; |
|
59 |
|
|
60 |
/** |
|
61 |
* name of the field with the ItemId |
|
62 |
*/ |
|
63 |
const FIELDNAME_ITEM_ID = 'post_id'; |
|
64 |
|
|
65 |
/** |
|
66 |
* name of the field with the needed link |
|
67 |
*/ |
|
68 |
const FIELDNAME_LINK = 'link'; |
|
69 |
|
|
70 |
/** |
|
71 |
* name of the field with the needed title |
|
72 |
*/ |
|
73 |
const FIELDNAME_TITLE = 'title'; |
|
74 |
|
|
75 |
/** |
|
76 |
* name of the field with the timestamp |
|
77 |
* @description define an empty string if no 'timestamp'-field is available or it's not needed! |
|
78 |
*/ |
|
79 |
const FIELDNAME_TIMESTAMP = 'created_when'; |
|
80 |
|
|
81 |
/** name of the field with the active-flag |
|
82 |
* @description define an empty string if no 'active'-field is available or it's not needed! |
|
83 |
*/ |
|
84 |
const FIELDNAME_ACTIVE = 'active'; |
|
85 |
/* *** END define the environment of your addon! ************************************** */ |
|
86 |
|
|
87 |
/** |
|
43 | 88 |
* makeLinkFromTag |
44 | 89 |
* @param type $aReplacement |
45 | 90 |
* @return string |
46 |
* @description |
|
91 |
* @description this method is used by the output filter
|
|
47 | 92 |
*/ |
48 | 93 |
public function makeLinkFromTag(array $aReplacement) |
49 | 94 |
{ |
50 |
// set link on failure ('#' means, still stay on current page) |
|
51 |
$sRetval = '#'; |
|
52 |
// search `link` from posts table and create absolute URL |
|
53 |
$sql = 'SELECT `link` ' |
|
54 |
. 'FROM `'.$this->oDb->TablePrefix.'mod_news_posts` ' |
|
55 |
. 'WHERE `post_id`='.$aReplacement['item']; |
|
56 |
if(($sLink = $this->oDb->get_one($sql))) |
|
57 |
{ |
|
58 |
$sLink = trim(str_replace('\\', '/', $sLink), '/'); |
|
59 |
// test if valid accessfile is available |
|
60 |
if(is_readable($this->oReg->AppPath.$this->oReg->PagesDir.$sLink.$this->oReg->PageExtension)) |
|
61 |
{ |
|
62 |
$sRetval = $this->oReg->AppUrl.$this->oReg->PagesDir.$sLink.$this->oReg->PageExtension; |
|
63 |
} |
|
64 |
} |
|
65 |
return $sRetval; |
|
95 |
/* *** Define here the full path where your links are based on! *********************** */ |
|
96 |
|
|
97 |
$sBaseDir = $this->oReg->AppPath.$this->oReg->PagesDir; |
|
98 |
|
|
99 |
/* *** Do NOT change the following request! ******************************************* */ |
|
100 |
$sBaseDir = rtrim(str_replace('\\', '/', $sBaseDir), '/').'/'; |
|
101 |
return $this->_makeLinkFromTag($sBaseDir, $aReplacement); |
|
66 | 102 |
} |
67 | 103 |
/** |
68 | 104 |
* generateOptionsList |
69 |
* @param string $sObjectName name of the array to create (default: 'AddonItemsSelectBox') |
|
70 |
* @return &array complete definition of a SelectBox |
|
71 |
* @description Bild a mulitdimensional Array with complete Option definitions for use in a Select Box |
|
105 |
* @return &array definition of a SelectBox |
|
106 |
* @description build a mulitdimensional Array with complete Option definitions for use in a Select Box |
|
72 | 107 |
*/ |
73 | 108 |
public function &generateOptionsList() |
74 | 109 |
{ |
75 |
$aAddonItems =& $this->_executeListGeneration( |
|
76 |
'news', |
|
77 |
'mod_news_posts', |
|
78 |
'page_id', |
|
79 |
'section_id', |
|
80 |
'post_id', |
|
81 |
'created_when', |
|
82 |
'title', |
|
83 |
'active' |
|
84 |
); |
|
110 |
$aAddonItems =& $this->_executeListGeneration(); |
|
85 | 111 |
return $aAddonItems; |
86 | 112 |
} |
87 | 113 |
} // end of class m_news_WbLink |
Also available in: Unified diff
! [wblink] outputfilter now can handle ancors too
! WbLink Interface is much more easier to use now.