<?php
namespace W3TC;



/* todo - sort by name
function extensions_sort_cmp_name($a, $b)
{
	if ($a['name'] == $b['name']) {
		return 0;
	}
	return ($a['name'] < $b['name']) ? -1 : 1;
}*/



class Extensions_Page extends Base_Page_Settings {
	/**
	 * Current page
	 *
	 * @var string
	 */
	protected $_page = 'w3tc_extensions';
	protected $_active_tab;
	protected $_config_settings = array();

	/**
	 * Extensions view
	 *
	 * @return void
	 */
	function render_content() {
		$extension_status     = 'all';
		$extension_status_val = Util_Request::get_string( 'extension_status' );
		if ( ! empty( $extension_status_val ) ) {
			if ( in_array( $extension_status_val, array( 'all', 'active', 'inactive', 'core' ), true ) ) {
				$extension_status = $extension_status_val;
			}
		}

		$extension_val = Util_Request::get_string( 'extension' );
		$extension     = ( ! empty( $extension_val ) ? esc_attr( $extension_val ) : '' );

		$action_val = Util_Request::get_string( 'action' );
		$view       = ( ! empty( $action_val ) && 'view' === $action_val );

		$extensions_active = Extensions_Util::get_active_extensions( $this->_config );
		foreach ( $extensions_active as $key => $ext ) {
			if ( isset( $ext['public'] ) && false === $ext['public'] ) {
				unset( $extensions_active[ $key ] );
			}
		}

		if ( $extension && $view && ! empty( $extensions_active[ $extension ] ) ) {
			$all_settings = $this->_config->get_array( 'extensions.settings' );
			$meta         = $extensions_active[ $extension ];
			$sub_view     = 'settings';
		} else {
			$extensions_all = Extensions_Util::get_extensions( $this->_config );
			foreach ( $extensions_all as $key => $ext ) {
				if ( isset( $ext['public'] ) && false === $ext['public'] ) {
					unset( $extensions_all[ $key ] );
				}
			}

			$extensions_inactive = Extensions_Util::get_inactive_extensions( $this->_config );
			foreach ( $extensions_inactive as $key => $ext ) {
				if ( isset( $ext['public'] ) && false === $ext['public'] ) {
					unset( $extensions_inactive[ $key ] );
				}
			}

			$var            = "extensions_{$extension_status}";
			$extensions     = $$var;
			$extension_keys = array_keys( $extensions );
			sort( $extension_keys );

			$sub_view = 'list';
			$page     = 1;
		}

		include W3TC_INC_OPTIONS_DIR . '/extensions.php';
	}

	/**
	 * Sets default values for lacking extension meta keys
	 *
	 * @param unknown $meta
	 * @return array
	 */
	function default_meta( $meta ) {
		$default = array (
			'name' => '',
			'author' => '',
			'description' => '',
			'author_uri' => '',
			'extension_uri' => '',
			'extension_id' => '',
			'version' => '',
			'enabled' => true,
			'requirements' => array(),
			'core' => false,
			'public' => true,
			'path' => ''
		);
		return array_merge( $default, $meta );
	}
}
