dashicons = $dashicons;
add_action('admin_menu', array(&$this, 'manage_options'));
add_action('admin_init', array(&$this, 'register_settings'));
add_filter('plugin_action_links_event-post/eventpost.php', array( &$this, 'settings_link' ) );
add_filter('plugin_row_meta', array( &$this, 'row_meta' ), 1, 4);
}
public function get_settings(){
$ep_settings = get_option('ep_settings');
$reg_settings=false;
if(!is_array($ep_settings)){
$ep_settings = array();
}
if (!isset($ep_settings['dateformat']) || empty($ep_settings['dateformat'])) {
$ep_settings['dateformat'] = get_option('date_format');
$reg_settings=true;
}
if (!isset($ep_settings['timeformat']) || empty($ep_settings['timeformat'])) {
$ep_settings['timeformat'] = get_option('time_format');
$reg_settings=true;
}
if (!isset($ep_settings['tile']) || empty($ep_settings['tile']) || !isset(EventPost()->maps[$ep_settings['tile']])) {
$maps = array_keys(EventPost()->maps);
$ep_settings['tile'] = EventPost()->maps[$maps[0]]['id'];
$reg_settings=true;
}
if (!isset($ep_settings['tile_api_key']) || empty($ep_settings['tile_api_key']) ) {
$ep_settings['tile_api_key'] = '';
$reg_settings=true;
}
if(!isset($ep_settings['zoom']) || !is_numeric($ep_settings['zoom'])){
$ep_settings['zoom']=12;
$reg_settings=true;
}
if (!isset($ep_settings['cache']) || !is_numeric($ep_settings['cache'])) {
$ep_settings['cache'] = 0;
$reg_settings=true;
}
if (!isset($ep_settings['export']) || empty($ep_settings['export'])) {
$ep_settings['export'] = 'both';
$reg_settings=true;
}
if (!isset($ep_settings['export_when']) || empty($ep_settings['export_when'])) {
$ep_settings['export_when'] = 'future';
$reg_settings=true;
}
if (!isset($ep_settings['dateforhumans'])) {
$ep_settings['dateforhumans'] = 1;
$reg_settings=true;
}
if (!isset($ep_settings['emptylink'])) {
$ep_settings['emptylink'] = 1;
$reg_settings=true;
}
if (!isset($ep_settings['markpath'])) {
$ep_settings['markpath'] = '';
$reg_settings=true;
}
if (!isset($ep_settings['markurl'])) {
$ep_settings['markurl'] = '';
$reg_settings=true;
}
if (!isset($ep_settings['customcss'])) {
$ep_settings['customcss'] = '';
$reg_settings=true;
}
if (!isset($ep_settings['singlepos']) || empty($ep_settings['singlepos'])) {
$ep_settings['singlepos'] = 'after';
$reg_settings=true;
}
if (!isset($ep_settings['loopicons'])) {
$ep_settings['loopicons'] = 1;
$reg_settings=true;
}
if (!isset($ep_settings['displaystatus']) || empty($ep_settings['displaystatus'])) {
$ep_settings['displaystatus'] = 'both';
$reg_settings=true;
}
if (!isset($ep_settings['adminpos']) || empty($ep_settings['adminpos'])) {
$ep_settings['adminpos'] = 'side';
$reg_settings=true;
}
if (!isset($ep_settings['container_shema']) ) {
$ep_settings['container_shema'] = '';
$reg_settings=true;
}
if (!isset($ep_settings['item_shema']) ) {
$ep_settings['item_shema'] = '';
$reg_settings=true;
}
if(!isset($ep_settings['datepicker']) || !in_array($ep_settings['datepicker'], array('simple', 'native'))){
$ep_settings['datepicker']='simple';
$reg_settings=true;
}
if(!isset($ep_settings['posttypes']) || !is_array($ep_settings['posttypes'])){
$ep_settings['posttypes']=array('post');
$reg_settings=true;
}
if(!isset($ep_settings['default_color'])){
$ep_settings['default_color']= "#000000";
$reg_settings=true;
}
if(!isset($ep_settings['default_icon'])){
$ep_settings['default_icon']= "location";
$reg_settings=true;
}
do_action_ref_array('eventpost_getsettings_action', array(&$ep_settings, &$reg_settings));
//Save settings not changed
if($reg_settings===true){
update_option('ep_settings', $ep_settings);
}
return $ep_settings;
}
/**
* Settings link on the plugins page
*/
public function settings_link( $links ) {
$settings_link = '' . __( 'Settings', 'event-post' ) . '';
// place it before other links
array_unshift( $links, $settings_link );
return $links;
}
/**
* Add links to the plugin meta row
*
* @param type $plugin_meta
* @param type $plugin_file
* @param type $plugin_data
* @param type $status
*
* @return type
*/
public function row_meta($plugin_meta, $plugin_file, $plugin_data, $status){
if($plugin_file=='event-post/eventpost.php'){
$plugin_link = '' . __( 'Plugin site', 'event-post' ) . '';
$review_link = '' . __( 'Give a note', 'event-post' ) . '';
array_push($plugin_meta, $plugin_link, $review_link);
}
return $plugin_meta;
}
/**
* Adds menu items
*/
public function manage_options() {
add_options_page(__('Events settings', 'event-post'), __('Events', 'event-post'), 'manage_options', 'event-settings', array(&$this, 'manage_settings'));
}
/**
* Register settings
*
* @action eventpost_register_settings
*/
public function register_settings(){
register_setting( 'eventpost-settings', 'ep_settings' );
// Global
add_settings_section(
'eventpost-settings-general',
' '.__('Global settings', 'event-post'),
array(&$this, 'settings_section_callback'),
'eventpost-settings'
);
//--
add_settings_field(
'emptylink',
__('Print link for empty posts', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-general',
array( 'name' => 'emptylink', 'options'=>array(
1=>__('Link all posts', 'event-post'),
0=>__('Do not link posts with empty content', 'event-post')
)
)
);
add_settings_field(
'singlepos',
__('Event bar position for single posts', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-general',
array( 'name' => 'singlepos', 'options'=>array(
'before'=>__('Before the content', 'event-post'),
'after'=>__('After the content', 'event-post'),
'none'=>__('Not displayed', 'event-post')
) )
);
add_settings_field(
'loopicons',
__('Add icons for events in the loop', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-general',
array( 'name' => 'loopicons', 'options'=>array(
1=>__('Emojis', 'event-post'),
0=>__('Hide', 'event-post'),
2=>__('Icons', 'event-post')
) )
);
add_settings_field(
'displaystatus',
__('Display Event Status on:', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-general',
array( 'name' => 'displaystatus', 'options'=>array(
'list'=>__('List only', 'event-post'),
'single'=>__('Single only', 'event-post'),
'both'=>__('Both', 'event-post'),
'none'=>__('None', 'event-post'),
) )
);
add_settings_field(
'customcss',
__('Use this custom CSS file', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-general',
// translators: %s: URL to the default CSS file
array( 'name' => 'customcss', 'description'=>sprintf(__('Leave empty to use the default CSS file.', 'event-post'), plugins_url('/css/event-post.css', __FILE__)).'
'
. (is_file(get_stylesheet_directory().'/event-post.css') || is_file(get_template_directory().'/event-post.css')
? __('Your theme contains an event-post.css file. It will be used as default stylesheet.', 'event-post')
: __('You can also add a event-post.css in your theme directory. It will be used as default stylesheet.', 'event-post')))
);
// Date
add_settings_section(
'eventpost-settings-date',
' '.__('Date settings', 'event-post'),
array(&$this, 'settings_section_callback'),
'eventpost-settings'
);
//--
add_settings_field(
'dateformat',
__('Date format', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-date',
array( 'name' => 'dateformat')
);
add_settings_field(
'timeformat',
__('Time format', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-date',
array( 'name' => 'timeformat')
);
add_settings_field(
'export',
__('Show export buttons on:', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-date',
array( 'name' => 'export', 'options'=>array(
'list'=>__('List only', 'event-post'),
'single'=>__('Single only', 'event-post'),
'both'=>__('Both', 'event-post'),
'none'=>__('None', 'event-post'),
) )
);
add_settings_field(
'export_when',
__('Show export buttons on:', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-date',
array( 'name' => 'export_when', 'options'=>array(
'future'=>__('Future only', 'event-post'),
'past'=>__('Past only', 'event-post'),
'both'=>__('Both', 'event-post'),
'none'=>__('None', 'event-post'),
) )
);
add_settings_field(
'dateforhumans',
__('Relative human dates:', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-date',
array( 'name' => 'dateforhumans',
'description'=>__('Replace absolute dates by "today", "yesterday", and "tomorrow".', 'event-post'),
'options'=>array(
1=>__('Yes', 'event-post'),
0=>__('No', 'event-post'),
) )
);
// List
add_settings_section(
'eventpost-settings-list',
' '.__('List settings', 'event-post'),
array(&$this, 'settings_section_callback'),
'eventpost-settings'
);
//--
add_settings_field(
'container_shema',
__('Container schema', 'event-post'),
array(&$this, 'settings_field_textarea_callback'),
'eventpost-settings',
'eventpost-settings-list',
array( 'name' => 'container_shema', 'description'=>__('default:','event-post').' '.htmlentities(EventPost()->default_list_shema['container']).'')
);
add_settings_field(
'item_shema',
__('Item schema', 'event-post'),
array(&$this, 'settings_field_textarea_callback'),
'eventpost-settings',
'eventpost-settings-list',
array( 'name' => 'item_shema', 'description'=>__('default:','event-post').' '.htmlentities(EventPost()->default_list_shema['item']).'')
);
// Timeline
add_settings_section(
'eventpost-settings-timeline',
' '.__('Timeline settings', 'event-post'),
array(&$this, 'settings_section_callback'),
'eventpost-settings'
);
//--
add_settings_field(
'timeline_container_shema',
__('Timeline Container schema', 'event-post'),
array(&$this, 'settings_field_textarea_callback'),
'eventpost-settings',
'eventpost-settings-timeline',
array( 'name' => 'timeline_container_shema', 'description'=>__('default:','event-post').' '.htmlentities(EventPost()->default_timeline_shema['container']).'')
);
add_settings_field(
'timeline_item_shema',
__('Timeline Item schema', 'event-post'),
array(&$this, 'settings_field_textarea_callback'),
'eventpost-settings',
'eventpost-settings-timeline',
array( 'name' => 'timeline_item_shema', 'description'=>__('default:','event-post').' '.htmlentities(EventPost()->default_timeline_shema['item']).'')
);
// Appearance
add_settings_section(
'eventpost-settings-appearence',
' '.__('Appearence settings', 'event-post'),
array(&$this, 'settings_section_callback'),
'eventpost-settings'
);
//--
add_settings_field(
'appearence_default_color',
__('Default Marker Color', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-appearence',
array( 'name' => 'default_color', 'input-class'=> 'color-field','description'=>__('Default color used for Map Marker','event-post'))
);
add_settings_field(
'appearence_default_icon',
__('Default Marker Icon', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-appearence',
array( 'name' => 'default_icon','class'=>'','input-style'=>'font-family : dashicons;', 'description'=>__('Default icon used for Map Marker','event-post'),'options' => $this->dashicons->icons_html_entities)
);
add_settings_field(
'markpath',
__('Makers custom directory after ABSPATH/', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-appearence',
array( 'name' => 'markpath', 'description'=>__('(leave empty for default settings)','event-post'))
);
add_settings_field(
'markurl',
__('Makers custom directory URL', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-appearence',
array( 'name' => 'markurl', 'description'=>__('(leave empty for default settings)','event-post'))
);
// Map
add_settings_section(
'eventpost-settings-map',
' '.__('Map settings', 'event-post'),
array(&$this, 'settings_section_callback'),
'eventpost-settings'
);
//--
$maps = array();
foreach (EventPost()->maps as $map){
$maps[$map['id']]=$map['name'].(isset($map['urls_retina']) ? ' '.__('(Retina support)', 'event-post') : '');
}
add_settings_field(
'tile',
__('Map background', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-map',
array( 'name' => 'tile', 'options'=>$maps)
);
add_settings_field(
'tile_api_key',
__('Optional API key', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-map',
array( 'name' => 'tile_api_key', 'description'=>__('Some tiles need an API key to be displayed.','event-post'))
);
add_settings_field(
'zoom',
__('Default zoom', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-map',
array( 'name' => 'zoom')
);
// Admin
add_settings_section(
'eventpost-settings-admin',
' '.__('Admin settings', 'event-post'),
array(&$this, 'settings_section_callback'),
'eventpost-settings'
);
//--
add_settings_field(
'adminpos',
__('Position of event details boxes', 'event-post'),
array(&$this, 'settings_field_select_callback'),
'eventpost-settings',
'eventpost-settings-admin',
array( 'name' => 'adminpos', 'options'=>array(
'side'=>__('Side', 'event-post'),
'normal'=>__('Under the text', 'event-post'),
) )
);
$post_types = array();
$posttypes = apply_filters('eventpost_get_post_types', get_post_types(array(), 'objects'));
foreach($posttypes as $type=>$posttype){
$post_types[$posttype->name]=$posttype->labels->name;
}
add_settings_field(
'posttypes',
__('Which post types can be events?', 'event-post'),
array(&$this, 'settings_field_checkbox_callback'),
'eventpost-settings',
'eventpost-settings-admin',
array( 'name' => 'posttypes', 'options'=>$post_types)
);
add_settings_field(
'datepicker',
__('Datepicker style', 'event-post'),
array(&$this, 'settings_field_datepicker_callback'),
'eventpost-settings',
'eventpost-settings-admin',
array( 'name' => 'datepicker')
);
add_settings_field(
'cache',
__('Use cache', 'event-post'),
array(&$this, 'settings_field_default_callback'),
'eventpost-settings',
'eventpost-settings-admin',
array( 'name' => 'cache', 'description'=>__('Use cache for results','event-post'))
);
do_action('eventpost_register_settings');
}
function settings_section_callback( $arg ) {
echo '
human_date(current_time('timestamp')) .' '. date(EventPost()->settings['timeformat'], current_time('timestamp')); ?>