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