wp-liveticker/includes/class-system.php

80 lines
1.6 KiB
PHP

<?php
/**
* Liveticker: Plugin system class.
*
* This file contains the derived class for the plugin's system operations.
*
* @package SCLiveticker
*/
namespace SCLiveticker;
use WP_Query;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Liveticker system configuration.
*/
class System extends SCLiveticker {
/**
* Activation hook.
*
* Initializes default options.
*
* @return void
*/
public static function activate() {
// Load current options.
self::update_options();
// Add default settings to database.
$defaults = self::default_options();
if ( self::$options['reset_settings'] ) {
// Reset requested, overwrite existing options with default.
update_option( self::OPTION, $defaults );
} else {
// Otherwise add new options.
add_option( self::OPTION, $defaults );
}
}
/**
* Plugin uninstall handler.
*
* @return void
*/
public static function uninstall() {
// Delete all ticks.
$ticks = new WP_Query( array( 'post_type' => 'scliveticker_tick' ) );
foreach ( $ticks->get_posts() as $tick ) {
wp_delete_post( $tick->ID, true );
}
// Temporarily register taxonomy to delete it.
register_taxonomy( 'scliveticker_ticker', array( 'scliveticker_tick' ) );
// Delete tickers.
$tickers = get_terms(
array(
'taxonomy' => 'scliveticker_ticker',
'hide_empty' => false,
)
);
foreach ( $tickers as $ticker ) {
wp_delete_term( $ticker->term_id, 'scliveticker_ticker' );
}
// Unregister taxonomy again.
unregister_taxonomy( 'scliveticker_ticker' );
// Delete the option.
delete_option( self::OPTION );
}
}