title = __("plug_wookook", "dagsopt");
$this->pluginname = $ns->pluginname;
$this->file = $ns->file;
$this->ns = $ns;
}
function start() {
add_action('init', array(&$this, 'xx__update_custom_roles'));
add_action('wp_loaded', array(&$this, 'header'), 1);
add_role("suspenderet-abonnent", "Suspenderet abonnent", array('read' => true, 'level_0' => false));
add_role("betalende-abonnent", "Betalende abonnent", array('read' => true, 'level_0' => true));
}
function xx__update_custom_roles() {
if (get_option('custom_roles_version') < 3) {
// add_role( "suspenderet-abonnent", "Suspenderet abonnent", array( 'read' => true, 'level_0' => false ) );
// add_role( "betalende-abonnent", "Betalende abonnent", array( 'read' => true, 'level_0' => true ) );
update_option('custom_roles_version', 3);
}
}
function header() {
if (isset($_REQUEST['woohook'])) {
$thecode = get_option($this->pluginname . "_wookook_code", false);
$exitrole = trim(get_option($this->pluginname . "_wookook_exitrole", false));
if ($_REQUEST['woohook'] !== "$thecode") {
die("code not right");
}
$rr = file_get_contents('php://input');
//$itemnumbers = explode(",",);
$itemroles = array();
$lins = explode("\n", get_option($this->pluginname . "_wookook_item_roles", false));
foreach ($lins as $nn => $line) {
if (stristr($line, " > ")) {
$a = explode(" > ", $line);
$nums = explode(" ", $a[0]);
$role = $a[1];
foreach ($nums as $pp => $itemnum) {
if (strlen($role) > 0) {
$itemroles[trim($itemnum)] = trim($role);
}
}
}
}
$found = false;
try {
$order = json_decode($rr, true);
if (isset($order['line_items'])) {
foreach ($order['line_items'] as $num => $line) {
if (isset($itemroles["" . $line['product_id']])) {
$found = true;
$therole = $itemroles["" . $line['product_id']];
}
}
}
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
$active = false;
if (isset($order['status'])) {
if ($order['status'] == "active") {
$found = true;
$active = true;
} else if ($order['status'] == "processing") {
if (isset($order['date_paid_gmt']) && strlen($order['date_paid_gmt']) > 0) {
$found = true;
$active = true;
} else {
$found = false;
}
} else if ($order['status'] == "on-hold") {
$active = false;
} else if ($order['status'] == "completed") {
if (isset($order['date_paid_gmt']) && strlen($order['date_paid_gmt']) > 0) {
$active = true;
} else {
$active = false;
}
}
}
// echo($order['status']."::".$found."::".$active." : ".$order['date_paid']." : ".$order['date_paid_gmt']);
// die("\n\nDONE");
$testmode = false;
if ($found) {
$resu = array();
$user_email = $order['billing']['email'];
$user_name = $user_email; //sanitize_username("O".$order['id']);
$user_id = username_exists($user_name);
if (!$user_id && false == email_exists($user_email)) {
$random_password = wp_generate_password($length = 12, $include_standard_special_chars = false);
if ($testmode) {
$resu[] = "$user_id mock created : $user_name $user_email ";
} else {
$user_id = wp_create_user($user_name, $random_password, $user_email);
$xrole = $active ? $therole : $exitrole;
wp_update_user(array('ID' => $user_id, 'role' => $xrole, 'first_name' => $order['billing']['first_name'], 'last_name' => $order['billing']['last_name']));
update_user_meta($user_id, 'abo_status', "ACTIVE");
update_user_meta($user_id, 'abo_statuscode', $order['id']);
wp_send_new_user_notifications($user_id, 'both');
$resu[] = "CREATED: " . $order['status'] . " $active $user_id or $user_email exists role > '$xrole'";
}
} else {
$xrole = $active ? $therole : $exitrole;
wp_update_user(array('ID' => $user_id, 'role' => $xrole, 'first_name' => $order['billing']['first_name'], 'last_name' => $order['billing']['last_name']));
$u = new WP_User($user_id);
$u->set_role($xrole);
update_user_meta($user_id, 'abo_status', $active ? "ACTIVE" : "SUSPENDED");
update_user_meta($user_id, 'abo_statuscode', $order['id']);
$resu[] = "UPDATED: " . $order['status'] . " $active $user_id or $user_email exists role > '$xrole'";
}
$aemail = get_bloginfo('admin_email');
$rr = wp_mail($aemail, 'CCR ' . count($resu) . " : " . getenv('HOSTNAME') . " : " . $_SERVER['REMOTE_ADDR'] . " : " . $_SERVER['SERVER_ADDR'] . " : " . $_SERVER['SERVER_NAME'] . " " . date("U"), "::" . print_r($resu, true));
echo ("DONE live");
print_r($resu);
die("done $rr");
} else {
die("no action done");
}
}
}
function help() {
?>
plug_wookook
Role:", "dagsopt")) ?>
">
dagsopt['plug_wookook'] = $plug_wookook;
}