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)); add_filter('manage_users_custom_column', array(&$this, 'imel_custom_column_userfieldx'), 13, 3); add_filter('manage_users_columns', array(&$this, 'imel_column_userfieldx'), 13, 1); } function imel_column_userfieldx($defaults) { $defaults['abostatus'] = __('Abo Status', 'id-column'); $defaults['aboproduct'] = __('Abo Product', 'id-column'); $defaults['aboorder'] = __('Abo Order', 'id-column'); return $defaults; } function imel_custom_column_userfieldx($value, $column_name, $id) { if ($column_name == 'aboproduct') { $burl = get_option($this->pluginname . "_wookook_baseurl_product"); $pid = get_user_meta($id, 'abo_prod', true); $s = '' . $pid . ''; return $s; } if ($column_name == 'aboorder') { $burl = get_option($this->pluginname . "_wookook_baseurl_order"); $pid = get_user_meta($id, 'abo_order', true); if ($pid) { $s = '' . $pid . ''; } else { if (get_user_meta($id, 'abo_status', true) == "ACTIVE") { } else { $pid = get_user_meta($id, 'abo_statuscode', true); $s = '' . $pid . ''; } } return $s; } if ($column_name == 'abostatus') { $s = get_user_meta($id, 'abo_status', true); return $s; } return $value; } 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'])) { $hh = apache_request_headers(); if (isset($hh["X-WC-Webhook-Source"])) { $shopurl = $hh["X-WC-Webhook-Source"]; } else { $shopurl = null; } $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; $theproduct = 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']]; $theproduct = $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 && $theproduct) { $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', $order['status'] . " " . ($active ? " " : " SUSPENDED")); update_user_meta($user_id, 'abo_order', $order['id']); update_user_meta($user_id, 'abo_prod', $theproduct); wp_send_new_user_notifications($user_id, 'both'); $resu[] = "CREATED: " . $order['status'] . " $active :: $theproduct :: $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', $order['status'] . " " . ($active ? " " : " SUSPENDED")); update_user_meta($user_id, 'abo_order', $order['id']); update_user_meta($user_id, 'abo_prod', $theproduct); $resu[] = "UPDATED: " . $order['status'] . " $active :: $theproduct :: $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