--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/event-calendar/admin.php Wed Dec 23 17:55:33 2009 +0000
@@ -0,0 +1,680 @@
+<?php
+/*
+Copyright (c) 2005-2008, Alex Tingle.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+
+class ec3_Admin
+{
+
+
+ function filter_admin_head()
+ {
+ global $ec3;
+
+ // Turn OFF advanced mode when we're in the admin screens.
+ $ec3->advanced=false;
+
+ ?>
+ <!-- Added by eventcalendar3/admin.php -->
+ <style type='text/css' media='screen'>
+ @import url(<?php echo $ec3->myfiles; ?>/admin.css);
+ </style>
+ <!-- These scripts are only needed by edit_form screens. -->
+ <script type='text/javascript' src='<?php echo $ec3->myfiles; ?>/addEvent.js'></script>
+ <script type='text/javascript' src='<?php echo $ec3->myfiles; ?>/edit_form.js'></script>
+ <script type='text/javascript'><!--
+ Ec3EditForm.event_cat_id='<?php echo $ec3->wp_in_category.$ec3->event_category; ?>';
+ Ec3EditForm.start_of_week=<?php echo intval( get_option('start_of_week') ); ?>;
+ // --></script>
+ <!-- jscalendar 1.0 JavaScripts and css locations -->
+ <style type="text/css">@import url(<?php echo $ec3->myfiles; ?>/css/calendar-blue.css);</style>
+ <script type="text/javascript" src="<?php echo $ec3->myfiles; ?>/js/calendar.js"></script>
+ <script type="text/javascript" src="<?php echo $ec3->myfiles; ?>/js/calendar-en.js"></script>
+ <script type="text/javascript" src="<?php echo $ec3->myfiles; ?>/js/calendar-setup.js"></script>
+
+ <?php
+ }
+
+
+ //
+ // EDIT FORM
+ //
+
+
+ /** Only for pre WP2.5. Inserts the Event Editor into the Write Post page. */
+ function filter_edit_form()
+ { ?>
+
+ <!-- Build the user interface for Event Calendar. -->
+ <div class="dbx-b-ox-wrapper">
+ <fieldset id='ec3_schedule_editor' class="dbx-box">
+ <div class="dbx-h-andle-wrapper">
+ <h3 class="dbx-handle"><?php _e('Event Editor','ec3'); ?></h3>
+ </div>
+ <div class="dbx-c-ontent-wrapper">
+ <div class="dbx-content">
+
+ <?php $this->event_editor_box() ?>
+
+ </div>
+ </div>
+ </fieldset>
+ </div>
+
+ <?php
+ }
+
+
+ function event_editor_box()
+ {
+ global $ec3,$wp_version,$wpdb,$post_ID;
+ if(isset($post_ID))
+ $schedule = $wpdb->get_results(
+ "SELECT
+ sched_id,
+ DATE_FORMAT(start,'%Y-%m-%d %H:%i') AS start,
+ DATE_FORMAT(end,'%Y-%m-%d %H:%i') AS end,
+ allday,
+ rpt
+ FROM $ec3->schedule WHERE post_id=$post_ID ORDER BY start");
+ else
+ $schedule = false;
+
+ if(function_exists('wp_create_nonce'))
+ {
+ echo '<input type="hidden" name="ec3_nonce" id="ec3_nonce" value="' .
+ wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
+ }
+ ?>
+
+ <!-- Event Calendar: Event Editor -->
+ <table width="100%" cellspacing="2" cellpadding="5" class="editform">
+ <thead><tr>
+ <th><?php _e('Start','ec3'); ?></th>
+ <th><?php _e('End','ec3'); ?></th>
+ <th style="text-align:center"><?php _e('All Day','ec3'); ?></th>
+ <!-- th><?php _e('Repeat','ec3'); ?></th -->
+ <th></th>
+ </tr></thead>
+ <tbody>
+ <?php
+ $ec3_rows=0;
+ if($schedule)
+ {
+ foreach($schedule as $s)
+ $this->schedule_row(
+ $s->start,$s->end,$s->sched_id,'update',$s->allday
+ );
+ $ec3_rows=count($schedule);
+ }
+ $default=ec3_strftime('%Y-%m-%d %H:00',3600+time());
+ $this->schedule_row($default,$default,'_','create',False);
+ ?>
+ <tr>
+ <td colspan="4" style="text-align:left">
+ <p style="margin:0;padding:0;text-align:left">
+ <input type="button" name="ec3_new_row" value=" + "
+ title="<?php _e('Add a new event','ec3'); ?>"
+ onclick="Ec3EditForm.add_row()" />
+ <input type="hidden" id="ec3_rows" name="ec3_rows"
+ value="<?php echo $ec3_rows; ?>" />
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <?php
+ }
+
+ /** Utility function called by event_editor_box(). */
+ function schedule_row($start,$end,$sid,$action,$allday)
+ {
+ $s="ec3_start_$sid";
+ $e="ec3_end_$sid";
+ ?>
+ <tr class="ec3_schedule_row" valign="middle"<?php
+ if('create'==$action){ echo ' style="display:none"'; } ?>>
+ <td>
+ <input type="hidden" name="ec3_action_<?php echo $sid;
+ ?>" value="<?php echo $action; ?>" />
+ <input type="text" name="<?php echo $s;
+ if('update'==$action){ echo "\" id=\"$s"; }
+ ?>" value="<?php echo $start; ?>" />
+ <button type="reset" id="trigger_<?php echo $s; ?>">…</button>
+ </td>
+ <td>
+ <input type="text" name="<?php echo $e;
+ if('update'==$action){ echo "\" id=\"$e"; }
+ ?>" value="<?php echo $end; ?>" />
+ <button type="reset" id="trigger_<?php echo $e; ?>">…</button>
+ </td>
+ <td style="text-align:center">
+ <input type="checkbox" name="ec3_allday_<?php echo $sid;
+ ?>" value="1"<?php if($allday){ echo ' checked="checked"'; } ?> />
+ </td>
+ <!-- td>
+ <input type="text" name="ec3_repeat_<?php echo $sid; ?>" value="<?php echo $s->rpt; ?>" />
+ </td -->
+ <td>
+ <p style="margin:0;padding:0">
+ <input type="button" name="ec3_del_row_<?php echo $sid;
+ ?>" value=" — "
+ title="<?php _e('Delete this event','ec3'); ?>"
+ onclick="Ec3EditForm.del_row(this)" />
+ </p>
+ </td>
+ </tr>
+ <?php
+ }
+
+
+ function action_save_post($post_ID)
+ {
+ if(!$_POST)
+ return;
+
+ if(function_exists('wp_verify_nonce'))
+ {
+ if(!wp_verify_nonce($_POST['ec3_nonce'], plugin_basename(__FILE__) ))
+ return;
+ }
+
+// if(function_exists('current_user_can'))
+// {
+// if(!current_user_can('edit_post',$post_id))
+// return;
+// }
+
+ // Ensure that we only save each post once.
+ if(isset($this->save_post_called) && $this->save_post_called[$post_ID])
+ return;
+ if(!isset($this->save_post_called))
+ $this->save_post_called=array();
+ $this->save_post_called[$post_ID]=true;
+
+ global $ec3,$wpdb;
+ // Use this to check the DB before DELETE/UPDATE. Should use
+ // ...IGNORE, but some people insist on using ancient version of MySQL.
+ $count_where="SELECT COUNT(0) FROM $ec3->schedule WHERE";
+
+ // If this post is no longer an event, then purge all schedule records.
+ if(isset($_POST['ec3_rows']) && '0'==$_POST['ec3_rows'])
+ {
+ if($wpdb->get_var("$count_where post_id=$post_ID"))
+ $wpdb->query("DELETE FROM $ec3->schedule WHERE post_id=$post_ID");
+ return;
+ }
+
+ // Find all of our parameters
+ $sched_entries=array();
+ $fields =array('start','end','allday','rpt');
+ foreach($_POST as $k => $v)
+ {
+ if(preg_match('/^ec3_(action|'.implode('|',$fields).')_(_?)([0-9]+)$/',$k,$match))
+ {
+ $sid=intval($match[3]);
+ if(!isset( $sched_entries[$sid] ))
+ $sched_entries[ $sid ]=array('allday' => 0);
+ $sched_entries[ $sid ][ $match[1] ] = $v;
+ }
+ }
+
+ foreach($sched_entries as $sid => $vals)
+ {
+ // Bail out if the input data looks suspect.
+ if(!array_key_exists('action',$vals) || count($vals)<3)
+ continue;
+ // Save the value of 'action' and remove it. Leave just the column vals.
+ $action=$vals['action'];
+ unset($vals['action']);
+ // Reformat the column values for SQL:
+ foreach($vals as $k => $v)
+ if('allday'==$k)
+ $vals[$k]=intval($v);
+ else
+ $vals[$k]="'".$wpdb->escape($v)."'";
+ $sid_ok=$wpdb->get_var("$count_where post_id=$post_ID AND sched_id=$sid");
+ // Execute the SQL.
+ if($action=='delete' && $sid>0 && $sid_ok):
+ $wpdb->query(
+ "DELETE FROM $ec3->schedule
+ WHERE post_id=$post_ID
+ AND sched_id=$sid"
+ );
+ elseif($action=='update' && $sid>0 && $sid_ok):
+ $wpdb->query(
+ "UPDATE $ec3->schedule
+ SET ".$this->implode_assoc(', ',$vals)."
+ WHERE post_id=$post_ID
+ AND sched_id=$sid"
+ );
+ elseif($action=='create'):
+ $wpdb->query(
+ "INSERT INTO $ec3->schedule
+ (post_id, ".implode(', ',array_keys($vals)).")
+ VALUES ($post_ID,".implode(', ',array_values($vals)).")"
+ );
+ endif;
+ }
+ // Force all end dates to be >= start dates.
+ $wpdb->query("UPDATE $ec3->schedule SET end=start WHERE end<start");
+ } // end function action_save_post()
+
+ /** Utility function called by action_save_post(). */
+ function implode_assoc($glue,$arr)
+ {
+ $result=array();
+ foreach($arr as $key=>$value)
+ $result[]=$key."=".$value;
+ return implode($glue,$result);
+ }
+
+
+ //
+ // OPTIONS
+ //
+
+
+ /** Upgrade the installation, if necessary. */
+ function upgrade_database()
+ {
+ global $ec3,$wpdb;
+ // Check version - return if no upgrade required.
+ $installed_version=get_option('ec3_version');
+ if($installed_version==$ec3->version)
+ return;
+
+ $v0=$this->ec3_version($installed_version);
+ $v1=$this->ec3_version($ec3->version);
+ for($i=0; $i<min(count($v0),count($v1)); $i++)
+ {
+ if( $v0[$i] > $v1[$i] )
+ return; // Installed version later than this one ?!?!
+ if( $v0[$i] < $v1[$i] )
+ break; // Installed version earlier than this one.
+ }
+
+ // Upgrade.
+ $tables=$wpdb->get_results('SHOW TABLES',ARRAY_N);
+ if(!$tables)
+ die(__('Error upgrading database for EventCalendar plugin.','ec3'));
+
+ $table_exists=false;
+ foreach($tables as $t)
+ if(preg_match("/$ec3->schedule/",$t[0]))
+ $table_exists=true;
+
+ if(!$table_exists)
+ {
+ $wpdb->query(
+ "CREATE TABLE $ec3->schedule (
+ sched_id BIGINT(20) AUTO_INCREMENT,
+ post_id BIGINT(20),
+ start DATETIME,
+ end DATETIME,
+ allday BOOL,
+ rpt VARCHAR(64),
+ PRIMARY KEY(sched_id)
+ )");
+ // Force the special upgrade page if we are coming from v3.0
+ if( $ec3->event_category &&
+ ( empty($v0) || $v0[0]<3 || ($v0[0]==3 && $v0[1]==0) ) )
+ {
+ update_option('ec3_upgrade_posts',1);
+ }
+ } // end if(!$table_exists)
+
+ // Record the new version number
+ update_option('ec3_version',$ec3->version);
+ echo '<div id="message" class="updated fade"><p><strong>'
+ . sprintf(
+ __('Upgraded database to EventCalendar Version %s','ec3'),
+ $ec3->version
+ );
+ if($table_exists)
+ echo '<br />('.__('Table already existed','ec3').')';
+ echo ".</strong></p></div>\n";
+ } // end function upgrade_database();
+
+ /** Utility function used by upgrade_database().
+ * Breaks apart a version string into an array of comparable parts. */
+ function ec3_version($str)
+ {
+ $s=preg_replace('/([a-z])([0-9])/','\1.\2',$str);
+ $v=explode('.',$s);
+ $result=array();
+ foreach($v as $i)
+ {
+ if(preg_match('/^[0-9]+$/',$i))
+ $result[]=intval($i);
+ elseif(empty($i))
+ $result[]=0;
+ else
+ $result[]=$i;
+ }
+ return $result;
+ }
+
+
+ function action_admin_menu()
+ {
+ global $ec3;
+ add_options_page(
+ __('Event Calendar Options','ec3'),
+ 'EventCalendar',
+ 6,
+ 'ec3_admin',
+ 'ec3_options_subpanel'
+ );
+
+ if(empty($ec3->event_category))
+ return; // Until EC is properly configured, only show the options page.
+
+ if(function_exists('add_meta_box'))
+ {
+ add_meta_box(
+ 'ec3_schedule_editor', // HTML id for container div
+ __('Event Editor','ec3'),
+ 'ec3_event_editor_box', // callback function
+ 'post', // page type
+ 'advanced', // context
+ 'high' // priority
+ );
+ }
+ else
+ {
+ // Old (pre WP2.5) functionality.
+ add_filter('simple_edit_form', array(&$ec3_admin,'filter_edit_form'));
+ if($ec3->wp_have_dbx)
+ add_filter('dbx_post_advanced', array(&$ec3_admin,'filter_edit_form'));
+ else
+ add_filter('edit_form_advanced',array(&$ec3_admin,'filter_edit_form'));
+ }
+ }
+
+
+ function options_subpanel()
+ {
+ global $ec3;
+
+ if(isset($_POST['info_update']))
+ {
+ echo '<div id="message" class="updated fade"><p><strong>';
+ if(isset($_POST['ec3_event_category']))
+ $ec3->set_event_category( intval($_POST['ec3_event_category']) );
+ if(isset($_POST['ec3_num_months']))
+ $ec3->set_num_months( intval($_POST['ec3_num_months']) );
+ if(isset($_POST['ec3_show_only_events']))
+ $ec3->set_show_only_events( intval($_POST['ec3_show_only_events']) );
+ if(isset($_POST['ec3_day_length']))
+ $ec3->set_day_length( intval($_POST['ec3_day_length']) );
+ if(isset($_POST['ec3_hide_logo']))
+ $ec3->set_hide_logo( intval($_POST['ec3_hide_logo']) );
+ if(isset($_POST['ec3_hide_event_box']))
+ $ec3->set_hide_event_box( intval($_POST['ec3_hide_event_box']) );
+ if(isset($_POST['ec3_advanced']))
+ $ec3->set_advanced( intval($_POST['ec3_advanced']) );
+ if(isset($_POST['ec3_navigation']))
+ $ec3->set_navigation( intval($_POST['ec3_navigation']) );
+ if(isset($_POST['ec3_disable_popups']))
+ $ec3->set_disable_popups( intval($_POST['ec3_disable_popups']) );
+ if(isset($_POST['ec3_tz']))
+ $ec3->set_tz( $_POST['ec3_tz'] );
+ _e('Options saved.');
+ echo '</strong></p></div>';
+ }
+ ?>
+
+ <div class="wrap">
+ <form method="post">
+ <h2><?php _e('Event Calendar Options','ec3'); ?></h2>
+
+ <?php if(isset($_GET['ec3_easteregg'])): ?>
+
+ <h3><?php _e('Easter Egg','ec3') ?>:
+ <input type="submit" name="ec3_upgrade_posts"
+ value="<?php _e('Upgrade Event Posts','ec3') ?>" /></h3>
+
+ <?php endif ?>
+
+ <table class="form-table">
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Event category','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_event_category">
+ <?php
+ if(0==$ec3->event_category)
+ echo '<option value="0">'.__('- Select -').'</option>';
+ wp_dropdown_cats( 0, $ec3->event_category );
+ ?>
+ </select>
+ <br /><em>
+ <?php _e("Event posts are put into this category for you. Don't make this your default post category.",'ec3'); ?>
+ </em>
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Show schedule within posts','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_hide_event_box">
+ <option value='0'<?php if(!$ec3->hide_event_box) echo " selected='selected'" ?> >
+ <?php _e('Show Schedule','ec3'); ?>
+ </option>
+ <option value='1'<?php if($ec3->hide_event_box) echo " selected='selected'" ?> >
+ <?php _e('Hide Schedule','ec3'); ?>
+ </option>
+ </select>
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Show events as blog entries','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_advanced">
+ <option value='0'<?php if(!$ec3->advanced_setting) echo " selected='selected'" ?> >
+ <?php _e('Events are Normal Posts','ec3'); ?>
+ </option>
+ <option value='1'<?php if($ec3->advanced_setting) echo " selected='selected'" ?> >
+ <?php _e('Keep Events Separate','ec3'); ?>
+ </option>
+ </select>
+ <br /><em>
+ <?php _e('Keep Events Separate: the Event Category page shows future events, in date order. Events do not appear on front page.','ec3'); ?>
+ </em>
+ </td>
+
+ <tr valign="top">
+ <?php if($ec3->tz_disabled): ?>
+ <th style="color:gray" width="33%" scope="row"><?php _e('Timezone','ec3'); ?>:</th>
+ <td>
+ <input disabled="disabled" type="text" value="<?php
+ if(empty($ec3->tz))
+ _e('unknown','ec3');
+ else
+ echo $ec3->tz; ?>" />
+ <br /><em>
+ <?php _e("You cannot change your timezone. Turn off PHP's 'safe mode' or upgrade to PHP5.",'ec3'); ?>
+ </em>
+ </td>
+ <?php else: ?>
+ <th width="33%" scope="row"><?php _e('Timezone','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_tz">
+ <option value="wordpress">WordPress</option>
+ <?php ec3_get_tz_options($ec3->tz); ?>
+ </select>
+ </td>
+ <?php endif; ?>
+ </tr>
+
+ </table>
+
+ <h3><?php _e('Calendar Display','ec3'); ?></h3>
+
+ <table class="form-table">
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Number of months','ec3'); ?>:</th>
+ <td>
+ <input type="text" name="ec3_num_months" value="<?php echo $ec3->num_months; ?>" />
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Show all categories in calendar','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_show_only_events">
+ <option value='1'<?php if($ec3->show_only_events) echo " selected='selected'" ?> >
+ <?php _e('Only Show Events','ec3'); ?>
+ </option>
+ <option value='0'<?php if(!$ec3->show_only_events) echo " selected='selected'" ?> >
+ <?php _e('Show All Posts','ec3'); ?>
+ </option>
+ </select>
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Show day names as','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_day_length">
+ <option value='1'<?php if($ec3->day_length<3) echo " selected='selected'" ?> >
+ <?php _e('Single Letter','ec3'); ?>
+ </option>
+ <option value='3'<?php if(3==$ec3->day_length) echo " selected='selected'" ?> >
+ <?php _e('3-Letter Abbreviation','ec3'); ?>
+ </option>
+ <option value='9'<?php if($ec3->day_length>3) echo " selected='selected'" ?> >
+ <?php _e('Full Day Name','ec3'); ?>
+ </option>
+ </select>
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Show Event Calendar logo','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_hide_logo">
+ <option value='0'<?php if(!$ec3->hide_logo) echo " selected='selected'" ?> >
+ <?php _e('Show Logo','ec3'); ?>
+ </option>
+ <option value='1'<?php if($ec3->hide_logo) echo " selected='selected'" ?> >
+ <?php _e('Hide Logo','ec3'); ?>
+ </option>
+ </select>
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Position of navigation links','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_navigation">
+ <option value='0'<?php if(0==!$ec3->navigation) echo " selected='selected'" ?> >
+ <?php _e('Above Calendar','ec3'); ?>
+ </option>
+ <option value='1'<?php if(1==$ec3->navigation) echo " selected='selected'" ?> >
+ <?php _e('Below Calendar','ec3'); ?>
+ </option>
+ <option value='2'<?php if(2==$ec3->navigation) echo " selected='selected'" ?> >
+ <?php _e('Hidden','ec3'); ?>
+ </option>
+ </select>
+ <br /><em>
+ <?php _e('The navigation links are more usable when they are above the calendar, but you might prefer them below or hidden for aesthetic reasons.','ec3'); ?>
+ </em>
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <th width="33%" scope="row"><?php _e('Popup event lists','ec3'); ?>:</th>
+ <td>
+ <select name="ec3_disable_popups">
+ <option value='0'<?php if(!$ec3->disable_popups) echo " selected='selected'" ?> >
+ <?php _e('Show Popups','ec3'); ?>
+ </option>
+ <option value='1'<?php if($ec3->disable_popups) echo " selected='selected'" ?> >
+ <?php _e('Hide Popups','ec3'); ?>
+ </option>
+ </select>
+ <br /><em>
+ <?php _e('You might want to disable popups if you use Nicetitles.','ec3'); ?>
+ </em>
+ </td>
+ </tr>
+
+ </table>
+
+ <p class="submit"><input type="submit" name="info_update"
+ value="<?php _e('Save Changes') ?>" /></p>
+ </form>
+
+ </div> <?php
+ } // end function options_subpanel()
+
+}; // end class ec3_Admin
+
+
+$ec3_admin=new ec3_Admin();
+
+function ec3_options_subpanel()
+{
+ global $ec3_admin;
+
+ // Upgrade
+ if(isset($_POST['ec3_cancel_upgrade']))
+ update_option('ec3_upgrade_posts',0);
+
+ $ec3_admin->upgrade_database(); // May set option ec3_force_upgrade
+
+ if( intval(get_option('ec3_upgrade_posts')) ||
+ isset($_POST['ec3_upgrade_posts']) )
+ {
+ require_once(dirname(__FILE__).'/upgrade-posts.php');
+ ec3_upgrade_posts();
+ return;
+ }
+
+ // Normal options page...
+ $ec3_admin->options_subpanel();
+}
+
+function ec3_event_editor_box()
+{
+ global $ec3_admin;
+ $ec3_admin->event_editor_box();
+}
+
+
+//
+// Hook in...
+if($ec3->event_category)
+{
+ add_filter('admin_head',array(&$ec3_admin,'filter_admin_head'));
+ add_action('save_post', array(&$ec3_admin,'action_save_post'));
+ // TODO v3.2 - don't use the edit_post hook.
+ add_action('edit_post', array(&$ec3_admin,'action_save_post'));
+}
+
+// Always hook into the admin_menu - it's required to allow users to
+// set things up.
+add_action('admin_menu', array(&$ec3_admin,'action_admin_menu'));
+
+?>