tiki-admin_integrator_rules.php 6.01 KB
Newer Older
1
<?php
changi67's avatar
changi67 committed
2
// (c) Copyright 2002-2010 by authors of the Tiki Wiki/CMS/Groupware Project
3 4 5
// 
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
changi67's avatar
changi67 committed
6 7
// $Id$

changi67's avatar
changi67 committed
8 9
require_once ('tiki-setup.php');
require_once ('lib/integrator/integrator.php');
zaufi's avatar
zaufi committed
10
// If Integrator is ON, check permissions...
11
$access->check_feature('feature_integrator');
12
$access->check_permission(array('tiki_p_admin_integrator'));
13
// Setup local variables from request or set default values
changi67's avatar
changi67 committed
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
$repID = (isset($_REQUEST["repID"]) && strlen($_REQUEST["repID"]) > 0) ? $_REQUEST["repID"] : 0;
$ruleID = (isset($_REQUEST["ruleID"]) && strlen($_REQUEST["ruleID"]) > 0) ? $_REQUEST["ruleID"] : 0;
$ord = (isset($_REQUEST["ord"]) && strlen($_REQUEST["ord"]) > 0) ? $_REQUEST["ord"] : 0;
$srcrep = (isset($_REQUEST["srcrep"]) && strlen($_REQUEST["srcrep"]) > 0) ? $_REQUEST["srcrep"] : 0;
$srch = isset($_REQUEST["srch"]) ? $_REQUEST["srch"] : '';
$repl = isset($_REQUEST["repl"]) ? $_REQUEST["repl"] : '';
$description = isset($_REQUEST["description"]) ? $_REQUEST["description"] : '';
$rxmod = isset($_REQUEST["rxmod"]) ? $_REQUEST["rxmod"] : '';
$file = isset($_REQUEST["file"]) ? $_REQUEST["file"] : '';
$type = isset($_REQUEST["type"]) ? ($_REQUEST["type"] == 'on' ? 'y' : 'n') : 'n';
$casesense = isset($_REQUEST["casesense"]) ? ($_REQUEST["casesense"] == 'on' ? 'y' : 'n') : 'n';
$code = isset($_REQUEST["code"]) ? ($_REQUEST["code"] == 'on' ? 'y' : 'n') : 'n';
$html = isset($_REQUEST["html"]) ? ($_REQUEST["html"] == 'on' ? 'y' : 'n') : 'n';
$all = isset($_REQUEST["all"]) ? ($_REQUEST["all"] == 'on' ? 'y' : 'n') : 'n';
$enabled = isset($_REQUEST["enabled"]) ? ($_REQUEST["enabled"] == 'on' ? 'y' : 'n') : 'n';
if (!isset($_REQUEST["repID"]) || $repID <= 0) {
30 31 32
	$smarty->assign('msg', tra("No repository"));
	$smarty->display("error.tpl");
	die;
33
}
34 35
// Create instance of integrator
$integrator = new TikiIntegrator($dbTiki);
zaufi's avatar
zaufi committed
36
// Check if copy button pressed
changi67's avatar
changi67 committed
37
if (isset($_REQUEST["copy"]) && ($srcrep > 0)) $integrator->copy_rules($srcrep, $repID);
38
// Check if 'save' button pressed ...
changi67's avatar
changi67 committed
39
if (isset($_REQUEST["save"])) {
40 41 42 43 44 45 46
	// ... and all mandatory paramaters r OK
	if (strlen($srch) > 0) $integrator->add_replace_rule($repID, $ruleID, $ord, $srch, $repl, $type, $casesense, $rxmod, $enabled, $description);
	else {
		$smarty->assign('msg', tra("Search is mandatory field"));
		$smarty->display("error.tpl");
		die;
	}
47 48
}
// Check if 'preview' button pressed ...
changi67's avatar
changi67 committed
49
if (isset($_REQUEST["preview"])) {
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
	// Prepeare rule data
	$rule = array();
	$rule["repID"] = $repID;
	$rule["ruleID"] = $ruleID;
	$rule["ord"] = $ord;
	$rule["srch"] = $srch;
	$rule["repl"] = $repl;
	$rule["type"] = $type;
	$rule["casesense"] = $casesense;
	$rule["rxmod"] = $rxmod;
	$rule["enabled"] = $enabled;
	$rule["description"] = $description;
	// Reassign values in form
	$smarty->assign('ruleID', $rule["ruleID"]);
	$smarty->assign('ord', $rule["ord"]);
	$smarty->assign('srch', $rule["srch"]);
	$smarty->assign('repl', $rule["repl"]);
	$smarty->assign('type', $rule["type"]);
	$smarty->assign('casesense', $rule["casesense"]);
	$smarty->assign('rxmod', $rule["rxmod"]);
	$smarty->assign('enabled', $rule["enabled"]);
	$smarty->assign('description', $rule["description"]);
	// Have smth to show?
	if (($html != 'y' || $code != 'y')) {
		// Get repository configuration data
		$rep = $integrator->get_repository($repID);
		// Check if file given and present at configured location
		$f = $integrator->get_rep_file($rep, $file);
		if ((substr($rep["path"], 0, 7) != 'http://') && (substr($rep["path"], 0, 8) != 'https://') && !file_exists($f)) {
			$smarty->assign('msg', tra("File not found ") . $f);
			$smarty->display("error.tpl");
			die;
		}
		// Get file content to string
		$data = @file_get_contents($f);
		if (isset($php_errormsg)) $data.= "ERROR: " . $php_errormsg;
		else {
			// Should we apply all configured rules or only current one?
			if ($all == 'y') {
				$rules = $integrator->list_rules($repID);
				if (is_array($rules)) foreach($rules as $r) if (($r["ruleID"] !== $ruleID) && $r["enabled"]) $data = $integrator->apply_rule($rep, $r, $data);
			}
			// Apply rule (make this rule 'enabled' :)
			$se = $rule["enabled"];
			$rule["enabled"] = 'y';
			$data = $integrator->apply_rule($rep, $rule, $data);
			$rule["enabled"] = $se;
		}
		$smarty->assign_by_ref('preview_data', $data);
	}
100 101
}
// Whether some action requested?
changi67's avatar
changi67 committed
102
if (isset($_REQUEST["action"])) {
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
	switch ($_REQUEST["action"]) {
		case 'edit':
			if ($ruleID != 0) {
				$rule = $integrator->get_rule($ruleID);
				$smarty->assign('ruleID', $rule["ruleID"]);
				$smarty->assign('ord', $rule["ord"]);
				$smarty->assign('srch', $rule["srch"]);
				$smarty->assign('repl', $rule["repl"]);
				$smarty->assign('type', $rule["type"]);
				$smarty->assign('casesense', $rule["casesense"]);
				$smarty->assign('rxmod', $rule["rxmod"]);
				$smarty->assign('enabled', $rule["enabled"]);
				$smarty->assign('description', $rule["description"]);
			}
			break;

		case 'rm':
			if ($ruleID != 0) {
121 122
				$access->check_authenticity();
				$integrator->remove_rule($ruleID);
123 124 125 126 127 128 129 130 131
			}
			break;

		default:
			$smarty->assign('msg', tra("Requested action in not supported on repository"));
			$smarty->display("error.tpl");
			die;
			break;
	}
132 133 134 135
}
// Get repository name
$r = $integrator->get_repository($repID);
$smarty->assign('name', $r["name"]);
zaufi's avatar
zaufi committed
136
// Reassign checkboxes
137 138 139
$smarty->assign('file', $file);
$smarty->assign('code', $code);
$smarty->assign('html', $html);
changi67's avatar
changi67 committed
140
$smarty->assign('all', $all);
zaufi's avatar
zaufi committed
141
// Fill list of rules
142 143 144
$rules = $integrator->list_rules($repID);
$smarty->assign_by_ref('rules', $rules);
$smarty->assign('repID', $repID);
zaufi's avatar
zaufi committed
145
// Fill list of possible source repositories
146
$allreps = $integrator->list_repositories(false);
zaufi's avatar
zaufi committed
147 148 149
$reps = array();
foreach($allreps as $rep) $reps[$rep["repID"]] = $rep["name"];
$smarty->assign_by_ref('reps', $reps);
150 151
// disallow robots to index page:
$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW');
152
// Display the template
changi67's avatar
changi67 committed
153
$smarty->assign('mid', 'tiki-admin_integrator_rules.tpl');
154
$smarty->display("tiki.tpl");