egroupware_official/api/setup/default_records.inc.php
Ralf Becker c5534288dd * Api/Filemanager: create in non EPL missing /templates and app-sub-directores
Was caused by (unnecessary) transaction around defaul_records processing, causing during transaction inserted rows where not (yet) commited and therefore could not be read.
2019-03-24 11:40:43 +01:00

244 lines
6.0 KiB
PHP

<?php
/**
* EGroupware - API Setup
*
* @link http://www.egroupware.org
* @package api
* @subpackage setup
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
use EGroupware\Api;
use EGroupware\Api\Vfs;
//$oProc->m_odb->Halt_On_Error = 'yes';
foreach(array(
'aa' => 'Afar',
'ab' => 'Abkhazian',
'af' => 'Afrikaans',
'am' => 'Amharic',
'ar' => 'Arabic',
'as' => 'Assamese',
'ay' => 'Aymara',
'az' => 'Azerbaijani',
'ba' => 'Bashkir',
'be' => 'Byelorussian',
'bg' => 'Bulgarian',
'bh' => 'Bihari',
'bi' => 'Bislama',
'bn' => 'Bengali / Bangla',
'bo' => 'Tibetan',
'br' => 'Breton',
'ca' => 'Catalan',
'co' => 'Corsican',
'cs' => 'Czech',
'cy' => 'Welsh',
'da' => 'Danish',
'de' => 'German',
'dz' => 'Bhutani',
'el' => 'Greek',
'en' => 'English',
'eo' => 'Esperanto',
'es-es' => 'Español',
'et' => 'Estonian',
'eu' => 'Basque',
'fa' => 'Persian',
'fi' => 'Finnish',
'fj' => 'Fiji',
'fo' => 'Faeroese',
'fr' => 'Français',
'fy' => 'Frisian',
'ga' => 'Irish',
'gd' => 'Gaelic / Scots Gaelic',
'gl' => 'Galician',
'gn' => 'Guarani',
'gu' => 'Gujarati',
'ha' => 'Hausa',
'hi' => 'Hindi',
'hr' => 'Croatian',
'hu' => 'Hungarian',
'hy' => 'Armenian',
'ia' => 'Interlingua',
'ie' => 'Interlingue',
'ik' => 'Inupiak',
'id' => 'Indonesian',
'is' => 'Icelandic',
'it' => 'Italian',
'iw' => 'Hebrew',
'ja' => 'Japanese',
'ji' => 'Yiddish',
'jw' => 'Javanese',
'ka' => 'Georgian',
'kk' => 'Kazakh',
'kl' => 'Greenlandic',
'km' => 'Cambodian',
'kn' => 'Kannada',
'ko' => 'Korean',
'ks' => 'Kashmiri',
'ku' => 'Kurdish',
'ky' => 'Kirghiz',
'la' => 'Latin',
'ln' => 'Lingala',
'lo' => 'Laothian',
'lt' => 'Lithuanian',
'lv' => 'Latvian / Lettish',
'mg' => 'Malagasy',
'mi' => 'Maori',
'mk' => 'Macedonian',
'ml' => 'Malayalam',
'mn' => 'Mongolian',
'mo' => 'Moldavian',
'mr' => 'Marathi',
'ms' => 'Malay',
'mt' => 'Maltese',
'my' => 'Burmese',
'na' => 'Nauru',
'ne' => 'Nepali',
'nl' => 'Dutch',
'no' => 'Norwegian',
'oc' => 'Occitan',
'om' => 'Oromo / Afan',
'or' => 'Oriya',
'pa' => 'Punjabi',
'pl' => 'Polish',
'ps' => 'Pashto / Pushto',
'pt' => 'Portuguese',
'pt-br' => 'Brazil',
'qu' => 'Quechua',
'rm' => 'Rhaeto-Romance',
'rn' => 'Kirundi',
'ro' => 'Romanian',
'ru' => 'Russian',
'rw' => 'Kinyarwanda',
'sa' => 'Sanskrit',
'sd' => 'Sindhi',
'sg' => 'Sangro',
'sh' => 'Serbo-Croatian',
'si' => 'Singhalese',
'sk' => 'Slovak',
'sl' => 'Slovenian',
'sm' => 'Samoan',
'sn' => 'Shona',
'so' => 'Somali',
'sq' => 'Albanian',
'sr' => 'Serbian',
'ss' => 'Siswati',
'st' => 'Sesotho',
'su' => 'Sudanese',
'sv' => 'Swedish',
'sw' => 'Swahili',
'ta' => 'Tamil',
'te' => 'Tegulu',
'tg' => 'Tajik',
'th' => 'Thai',
'ti' => 'Tigrinya',
'tk' => 'Turkmen',
'tl' => 'Tagalog',
'tn' => 'Setswana',
'to' => 'Tonga',
'tr' => 'Turkish',
'ts' => 'Tsonga',
'tt' => 'Tatar',
'tw' => 'Twi',
'uk' => 'Ukrainian',
'ur' => 'Urdu',
'uz' => 'Uzbek',
'vi' => 'Vietnamese',
'vo' => 'Volapuk',
'wo' => 'Wolof',
'xh' => 'Xhosa',
'yo' => 'Yoruba',
'zh' => 'Chinese(simplified)',
'zh-tw' => 'Chinese(Taiwan)',
'zu' => 'Zulu',
) as $id => $name)
{
$oProc->insert($GLOBALS['egw_setup']->languages_table,array('lang_name' => $name),array('lang_id' => $id),__LINE__,__FILE__);
}
foreach(array(
'sessions_checkip' => 'True',
'asyncservice' => 'fallback',
) as $name => $value)
{
$oProc->insert($GLOBALS['egw_setup']->config_table,array(
'config_value' => $value,
),array(
'config_app' => 'phpgwapi',
'config_name' => $name,
),__LINE__,__FILE__);
}
// make sure the required sqlfs dirs are there and have the following id's
$dirs = array(
'/' => 1,
'/home' => 2,
'/apps' => 3,
);
foreach($dirs as $path => $id)
{
$nrow = array(
'fs_id' => $id,
'fs_dir' => $path == '/' ? 0 : $dirs['/'],
'fs_name' => substr($path,1),
'fs_mode' => 05,
'fs_uid' => 0,
'fs_gid' => 0,
'fs_created' => time(),
'fs_modified' => time(),
'fs_mime' => 'httpd/unix-directory',
'fs_size' => 0,
'fs_creator' => 0,
'fs_modifier' => 0,
'fs_comment' => null,
'fs_content' => null,
);
$GLOBALS['egw_setup']->db->insert('egw_sqlfs', $nrow, false, __LINE__, __FILE__, 'api');
}
// PostgreSQL seems to require to update the sequenz, after manually inserting id's
$oProc->UpdateSequence('egw_sqlfs','fs_id');
// Create Addressbook for Default group, by setting a group ACL from the group to itself for all rights: add, read, edit and delete
$defaultgroup = $GLOBALS['egw_setup']->add_account('Default','Default','Group',False,False);
$GLOBALS['egw_setup']->add_acl('addressbook',$defaultgroup,$defaultgroup,1|2|4|8);
/**
* Create template directory and set default document_dir preference of addressbook, calendar, infolog, tracker, timesheet and projectmanager
*/
$admins = $GLOBALS['egw_setup']->add_account('Admins','Admin','Group',False,False);
Vfs::$is_root = true;
$prefs = new Api\Preferences();
$prefs->read_repository(false);
foreach(array('','addressbook', 'calendar', 'infolog', 'tracker', 'timesheet', 'projectmanager', 'filemanager') as $app)
{
if ($app && !file_exists(EGW_SERVER_ROOT.'/'.$app)) continue;
// create directory and set permissions: Admins writable and other readable
$dir = '/templates'.($app ? '/'.$app : '');
Vfs::mkdir($dir, 075, STREAM_MKDIR_RECURSIVE);
Vfs::chgrp($dir, abs($admins));
Vfs::chmod($dir, 075);
if (!$app) continue;
// set default preference for app (preserving a maybe already set document-directory)
if ($prefs->default[$app]['document_dir'])
{
$existing = explode(' ',$prefs->default[$app]['document_dir']);
$existing[] = $dir;
$dir = implode(' ', array_unique($existing));
}
$prefs->add($app, 'document_dir', $dir, 'default');
}
$prefs->save_repository(false, 'default');
Vfs::$is_root = false;
/**
* Create anonymous user for sharing of files
*/
$GLOBALS['egw_setup']->add_account('NoGroup', 'No', 'Rights', false, false);
$anonymous = $GLOBALS['egw_setup']->add_account('anonymous', 'SiteMgr', 'User', 'anonymous', 'NoGroup');
$GLOBALS['egw_setup']->add_acl('phpgwapi', 'anonymous', $anonymous);