<?php

if(!defined('DOKU_INC')) die();
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'action.php');

class action_plugin_freesync extends DokuWiki_Action_Plugin {
	var $fshlp;

	function action_plugin_freesync () {
		$this->fshlp =& plugin_load('helper', 'freesync');
	}

	/**
	 * return some info
	 */
	function getInfo(){
		return array(
	 'author' => 'Mikhail I. Izmestev',
	 'email'  => 'izmmishao5@gmail.com',
	 'date'   => '2009-03-11',
	 'name'   => 'freesync ajax handler',
	 'desc'   => '',
	 'url'    => '',
		);
	}

	/**
	 * Register its handlers with the DokuWiki's event controller
	 */
	function register(&$controller) {
		$controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE',  $this, '_ajax_handler');
	}

	function _ajax_handler(&$event, $param) {
		if($event->data != '_freesync_page_l2r' 
		&& $event->data != '_freesync_page_r2l'
		&& $event->data != '_freesync_file_l2r'
		&& $event->data != '_freesync_file_r2l' 
		&& $event->data != '_freesync_diff') return;

		$this->fshlp->loadProfile($_REQUEST['profile']);

		header('Content-Type: text/html; charset=utf-8');
		switch($event->data) {
			case "_freesync_page_l2r": print $this->fshlp->page_l2r($_REQUEST['id'], $_REQUEST['sum']); break;
			case "_freesync_page_r2l": print $this->fshlp->page_r2l($_REQUEST['id'], $_REQUEST['sum']); break;
			case "_freesync_file_l2r": print $this->fshlp->file_l2r($_REQUEST['id'], $_REQUEST['sum']); break;
			case "_freesync_file_r2l": print $this->fshlp->file_r2l($_REQUEST['id'], $_REQUEST['sum']); break;
			case "_freesync_diff": print $this->fshlp->getDiff($_REQUEST['id']); break;
		}
		$event->preventDefault();
		return;
	}
}
