'',
'feed_url' => '',
'settings_display_color' => '#000000',
'settings_display_order' => 'START-DATE-ASC',
'filter_date' => '1',
'filter_location' => '1',
'filter_price' => '1',
'feed_valid' => '0',
'has_changed' => 0,
'content' => '',
'category' => '',
'category_xml_feed_url' => '',
'details_link_to' => 1, // Default link to source, 0 link to plugin,
'all_cats' => '', // Save all categories to get the list tags in the list events,
'category_valid' => '',
'calendar_slug' => '',
'teaser_widget_logo_url' => '',
'teaser_widget_logo_position'=> TEASER_WIDGET_DEFAULT_LOGO_POSITION,
'plugin_logo_url' => '',
'plugin_logo_position' => AC_PLUGIN_DEFAULT_LOGO_POSITION,
'display_search_bar' => 1,
'featured_only' => 0,
'teaser_widget_logo_link_to' => '',
));
}
if ( $option_arr === false ) {
$option_arr = array('');
} else {
$option_arr = @unserialize( $option_arr );
$option_arr = array_diff( $option_arr , array( 0 ) );
$option_arr[] = '';
}
update_option( AC_PLUGIN_OPTION_ARR_KEYS, serialize( array_unique( $option_arr ) ) );
}
public function ac_deactive() {
// Do nothing
}
public static function register_scripts() {
wp_enqueue_script( 'jquery-ui-datepicker' );
wp_register_style('jquery-ui.css', plugins_url('artsopolis-calendar/css/jquery-ui.css'));
wp_register_script('simple-pagination-js', plugins_url('js/jquery.simplePagination.js', __FILE__), array('jquery'), '1.0', true);
// For gmap
if ( isset( $_REQUEST['event_id'] ) && $_REQUEST['event_id'] ) {
remove_action('wp_head', 'rel_canonical');
wp_register_script('artsopolis-calendar-gmap-lib', 'https://maps.googleapis.com/maps/api/js?sensor=false');
wp_register_script('artsopolis-calendar-gmap', plugins_url('/artsopolis-calendar/js/artsopolis-calendar-gmap.js'), array('artsopolis-calendar-gmap-lib'));
}
wp_register_script('artsopolis-calendar-js', plugins_url('artsopolis-calendar/js/artsopolis-calendar.js'), array(), AC_JS_VERSION);
wp_register_script('artsopolis-calendar-ex-plugin-js', plugins_url('artsopolis-calendar/js/plugins/ex-plugins.js'), array(), AC_JS_VERSION);
wp_register_script('jquery-datatable', plugins_url('artsopolis-calendar/js/plugin.min.js'));
wp_localize_script('artsopolis-calendar-js', 'artsopolis_calendar_obj', array(
'calendar_src' => plugins_url('artsopolis-calendar/img/date-button.gif'),
'admin_url' => admin_url('admin-ajax.php'),
));
// Register angular js for month view
self::registerScriptsForMonth();
wp_register_style('ac-app-css', plugins_url('artsopolis-calendar/css/app.min.css'), array(), AC_CSS_VERSION);
}
public static function registerScriptsForMonth() {
wp_register_script('artsopolis-calendar-moment-js', plugins_url('artsopolis-calendar/js/plugins/moment.min.js'));
wp_register_script('artsopolis-calendar-angular-js', 'https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js');
wp_register_script('artsopolis-calendar-month-view-js', plugins_url('artsopolis-calendar/js/angularjs/month.js'), array(), AC_JS_VERSION);
}
public static function printScriptsForMonth(){
wp_print_scripts('artsopolis-calendar-moment-js');
wp_print_scripts('artsopolis-calendar-angular-js');
wp_print_scripts('artsopolis-calendar-month-view-js');
}
public static function setPageShortcode($boolValue) {
self::$is_page_shortcode = $boolValue;
}
public static function callStyles(){
wp_enqueue_style('jquery-ui.css', plugins_url('artsopolis-calendar/css/jquery-ui.css'));
if(WP_DEBUG) {
wp_enqueue_style('ac-app-css', plugins_url('artsopolis-calendar/public/css/app.css'));
} else {
wp_enqueue_style('ac-app-css', plugins_url('artsopolis-calendar/public/css/app.min.css'), array(), AC_CSS_VERSION);
}
}
public static function print_scripts() {
if(!self::$is_page_shortcode) return;
wp_print_styles('jquery-ui.css');
wp_print_styles('ac-app-css');
wp_print_scripts('artsopolis-calendar-ex-plugin-js');
wp_print_scripts('artsopolis-calendar-js');
wp_print_scripts('jquery-datatable');
wp_print_scripts('simple-pagination-js');
if ( isset( $_REQUEST['event_id'] ) && $_REQUEST['event_id'] ) {
wp_print_scripts('artsopolis-calendar-gmap-lib');
wp_print_scripts('artsopolis-calendar-gmap');
}
self::printScriptsForMonth();
}
public static function load_widgets () {
// register the events widget
register_widget( 'artsopolis_calendar_teaser_widget' );
}
}
}
Artsopolis_Calendar::init();
if (! class_exists('Artsopolis_Calendar_API')) {
class Artsopolis_Calendar_API {
public static $feed_url,
$categories_url = '',
$option_key = '',
$xml_file_path = '',
$fid = '';
/**
* Get content from url
*/
public static function get_request_content($url) {
$request = new WP_Http;
$content = $request->request($url, array(
'timeout' => TIMEOUT_REQUEST_GET_XML_CONTENT,
));
if (is_wp_error($content)) {
return false;
}
return $content['body'];
}
public static function get_cdata_xml($cdata) {
$event_date_times = $cdata->eventDatesTimes->datetime;
$event_times = array();
if ($event_date_times) {
foreach ($event_date_times as $item) {
$date = (string) $item->date;
$time = (string) $item->time;
$endTime = (string) $item->end_time;
$endTime = !empty($endTime) ? date('H:i',strtotime($endTime)) : '';
if (trim($date) && trim($time)) {
$event_times[] = (object) array(
'date' => $date,
'time' => $time,
'end_time' => $endTime
);
}
}
}
return (object) array(
'orgImage' => (string) $cdata->orgImage,
'eventImage' => (string) $cdata->eventImage,
'eventName' => (string) $cdata->eventName,
'eventDateBegin' => (string) $cdata->eventDateBegin,
'eventDateEnd' => (string) $cdata->eventDateEnd,
'eventDatesTimes' => (string) $cdata->eventDatesTimes,
'orgName' => (string) $cdata->orgName,
'eventUrl' => (string) $cdata->eventUrl,
'websiteUrl' => (string) $cdata->websiteUrl,
'venueID' => (string) $cdata->venueID,
'venueName' => (string) $cdata->venueName,
'venueAddress1' => (string) $cdata->venueAddress1,
'venueAddress2' => (string) $cdata->venueAddress2,
'venueCity' => (string) $cdata->venueCity,
'venueState' => (string) $cdata->venueState,
'venueZip' => (string) $cdata->venueZip,
'venueLatitude' => (string) $cdata->venueLatitude,
'venueLongitude' => (string) $cdata->venueLongitude,
'eventPhone1' => (string) $cdata->eventPhone1,
'eventPhone2' => (string) $cdata->eventPhone2,
'eventEmail' => (string) $cdata->eventEmail,
'eventTicketUrl' => (string) $cdata->eventTicketUrl,
'eventStartTime' => (string) $cdata->eventStartTime,
'eventType' => (string) $cdata->eventType,
'tags' => (string) $cdata->tags,
'eventDescription' => (string) $cdata->eventDescription,
'link' => (string) $cdata->link,
'eventID' => (string) $cdata->eventID,
'event_dates_times' => $event_times,
'eventTicketInfo' => (string) $cdata->eventTicketInfo,
'discountUrl' => (string) $cdata->discountUrl,
'categories' => (string) $cdata->categories,
'ongoing' => (string) $cdata->ongoing,
'ticketPhone' => (string) $cdata->ticketPhone,
);
}
private static function _create_dir( $path ) {
if ( ! is_dir( $path ) ) {
mkdir( $path );
}
if ( ! is_writable( $path ) ) {
@chmod( $path, 0777 );
}
}
/**
* Save xml file
* @author: vulh
* return void
*/
public static function save_xml_data() {
$data = self::get_request_content(self::$feed_url);
if ($data) {
self::_create_dir( CALENDAR_UPLOAD_DIR );
self::_create_dir( CALENDAR_UPLOAD_DIR. '/'. ac_get_current_domain() );
// Process xml file
if (! is_writable( self::$xml_file_path )) {
@chmod(self::$xml_file_path, 0777);
}
$result = @file_put_contents( self::$xml_file_path, $data);
if ($result === false) {
exit('Please set write permission for '.CALENDAR_UPLOAD_DIR.'/'.ac_get_current_domain().' folder');
}
} else if (!is_admin()) {
exit('Please re-check plugin configuration Click here');
}
}
/**
* Check can override the xml file
* @author: vulh
* return boolean
*/
public static function check_can_override_xml_file($hour) {
$ac_options = get_option( self::$option_key );
$has_change_api = $ac_options['has_changed'];
$filename = self::$xml_file_path;
$time_create = @filemtime($filename);
$can_modify_time = $time_create + $hour * 3600;
// Update option
if ($ac_options['has_changed']) {
$ac_options['has_changed'] = 0;
update_option( self::$option_key, $ac_options);
}
return ! file_exists($filename) || time() > $can_modify_time || $has_change_api || ! $ac_options['feed_url'];
}
public static function get_categories() {
$data = @simplexml_load_string(self::get_request_content(self::$categories_url));
$result = array();
if ( ! is_object( $data ) ) {
return array();
}
$cats = $data->cat_id;
$sub_cats = $data->subcat_ids;
$active = isset($data->active) ? $data->active : 1;
if ( !empty($cats) ) {
foreach ($cats as $cat) {
$cat = explode('_', (string) $cat);
$result[$cat[0]]['name'] = $cat[2];
$result[$cat[0]]['active'] = $active;
$result[$cat[0]]['key'] = $cat[0]. '_'. $cat[1];
$result[$cat[0]]['subcats'] = array();
}
}
if ( ! empty( $sub_cats ) ) {
foreach ($sub_cats as $sub_cat) {
if(empty($sub_cat->subcat_id)) continue;
foreach ($sub_cat->subcat_id as $sub_cat_id) {
$sub_cat_id = explode('_', $sub_cat_id);
$result[$sub_cat_id[0]]['subcats'][] = $sub_cat_id[2].'[+]'.$sub_cat_id[0].'_'.$sub_cat_id[1];
}
$result[$sub_cat_id[0]]['subcats'] = self::sort_sub_category($result[$sub_cat_id[0]]['subcats']);
}
}
$result = self::sort_parent_category($result);
return $result;
}
public static function sort_parent_category(&$result) {
usort($result, 'ac_admin_parent_sort_by_alpha');
return $result;
}
public static function sort_sub_category(&$result) {
usort($result, 'ac_admin_sub_sort_by_alpha');
$after_sort = array();
foreach ($result as $item) {
$arr = explode('[+]', $item);
@$after_sort[$arr[1]] = $arr[0];
}
return $after_sort;
}
public static function get_option_key( $fid = '' ) {
return ARTSOPOLIS_CALENDAR_OPTIONS. self::get_geed_id( $fid );
}
public static function get_geed_id( $fid = '' ) {
if ( $fid === 0 ) return '';
if ( $fid ) return '_'. intval( $fid );
return isset( $_REQUEST['fid'] ) && $_REQUEST['fid'] ? '_'. $_REQUEST['fid'] : '';
}
public static function get_feature_events_key( $fid ) {
return AC_FEATURED_EVENTS. self::get_geed_id( $fid );
}
public static function get_spotlight_events_key( $fid ) {
return AC_SPOTLIGHT_EVENTS. self::get_geed_id( $fid );
}
public static function init_data( $fid ) {
self::$option_key = self::get_option_key($fid);
self::$xml_file_path = self::get_xml_fullpath( $fid );
self::$fid = $fid;
}
public static function get_xml_fullpath( $fid ) {
return XML_FILE_PATH. '/'. XML_BASE_NAME. self::get_geed_id( $fid ). '.xml';
}
}
}
require_once(dirname(__FILE__). '/function.php');
require(dirname(__FILE__). '/config.php');
require_once(dirname(__FILE__). '/widgets/teaser/teaser.php');
require_once(dirname(__FILE__). '/frontend/shortcode.php');
if (is_admin()) {
require_once(dirname(__FILE__). '/admin/admin.php');
/* Active settings link */
$plugin = plugin_basename(__FILE__);
add_filter("plugin_action_links_$plugin", 'ac_add_settings_link', 10);
function ac_add_settings_link($links) {
$settings_link = 'Settings';
array_push($links, $settings_link);
return $links;
}
}