<?php
	
/*
	Question2Answer 1.3-beta-1 (c) 2010, Gideon Greenspan

	http://www.question2answer.org/

	
	File: qa-include/qa-page-admin-plugins.php
	Version: 1.3-beta-1
	Date: 2010-11-04 12:12:11 GMT
	Description: Controller for admin page showing hidden questions, answers and comments


	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public License
	as published by the Free Software Foundation; either version 2
	of the License, or (at your option) any later version.
	
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	More about this license: http://www.question2answer.org/license.php
*/

	if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
		header('Location: ../');
		exit;
	}

	require_once QA_INCLUDE_DIR.'qa-app-admin.php';

	
//	Check admin privileges (do late to allow one DB query)

	if (!qa_admin_check_privileges($qa_content))
		return $qa_content;
		
		
//	Prepare content for theme
	
	$qa_content=qa_content_prepare();

	$qa_content['title']=qa_lang_html('admin/admin_title').' - '.qa_lang_html('admin/plugins_title');
	
	$qa_content['error']=qa_admin_page_error();
	
	if (count($qa_plugin_files)) {
		$qa_content['form']=array(
			'style' => 'tall',
			
			'fields' => array(
				'plugins' => array(
					'type' => 'custom',
					'label' => qa_lang_html('admin/installed_plugins'),
					'html' => '',
				),		
			),
		);
		
		$metafields=array(
			'name' => 'Plugin Name',
			'uri' => 'Plugin URI',
			'description' => 'Plugin Description',
			'version' => 'Plugin Version',
			'date' => 'Plugin Date',
			'author' => 'Plugin Author',
			'author_uri' => 'Plugin Author URI',
			'license' => 'Plugin License',
			'min_q2a' => 'Plugin Minimum Question2Answer Version',
		);
			
		foreach ($qa_plugin_files as $pluginfile) {
			$contents=file_get_contents($pluginfile);
			$metadata=array();
	
			foreach ($metafields as $key => $fieldname)
				if (preg_match('/'.str_replace(' ', '[ \t]*', preg_quote($fieldname, '/')).':[ \t]*([^\n\f]*)[\n\f]/i', $contents, $matches))
					$metadata[$key]=trim($matches[1]);
					
			if (strlen($metadata['name']))
				$namehtml=qa_html($metadata['name']);
			else
				$namehtml=qa_lang_html('admin/unnamed_plugin');
				
			if (strlen($metadata['uri']))
				$namehtml='<A HREF="'.qa_html($metadata['uri']).'">'.$namehtml.'</A>';
			
			$namehtml='<B>'.$namehtml.'</B>';
				
			if (strlen($metadata['version']))
				$namehtml.=' '.qa_html($metadata['version']);
				
			if (strlen($metadata['author'])) {
				$authorhtml=qa_html($metadata['author']);
				
				if (strlen($metadata['author_uri']))
					$authorhtml='<A HREF="'.qa_html($metadata['author_uri']).'">'.$authorhtml.'</A>';
					
				$authorhtml=qa_lang_html_sub('main/by_x', $authorhtml);
				
			} else
				$authorhtml='';
				
			if (strlen($metadata['description']))
				$deschtml=qa_html($metadata['description']).'<BR>';
			else
				$deschtml='';
				
			$pluginhtml=$namehtml.' '.$authorhtml.'<BR>'.$deschtml.'<SMALL STYLE="color:#666">'.qa_html(dirname($pluginfile).'/').'</SMALL>';
				
			if (is_numeric($metadata['min_q2a']) && ((float)QA_VERSION>0) && $metadata['min_q2a']>(float)QA_VERSION)
				$pluginhtml='<STRIKE STYLE="color:#999">'.$pluginhtml.'</STRIKE><BR><SPAN STYLE="color:#f00">'.
					qa_lang_html_sub('admin/requires_q2a_version', qa_html($metadata['min_q2a'])).'</SPAN>';
				
			$qa_content['form']['fields'][]=array(
				'type' => 'custom',
				'html' => $pluginhtml,
			);
		}
	}
	
	$formadded=false;
		
	foreach ($qa_modules as $type => $modules)
		foreach ($modules as $name => $fields) {
			$module=qa_load_module($type, $name);
			
			if (method_exists($module, 'admin_form')) {
				$form=$module->admin_form();

				if (!isset($form['title']))
					$form['title']=qa_html($name);
					
				if (!isset($form['tags']))
					$form['tags']=' METHOD="POST" ACTION="'.qa_self_html().'" ';
				
				if (!isset($form['style']))
					$form['style']='tall';
					
				$qa_content['form_'.$type.'_'.$name]=$form;
				$formadded=true;
			}
		}
		
	if (!$formadded)
		$qa_content['suggest_next']=qa_lang_html('admin/no_plugin_options');
	
	$qa_content['navigation']['sub']=qa_admin_sub_navigation();
	
	return $qa_content;
	

/*
	Omit PHP closing tag to help avoid accidental output
*/