diff --git a/plugins/personal/connectivity/class_oxchangeAccount.inc b/plugins/personal/connectivity/class_oxchangeAccount.inc
index e465149969f18086da395edca8e5cec885c468e9..58c998f1e2c97cb081c69ce5225aaef0a21b1a4a 100644 (file)
<?php
+/*
+ This code is part of GOsa (https://gosa.gonicus.de)
+ Copyright (C) 2005 Alejandro Escanero Blanco
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
class oxchangeAccount extends plugin
{
/* Definitions */
var $attributes= array("OXAppointmentDays", "OXTaskDays", "OXTimeZone","mailEnabled");
var $objectclasses= array("OXUserObject");
+ var $uid = "";
var $oxconf = array();
-
var $timezones=array(
"Africa/Abidjan",
"Africa/Accra",
"Zulu"
);
+ var $dnmode= "";
- var $dnmode="cn";
-
-
- function oxchangeAccount ($config, $dn= NULL)
+ function oxchangeAccount ($config, $dn= NULL, $parent= NULL)
{
- plugin::plugin ($config, $dn);
+ plugin::plugin ($config, $dn, $parent);
for ($i=0;$i<count($this->config->data['TABS']['CONNECTIVITY']);$i++){
- if($this->config->data['TABS']['CONNECTIVITY'][$i]['CLASS']=='oxchangeAccount')
- {
+ if($this->config->data['TABS']['CONNECTIVITY'][$i]['CLASS']=='oxchangeAccount') {
$this->oxconf=$this->config->data['TABS']['CONNECTIVITY'][$i];
break;
}
}
- if (isset($this->config->current['DNMODE']))
- $this->dnmode=$this->config->current['DNMODE'];
+
+ /* Setting uid to default */
+ if(isset($this->attrs['uid'][0])){
+ $this->uid = $this->attrs['uid'][0];
+ }
+
+ $this->dnmode= $this->config->current['DNMODE'];
}
function execute()
{
+ /* Call parent execute */
+ //plugin::execute();
- /* Show tab dialog headers */
- $display= "";
+ $display="";
+ /* Show tab dialog headers * /
+ $display="";
+ if ($this->parent != NULL){
+ if ($this->is_account){
+ $display="";
+ } else {
+ $obj= $this->parent->by_object['posixAccount'];
+ $obj2= $this->parent->by_object['mailAccount'];
+ if (! $obj->is_account){
+ $display= "<BR><BR><CENTER>".sprintf(_("This account has %s features disabled. Posix features are needed for openXchange accounts, enable them first."), "<b>"._("OpenXchange")."</b>")."</CENTER><BR><BR>";
+
+ } else {
+ if (! $obj2->is_account){
+ $display= "<BR><BR><CENTER>".sprintf(_("This account has %s features disabled. Mail features are needed for openXchange accounts, enable them first."), "<b>"._("OpenXchange")."</b>")."</CENTER><BR><BR>";
+ return ($display);
+ }
+ }
+ }
+ }
+*/
/* Show main page */
$smarty= get_smarty();
$smarty->assign("oxchangeAccountACL", chkacl($this->acl, "oxchangeAccount"));
if ($this->is_account){
$smarty->assign("oxchangeState", "checked");
+ $smarty->assign("oxState", "");
} else {
$smarty->assign("oxchangeState", "");
- $smarty->assign("fstate", "disabled");
+ $smarty->assign("oxState", "disabled");
}
- // if ($this->is_account){
$smarty->assign("timezones", $this->timezones);
- // } else {
- // $smarty->assign("timezones", array("GMT"));
- // }
if ($this->parent != NULL){
$smarty->assign("tabbed", 1);
- }
+ }else{
+ $smarty->assign("tabbed", 0);
+ }
+
+ /* Trying to open a Postgresql Database Server */
+ if (function_exists("pg_connect")){
+ if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){
+ $pgcon = @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
+ if (! $pgcon){
+ $smarty->assign("pg", false);
+ }
+ }else{
+ $smarty->assign("pg", false);
+ }
+ }else{
+ $smarty->assign("pg", false);
+ }
$display.= $smarty->fetch (get_template_path('oxchange.tpl', TRUE, dirname(__FILE__)));
return ($display);
/* Trying to open a Postgresql Database Server */
if (function_exists("pg_connect")){
- if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){
- $pgcon = pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
+ if(isset($this->oxconf["PGUSER"]) and
+ isset($this->oxconf["PGHOST"]) and
+ isset($this->oxconf["PGDBNAME"]) and
+ isset($this->oxconf["PGPASSWD"])){
+ $pgcon = @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
if (! $pgcon){
- print_red(_("Couldn't Connect To Postgresql Database"));
+ print_red(_("Couldn't connect to postgresql database!"));
return;
}
}else{
- print_red(_("Needed Parameters to openexchange connectivity plugin failed!"));
+ print_red(_("Needed parameters for openexchange connectivity plugin are missing!"));
return;
}
}else{
- print_red(_("PHP4 module for Postgresql Database Failed!"));
+ print_red(_("PHP4 module for postgresql database is missing!"));
return;
}
plugin::remove_from_parent();
$ldap= $this->config->get_ldap_link();
+ if($ldap->dn_exists("ou=addr,".$this->dn)){
+ $ldap->rmdir_recursive("ou=addr,".$this->dn);
+ show_ldap_error($ldap->get_error(), _("Removing of oxchange addressbook failed"));
+ }
+
$ldap->cd($this->dn);
@DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,
$this->attributes, "Save");
- $ldap->modify($this->attrs);
- show_ldap_error($ldap->get_error());
+ $this->cleanup();
+ $ldap->modify ($this->attrs);
+ show_ldap_error($ldap->get_error(), _("Removing oxchange account failed"));
/* Optionally execute a command after we're done */
$this->postremove();
function save()
{
- $needupdate=TRUE;
+ $needupdate=TRUE;
+ $istemplate=FALSE;
- /*First at all, we must check if this is new or is updated */
- for ($i=0;$i<$this->attrs['objectClass']['count'];$i++){
- if($this->attrs['objectClass'][$i]=="OXUserObject") $needupdate=FALSE;
- }
- if($needupdate){
- /* Trying to open a Postgresql Database Server */
- if (function_exists("pg_connect")){
- if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){
- $pgcon = pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
- if (! $pgcon){
- print_red(_("Couldn't Connect To Postgresql Database"));
- return;
- }
- }else{
- print_red(_("Needed Parameters to openexchange connectivity plugin failed!"));
- return;
- }
- }else{
- print_red(_("PHP4 module for Postgresql Database Failed!"));
- return;
- }
+/* print "<pre>".print_r($this->attrs, true)."</pre>";*/
+
+
+ /*First at all, we must check if this is new or is updated */
+ /*Also check is we have a template, if is a template, is a new user */
+ if (isset($this->attrs['objectClass'])){
+ foreach ($this->attrs['objectClass'] as $object){
+ if($object=="OXUserObject") $needupdate=FALSE;
+ if($object=="gosaUserTemplate") $istemplate=TRUE;
+ }
+ }
+
+ $uidarray=array();
+ preg_match("/^(\w+(?=\=))=((\w|\s|\.)+(?=\,)),.*/",$this->dn,$uidarray);
+ $uid=$uidarray[2];
+ if (trim($uid) == "") {
+ print_red(_("The Open-Xchange accountname is empty and thus invalid! Check to make sure that you are not using any strange characters in the loginname."));
+ return;
}
+
+ if ($istemplate) $needupdate=TRUE;
- $uid=$this->attrs[$this->dnmode][0];
+ if($needupdate){
+ /* Trying to open a Postgresql Database Server */
+ if (function_exists("pg_connect")){
+ if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){
+ $pgcon = @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
+ if (! $pgcon){
+ print_red(_("Couldn't connect to postgresql database!"));
+ return;
+ }
+ }else{
+ print_red(_("Needed parameters for openexchange connectivity plugin are missing!"));
+ return;
+ }
+ }else{
+ print_red(_("PHP4 module for postgresql database is missing!"));
+ return;
+ }
+ }
plugin::save();
/* Write back to ldap */
$ldap= $this->config->get_ldap_link();
$ldap->cd($this->dn);
- $ldap->modify($this->attrs);
- show_ldap_error($ldap->get_error());
+ $this->cleanup();
+ $ldap->modify ($this->attrs);
+
+ show_ldap_error($ldap->get_error(), _("Saving of oxchange account failed"));
/* Optionally execute a command after we're done */
$this->postcreate();
if($needupdate){
- /* Finally save data to postgresql server */
- pg_set_client_encoding ("UNICODE");
- $nv = "SELECT nextval ('serial_id')";
- $ot = "insert into oxfolder_tree (fuid, parent, fname, module, type, owner, creator, creating_date, created_from, changing_date, changed_from) VALUES (%d, 1, '%s', '%s', 'private', '%s', '%s', 'now', 'System', 'now', 'System')";
- $op = "INSERT INTO oxfolder_permissions (puid, pid, role, entity, sealed, fp, orp, owp, odp) VALUES (%d, %d, 32768, '%s', 0, 128, 128, 128, 128)";
- $os = "insert into oxfolder_standardfolders (owner,module_calendar,module_contact,module_task) VALUES ('%s',%d,%d,%d)";
- $ugr= "INSERT INTO usr_general_rights SELECT creating_date, created_from, changing_date, changed_from,text('%s'), addr_u, addr_r, addr_d, cont_u, cont_r, cont_d, data_u, data_r, data_d, serie_u, serie_r, serie_d, task_u, task_r, task_d, refer, proj_u, proj_r, proj_d, dfolder_u, dfolder_r, dfolder_d, doc_u, doc_r, doc_d, knowl_u, knowl_r, knowl_d, bfolder_u, bfolder_r, bfolder_d, bookm_u, bookm_r, bookm_d, pin_u, pin_r, pin_d, forum_n, fentrie_n, setup, pin_public, internal, int_groups, kfolder_u, kfolder_r, kfolder_d, webmail FROM sys_gen_rights_template WHERE login LIKE 'default_template'";
-
- $res=pg_exec($pgcon,$nv); $calendarid=pg_fetch_row($res); pg_freeresult($res);
- $q=sprintf($ot,$calendarid[0],'My Appointments','calendar',$uid,$uid);
- pg_exec($pgcon,$q);
- $res=pg_exec($pgcon,$nv); $nid=pg_fetch_row($res); pg_freeresult($res);
- $q=sprintf($op,$nid[0],$calendarid[0],$uid);
- pg_exec($pgcon,$q);
- $res=pg_exec($pgcon,$nv); $contactsid=pg_fetch_row($res); pg_freeresult($res);
- $q=sprintf($ot,$contactsid[0],'My Contacts','contact',$uid,$uid);
- pg_exec($pgcon,$q);
- $res=pg_exec($pgcon,$nv); $nid=pg_fetch_row($res); pg_freeresult($res);
- $q=sprintf($op,$nid[0],$contactsid[0],$uid);
- pg_exec($pgcon,$q);
- $res=pg_exec($pgcon,$nv); $tasksid=pg_fetch_row($res); pg_freeresult($res);
- $q=sprintf($ot,$tasksid[0],'My Tasks','task',$uid,$uid);
- pg_exec($pgcon,$q);
- $res=pg_exec($pgcon,$nv); $nid=pg_fetch_row($res); pg_freeresult($res);
- $q=sprintf($op,$nid[0],$tasksid[0],$uid);
- pg_exec($pgcon,$q);
- $q=sprintf($os,$uid,$calendarid[0],$contactsid[0],$tasksid[0]);
- pg_exec($pgcon,$q);
- $q=sprintf($ugr,$uid);
- pg_exec($pgcon,$q);
- pg_close($pgcon);
- }
+ $ldap->create_missing_trees("ou=addr,".$this->dn);
+ show_ldap_error($ldap->get_error(), _("Creating oxchange addressbook tree failed"));
+ /* Finally save data to postgresql server */
+ pg_set_client_encoding ("UNICODE");
+ $nv = "SELECT nextval ('serial_id')";
+ $ot = "insert into oxfolder_tree (fuid, parent, fname, module, type, owner, creator, creating_date, created_from, changing_date, changed_from) VALUES (%d, 1, '%s', '%s', 'private', '%s', '%s', 'now', 'System', 'now', 'System')";
+ $op = "INSERT INTO oxfolder_permissions (puid, pid, role, entity, sealed, fp, orp, owp, odp) VALUES (%d, %d, 32768, '%s', 0, 128, 128, 128, 128)";
+ $os = "insert into oxfolder_standardfolders (owner,module_calendar,module_contact,module_task) VALUES ('%s',%d,%d,%d)";
+ $ugr= "INSERT INTO usr_general_rights SELECT creating_date, created_from, changing_date, changed_from,text('%s'), addr_u, addr_r, addr_d, cont_u, cont_r, cont_d, data_u, data_r, data_d, serie_u, serie_r, serie_d, task_u, task_r, task_d, refer, proj_u, proj_r, proj_d, dfolder_u, dfolder_r, dfolder_d, doc_u, doc_r, doc_d, knowl_u, knowl_r, knowl_d, bfolder_u, bfolder_r, bfolder_d, bookm_u, bookm_r, bookm_d, pin_u, pin_r, pin_d, forum_n, fentrie_n, setup, pin_public, internal, int_groups, kfolder_u, kfolder_r, kfolder_d, webmail FROM sys_gen_rights_template WHERE login LIKE 'default_template'";
+
+ $res=pg_exec($pgcon,$nv); $calendarid=pg_fetch_row($res); pg_freeresult($res);
+ $q=sprintf($ot,$calendarid[0],'My Appointments','calendar',$uid,$uid);
+ pg_exec($pgcon,$q);
+ $res=pg_exec($pgcon,$nv); $nid=pg_fetch_row($res); pg_freeresult($res);
+ $q=sprintf($op,$nid[0],$calendarid[0],$uid);
+ pg_exec($pgcon,$q);
+ $res=pg_exec($pgcon,$nv); $contactsid=pg_fetch_row($res); pg_freeresult($res);
+ $q=sprintf($ot,$contactsid[0],'My Contacts','contact',$uid,$uid);
+ pg_exec($pgcon,$q);
+ $res=pg_exec($pgcon,$nv); $nid=pg_fetch_row($res); pg_freeresult($res);
+ $q=sprintf($op,$nid[0],$contactsid[0],$uid);
+ pg_exec($pgcon,$q);
+ $res=pg_exec($pgcon,$nv); $tasksid=pg_fetch_row($res); pg_freeresult($res);
+ $q=sprintf($ot,$tasksid[0],'My Tasks','task',$uid,$uid);
+ pg_exec($pgcon,$q);
+ $res=pg_exec($pgcon,$nv); $nid=pg_fetch_row($res); pg_freeresult($res);
+ $q=sprintf($op,$nid[0],$tasksid[0],$uid);
+ pg_exec($pgcon,$q);
+ $q=sprintf($os,$uid,$calendarid[0],$contactsid[0],$tasksid[0]);
+ pg_exec($pgcon,$q);
+ $q=sprintf($ugr,$uid);
+ pg_exec($pgcon,$q);
+ pg_close($pgcon);
}
+ }
}
?>