Ejemplo n.º 1
0
 /**
  * @param	Account		$account
  * @param	Settings	$settings
  * @return	ContactsDbDriver
  */
 public static function &CreateContactStorage($account, $settings)
 {
     if (!self::$instance) {
         if (USE_LDAP_CONTACT) {
             require_once WM_ROOTPATH . 'common/contacts/ldap.php';
             self::$instance = new ContactsLDAPDriver($account, $settings);
         } else {
             require_once WM_ROOTPATH . 'common/contacts/db.php';
             self::$instance = new ContactsDbDriver($account, $settings);
         }
     } else {
         self::$instance->InitMain($account, $settings);
     }
     return self::$instance;
 }
Ejemplo n.º 2
0
 /**
  * @param Account $_account
  * @param XmlDomNode $_xmlObj
  * @param XmlDomNode $_xmlRes
  * @param int $_newAddrId = -1
  */
 function GetContactList(&$_account, &$_settings, &$_xmlObj, &$_xmlRes, $_newAddrId = -1)
 {
     $contactManager =& ContactCreator::CreateContactStorage($_account, $_settings);
     if ($contactManager) {
         $_pageNumber = $_xmlObj->GetParamValueByName('page');
         $_sortField = $_xmlObj->GetParamValueByName('sort_field');
         $_sortOrder = (bool) $_xmlObj->GetParamValueByName('sort_order');
         $_idGroup = $_xmlObj->GetParamValueByName('id_group');
         $_lookForNode = $_xmlObj->XmlRoot->GetChildNodeByTagName('look_for');
         $_lookForField = $_xmlObj->XmlRoot->GetChildValueByTagName('look_for', true);
         $_lookForType = 0;
         if ($_lookForNode) {
             $_lookForType = isset($_lookForNode->Attributes['type']) ? (int) $_lookForNode->Attributes['type'] : 0;
         }
         $_countArray = $contactManager->GetContactsAndGroupsCount($_idGroup, $_lookForType, $_lookForField);
         $_contactsNode = new XmlDomNode('contacts_groups');
         $_contactsNode->AppendAttribute('contacts_count', $_countArray[0]);
         $_contactsNode->AppendAttribute('groups_count', $_countArray[1]);
         $_contactsNode->AppendAttribute('page', $_pageNumber);
         $_contactsNode->AppendAttribute('sort_field', $_sortField);
         $_contactsNode->AppendAttribute('sort_order', (int) $_sortOrder);
         $_contactsNode->AppendAttribute('id_group', (int) $_idGroup);
         $_contactsNode->AppendAttribute('added_contact_id', (int) $_newAddrId);
         $_newLookForNode = new XmlDomNode('look_for', $_lookForField, true);
         $_newLookForNode->AppendAttribute('type', $_lookForType);
         $_contactsNode->AppendChild($_newLookForNode);
         $_contacts = $contactManager->GetContactsAndGroups($_countArray, $_pageNumber, $_sortField, $_sortOrder, $_idGroup, $_lookForType, $_lookForField);
         $aEmailsInList = array();
         if (null != $_contacts) {
             $_contactsKeys = array_keys($_contacts->Instance());
             foreach ($_contactsKeys as $_key) {
                 $_contact =& $_contacts->Get($_key);
                 $_contactNode = new XmlDomNode('contact_group');
                 $_contactNode->AppendAttribute('id', $_contact->Id);
                 $_contactNode->AppendAttribute('is_group', (int) $_contact->IsGroup);
                 $_contactNode->AppendChild(new XmlDomNode('name', $_contact->Name, true));
                 if ($_contact->IsGroup) {
                     $_emailsOfGroup = '';
                     $_groupContacts = $contactManager->GetContactsOfGroup($_contact->Id);
                     if ($_groupContacts) {
                         for ($_i = 0, $_c = $_groupContacts->Count(); $_i < $_c; $_i++) {
                             $_contactOfGroup =& $_groupContacts->Get($_i);
                             if (strlen($_contactOfGroup->Email) > 0) {
                                 $_emailsOfGroup .= strlen($_contactOfGroup->Name) > 0 && $_contactOfGroup->UseFriendlyName ? '"' . $_contactOfGroup->Name . '" <' . $_contactOfGroup->Email . '>, ' : $_contactOfGroup->Email . ', ';
                             }
                         }
                     }
                     $sEmailToAdd = trim(trim($_emailsOfGroup), ',');
                     unset($_groupContacts);
                 } else {
                     $sEmailToAdd = trim(trim($_contact->Email), ',');
                 }
                 $_contactNode->AppendChild(new XmlDomNode('email', $sEmailToAdd, true));
                 if (1 === $_lookForType) {
                     if (isset($aEmailsInList[$_contact->Name . $sEmailToAdd])) {
                         unset($_contactNode);
                         continue;
                     } else {
                         $aEmailsInList[$_contact->Name . $sEmailToAdd] = true;
                     }
                 }
                 $_contactsNode->AppendChild($_contactNode);
                 unset($_contactNode);
             }
         }
         $_xmlRes->XmlRoot->AppendChild($_contactsNode);
         if ($_newAddrId > 0) {
             $_bigContactNode = CXmlProcessing::GetContactNodeFromAddressBookRecord($_account, $_settings, $_newAddrId);
             if (null != $_bigContactNode) {
                 $_xmlRes->XmlRoot->AppendChild($_bigContactNode);
             }
         }
     } else {
         CXmlProcessing::PrintErrorAndExit(getGlobalError(), $_xmlRes);
     }
 }
Ejemplo n.º 3
0
             $newContact->IdUser = $account->IdUser;
             if ($newContact->validateData() === true) {
                 $ContactArray[] = $newContact;
             }
         }
     }
     @fclose($handle);
 } else {
     $ErrorInt = 0;
 }
 // delete import file
 @unlink($fs->GetFolderFullPath($attfolder) . '/' . $tempname);
 $contactsCount = count($ContactArray);
 if ($contactsCount > 0) {
     $insertResult = true;
     $contactManager =& ContactCreator::CreateContactStorage($account, $settings);
     for ($i = 0; $i < $contactsCount; $i++) {
         $insertResult &= $contactManager->CreateContact($ContactArray[$i]);
     }
     if ($insertResult) {
         $_SESSION['action_report'] = JS_LANG_InfoHaveImported . ' ' . $contactsCount . ' ' . JS_LANG_InfoNewContacts;
     } else {
         $ErrorInt = 0;
     }
 } else {
     if ($isNullFile) {
         $ErrorInt = $ErrorInt == 1 ? 2 : $ErrorInt;
     } else {
         $ErrorInt = 2;
     }
 }
Ejemplo n.º 4
0
 function DoDeleteContacts()
 {
     $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null;
     $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId);
     if (!$_settings->AllowContacts) {
         CXmlProcessing::PrintErrorAndExit(PROC_CANT_DEL_CONT_GROUPS, $_xmlRes);
     }
     $_result = true;
     $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_accountId, false, false);
     $contactManager =& ContactCreator::CreateContactStorage($_account, $_settings);
     $log =& CLog::CreateInstance();
     $log->SetEventPrefixByAccount($_account);
     $_contactsNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('contacts');
     $_contactsKeys = array_keys($_contactsNode->Children);
     foreach ($_contactsKeys as $_key) {
         $_cc =& $_contactsNode->Children[$_key];
         if (isset($_cc->Attributes['id'])) {
             $_result &= $contactManager->DeleteContact($_cc->Attributes['id']);
             if ($_result) {
                 $log->WriteEvent('User delete PAB (contact id="' . $_cc->Attributes['id'] . '")');
             }
         } else {
             $_result = false;
         }
         unset($_cc);
     }
     $_groupsNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('groups');
     $_groupsKeys = array_keys($_groupsNode->Children);
     foreach ($_groupsKeys as $_key) {
         $_gc =& $_groupsNode->Children[$_key];
         if (isset($_gc->Attributes['id'])) {
             $_result &= $contactManager->DeleteGroup($_gc->Attributes['id']);
             if ($_result) {
                 $log->WriteEvent('User delete PAB (group id="' . $_gc->Attributes['id'] . '")');
             }
         } else {
             $_result = false;
         }
         unset($_gc);
     }
     if ($_result) {
         CXmlProcessing::GetContactList($_account, $_settings, $_xmlObj, $_xmlRes);
     } else {
         CXmlProcessing::PrintErrorAndExit(PROC_CANT_DEL_CONT_GROUPS, $_xmlRes);
     }
 }