prefix . 'walm_links'); class walm { function walm() { add_action('admin_menu', array(&$this, 'on_admin_menu')); add_action('init', array(&$this, 'redirect')); register_activation_hook(__FILE__, array(&$this, 'on_activation')); } function print_feedback($walm_errors) { if (is_wp_error($walm_errors) && $walm_errors->get_error_codes()) { $walm_codes = $walm_errors->get_error_codes(); foreach($walm_codes as $walm_code) { echo '
' . $walm_errors->get_error_message($walm_code) . '
Link updated successfully. Check links list.
Link added successfully. Check links list.
Link has been deleted.
Selected links have been deleted.
" . stripcslashes($_POST['original']) . ".");
}
}
if (empty($_POST['short']))
{
$walm_errors->add('empty-short-link', "You forgot to enter a short link.");
}
else
{
$short_has_stub = filter_var($_POST['short'], FILTER_VALIDATE_REGEXP,
array("options" => array("regexp" => "/.*?\/.*/i")));
if (!$short_has_stub)
{
$walm_errors->add('missing-stub',
"A short link should at least be two levels, i.e. first-level/second-level.");
}
else
{
$query = "SELECT id FROM `" . WALM_LINKS . "` WHERE `short` = '" . trim($_POST['short'], '/') . "';";
$duplicate_exists = $wpdb->get_var($query);
if ($duplicate_exists && $_GET['link_id'] != $duplicate_exists)
{
$walm_errors->add('duplicate-short-link', "A duplicate short link already exists.");
}
else
{
$final_url = get_bloginfo('url') . '/' . $_POST['short'];
$is_url = filter_var($final_url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);
if ($is_url === false)
{
$walm_errors->add('short-link-bad-form',
"Your short link doesn't look like a real link: " . stripcslashes($final_url) . ".");
}
else
{
$stub = WalmStubs::get($_POST['short']);
global $wp_rewrite;
$rules = $wp_rewrite->rewrite_rules();
foreach ($rules as $rule => $key)
{
$slug = explode('/', $rule);
$slug = $slug[0];
$slugs_arr[] = trim($slug, ")(");
}
if (is_array($slugs_arr))
{
$slugs_arr = array_unique($slugs_arr);
if (in_array($stub, $slugs_arr))
{
$walm_errors->add('short-link-permalink-conflict',
"You have an existing URL in your site that begins with " .
$stub . ". Choose a different stub to avoid potential conflicts");
}
}
}
}
}
}
if (!$walm_errors->get_error_codes())
{
$stub = WalmStubs::get($_POST['short']);
WalmStubs::add($stub);
if ($_POST['walm_action'] == 'add' && !$this->insert_link($_POST))
{
$walm_errors->add('add-link-failure', "Link couldn't be added. Please double check your values.");
}
}
}
// PROCESS BULK ACTIONS
if ($_GET['page'] == 'walm' && $_POST['walm-bulk'])
{
if (!current_user_can('manage_options'))
wp_die(__('Cheatin’ uh?'));
check_admin_referer('walm-bulk-action');
$links_to_be_deleted = $_POST['checked_links'];
if (is_array($links_to_be_deleted))
{
foreach($links_to_be_deleted as $link_id)
{
if (!$this->delete_link($link_id))
{
if (!$msg_added)
{
$walm_errors->add('link-bulk-delete-failure', "Error. Some links couldn't be deleted.");
$msg_added = true;
}
}
}
}
}
if ($_GET['page'] == 'walm' && isset($_GET['action']) && !isset($_POST['walm-bulk']))
{
$action = $_GET['action'];
$link_id = $_GET['link_id'];
if (!current_user_can('manage_options'))
wp_die(__('Cheatin’ uh?'));
switch($action)
{
case 'delete':
if (!$wpdb->query($wpdb->prepare("DELETE FROM " . WALM_LINKS . " WHERE id = %d", $link_id)))
$walm_errors->add('link-delete-failure', "Error. Link couldn't be deleted.");
break;
}
}
return $walm_errors;
}
// create the admin menu
function on_admin_menu()
{
$this->pagehook = add_links_page('WinkPress Affiliate Links Manager',
'Affiliate links',
'activate_plugins',
'walm',
array(&$this, 'view'));
}
function plugin_admin_url()
{
return admin_url('link-manager.php?page=walm');
}
//executed to show the plugins complete admin page
function view()
{
?>