Merge pull request #11337 from WeMoveEU/CRM-21460
[civicrm-core.git] / distmaker / utils / joomlaxml.php
CommitLineData
6a488035 1<?php
fe108173 2define('CIVICRM_MYSQL_STRICT', 0);
6a488035
TO
3if (isset($GLOBALS['_SERVER']['DM_SOURCEDIR'])) {
4 $sourceCheckoutDir = $GLOBALS['_SERVER']['DM_SOURCEDIR'];
5}
6else {
7 $sourceCheckoutDir = $argv[1];
8}
9$sourceCheckoutDirLength = strlen($sourceCheckoutDir);
10
11if (isset($GLOBALS['_SERVER']['DM_TMPDIR'])) {
12 $targetDir = $GLOBALS['_SERVER']['DM_TMPDIR'] . '/com_civicrm';
13}
14else {
15 $targetDir = $argv[2];
16}
17$targetDirLength = strlen($targetDir);
18
19if (isset($GLOBALS['_SERVER']['DM_VERSION'])) {
20 $version = $GLOBALS['_SERVER']['DM_VERSION'];
21}
22else {
23 $version = $argv[3];
24}
25
26if (isset($GLOBALS['_SERVER']['DM_PKGTYPE'])) {
27 $pkgType = $GLOBALS['_SERVER']['DM_PKGTYPE'];
28}
29else {
30 $pkgType = $argv[4];
31}
32
33ini_set('include_path',
34 "{$sourceCheckoutDir}:{$sourceCheckoutDir}/packages:" . ini_get('include_path')
35);
36require_once "$sourceCheckoutDir/civicrm.config.php";
37require_once 'Smarty/Smarty.class.php';
38
39generateJoomlaConfig($version);
40
41/**
42 * This function creates destination directory
43 *
44 * @param $dir directory name to be created
2a6da8d7 45 * @param int $perm
6a488035 46 *
2a6da8d7 47 * @internal param \mode $peram for that directory
6a488035
TO
48 */
49function createDir($dir, $perm = 0755) {
50 if (!is_dir($dir)) {
51 echo "Outdir: $dir\n";
52 mkdir($dir, $perm, TRUE);
53 }
54}
55
627456b5
EM
56/**
57 * @param $version
58 */
6a488035
TO
59function generateJoomlaConfig($version) {
60 global $targetDir, $sourceCheckoutDir, $pkgType;
61
62 $smarty = new Smarty();
63 $smarty->template_dir = $sourceCheckoutDir . '/xml/templates';
90902f77 64 $smarty->compile_dir = '/tmp/templates_c_u' . posix_geteuid();
6a488035
TO
65 createDir($smarty->compile_dir);
66
67 $smarty->assign('CiviCRMVersion', $version);
68 $smarty->assign('creationDate', date('F d Y'));
69 $smarty->assign('pkgType', $pkgType);
70
71 $xml = $smarty->fetch('joomla.tpl');
72
73 $output = $targetDir . '/civicrm.xml';
74 $fd = fopen($output, "w");
389bcebf 75 fwrite($fd, $xml);
6a488035
TO
76 fclose($fd);
77
78 require_once 'CRM/Core/Config.php';
79 $config = CRM_Core_Config::singleton(FALSE);
80
81 require_once 'CRM/Core/Permission.php';
82 require_once 'CRM/Utils/String.php';
3d710f98 83 require_once 'CRM/Core/I18n.php';
564d1e45 84 $permissions = CRM_Core_Permission::getCorePermissions(TRUE);
6a488035
TO
85
86 $crmFolderDir = $sourceCheckoutDir . DIRECTORY_SEPARATOR . 'CRM';
87
88 require_once 'CRM/Core/Component.php';
89 $components = CRM_Core_Component::getComponentsFromFile($crmFolderDir);
90 foreach ($components as $comp) {
564d1e45 91 $perm = $comp->getPermissions(FALSE, TRUE);
6a488035
TO
92 if ($perm) {
93 $info = $comp->getInfo();
444b3e90
AH
94 foreach ($perm as $p => $attr) {
95 $title = $info['translatedName'] . ': ' . array_shift($attr);
96 array_unshift($attr, $title);
97 $permissions[$p] = $attr;
6a488035
TO
98 }
99 }
100 }
101
102 $perms_array = array();
564d1e45
AH
103 foreach ($permissions as $perm => $attr) {
104 // give an empty string as default description
105 $attr[] = '';
1a605e0b 106
6a488035 107 //order matters here, but we deal with that later
564d1e45
AH
108 $perms_array[CRM_Utils_String::munge(strtolower($perm))] = array(
109 'title' => array_shift($attr),
110 'description' => array_shift($attr),
111 );
6a488035
TO
112 }
113 $smarty->assign('permissions', $perms_array);
114
115 $output = $targetDir . '/admin/access.xml';
116 $xml = $smarty->fetch('access.tpl');
117 $fd = fopen($output, "w");
389bcebf 118 fwrite($fd, $xml);
6a488035
TO
119 fclose($fd);
120}