Exemplo n.º 1
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_edit($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     // Check if we get the group
     $this->_group = new org_openpsa_contacts_group_dba($args[0]);
     $this->_group->require_do('midgard:update');
     if ($this->_group->orgOpenpsaObtype < org_openpsa_contacts_group_dba::MYCONTACTS) {
         $this->_type = 'group';
     } else {
         $this->_type = 'organization';
     }
     $data['controller'] = $this->get_controller('simple', $this->_group);
     switch ($data['controller']->process_form()) {
         case 'save':
             $indexer = new org_openpsa_contacts_midcom_indexer($this->_topic);
             $indexer->index($data['controller']->datamanager);
             // *** FALL-THROUGH ***
         // *** FALL-THROUGH ***
         case 'cancel':
             $prefix = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX);
             return new midcom_response_relocate($prefix . "group/" . $this->_group->guid . "/");
     }
     $root_group = org_openpsa_contacts_interface::find_root_group();
     if ($this->_group->owner && $this->_group->owner != $root_group->id) {
         $data['parent_group'] = new org_openpsa_contacts_group_dba($this->_group->owner);
     } else {
         $data['parent_group'] = false;
     }
     $data['group'] =& $this->_group;
     org_openpsa_helpers::dm2_savecancel($this);
     $this->bind_view_to_object($this->_group);
     midcom::get('head')->set_pagetitle(sprintf($this->_l10n_midcom->get('edit %s'), $this->_group->official));
     org_openpsa_contacts_viewer::add_breadcrumb_path_for_group($this->_group, $this);
     $this->add_breadcrumb("", sprintf($this->_l10n_midcom->get('edit %s'), $this->_l10n->get($this->_type)));
 }
Exemplo n.º 2
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_create($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     midcom::get('auth')->require_user_do('midgard:create', null, 'org_openpsa_contacts_person_dba');
     if (count($args) > 0) {
         // Get the organization
         $this->_group = new org_openpsa_contacts_group_dba($args[0]);
         $this->_group->require_do('midgard:create');
         midcom::get('head')->set_pagetitle($this->_group->official);
     }
     $data['controller'] = $this->get_controller('create');
     switch ($data['controller']->process_form()) {
         case 'save':
             // Index the person
             $indexer = new org_openpsa_contacts_midcom_indexer($this->_topic);
             $indexer->index($data['controller']->datamanager);
             return new midcom_response_relocate("person/{$this->_person->guid}/");
         case 'cancel':
             return new midcom_response_relocate('');
     }
     // Add toolbar items
     org_openpsa_helpers::dm2_savecancel($this);
     org_openpsa_contacts_viewer::add_breadcrumb_path_for_group($this->_group, $this);
     $this->add_breadcrumb("", sprintf($this->_l10n_midcom->get('create %s'), $this->_l10n->get('person')));
 }
Exemplo n.º 3
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_create($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     $this->_type = $args[0];
     $this->_parent_group = false;
     if (count($args) > 1) {
         // Get the parent organization
         $this->_parent_group = new org_openpsa_contacts_group_dba($args[1]);
         $this->_parent_group->require_do('midgard:create');
     } else {
         // This is a root level organization, require creation permissions under the component root group
         midcom::get('auth')->require_user_do('midgard:create', null, 'org_openpsa_contacts_group_dba');
     }
     $data['controller'] = $this->get_controller('create');
     switch ($data['controller']->process_form()) {
         case 'save':
             // Index the organization
             $indexer = new org_openpsa_contacts_midcom_indexer($this->_topic);
             $indexer->index($data['controller']->datamanager);
             // Relocate to group view
             return new midcom_response_relocate("group/" . $this->_group->guid . "/");
         case 'cancel':
             if ($this->_parent_group) {
                 return new midcom_response_relocate("group/" . $this->_parent_group->guid . "/");
             } else {
                 return new midcom_response_relocate('');
             }
     }
     $this->add_stylesheet(MIDCOM_STATIC_URL . "/midcom.helper.datamanager2/legacy.css");
     // Add toolbar items
     org_openpsa_helpers::dm2_savecancel($this);
     midcom::get('head')->set_pagetitle($this->_l10n->get("create organization"));
     org_openpsa_contacts_viewer::add_breadcrumb_path_for_group($this->_parent_group, $this);
     $this->add_breadcrumb("", sprintf($this->_l10n_midcom->get('create %s'), $this->_l10n->get($this->_type)));
 }
Exemplo n.º 4
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_customer($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     try {
         $this->_customer = new org_openpsa_contacts_group_dba($args[0]);
     } catch (midcom_error $e) {
         $this->_customer = new org_openpsa_contacts_person_dba($args[0]);
     }
     $data['customer'] = $this->_customer;
     if (midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_invoices_invoice_dba')) {
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "invoice/new/{$this->_request_data['customer']->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create invoice'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/printer.png'));
         $billing_data_url = "create/" . $this->_customer->guid . "/";
         $qb_billing_data = org_openpsa_invoices_billing_data_dba::new_query_builder();
         $qb_billing_data->add_constraint('linkGuid', '=', $this->_customer->guid);
         $billing_data = $qb_billing_data->execute();
         if (count($billing_data) > 0) {
             $billing_data_url = $billing_data[0]->guid . "/";
         }
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "billingdata/" . $billing_data_url, MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('edit billingdata', 'org.openpsa.contacts'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png', MIDCOM_TOOLBAR_ENABLED => $this->_customer->can_do('midgard:update')));
     }
     if ($this->_request_data['contacts_url']) {
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $this->_request_data['contacts_url'] . (is_a($this->_customer, 'org_openpsa_contacts_group_dba') ? 'group' : 'person') . "/{$this->_request_data['customer']->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('go to customer'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/jump-to.png'));
     }
     $title = sprintf($this->_l10n->get('all invoices for customer %s'), $this->_request_data['customer']->get_label());
     midcom::get('head')->set_pagetitle($title);
     $this->add_breadcrumb("", $title);
 }
Exemplo n.º 5
0
 /**
  *
  * @param mixed $handler_id The ID of the handler.
  * @param array &$data The local request data.
  */
 public function _show_list($handler_id, array &$data)
 {
     if ($handler_id == 'mycontacts_xml') {
         $schemadb_person = midcom_helper_datamanager2_schema::load_database($this->_config->get('schemadb_person'));
         $datamanager = new midcom_helper_datamanager2_datamanager($schemadb_person);
         $xml = '<contacts></contacts>';
         $simplexml = simplexml_load_string($xml);
         foreach ($data['mycontacts'] as $person) {
             $contact = $simplexml->addChild('contact');
             $contact->addAttribute('guid', $person->guid);
             $datamanager->autoset_storage($person);
             $person_data = $datamanager->get_content_xml();
             foreach ($person_data as $key => $value) {
                 $contact->addChild($key, $value);
             }
             $mc = midcom_db_member::new_collector('uid', $person->id);
             $memberships = $mc->get_values('gid');
             $qb = org_openpsa_contacts_group_dba::new_query_builder();
             $qb->add_constraint('gid', 'IN', $memberships);
             $qb->add_constraint('orgOpenpsaObtype', '>', org_openpsa_contacts_list_dba::MYCONTACTS);
             $organisations = $qb->execute();
             foreach ($organisations as $organisation) {
                 $contact->addChild('company', str_replace('&', '&amp;', ${$organisation}->get_label()));
             }
         }
         echo $simplexml->asXml();
     } else {
         midcom_show_style("show-mycontacts-header");
         foreach ($data['mycontacts'] as $person) {
             $data['person'] = $person;
             midcom_show_style("show-mycontacts-item");
         }
         midcom_show_style("show-mycontacts-footer");
     }
 }
Exemplo n.º 6
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_notifications($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_user_do('org.openpsa.user:manage', null, 'org_openpsa_user_interface');
     $group = new org_openpsa_contacts_group_dba($args[0]);
     $group->require_do('midgard:update');
     $controller = $this->get_controller('simple', $group);
     switch ($controller->process_form()) {
         case 'save':
             // Fall-through
         // Fall-through
         case 'cancel':
             return new midcom_response_relocate("group/" . $group->guid . "/");
     }
     $data['notifications_dm'] =& $controller;
     $data['object'] = $group;
     midcom::get('head')->set_pagetitle($group->get_label() . ": " . $this->_l10n->get("notification settings"));
     $this->add_breadcrumb('group/' . $group->guid . '/', $group->get_label());
     $this->add_breadcrumb("", $this->_l10n->get("notification settings"));
     org_openpsa_helpers::dm2_savecancel($this);
 }
Exemplo n.º 7
0
 /**
  * Prepares the component's indexer client
  */
 public function _on_reindex($topic, $config, &$indexer)
 {
     $qb_organisations = org_openpsa_contacts_group_dba::new_query_builder();
     $qb_organisations->add_constraint('orgOpenpsaObtype', '<>', org_openpsa_contacts_group_dba::MYCONTACTS);
     $organisation_schema = midcom_helper_datamanager2_schema::load_database($config->get('schemadb_group'));
     $qb_persons = org_openpsa_contacts_person_dba::new_query_builder();
     $person_schema = midcom_helper_datamanager2_schema::load_database($config->get('schemadb_person'));
     $indexer = new org_openpsa_contacts_midcom_indexer($topic, $indexer);
     $indexer->add_query('organisations', $qb_organisations, $organisation_schema);
     $indexer->add_query('persons', $qb_persons, $person_schema);
     return $indexer;
 }
Exemplo n.º 8
0
 public function testCRUD()
 {
     midcom::get('auth')->request_sudo('org.openpsa.contacts');
     $group = new org_openpsa_contacts_group_dba();
     $time = time();
     $group->name = 'TEST NAME' . $time;
     $stat = $group->create();
     $this->assertFalse($stat);
     $group->name = 'TEST-NAME' . $time;
     $stat = $group->create();
     $this->assertTrue($stat);
     $this->register_object($group);
     $this->assertEquals('TEST-NAME' . $time, $group->get_label());
     $this->assertEquals(org_openpsa_core_acl::ACCESS_PUBLIC, $group->orgOpenpsaAccesstype);
     $group->official = 'TEST OFFICIAL';
     $stat = $group->update();
     $this->assertTrue($stat);
     $this->assertEquals('TEST OFFICIAL', $group->get_label());
     $stat = $group->delete();
     $this->assertTrue($stat);
     midcom::get('auth')->drop_sudo();
 }
Exemplo n.º 9
0
 private function _get_group($autocreate = false)
 {
     if ($this->_group) {
         return $this->_group;
     }
     $qb = org_openpsa_contacts_list_dba::new_query_builder();
     $qb->add_constraint('person', '=', $this->_user->guid);
     $results = $qb->execute();
     if (sizeof($results) == 0) {
         if ($autocreate) {
             $this->_group = new org_openpsa_contacts_list_dba();
             $this->_group->person = $this->_user->guid;
             midcom::get('auth')->request_sudo('org.openpsa.contacts');
             $this->_group->create();
             $this->_group->set_privilege('midgard:owner', $this->_user->id, MIDCOM_PRIVILEGE_ALLOW);
             midcom::get('auth')->drop_sudo();
         } else {
             return false;
         }
     } else {
         $this->_group = $results[0];
     }
     return $this->_group;
 }
Exemplo n.º 10
0
<?php

$project =& $data['object'];
$project->get_members();
$view = $data['object_view'];
$prefix = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX);
$nap = new midcom_helper_nav();
$node = $nap->get_node($nap->get_current_node());
?>
<div class="sidebar">
    <?php 
try {
    $customer = org_openpsa_contacts_group_dba::get_cached($project->customer);
    echo "<h2>" . $data['l10n']->get('customer') . "</h2>\n";
    $customer_html = $customer->official;
    $siteconfig = org_openpsa_core_siteconfig::get_instance();
    $contacts_url = $siteconfig->get_node_full_url('org.openpsa.contacts');
    if ($contacts_url) {
        $customer_html = '<a href="' . $contacts_url . '/group/' . $customer->guid . '/">' . $customer_html . "</a>\n";
    }
    echo $customer_html;
} catch (midcom_error $e) {
}
if ($project->manager) {
    echo "<h2>" . $data['l10n']->get('manager') . "</h2>\n";
    $contact = org_openpsa_widgets_contact::get($project->manager);
    echo $contact->show_inline();
} else {
    if (count($project->resources) > 0) {
        echo "<h2>" . $data['l10n']->get('resources') . "</h2>\n";
        foreach ($project->resources as $contact_id => $display) {
Exemplo n.º 11
0
 /**
  *
  * @param mixed $handler_id The ID of the handler.
  * @param array &$data The local request data.
  */
 public function _show_group_memberships($handler_id, array &$data)
 {
     // This is most likely a dynamic_load
     if (count($data['memberships']) > 0) {
         midcom_show_style("show-person-groups-header");
         foreach ($data['memberships'] as $member) {
             try {
                 $data['group'] = org_openpsa_contacts_group_dba::get_cached($member->gid);
                 if ($data['group']->orgOpenpsaObtype == org_openpsa_contacts_group_dba::MYCONTACTS) {
                     continue;
                 }
             } catch (midcom_error $e) {
                 $e->log();
                 continue;
             }
             $data['member'] = $member;
             if ($member->extra == "") {
                 $member->extra = $this->_l10n->get('<title>');
             }
             $data['member_title'] = $member->extra;
             midcom_show_style("show-person-groups-item");
         }
         midcom_show_style("show-person-groups-footer");
     } else {
         midcom_show_style("show-person-groups-empty");
     }
 }
Exemplo n.º 12
0
 /**
  * List customer contact's groups
  */
 private function _populate_schema_customers_for_contact($contact_id)
 {
     $fields =& $this->_schemadb['default']->fields;
     $organizations = array();
     $member_mc = org_openpsa_contacts_member_dba::new_collector('uid', $contact_id);
     $member_mc->add_constraint('gid.orgOpenpsaObtype', '>', org_openpsa_contacts_group_dba::MYCONTACTS);
     $groups = $member_mc->get_values('gid');
     foreach ($groups as $group) {
         try {
             $organization = org_openpsa_contacts_group_dba::get_cached($group);
             $organizations[$organization->id] = $organization->official;
         } catch (midcom_error $e) {
         }
     }
     //Fill the customer field to DM
     $fields['customer']['type_config']['options'] = $organizations;
 }
Exemplo n.º 13
0
     }
 }
 try {
     $owner = org_openpsa_contacts_person_dba::get_cached($invoice->owner);
     $entry['owner'] = $owner->name;
 } catch (midcom_error $e) {
     $entry['owner'] = '';
     $e->log();
 }
 if ($invoice->{$data['date_field']} > 0) {
     $entry['date'] = strftime('%Y-%m-%d', $invoice->{$data['date_field']});
 } else {
     $entry['date'] = '';
 }
 try {
     $customer = org_openpsa_contacts_group_dba::get_cached($invoice->customer);
     $entry['index_customer'] = $customer->official;
     if ($data['invoices_url']) {
         $entry['customer'] = "<a href=\"{$data['invoices_url']}list/customer/all/{$customer->guid}/\" title=\"{$customer->name}: {$customer->official}\">{$customer->official}</a>";
     } else {
         $entry['customer'] = $customer->official;
     }
 } catch (midcom_error $e) {
     $entry['customer'] = '';
     $entry['index_customer'] = '';
 }
 $entry['index_contact'] = '';
 $entry['contact'] = '';
 try {
     $contact = org_openpsa_contacts_person_dba::get_cached($invoice->customerContact);
     $entry['index_contact'] = $contact->rname;
Exemplo n.º 14
0
 private function _show_groups()
 {
     if (!$this->show_groups || empty($this->contact_details['id'])) {
         return;
     }
     $mc = org_openpsa_contacts_member_dba::new_collector('uid', $this->contact_details['id']);
     $mc->add_constraint('gid.orgOpenpsaObtype', '>=', org_openpsa_contacts_group_dba::ORGANIZATION);
     $mc->add_value_property('gid');
     $mc->add_value_property('extra');
     $mc->execute();
     $memberships = $mc->list_keys();
     if ($memberships) {
         foreach ($memberships as $guid => $empty) {
             try {
                 $group = org_openpsa_contacts_group_dba::get_cached($mc->get_subkey($guid, 'gid'));
             } catch (midcom_error $e) {
                 $e->log();
                 continue;
             }
             echo "<li class=\"org\">";
             if ($mc->get_subkey($guid, 'extra')) {
                 echo "<span class=\"title\">" . $mc->get_subkey($guid, 'extra') . "</span>, ";
             }
             if ($group->official) {
                 $group_label = $group->official;
             } else {
                 $group_label = $group->name;
             }
             if ($this->link_contacts) {
                 if (!self::$_contacts_url) {
                     $this->link_contacts = false;
                 } else {
                     $group_label = "<a href=\"" . self::$_contacts_url . "group/{$group->guid}/\">{$group_label}</a>";
                 }
             }
             echo "<span class=\"organization-name\">{$group_label}</span>";
             echo "</li>\n";
         }
     }
 }
Exemplo n.º 15
0
 private function _process_member($member)
 {
     $adder = array();
     $adder['campaign_member'] = $member;
     try {
         $adder['person'] = org_openpsa_contacts_person_dba::get_cached($member->person);
     } catch (midcom_error $e) {
         $e->log();
         return false;
     }
     $qb_memberships = midcom_db_member::new_query_builder();
     $qb_memberships->add_constraint('uid', '=', $member->person);
     $memberships = $qb_memberships->execute_unchecked();
     if (!is_array($memberships) || count($memberships) == 0) {
         return $adder;
     }
     switch ($this->membership_mode) {
         case 'all':
             foreach ($memberships as $k2 => $membership) {
                 $adder['organization_member'] = $membership;
                 try {
                     $adder['organization'] = org_openpsa_contacts_group_dba::get_cached($membership->gid);
                 } catch (midcom_error $e) {
                     debug_add("Error fetching org_openpsa_contacts_group_dba #{$membership->gid}, skipping", MIDCOM_LOG_WARN);
                     return false;
                 }
                 return $adder;
             }
             break;
         default:
             // Fall-trough intentional
         // Fall-trough intentional
         case 'first':
             // Fall-trough intentional
         // Fall-trough intentional
         case 'last':
             foreach ($memberships as $k2 => $membership) {
                 $adder['organization_member'] = $membership;
                 try {
                     $adder['organization'] = org_openpsa_contacts_group_dba::get_cached($membership->gid);
                 } catch (midcom_error $e) {
                     debug_add("Error fetching org_openpsa_contacts_group_dba #{$membership->gid}, skipping", MIDCOM_LOG_WARN);
                     return false;
                 }
                 // Get only first or last membership
                 if ($this->membership_mode != 'last') {
                     break;
                 }
             }
             return $adder;
             break;
     }
 }
Exemplo n.º 16
0
 /**
  * Prepares user data for JSON display
  */
 public function get_row(midcom_core_dbaobject $user)
 {
     $prefix = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX);
     $entry = array();
     $entry['id'] = $user->id;
     $lastname = trim($user->lastname);
     if (empty($lastname)) {
         $lastname = $this->_l10n->get('person') . ' #' . $user->id;
     }
     $entry['lastname'] = "<a href='" . $prefix . 'view/' . $user->guid . "/'>" . $lastname . "</a>";
     $entry['index_lastname'] = $user->lastname;
     $entry['firstname'] = "<a href='" . $prefix . 'view/' . $user->guid . "/' >" . $user->firstname . "</a>";
     $entry['index_firstname'] = $user->firstname;
     $account = new midcom_core_account($user);
     $entry['username'] = $account->get_username();
     $entry['groups'] = array();
     //get groups
     $mc_member = org_openpsa_contacts_member_dba::new_collector('uid', $user->id);
     $mc_member->add_constraint('gid.orgOpenpsaObtype', '<', org_openpsa_contacts_group_dba::MYCONTACTS);
     $mc_member->add_order('gid.official');
     $mc_member->add_order('gid.name');
     $gids = $mc_member->get_values('gid');
     foreach ($gids as $gid) {
         try {
             $group = org_openpsa_contacts_group_dba::get_cached($gid);
             $entry['groups'][] = '<a href="' . $prefix . 'group/' . $group->guid . '/">' . $group->get_label() . '</a>';
         } catch (midcom_error $e) {
             $e->log();
         }
     }
     $entry['groups'] = implode(', ', $entry['groups']);
     return $entry;
 }
Exemplo n.º 17
0
 /**
  *
  * @param mixed $handler_id The ID of the handler.
  * @param array &$data The local request data.
  */
 public function _show_action($handler_id, array &$data)
 {
     switch ($this->_view) {
         case "area_group_members":
             // This is most likely a dynamic_load
             $qb = new org_openpsa_qbpager('midcom_db_member', 'group_members');
             $qb->add_constraint('gid', '=', $this->_request_data['group']->id);
             $qb->results_per_page = 10;
             $results = $qb->execute();
             $this->_request_data['members_qb'] =& $qb;
             if (count($results) > 0) {
                 midcom_show_style("show-group-persons-header");
                 foreach ($results as $member) {
                     $this->_request_data['member'] = $member;
                     if ($member->extra == "") {
                         $member->extra = $this->_l10n->get('<title>');
                     }
                     $this->_request_data['member_title'] = $member->extra;
                     $this->_request_data['person'] = new org_openpsa_contacts_person_dba($member->uid);
                     midcom_show_style("show-group-persons-item");
                 }
                 midcom_show_style("show-group-persons-footer");
             }
             break;
         case "area_group_subgroups":
             $qb = org_openpsa_contacts_group_dba::new_query_builder();
             $qb->add_constraint('owner', '=', $this->_request_data['group']->id);
             $results = $qb->execute();
             if (count($results) > 0) {
                 midcom_show_style("show-group-subgroups-header");
                 foreach ($results as $subgroup) {
                     $this->_request_data['subgroup'] = $subgroup;
                     midcom_show_style("show-group-subgroups-item");
                 }
                 midcom_show_style("show-group-subgroups-footer");
             }
             break;
     }
 }
Exemplo n.º 18
0
 /**
  * Does a QB query for groups, returns false or number of matched entries
  *
  * Displays style element 'search-groups-empty' only if $displayEmpty is
  * set to true.
  */
 private function _search_qb_groups()
 {
     if (!$this->_query_string) {
         return false;
     }
     // Search using only the fields defined in config
     $org_fields = explode(',', $this->_config->get('organization_search_fields'));
     if (!is_array($org_fields) || count($org_fields) == 0) {
         throw new midcom_error('Invalid organization search configuration');
     }
     $qb_org = org_openpsa_contacts_group_dba::new_query_builder();
     $qb_org->add_constraint('orgOpenpsaObtype', '<>', org_openpsa_contacts_group_dba::MYCONTACTS);
     $this->_apply_constraints($qb_org, $org_fields);
     $this->_groups = $qb_org->execute();
 }
Exemplo n.º 19
0
 private function _import_subscribers_organization($subscriber)
 {
     $organization = null;
     if (array_key_exists('official', $subscriber['organization']) && $subscriber['organization']['official']) {
         // Perform a simple check for existing organization. More complicated duplicate checking is best left to the o.o.contacts duplicate checker
         $qb = org_openpsa_contacts_group_dba::new_query_builder();
         if (array_key_exists('company_id', $this->_schemadbs['organization']['default']->fields) && array_key_exists('company_id', $subscriber['organization']) && $subscriber['organization']['company_id']) {
             // Imported data has a company id, we use that instead of name
             $qb->add_constraint($this->_schemadbs['organization']['default']->fields['company_id']['storage']['location'], '=', $subscriber['organization']['company_id']);
         } else {
             // Seek by official name
             $qb->add_constraint('official', '=', $subscriber['organization']['official']);
             if (array_key_exists('city', $this->_schemadbs['organization']['default']->fields) && array_key_exists('city', $subscriber['organization']) && $subscriber['organization']['city']) {
                 // Imported data has a city, we use also that for matching
                 $qb->add_constraint($this->_schemadbs['organization']['default']->fields['city']['storage']['location'], '=', $subscriber['organization']['city']);
             }
         }
         $organizations = $qb->execute_unchecked();
         if (count($organizations) > 0) {
             // Match found, use it
             // Use first match
             $organization = array_shift($organizations);
         }
     }
     if (!$organization) {
         // We didn't have person matching the email in DB. Create a new one.
         $organization = new org_openpsa_contacts_group_dba();
         if (!$organization->create()) {
             $this->_request_data['new_objects']['organization'] =& $organization;
             debug_add("Failed to create organization, reason " . midcom_connection::get_error_string());
             return null;
         }
     }
     if (!$this->_datamanager_process('organization', $subscriber, $organization)) {
         return null;
     }
     return $organization;
 }
Exemplo n.º 20
0
 /**
  * Find duplicates for given all org_openpsa_contacts_group_dba objects in database
  *
  * @return array array of groups with their possible duplicates
  */
 function check_all_groups($threshold = 1)
 {
     midcom::get()->disable_limits();
     $ret = array();
     $ret['objects'] = array();
     $ret['p_map'] = array();
     $ret['threshold'] =& $threshold;
     $groups = array();
     $mc = org_openpsa_contacts_group_dba::new_collector('metadata.deleted', false);
     $mc->add_value_property('id');
     $mc->add_value_property('homepage');
     $mc->add_value_property('phone');
     $mc->add_value_property('official');
     $mc->add_value_property('street');
     $mc->add_value_property('city');
     $mc->execute();
     $results = $mc->list_keys();
     if (empty($results)) {
         return $ret;
     }
     foreach ($results as $guid => $result) {
         $group = $mc->get($guid);
         $groups[] = self::_normalize_group_fields($group, $guid);
     }
     $params = array();
     $params['ret'] =& $ret;
     $params['finder'] =& $this;
     $params['objects'] =& $groups;
     $params['mode'] = 'group';
     array_walk($groups, array('self', '_check_all_arraywalk'), $params);
     return $ret;
 }
Exemplo n.º 21
0
 public function get_customer()
 {
     try {
         $customer = org_openpsa_contacts_group_dba::get_cached($this->customer);
     } catch (midcom_error $e) {
         try {
             $customer = org_openpsa_contacts_person_dba::get_cached($this->customerContact);
         } catch (midcom_error $e) {
             $customer = null;
             $e->log();
         }
     }
     return $customer;
 }
Exemplo n.º 22
0
 /**
  *
  * @param mixed $handler_id The ID of the handler.
  * @param array &$data The local request data.
  */
 public function _show_uninvoiced($handler_id, array &$data)
 {
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $data['projects_url'] = $siteconfig->get_node_full_url('org.openpsa.projects');
     midcom_show_style('show-projects-header');
     foreach ($this->_customers as $customer_id => $tasks) {
         $data['customer'] = $customer_id;
         try {
             $customer = org_openpsa_contacts_group_dba::get_cached($customer_id);
             $data['customer_label'] = $customer->official;
             $data['disabled'] = '';
         } catch (midcom_error $e) {
             $data['customer_label'] = $this->_l10n->get('no customer');
             $data['disabled'] = ' disabled="disabled"';
         }
         midcom_show_style('show-projects-customer-header');
         $class = "even";
         foreach ($tasks as $task) {
             $data['task'] = $task;
             if ($class == "even") {
                 $class = "";
             } else {
                 $class = "even";
             }
             $data['class'] = $class;
             $data['reported_hours'] = $task->reportedHours;
             try {
                 $deliverable = new org_openpsa_sales_salesproject_deliverable_dba($task->agreement);
                 $deliverable->calculate_price(false);
                 $data['default_price'] = $deliverable->pricePerUnit;
                 if ($deliverable->invoiceByActualUnits) {
                     $data['invoiceable_units'] = $task->invoiceableHours;
                 } else {
                     $data['invoiceable_units'] = $task->plannedHours;
                 }
             } catch (midcom_error $e) {
                 $e->log();
                 if ($this->_config->get('default_hourly_price')) {
                     $data['default_price'] = $this->_config->get('default_hourly_price');
                     $data['invoiceable_units'] = $task->invoiceableHours;
                 } else {
                     $data['default_price'] = '';
                 }
             }
             midcom_show_style('show-projects-customer-task');
         }
         midcom_show_style('show-projects-customer-footer');
     }
     midcom_show_style('show-projects-footer');
 }