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; } } // 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']) ); 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 ); $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; }