summaryrefslogtreecommitdiff
blob: 76ab6532f554dde8b03ca33636b9b4d548106337 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/**
 * GentooToolbox
 *
 * @ingroup Extensions
 * @author Alex Legler <a3li@gentoo.org>
 * @version 1.0
 * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
 */

use SMW\DIProperty;
use SMW\PropertyRegistry;

class GTBXTranslationProperties {

	public static function setupProperties() {
		PropertyRegistry::getInstance()->registerProperty('___LANG', '_str', wfMessage('gtbx-prop-lang')->inContentLanguage()->text());
		PropertyRegistry::getInstance()->registerPropertyAlias('___LANG', 'Language');

		PropertyRegistry::getInstance()->registerProperty('___TRANS', '_boo', wfMessage('gtbx-prop-trans')->inContentLanguage()->text());
		PropertyRegistry::getInstance()->registerPropertyAlias('___TRANS', 'Is Translation Page');

		return true;
	}

	public static function updateDataBefore($store, $data) {
		$subject = $data->getSubject();
		$title = Title::makeTitle($subject->getNamespace(), $subject->getDBKey());
		$wikipage = WikiPage::factory($title);

		if (is_null($title) || is_null($wikipage)) {
			return true;
		}

		// Property 1: Is translation page
		$property = new DIProperty('___TRANS');
		$is_translation_page = !(TranslatablePage::isTranslationPage($title) === false);
		$data_item = new SMWDIBoolean($is_translation_page);

		$data->addPropertyObjectValue($property, $data_item);

		// Property 2: Language?
		$property = new DIProperty('___LANG');
		global $wgLanguageCode;
		$language_code = $wgLanguageCode;

		if ($is_translation_page) {
			list( , $code ) = TranslateUtils::figureMessage( $title->getText() );
			$language_code = $code;
		}

		$data_item = new SMWDIString($language_code);

		$data->addPropertyObjectValue($property, $data_item);

	}
}