query($query);
// remove orphaned address records
$query = " DELETE
{$table_prefix}alc_address
FROM
{$table_prefix}alc_address
LEFT OUTER JOIN
{$table_prefix}alc_link
ON ({$table_prefix}alc_link.id = {$table_prefix}alc_address.linkId)
WHERE
({$table_prefix}alc_link.id IS NULL)";
$wpdb->query($query);
// finally, remove orphaned log records
$query = " DELETE
{$table_prefix}alc_redirectlog
FROM
{$table_prefix}alc_redirectlog
LEFT OUTER JOIN
{$table_prefix}alc_address
ON ({$table_prefix}alc_address.id = {$table_prefix}alc_redirectlog.addressId)
WHERE
({$table_prefix}alc_address.id IS NULL)";
$wpdb->query($query);
$message = 'Affiliate link(s) removed.';
}
?>
query("DELETE FROM {$table_prefix}alc_address WHERE id = $addressId");
// and now delete any entries in the redirect log table..
$wpdb->query("DELETE FROM {$table_prefix}alc_redirectlog WHERE addressId = $addressId");
$message = 'Address deleted.';
}
// update an address?
if (isset($_POST['update_address']) &&
check_admin_referer('alc_edit_address', '_wpnonce')) {
// is this a default link ?
if (isset($_POST['default'])) {
// make sure that we dont end up with more than one default
$wpdb->update($table_prefix . 'alc_address',
array('default' => 'No'),
array('linkId' => (int)$linkId));
}
// prepare the data
$where = array('id' => (int)$_POST['update_address']);
$data = array('default' => isset($_POST['default']) ? 'Yes' : 'No',
'country' => $_POST['country'],
'address' => $_POST['address']);
// update the record
$wpdb->update($table_prefix . 'alc_address', $data, $where, array('%s'), array('%d'));
$message = 'Address updated.';
}
// create a new record ?
if (isset($_POST['command']) &&
$_POST['command'] == 'new') {
// validate data....
if (!strlen($_POST['urlsuffix'])) {
$errors[] = 'Please provide a url suffix.';
}
// check that the url suffix is unique
if (!isSuffixUnique($_POST['urlsuffix'])) {
$errors[] = 'Please provide a unique suffix.';
}
// any errors ?
if (!sizeof($errors)) {
$flags = 0;
//sanitise data
if (isset($_POST['replacementactive'])) {
$flags |= ALC_ACTIVE;
}
if (isset($_POST['countredirects'])) {
$flags |= ALC_COUNTREDIRECTS;
}
if (isset($_POST['nofollow'])) {
$flags |= ALC_NOFOLLOW;
}
if (isset($_POST['opennewwindow'])) {
$flags |= ALC_OPENNEWWINDOW;
}
if (isset($_POST['casesensitive'])) {
$flags |= ALC_CASESENSITIVE;
}
if (isset($_POST['showthismonthstats'])) {
$flags |= ALC_SHOWTHISMONTHSTATS;
}
$titleText = $wpdb->escape($_POST['titletext']);
$searchText = $wpdb->escape($_POST['searchtext']);
$searchTextDelimiter = $wpdb->escape($_POST['searchtextdelimiter']);
$urlSuffix = $wpdb->escape($_POST['urlsuffix']);
$replacementOrder = (int)$_POST['replacementorder'];
$maxReplacements = (int)$_POST['maxreplacements'];
$redirectType = $_POST['redirecttype'];
$data = array(
'flags' => $flags,
'titleText' => $titleText,
'searchText' => $searchText,
'searchTextDelimiter' => $searchTextDelimiter,
'urlSuffix' => $urlSuffix,
'replacementOrder' => $replacementOrder,
'maxReplacements' => $maxReplacements,
'redirectType' => $redirectType
);
// perform the insert
$wpdb->insert($table_prefix . 'alc_link', $data);
$command = 'edit';
$linkId = $wpdb->insert_id;
$message = 'New affiliate link added.';
}
}
// update record ?
if (isset($_POST['command']) &&
$_POST['command'] == 'edit' &&
check_admin_referer('alc_link_options', '_wpnonce') &&
$linkId) {
// validate data....
if (!strlen($_POST['urlsuffix'])) {
$errors[] = 'Please provide a url suffix.';
}
// check that the url suffix is unique
if (!isSuffixUnique($_POST['urlsuffix'], $linkId)) {
$errors[] = 'Please provide a unique suffix.';
}
// any errors ?
if (!sizeof($errors)) {
$flags = 0;
//sanitise data
if (isset($_POST['replacementactive'])) {
$flags |= ALC_ACTIVE;
}
if (isset($_POST['countredirects'])) {
$flags |= ALC_COUNTREDIRECTS;
}
if (isset($_POST['nofollow'])) {
$flags |= ALC_NOFOLLOW;
}
if (isset($_POST['opennewwindow'])) {
$flags |= ALC_OPENNEWWINDOW;
}
if (isset($_POST['casesensitive'])) {
$flags |= ALC_CASESENSITIVE;
}
if (isset($_POST['showthismonthstats'])) {
$flags |= ALC_SHOWTHISMONTHSTATS;
}
$titleText = $wpdb->escape($_POST['titletext']);
$searchText = $wpdb->escape($_POST['searchtext']);
$searchTextDelimiter = $wpdb->escape($_POST['searchtextdelimiter']);
$urlSuffix = $wpdb->escape($_POST['urlsuffix']);
$cssClass = $wpdb->escape($_POST['cssclass']);
$pageExceptions = $wpdb->escape($_POST['pageexceptions']);
$postExceptions = $wpdb->escape($_POST['postexceptions']);
$replacementOrder = (int)$_POST['replacementorder'];
$maxReplacements = (int)$_POST['maxreplacements'];
$redirectType = $_POST['redirecttype'];
$data = array(
'flags' => $flags,
'titleText' => $titleText,
'searchText' => $searchText,
'searchTextDelimiter' => $searchTextDelimiter,
'urlSuffix' => $urlSuffix,
'cssClass' => $cssClass,
'pageExceptions' => $pageExceptions,
'postExceptions' => $postExceptions,
'replacementOrder' => $replacementOrder,
'maxReplacements' => $maxReplacements,
'redirectType' => $redirectType
);
$where = array('id' => $linkId);
// perform the insert
$wpdb->update($table_prefix . 'alc_link', $data, $where);
// if the redirect count check box is not checked, remove log entries
if (!isset($_POST['countredirects'])) {
$query = " DELETE
{$table_prefix}alc_redirectlog
FROM
{$table_prefix}alc_redirectlog
INNER JOIN
{$table_prefix}alc_address
ON ({$table_prefix}alc_address.id = {$table_prefix}alc_redirectlog.addressId)
WHERE
({$table_prefix}alc_address.linkId = $linkId)";
$wpdb->query($query);
}
$message = 'Affiliate link updated.';
}
}
if ($command == 'edit' &&
$linkId) {
$posturl = get_option('siteurl') . '/wp-admin/admin.php?page=affiliatelinkcloaker&edit=' . $linkId;
$query = " SELECT
id,
flags,
searchText,
searchTextDelimiter,
urlSuffix,
cssClass,
pageExceptions,
postExceptions,
replacementOrder,
maxReplacements,
redirectType
FROM
{$table_prefix}alc_link
WHERE
id = $linkId";
$row = $wpdb->get_row($query);
$id = $row->id;
$flags = $row->flags;
$searchText = $row->searchText;
$searchTextDelimiter = $row->searchTextDelimiter;
$urlSuffix = $row->urlSuffix;
$cssClass = $row->cssClass;
$pageExceptions = $row->pageExceptions;
$postExceptions = $row->postExceptions;
$replacementOrder = $row->replacementOrder;
$maxReplacements = $row->maxReplacements;
$redirectType = $row->redirectType;
}
if ($command == 'new') {
$posturl = get_option('siteurl') . '/wp-admin/admin.php?page=affiliatelinkcloaker&edit&new';
}
// has the user created a new link record?
if ($linkId) {
$posturl = get_option('siteurl') . '/wp-admin/admin.php?page=affiliatelinkcloaker&edit=' . $linkId;
}
// validate address stuff
if ($linkId) {
$query = " SELECT
COUNT(alc_address.id)
AS addresses,
(CASE
WHEN alc_defaultaddress.id IS NULL
THEN 0
ELSE 1
END)
AS defaultAddress
FROM
{$table_prefix}alc_link
AS alc_link
LEFT OUTER JOIN
{$table_prefix}alc_address
AS alc_address
ON (alc_address.linkId = alc_link.id)
LEFT OUTER JOIN
{$table_prefix}alc_address
AS alc_defaultaddress
ON (alc_defaultaddress.linkId = alc_link.id)
AND (alc_defaultaddress.default = 'Yes')
WHERE
alc_link.id = $linkId
GROUP BY
alc_link.id";
$result = $wpdb->get_row($query);
// have we got some addresses?
if (($linkId == 0 &&
$command == 'new') ||
!$result->addresses) {
$errors[] = "Please add at least one address.";
}
// do we have at least one default address?
if ($command == 'new' ||
!$result->defaultAddress) {
$errors[] = "Please make one of the addresses a default";
}
} else {
/* linkId must be zero if we're here. check if this is
* for a new link...
*/
if ($command == 'new') {
$errors[] = "Once you have saved this link, you will need to add at least one default address. Addresses can be added below the options once the link options have been saved.";
}
}
?>
Need some help with this link? Click on the debug link to the left. This will download a text file with the configuration of the link and addresses. Copy and paste the contents of the file with your specific issue at Brewsterware forum
/>
This enables the replacement of text in content with the cloaked affiliate links.
Page exceptions Enter a list of page ids separated by commas of pages that you do not want to add affiliate links to.
Post exceptions Enter a list of post ids separated by commas of posts that you do not want to add affiliate links to.
Replacement Order This is the order that the replacements are done.
Max Replacements Maximum number of replacements per post. Setting this to zero will cause all keyword occurances to be replaced.
Search Text This is the text that is searched for in the article content. Seperate multiple keywords/phrases with the delimeter specified below.
Search Text Delimiter This is the delimiter that seperates multiple keywords. This should be left empty if you are only specifying one keyword/phrase above.
/>
This defines whether the searching of the keyword/phrase should be case sensitive. This defaults to true.
Cloaked URL suffix This text will be placed at the end of the cloaked url like this: /recommends/cloaked_url_suffix. This suffix must be unique.
CSS Class The link will use this css class.
/>
This enables the counting of redirects that are performed. />
/>
This puts a no follow tag on the link.
/>
This causes the link to open in a new browser window.
These are http status codes - documentation for them can be found here. This will default to a 302 redirect. If this is set to a 301 redirect, most modern browsers will cache the redirect and any changes to the addresses below will not show for a specific user if they have already followed the link.