<?php

namespace XF\Widget;

class WidgetCompiledEntry
{
	public $key;

	public $conditionExpression = '';

	public function __construct($key)
	{
		$this->key = $key;
	}

	public function applyCondition($conditionExpression)
	{
		$this->conditionExpression = $conditionExpression;
	}

	public function generateWidgetCode($widgetVar, $optionsVar, $depth = 1)
	{
		$output = '';
		$indent = str_repeat("\t", $depth);

		if ($this->conditionExpression)
		{
			$output .= "{$indent}{$widgetVar} = '';\n\n";
			$output .= "{$indent}if ({$this->conditionExpression}) {\n";

			$depth++;
			$indent .= "\t";
		}

		$key = addcslashes($this->key, "\\'");
		$output .= "{$indent}{$widgetVar} = \\XF::app()->widget()->widget('{$key}', {$optionsVar})->render();\n";

		if ($this->conditionExpression)
		{
			$depth--;
			$indent = str_repeat("\t", $depth);

			$output .= "{$indent}}";
		}

		return rtrim($output);
	}
}
