diff -r 6b96085291d7 -r fb7cd02b9848 web/wp-content/plugins/gigs-calendar/gigs-classes.php --- a/web/wp-content/plugins/gigs-calendar/gigs-classes.php Tue Jan 05 09:48:24 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,794 +0,0 @@ -prefix)); -define('TABLE_VENUES', GIGS_DB_PREFIX . 'gigs_venue'); -define('TABLE_GIGS', GIGS_DB_PREFIX . 'gigs_gig'); -define('TABLE_PERFORMANCES', GIGS_DB_PREFIX . 'gigs_performance'); -define('TABLE_TOURS', GIGS_DB_PREFIX . 'gigs_tour'); - -class dtcGigs { - - function generateSlug($x) { - $x = strtolower($x); - $x = str_replace(' ', '-', $x); - $x = preg_replace('#[^a-z\-0-9]#', '', $x); - return $x; - } - - function escapeForInput($x) { - if ( '0000-00-00' == $x ) { - $x = ''; - } - echo htmlspecialchars($x); - } - - function dateFormat($date, $type = 'short') { - if ( is_null($date) || $date == '0000-00-00' ) return null; - $options = get_option('gigs-calendar'); - if ( isset($options['date'][$type]) ) { - return mysql2date($options['date'][$type], $date); - } else { - return mysql2date($type, $date); - } - } - - function selectFields($fields, $g) { - $options = get_option('gigs-calendar'); - - $result = ''; - foreach ( $options['gigs-table-show'] as $f ) { - if ( isset($fields[$f]) ) { - $tmp = $fields[$f]; - if ( $f == 'venue' && $options['list-venue-link'] && !empty($g->venueLink) ) { - $tmp = preg_replace("~\{(.*?)\}~", '\1', $tmp); - } elseif ( $f == $options['gig-link-field'] ) { - $tmp = preg_replace("~\{(.*?)\}~", '\1', $tmp); - } else { - $tmp = preg_replace("~\{(.*?)\}~", '\1', $tmp); - } - - $result .= $tmp; - } - } - - return $result; - } - - function timeFormat($time, $format = false) { - $options = get_option('gigs-calendar'); - if ( is_null($time) ) { - return $options['tbd-text']; - } - if ( $options['time-12h'] || $format === "12h" ) { - return mysql2date("g:ia", '2008-01-01 ' . $time); - } else { - return mysql2date("H:i", '2000-01-01 ' . $time); - } - } - - function mapLink($gig) { - global $options; - if ( empty($gig->customMap) ) { - $a = array(); - - if ( empty($gig->address) ) - $a[] = $gig->name . ' near:'; - else {} - $a[] = str_replace("\n", ", ", $gig->address); - if ( !empty($gig->city) ) $a[] = $gig->city; - if ( !empty($gig->state) ) $a[] = $gig->state; - if ( !empty($gig->country) ) $a[] = $gig->country; - if ( !empty($gig->postalCode) ) $a[] = $gig->postalCode; - return 'http://maps.google.com/?q=' . urlencode(str_replace('near:,', 'near:', implode(', ', $a))); - } else { - if ( preg_match("/^https?:\/\//", $gig->customMap) ) { - return $gig->customMap; - } else { - return 'http://maps.google.com/?q=' . urlencode($gig->customMap); - } - } - } - - function getAttribution() { - $options = get_option('gigs-calendar'); - ?> -
- - Powered by Blogs for Bands - - - Silk icons by Mark James - -
- $field ) { - if ( isset($data[$field['name']]) ) { - $value = array_pop($data[$field['name']]); - if ( empty($data[$field['name']]) ) unset($data[$field['name']]); - } else { - $value = $field['default']; - } - ?> - - - - - - - - - - - - - - - - - - $oValue ) : ?> - /> - -
- - - - $oValue ) : ?> - /> - - -
- - - - - id) ) { - $gig = $gig->id; - } elseif ( is_array($gig) && isset($gig['id']) ) { - $gig = $gig['id']; - } - - $g = new gig(); - if ( !$g->get($gig) ) { - return false; - } - - $classes = array( - 'gig', - mysql2date('\yY', $g->date), - mysql2date('\mm', $g->date), - ( $g->date >= date('Y-m-d') ? 'upcoming' : 'archive' ), - ); - - $classes = array_merge($classes, $g->getTags(true, 'gc-')); - - return implode(' ', apply_filters('gigCal_gigs_css_classes', $classes, $g)); - } -} - -class dtc_gigs_baseAR { - var $wpdb, $_rows, $_row, $_new = true, $_table, $_count; - - function dtc_gigs_baseAR($id = null){ - global $wpdb; - $this->wpdb = $wpdb; - if ( $id !== null ) { - $this->get($id); - } - } - - function fetch() { - if ( count($this->_rows) ) { - $this->_row = each($this->_rows); - if ( $this->_row ) { - $this->load(); - return true; - } else { - return false; - } - } else { - return false; - } - } - - function generate_slug() { - if ( isset($this->slug) ) { - $first = true; - $name = $this->_name; - do { - if ( $first ) { - $this->slug = dtcGigs::generateSlug($this->$name); - $first = false; - } else { - ereg('[0-9]*$', $this->slug, $match); - $match = ((int) $match[0]) + 1; - if ( 1 == $match ) $match++; - $this->slug = preg_replace('/[0-9]*$/', '', $this->slug); - $this->slug .= $match; - } - - } while ( $this->wpdb->get_var('SELECT COUNT(*) FROM `' . $this->_table . '` WHERE slug = "' . $this->slug . '"') ); - } - } - - - function get($id) { - $this->search('`id` = ' . (int) $id); - return $this->fetch(); - } - - function getRow() { - $row = array(); - foreach ( $this->_fields as $f ) { - $row[$f] = $this->$f; - } - return $row; - } - - function getTags($slugs = false, $prefix = '') { - if ( function_exists('wp_get_post_tags') ) { - $tags = wp_get_post_tags($this->postID); - foreach ( $tags as $key => $tag ) { - $tags[$key] = $prefix . ($slugs ? $tag->slug : $tag->name); - } - return $tags; - } else { - return array(); - } - } - - function getCustom() { - if ( !empty($this->postID) ) { - return get_post_custom($this->postID); - } - } - - function setTags($tags) { - if ( function_exists('wp_set_post_tags') ) - wp_set_post_tags($this->postID, $tags, false); - } - - - - - - function load() { - foreach ( $this->_fields as $f ) { - if ( is_null($this->_row['value']->$f) ) { - $this->$f = null; - } else { - $this->$f = stripslashes($this->_row['value']->$f); - } - } - } - - function search($where = null, $order = null) { - $this->_new = false; - $this->_rows = $this->wpdb->get_results('SELECT * FROM `' . $this->_table . '` ' . ($where !== null ? 'WHERE ' . $where : '') . ($order !== null ? ' ORDER BY ' . $order : '')); - $this->_count = count($this->_rows); - return count($this->_rows); - } - - function save($get_after = true) { - $first = true; - $name = $this->_name; - $this->generate_slug(); - if ( $this->_new ) { - $fields = $this->_fields; - $values = array(); - unset($fields[0]); - - $this->pre_insert(); - - foreach ( $fields as $f ) { - if ( is_null($this->$f) ) { - $values[$f] = 'null'; - } else { - $values[$f] = '"' . $this->wpdb->escape(stripslashes($this->$f)) . '"'; - } - } - - if ( !$this->wpdb->query('INSERT INTO `' . $this->_table . '` (`' . implode('`, `', $fields) . '`) VALUES (' . implode(', ', $values) . ')') ) { - return false; - } - $this->id = $this->wpdb->insert_id; - - $this->post_insert(); - if ( $get_after ) - $this->get((int) $this->id); - - return true; - } else { - $fields = $this->_fields; - $values = array(); - unset($fields[0]); - - $this->pre_update(); - - foreach ( $fields as $f ) { - if ( is_null($this->$f) ) { - $values[$f] = '`' . $f . '` = null'; - } else { - $values[$f] = '`' . $f . '` = "' . $this->wpdb->escape(stripslashes($this->$f)) . '"'; - } - } - - $result = (bool) $this->wpdb->query('UPDATE `' . $this->_table . '` SET ' . implode(', ', $values) . ' WHERE `id` = ' . (int) $this->id); - - if ( $result ) $this->post_update(); - - if ( $get_after ) - $this->get((int) $this->id); - - return $result; - } - } - - function pre_insert(){} - function post_insert(){} - function pre_update(){} - function post_update(){} - function extraJSON() {return array();} - - function delete() { - if ( !empty($this->id) ) { - return (bool) $this->wpdb->query('DELETE FROM `' . $this->_table . '` WHERE `id` = ' . (int) $this->id); - } - } - - function toJSON($single = true) { - if ( $single ) { - $fields = array(); - if ( function_exists("json_encode") ) { - foreach ( $this->_fields as $f ) { - $fields[$f] = $this->$f; - } - - $extra = $this->extraJSON(); - $fields = array_merge($fields, $extra); - return json_encode($fields); - } else { - foreach ( $this->_fields as $f ) { - $fields[] = '"' . $f . '":"' . str_replace("\n", '\n', addslashes($this->$f)) . '"'; - } - - $extra = $this->extraJSON(); - $fields = array_merge($fields, $extra); - - return '{' . implode(', ', $fields) . '}'; - } - } - } - - function getError() { - return $this->wpdb->last_error; - } -} - -class venue extends dtc_gigs_baseAR { - var $_table = TABLE_VENUES, $_name = 'name'; - var $id, $name, $address, $city, $state, $country, $postalCode, $contact, - $phone, $email, $link, $notes, $private = 0, $apiID = 0, $deleted = 0, $customMap; - var $_fields = array( - 'id', - 'name', - 'address', - 'city', - 'state', - 'country', - 'postalCode', - 'contact', - 'phone', - 'email', - 'link', - 'notes', - 'private', - 'apiID', - 'deleted', - 'customMap', - ); - - function delete($forReal = false) { - if ( $forReal ) { - return parent::delete(); - } else { - $this->deleted = 1; - return $this->save(); - - } - } - - function getAddress($oneLine = false) { - $a = array(); - $city = ""; - if ( $oneLine ) { - if ( !empty($this->address) ) $a[] = str_replace("\n", ', ', $this->address); - if ( !empty($this->city) ) $a[] = $this->city; - if ( !empty($this->state) ) $a[] = $this->state; - if ( !empty($this->postalCode) ) $a[] = $this->postalCode; - if ( !empty($this->country) ) $a[] = $this->country; - return implode(', ', $a); - } else { - if ( !empty($this->address) ) $a[] = $this->address; - if ( !empty($this->city) ) $temp .= $this->city; - if ( !empty($this->state) ) $temp .= (!empty($temp) ? ', ' : '' ) . $this->state; - if ( !empty($this->country) ) $temp .= (!empty($temp) ? ', ' : '' ) . $this->country; - if ( !empty($this->postalCode) ) $temp .= (!empty($temp) ? ' ' : '' ) . $this->postalCode; - if ( !empty($temp) ) $a[] = $temp; - return implode("\n", $a); - } - } - - function getCity() { - $c = array(); - if ( !empty($this->city) ) $c[] = $this->city; - if ( !empty($this->state) ) $c[] = $this->state; - //if ( !empty($this->country) ) $c[] = $this->country; - return implode(', ', $c); - } - - function getMapLink() { - global $options; - if ( empty($this->customMap) ) { - $a = array(); - - if ( empty($this->address) ) - $a[] = $this->name . ' near:'; - else {} - $a[] = str_replace("\n", ", ", $this->address); - if ( !empty($this->city) ) $a[] = $this->city; - if ( !empty($this->state) ) $a[] = $this->state; - if ( !empty($this->country) ) $a[] = $this->country; - if ( !empty($this->postalCode) ) $a[] = $this->postalCode; - return 'http://maps.google.com/?q=' . urlencode(str_replace('near:,', 'near:', implode(', ', $a))); - } else { - if ( preg_match("/^https?:\/\//", $this->customMap) ) { - return $this->customMap; - } else { - return 'http://maps.google.com/?q=' . urlencode($this->customMap); - } - } - } - - function extraJSON() { - if ( function_exists("json_encode") ) { - $fields['mapLink'] = $this->getMapLink(); - } else { - $fields[] = '"mapLink":"' . str_replace("\n", '\n', addslashes($this->getMapLink())) . '"'; - } - return $fields; - } -} - -class gig extends dtc_gigs_baseAR { - var $_table = TABLE_GIGS, $_name = 'id'; - var $id, $venueID = 0, $date, $notes, $postID = 0, $eventName, $tour_id = 0; - var $_fields = array( - 'id', - 'venueID', - 'date', - 'notes', - 'postID', - 'eventName', - 'tour_id', - ); - - function delete() { - $p = $this->getPerformances(); - while ( $p->fetch() ) { - $p->delete(); - } - wp_delete_post($this->postID); - return parent::delete(); - } - - function getByPostID($postID) { - $this->search("postID = " . (int) $postID); - return $this->fetch(); - } - - function getPermalink() { - $post = get_permalink($this->postID); - return $post; - } - - function getPerformances() { - $p = new performance(); - if ( $this->id ) { - $p->search("`gigID` = " . (int) $this->id, "`time`"); - } - return $p; - } - - function getVenue() { - $v = new venue(); - if ( $this->venueID ) { - $v->get($this->venueID); - } - return $v; - } - - function pre_insert() { - global $options, $wpdb; - $user = wp_get_current_user(); - $v = $this->getVenue(); - $p = $this->getPerformances(); - $p->fetch(); - - if ( $this->tour_id == -1 ) $this->tour_id = null; - - $title = array(); - foreach ( $options['gig-title-show'] as $f ) { - switch ( $f ) { - case 'city' : - $title[] = $v->getCity(); - break; - case 'eventName' : - $title[] = $this->eventName; - break; - case 'venue' : - $title[] = $v->name; - break; - case 'date' : - $title[] = dtcGigs::dateFormat($this->date); - break; - case 'country' : - $title[] = $v->country; - break; - } - } - - foreach ( $title as $key => $value ) { - if ( empty($value) ) unset($title[$key]); - } - - $post_data = array( - 'post_author' => $user->ID, - 'post_title' => $wpdb->escape(implode(' - ', $title)), - 'post_status' => 'publish', - 'post_type' => 'post', - 'post_category' => array($options['category']), - 'post_content' => '', - ); - - if ( $options['post-filtering'] ) { - $post_data = array_merge($post_data, array( - 'post_date' => $wpdb->escape($this->date . ' ' . $p->time), - 'post_modified' => $wpdb->escape($this->date . ' ' . $p->time), - 'post_date_gmt' => date('Y-m-d H:i:s', strtotime($this->date . ' ' . $p->time) - (60 * 60 * get_option('gmt_offset'))), - 'post_modified_gmt' => date('Y-m-d H:i:s', strtotime($this->date . ' ' . $p->time) - (60 * 60 * get_option('gmt_offset'))), - )); - } - $id = wp_insert_post($post_data); - $this->postID = $id; - } - - function pre_update() { - global $options, $wpdb, $wp_version; - $v = $this->getVenue(); - $p = $this->getPerformances(); - $p->fetch(); - - if ( $this->tour_id == -1 ) $this->tour_id = null; - - $title = array(); - foreach ( $options['gig-title-show'] as $f ) { - switch ( $f ) { - case 'city' : - $title[] = $v->getCity(); - break; - case 'eventName' : - $title[] = $this->eventName; - break; - case 'venue' : - $title[] = $v->name; - break; - case 'date' : - $title[] = dtcGigs::dateFormat($this->date); - break; - case 'country' : - $title[] = $v->country; - break; - } - } - - foreach ( $title as $key => $value ) { - if ( empty($value) ) unset($title[$key]); - } - - - $post = get_post($this->postID); - - if ( $options['post-filtering'] ) { - $post->post_date = $wpdb->escape($this->date . ' ' . $p->time); - $post->post_modified = $wpdb->escape($this->date . ' ' . $p->time); - $post->post_date_gmt = date('Y-m-d H:i:s', strtotime($this->date . ' ' . $p->time) - (60 * 60 * get_option('gmt_offset'))); - $post->post_modified_gmt = date('Y-m-d H:i:s', strtotime($this->date . ' ' . $p->time) - (60 * 60 * get_option('gmt_offset'))); - } - - $post->post_title = $wpdb->escape(implode(' - ', $title)); - $post->post_name = ""; - $post->post_status = "publish"; // Do this to trick WordPress into resetting the GUID. - $post->post_category = array($options['category']); - - wp_update_post($post); - if ( (float) $wp_version < 2.3 ) { // Hack to make it compatible with WP 2.2 - global $wpdb; - $wpdb->query('UPDATE ' . $wpdb->prefix . 'posts SET post_status = "publish" WHERE ID = ' . (int) $this->postID); - } - } - - function post_insert() { - global $wp_version; - if ( (float) $wp_version < 2.3 ) { // Hack to make it compatible with WP 2.2 - global $wpdb; - $wpdb->query('UPDATE ' . $wpdb->prefix . 'posts SET post_status = "publish" WHERE ID = ' . (int) $this->postID); - } else { - $post = get_post($this->postID); - $post->post_status = "publish"; - wp_update_post($post); - } - } - - function extraJSON() { - $post = get_post($this->postID); - $v = $this->getVenue(); - $p = $this->getPerformances(); - if ( function_exists("json_encode") ) { - $fields['permalink'] = $this->getPermalink(); - $fields['venue'] = $v->getRow(); - while ( $p->fetch() ) { - $fields['performances'][] = $p->getRow(); - } - } else { - $fields[] = '"permalink":"' . str_replace("\n", '\n', addslashes($this->getPermalink())) . '"'; - $ps = array(); - $fields[] = '"venue":' . $v->toJSON(); - while ( $p && $p->fetch() ) { - $ps[] = $p->toJSON(); - } - $fields[] = '"performances":[' . implode(', ', $ps) . ']'; - } - return $fields; - } -} - -class performance extends dtc_gigs_baseAR { - var $_table = TABLE_PERFORMANCES, $_name = 'id'; - var $id, $gigID = 0, $time = '20:00', $link, $shortNotes, $ages; - - var $_fields = array( - 'id', - 'gigID', - 'time', - 'link', - 'shortNotes', - 'ages', - ); -} - -class tour extends dtc_gigs_baseAR { - var $_table = TABLE_TOURS, $_name = 'id'; - var $id, $name, $notes, $pos = 0; - var $_fields = array( - 'id', - 'name', - 'notes', - 'pos', - ); - - function post_insert() { - $max = $this->wpdb->get_var('SELECT MAX(`pos`) FROM `' . $this->_table . '`') + 1; - $this->wpdb->query('UPDATE `' . $this->_table . '` SET `pos` = ' . $max . ' WHERE `id` = ' . (int) $this->id); - } - - function delete() { - $g = $this->getGigs(); - while ( $g->fetch() ) { - $g->tour_id = null; - $g->save(); - } - return parent::delete(); - } - - function sortTours($type = null) { - $options = get_option('gigs-calendar'); - $type = is_null($type) ? $options['tours-sort'] : $type; - switch ($type) { - case 'date' : - return $this->wpdb->get_col(' - SELECT DISTINCT - t.id - FROM - ' . TABLE_TOURS . ' t - LEFT JOIN - ' . TABLE_GIGS . ' g - ON - t.`id` = g.`tour_id` - WHERE - `date` is null OR `date` >= CURDATE() - ORDER BY - g.`date`, `name` - '); - break; - case 'alpha' : - return $this->wpdb->get_col(' - SELECT DISTINCT - t.id - FROM - ' . TABLE_TOURS . ' t - ORDER BY - `name` - '); - break; - } - } - - function getGigs($slice = 'all') { - $g = new gig(); - if ( $slice == 'past' ) { - $g->search('`date` <= CURDATE() AND `tour_id` = ' . (int) $this->id, '`date`'); - } elseif ( $slice == 'future' ) { - $g->search('`date` >= CURDATE() AND `tour_id` = ' . (int) $this->id, '`date`'); - } else { - $g->search('`tour_id` = ' . (int) $this->id, '`date`'); - } - return $g; - } - - function extraJSON(){ - $fields = array(); - $g = $this->getGigs(); - $gs = array(); - if ( function_exists("json_encode") ) { - while ( $g->fetch() ) { - $gs[] = $g->getRow(); - } - $fields['gigs'] = $gs; - } else { - while ( $g->fetch() ) { - $gs[] = $g->toJSON(); - } - $fields[] = '"gigs":[' . implode(',', $gs) . ']'; - } - return $fields; - } -} - -?>