function ad_embed_replace in Advertisement 6.3
Same name and namespace in other branches
- 5.2 embed/ad_embed.module \ad_embed_replace()
- 5 embed/ad_embed.module \ad_embed_replace()
- 6 embed/ad_embed.module \ad_embed_replace()
- 6.2 embed/ad_embed.module \ad_embed_replace()
- 7 embed/ad_embed.module \ad_embed_replace()
Replaces [[ad]] and <!--ad--> style tags with JavaScript for displaying ads.
1 call to ad_embed_replace()
- ad_embed_nodeapi in embed/
ad_embed.module - Implementation of hook_nodeapi().
File
- embed/
ad_embed.module, line 223 - Embed ads in content.
Code
function ad_embed_replace($text) {
$tags = array(
'[[ad' => ']]',
'<!--ad' => '-->',
);
if (!$text) {
return;
}
foreach ($tags as $open => $close) {
if ($open == '[[ad' && !variable_get('ad_embed_replace_brackets', 1)) {
continue;
}
if ($open == '<!--ad' && !variable_get('ad_embed_replace_comments', 1)) {
continue;
}
if (strlen($open) > strlen($text)) {
continue;
}
$pos = 0;
while ($pos !== FALSE) {
// Locate the first open embed tag.
$pos = strpos($text, $open, $pos);
if ($pos !== FALSE) {
$start = $pos + strlen($open);
// Locate the matching close embed tag.
$pos = strpos($text, $close, $start);
if ($pos) {
// Extract the contents within the tags.
$contents = substr($text, $start, $pos - $start);
// Parse the options within the contents.
$options = implode('&', explode('|', $contents));
parse_str($options, $args);
// Set defaults
$quantity = 1;
$options = array();
$group = '';
foreach ($args as $key => $value) {
switch ($key) {
case 'quantity':
// Must be at least 1
$quantity = (int) $value ? (int) $value : 1;
break;
case 'group':
$group = $value;
break;
case 'hostid':
$options['hostid'] = $value;
break;
case 'nids':
$options['nids'] = $value;
break;
}
}
$replace = $open . $contents . $close;
$ad = ad($group, $quantity, $options);
$text = str_replace($replace, $ad, $text);
// Adjust position to compensate for difference in length of what
// we are replacing and length of what we are replacing it with.
if (strlen($replace) > strlen($ad)) {
$pos -= strlen($replace) - strlen($ad) - 1;
}
else {
if (strlen($replace) < strlen($ad)) {
$pos += strlen($ad) - strlen($replace) + 1;
}
}
}
}
}
}
return $text;
}