public function retrieve() { global $wpdb, $_wt_options; $id = $this->id; $data = null; if ($id) { $data = $wpdb->get_results($wpdb->prepare("SELECT \n\t\t\t\t* \n\t\t\t\tFROM " . WORDTOUR_EVENTS . " AS e \n\t\t\t\tLEFT JOIN " . WORDTOUR_VENUES . " AS v \n\t\t\t\tON e.event_venue_id = v.venue_id \n\t\t\t\tLEFT JOIN " . WORDTOUR_ARTISTS . " AS a\n\t\t\t\tON e.event_artist_id = a.artist_id \n\t\t\t\tLEFT JOIN " . WORDTOUR_TOUR . " AS t\n\t\t\t\tON e.event_tour_id = t.tour_id \n\t\t\t\tLEFT JOIN " . WORDTOUR_EVENTS_META . " AS m ON e.event_meta_id = m.meta_id\n\t\t\t\tWHERE e.event_id = {$id} ORDER BY id ASC"), "ARRAY_A"); if (is_array($data)) { $event = $data[0]; $event["event_more_artists"] = array(); foreach ($data as $e) { if (!$e["event_is_headline"]) { $event["event_more_artists"][] = array("id" => $e["artist_id"], "name" => $e["artist_name"]); } } $event_wpdb = clone $wpdb; $this->meta_id = $event["event_meta_id"]; $social = new WT_Social(); $fbstatus = $social->get_by_event($this->id, "fbstatus"); $ebstatus = $social->get_by_event($this->id, "ebevent"); $fbevent = $social->get_by_event($this->id, "fbevent"); $twitter = $social->get_by_event($this->id, "twitter"); $post = $social->get_by_event($this->id, "post"); $data = array_merge($data, array("post_ref_id" => $post ? admin_url("post.php?action=edit&post={$post['social_ref_id']}") : 0, "facebook_event_id" => $fbevent ? $fbevent["social_ref_id"] : 0, "twitter_status_date" => $twitter ? $twitter["social_publish_time"] : 0, "facebook_status_date" => $fbstatus ? $fbstatus["social_publish_time"] : 0, "eventbrite_status_date" => $ebstatus ? $ebstatus["social_publish_time"] : 0, "eventbrite_event_id" => $ebstatus ? $ebstatus["social_ref_id"] : 0)); $event["event_thumbnail"] = get_attachment_data($this->get_thumbnail("event")); $event["event_videos"] = $this->get_videos("event"); $event["event_gallery"] = $this->get_gallery("event"); $event["event_category"] = $this->get_category("event"); $event["event_genre"] = $this->get_genre("event"); } } //$this->db_result("error",$event_wpdb,array("msg"=>"Can't retrieve event(<i>Missing event id</i>)")); return parent::retrieve($event); }
public function save_event($data = array()) { $event_id = $data["eventbrite_event_id"]; $event = new WT_Event($event_id); $event->retrieve(); if ($this->is_init() && $event->data) { $social = new WT_Social(); // check if event social type is exist $social_row = $social->get_by_event($data[eventbrite_event_id], "ebevent"); // if exist get eventbrite event id $eb_event_id = $social_row ? $social_row["social_ref_id"] : 0; // check if event exist - by id $r = wt_file_get_contents("http://www.eventbrite.com/json/event_get?app_key={$this->app_key}&user_key={$this->user_key}&id={$eb_event_id}"); // event exist in system - need to update if ($this->is_valid_response($r)) { $is_event = 1; } else { try { // event doesnt exist in system - need to add new if ($this->response["error"]["error_type"] == "Not Found") { $is_event = 0; } else { return 0; } } catch (Exception $e) { return 0; } } $param = array("title" => $data["eventbrite_title"], "start_date" => $event->data["event_start_date"] . " " . $event->data["event_start_time"], "end_date" => $event->data["event_end_date"] . " " . ($event->data["event_end_time"] == "00:00:01" ? $event->data["event_start_time"] : $event->data["event_end_time"]), "timezone" => "GMT" . (get_option("gmt_offset") > 0 ? "+" . get_option("gmt_offset") : get_option("gmt_offset")), "privacy" => $data["eventbrite_privacy"], "personalized_url" => $data["personalized_url"], "status" => $data["eventbrite_status"], "description" => $data["eventbrite_description"], "organizer_id" => $this->get_organizer_id()); $venue_id = $this->get_venue_id($event->data["event_venue_id"]); if ($venue_id) { $param["venue_id"] = $venue_id; if (!$is_event) { $action = "event_new"; } else { $action = "event_update"; $param["event_id"] = $eb_event_id; } $r = wt_file_get_contents("http://www.eventbrite.com/json/{$action}?app_key={$this->app_key}&user_key={$this->user_key}&" . http_build_query($param)); if ($this->is_valid_response($r)) { if (!$social_row) { $eb_event_id = $this->response["process"]["id"]; $social->insert(wp_create_nonce(WT_SOCIAL::NONCE_INSERT), "ebevent", $event_id, $eb_event_id, "event"); return $eb_event_id; } else { $social->update(wp_create_nonce(WT_SOCIAL::NONCE_INSERT), $social_row["social_id"], "ebevent", $event_id, $eb_event_id, "event"); return $eb_event_id; } } else { if ($this->response["error"]["error_type"] == "Not Found") { global $wpdb; $wpdb->query("DELETE FROM " . WORDTOUR_SOCIAL . " WHERE social_type='ebevent' AND social_parent_id={$event_id} AND social_parent_type='event' AND social_ref_id={$eb_event_id}"); } } } return 0; } }
$eb_id = $eventbrite->save_event($_POST); try { $r = $eventbrite->response; if ($r["error"]) { if ($r["error"]["error_type"] == "Region error") { $r["error"]["error_message"] = $r["error"]["error_message"] . "<br/>Refer to the venue administration page, could be because venue is missing a state value"; } if ($r["error"]["error_type"] == "Not Found") { $r["error"]["error_message"] = $r["error"]["error_message"] . "<br/>Event dosn't exist in Eventbrite, Please try again"; } echo json_encode(array("type" => "error", "msg" => "Error publishing event to eventbrite:<p>" . $r["error"]["error_message"] . " (" . $r["error"]["error_type"] . ")</p>")); exit; } else { if ($r["process"]) { $social = new WT_Social(); $social_row = $social->get_by_event($_POST["eventbrite_event_id"], "ebevent"); echo json_encode(array("type" => "success", "url" => "http://www.eventbrite.com/myevent?eid={$eb_id}", "tickets" => "http://www.eventbrite.com/event/{$eb_id}", "publish_date" => WT_DBPrepere::datetime_short_out($social_row["social_publish_time"]), "eventbrite" => $r)); exit; } } } catch (Exception $e) { } echo json_encode(array("type" => "error", "msg" => "Error connecting to Eventbrite, Please try again later")); break; case "import-eventbrite-events": $eventbrite = new WT_Eventbrite(); $eventbrite->import($_POST["artist_id"]); echo json_encode($eventbrite->response); break; // GENERAL // GENERAL