<?php
// widget extra options
global $theme_widgets_style;
$theme_widgets_style = array(
	'default' => __('sidebar default', THEME_NS),
	'block'   => __('block', THEME_NS),
	'simple'  => __('simple text', THEME_NS)
);

function theme_get_widget_style($id, $style = null) {
	if (theme_is_vmenu_widget($id))
		return 'vmenu';
	$result = theme_get_widget_meta_option($id, 'theme_widget_styles');
	global $theme_widgets_style;
	if (!in_array($result, array_keys($theme_widgets_style))) {
		$result = 'default';
	}
	if ($style != null) {
		if (!in_array($style, array('block', 'simple'))) {
			$style = 'block';
		}
		if ($result == 'default') {
			$result = $style;
		}
	}
	return $result;
}

function theme_set_widget_style($id, $style) {
	global $theme_widgets_style;
	if (!in_array($style, array_keys($theme_widgets_style))) {
		$style = 'default';
	}
	theme_set_widget_meta_option($id, 'theme_widget_styles', $style);
}

function theme_widget_expand_control($id) {
	global $wp_registered_widget_controls;
	$controls = &$wp_registered_widget_controls[$id];
	if (!is_array($controls['params'])) {
		$controls['params'] = array($controls['params']);
	}
	$controls['params'][] = $id;
	if (isset($controls['callback'])) {
		$controls['callback_redirect'] = $controls['callback'];
	}
	$controls['callback'] = 'theme_widget_extra_control';
}

function theme_update_widget_additional($instance) {
	global $theme_widget_meta_options;
	foreach ($theme_widget_meta_options as $value) {
		$id = theme_get_array_value($value, 'id');
		if( false === ( $val = theme_get_array_value($_POST, $id) ) ) {
			continue;
		}
		$val = stripslashes($val);
		$type = theme_get_array_value($value, 'type');
		$options = theme_get_array_value($value, 'options');
		switch ($type) {
			case 'checkbox':
				$val = ($val ? 1 : 0);
				break;
			case 'numeric':
				$val = (int) $val;
				break;
			case 'select':
				if (!in_array($val, array_keys($options))) {
					$val = reset(array_keys($options));
				}
				break;
		}
		$instance[$id] = $val;
	}
	return $instance;
}
function theme_widget_process_control() {
	global $wp_registered_widget_controls;
	if ('post' == strtolower($_SERVER['REQUEST_METHOD']) && isset($_POST['widget-id'])) {
		theme_widget_expand_control($_POST['widget-id']);
		return;
	}
	foreach ($wp_registered_widget_controls as $id => $widget) {
		theme_widget_expand_control($id);
	}
}

function theme_widget_extra_control() {
	global $wp_registered_widget_controls, $theme_widgets_style, $theme_widget_meta_options;
	$_theme_widget_meta_options = $theme_widget_meta_options;
	$params = func_get_args();
	$widget_id = $params[count($params) - 1];
	$widget_controls = theme_get_array_value($wp_registered_widget_controls, $widget_id, array());
	if (isset($widget_controls['callback_redirect'])) {
		$callback = $widget_controls['callback_redirect'];
		if (is_callable($callback)) {
			call_user_func_array($callback, $params);
		}
	}
	if (!preg_match('/^(.*[^-])-([0-9]+)$/', $widget_id, $matches) || !isset($matches[1]) || !isset($matches[2])) {
		return false;
	}
	$id = $matches[1] . '-' . $params[0]['number'];
	if (theme_is_vmenu_widget($id)) {
		$need_delete = false;
		foreach($_theme_widget_meta_options as $option_id => $option) {
			if($option['id'] == 'theme_widget_styles') {
				$need_delete = true;
				break;
			}
		}
		if($need_delete) {
			unset($_theme_widget_meta_options[$option_id]);
		}
	}
	?>
	<h3 style="margin-bottom:3px;"><?php _e('Theme Options', THEME_NS); ?></h3>
	<?php
	theme_print_meta_box($id, $_theme_widget_meta_options);
}

// widgets

class LoginWidget extends WP_Widget {

	function LoginWidget() {
		$widget_ops = array('classname' => 'login', 'description' => __('Login form', THEME_NS));
		$this->WP_Widget(false, __('Login', THEME_NS), $widget_ops);
	}

	function widget($args, $instance) {
		global $user_ID, $user_identity, $user_level, $user_email, $user_login;
		extract($args);
		echo $before_widget;
		echo $before_title;
		if ($user_ID):
			echo $user_identity;
			echo $after_title; ?>
			<div class="clearfix">
				<?php echo theme_get_avatar(array('id' => $user_email, 'size' => 64, 'url' => get_bloginfo('wpurl') . '/wp-admin/profile.php')); ?>
				<ul class="alignleft">
				<li><a href="<?php bloginfo('wpurl') ?>/wp-admin/"><?php _e('Dashboard', THEME_NS); ?></a></li>
				<?php if ($user_level >= 1): ?>
					<li><a href="<?php bloginfo('wpurl') ?>/wp-admin/post-new.php"><?php _e('Publish', THEME_NS); ?></a></li>
					<li><a href="<?php bloginfo('wpurl') ?>/wp-admin/edit-comments.php"><?php _e('Comments', THEME_NS); ?></a></li>
				<?php endif; ?>
				<li><a href="<?php echo wp_logout_url() ?>&amp;redirect_to=<?php echo urlencode(theme_get_current_url()); ?>"><?php _e("Log out", THEME_NS); ?></a></li>
				</ul>
			</div>
		<?php
		else:
			_e('Log In', THEME_NS);
			echo $after_title;
			?>
			<form action="<?php bloginfo('wpurl') ?>/wp-login.php" method="post" name="login" id="form-login">
				<fieldset class="input" style="border: 0 none;">
					<p id="form-login-username">
						<label for="log"><?php _e('Username', THEME_NS) ?></label>
						<br>
						<input type="text" name="log" id="log" value="<?php echo esc_attr(stripslashes($user_login), 1) ?>" size="20" />
					</p>
					<p id="form-login-password">
						<label for="pwd"><?php _e("Password", THEME_NS); ?></label>
						<br>
						<input type="password" name="pwd" id="pwd" size="20" /><br />
					</p>
					<p id="form-login-remember">
						<label for="rememberme"><?php _e('Remember Me', THEME_NS); ?></label>
						<input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" />
					</p>
					<input class="bd-button" type="submit" name="submit" value="<?php echo esc_attr(__('Log In', THEME_NS)); ?>" />
				</fieldset>
				<input type="hidden" name="redirect_to" value="<?php echo theme_get_current_url(); ?>"/>
			</form>
			<ul>
				<?php if (get_option('users_can_register')) { ?>
				<li><a href="<?php bloginfo('wpurl') ?>/wp-register.php"><?php _e("Register", THEME_NS); ?></a></li>
				<?php } ?>
				<li><a href="<?php bloginfo('wpurl') ?>/wp-login.php?action=lostpassword"><?php _e("Lost your password?", THEME_NS); ?></a></li>
			</ul>
		<?php endif;
		echo $after_widget;
	}
}

// init widgets
function themeWidgetsInit() {
	register_widget('LoginWidget');
}

add_action('widgets_init', 'themeWidgetsInit');