<?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 );
	}
}