protected function populate(int $activity_id, &$activity) { if ($activity == null) { $activity = new activitycalendar_activity((int) $activity_id); $activity->set_title($this->unmarshal($this->db->f('title'), 'string')); $activity->set_organization_id($this->unmarshal($this->db->f('organization_id'), 'int')); $activity->set_group_id($this->unmarshal($this->db->f('group_id'), 'int')); $activity->set_district($this->unmarshal($this->db->f('district'), 'string')); $activity->set_office($this->unmarshal($this->db->f('office'), 'int')); $activity->set_category($this->unmarshal($this->db->f('category'), 'int')); $activity->set_state($this->unmarshal($this->db->f('state'), 'int')); $activity->set_target($this->unmarshal($this->db->f('target'), 'string')); $activity->set_description($this->unmarshal($this->db->f('description'), 'string')); $activity->set_arena($this->unmarshal($this->db->f('arena'), 'string')); $activity->set_internal_arena($this->unmarshal($this->db->f('internal_arena'), 'string')); $activity->set_time($this->unmarshal($this->db->f('time'), 'string')); $activity->set_last_change_date($this->unmarshal($this->db->f('last_change_date'), 'int')); $activity->set_special_adaptation($this->unmarshal($this->db->f('special_adaptation', 'bool'))); $activity->set_secret($this->unmarshal($this->db->f('secret'), 'string')); $activity->set_contact_person_2_address($this->unmarshal($this->db->f('contact_person_2_address'), 'string')); $activity->set_contact_person_2_zip($this->unmarshal($this->db->f('contact_person_2_zip'), 'string')); $activity->set_frontend($this->unmarshal($this->db->f('frontend', 'bool'))); $activity->set_new_org($this->unmarshal($this->db->f('new_org', 'bool'))); $activity->set_new_group($this->unmarshal($this->db->f('new_group', 'bool'))); if ($activity->get_group_id() && $activity->get_group_id() > 0) { if ($activity->get_new_group()) { $contacts = activitycalendar_sogroup::get_instance()->get_contacts_local($activity->get_group_id()); $activity->set_contact_persons($contacts); //$org_tmp = activitycalendar_sogroup::get_instance()->get_orgid_from_group($activity->get_group_id()); //$activity->set_organization_id($org_tmp); } else { $contacts = activitycalendar_sogroup::get_instance()->get_contacts($activity->get_group_id()); $activity->set_contact_persons($contacts); $org_tmp = activitycalendar_sogroup::get_instance()->get_orgid_from_group($activity->get_group_id()); $activity->set_organization_id($org_tmp); } } else { if ($activity->get_organization_id() && $activity->get_organization_id() > 0) { if ($activity->get_new_org()) { $contacts = activitycalendar_soorganization::get_instance()->get_contacts_local($activity->get_organization_id()); $activity->set_contact_persons($contacts); } else { $contacts = activitycalendar_soorganization::get_instance()->get_contacts($activity->get_organization_id()); $activity->set_contact_persons($contacts); } } } } return $activity; }
public function edit() { $GLOBALS['phpgw_info']['flags']['app_header'] .= '::' . lang('edit'); // Get the contract part id $activity_id = (int) phpgw::get_var('id'); $cancel_link = self::link(array('menuaction' => 'activitycalendar.uiactivities.index')); $categories = $this->so_activity->get_categories(); $targets = $this->so_activity->get_targets(); $offices = $this->so_activity->select_district_list(); $districts = $this->so_activity->get_districts(); $buildings = $this->so_arena->get_buildings(); // Retrieve the activity object or create a new one if (isset($activity_id) && $activity_id > 0) { $activity = $this->so_activity->get_single($activity_id); } else { $activity = new activitycalendar_activity(); } $new_group = $activity->get_new_group(); $g_id = phpgw::get_var('group_id'); $o_id = phpgw::get_var('organization_id'); if ($new_group) { $persons = $this->so_group->get_contacts_local($activity->get_group_id()); $desc = $this->so_group->get_description_local($activity->get_group_id()); } else { if (isset($g_id) && $g_id > 0) { $persons = $this->so_group->get_contacts($g_id); $desc = $this->so_group->get_description($g_id); } else { if (isset($o_id) && $o_id > 0) { $persons = $this->so_org->get_contacts($o_id); $desc = $this->so_org->get_description($o_id); } } } if (strlen($desc) > 254) { $desc = substr($desc, 0, 254); } $arenas = $this->so_arena->get(null, null, 'arena.arena_name', true, null, null, null); if ($activity->get_new_org()) { $org_name = $this->so_org->get_organization_name_local($activity->get_organization_id()); } else { $organizations = $this->so_org->get(null, null, 'org.name', true, null, null, null); } if ($new_group) { $group_array = $this->so_group->get(null, null, null, null, null, null, array('group_id' => $activity->get_group_id(), 'new_groups' => 'true')); //var_dump($group_array); if (count($group_array) > 0) { $keys = array_keys($group_array); $local_group = $group_array[$keys[0]]; //$group_name = $local_group->get_name(); } } else { $groups = $this->so_group->get(null, null, null, null, null, null, null); } if (isset($_POST['save_activity'])) { if (isset($activity)) { $old_state = $activity->get_state(); $new_state = phpgw::get_var('state'); // ... set all parameters $activity->set_title(phpgw::get_var('title')); $activity->set_organization_id(phpgw::get_var('organization_id')); $activity->set_group_id(phpgw::get_var('group_id')); $internal_arena = phpgw::get_var('internal_arena_id'); if (isset($internal_arena) && $internal_arena > 0) { $activity->set_arena(0); $activity->set_internal_arena($internal_arena); } else { $activity->set_arena(phpgw::get_var('arena_id')); $activity->set_internal_arena(0); } $district_array = phpgw::get_var('district'); $activity->set_district(implode(",", $district_array)); $activity->set_office(phpgw::get_var('office')); $activity->set_state($new_state); $activity->set_category(phpgw::get_var('category')); $target_array = phpgw::get_var('target'); $activity->set_target(implode(",", $target_array)); $activity->set_description($desc); $activity->set_time(phpgw::get_var('time')); $activity->set_contact_persons($persons); $activity->set_contact_person_2_address(phpgw::get_var('contact_person_2_address')); $activity->set_contact_person_2_zip(phpgw::get_var('contact_person_2_zip')); $activity->set_special_adaptation(phpgw::get_var('special_adaptation')); $target_ok = false; $district_ok = false; if ($new_state != 5) { $target_ok = true; $district_ok = true; } else { if ($activity->get_target() && $activity->get_target() != '') { $target_ok = true; } if ($activity->get_district() && $activity->get_district() != '') { $district_ok = true; } } if ($target_ok && $district_ok) { if ($this->so_activity->store($activity)) { if ($new_group) { //transfer group to booking $group_array = $this->so_group->get(null, null, null, null, null, null, array('group_id' => $activity->get_group_id(), 'new_groups' => 'true')); if (count($group_array) > 0) { $keys = array_keys($group_array); $group = $group_array[$keys[0]]; } $group_info = array(); $group_info['name'] = $group->get_name(); //new $group_info['organization_id'] = $activity->get_organization_id(); $group_info['description'] = $group->get_description(); $contacts = $this->so_contact->get_local_contact_persons($group->get_id(), true); $contact_1 = $contacts[0]; $new_group_id = $this->so_group->transfer_group($group_info); if ($new_group_id) { //update activity with new org id //add contact persons to booking $contact1 = array(); $contact1['name'] = $contact_1->get_name(); $contact1['phone'] = $contact_1->get_phone(); $contact1['mail'] = $contact_1->get_email(); $contact1['group_id'] = $new_group_id; $this->so_activity->add_contact_person_group($contact1); $message = lang('messages_saved_form'); //get organization_id for the group: $group_org_id = $this->so_group->get_orgid_from_group($new_group_id); //get affected activities and update with new org id $update_activities = $this->so_activity->get_activities_for_update($group->get_id(), true); foreach ($update_activities as $act_id) { $act = $this->so_activity->get_single($act_id); $act->set_organization_id($group_org_id); $act->set_group_id($new_group_id); $act->set_new_org(false); $act->set_new_group(false); $this->so_activity->store($act); } //set local group as stored $group->set_change_type('added'); $group->set_transferred(true); $this->so_group->update_local($group); $message = lang('messages_saved_form'); //var_dump($new_group_id); $contact_persons = $this->so_contact->get_booking_contact_persons($new_group_id, true); //var_dump(2); $cp1 = $contact_persons[0]; } } $message = lang('messages_saved_form'); } else { $error = lang('messages_form_error'); } if (isset($activity_id) && $activity_id > 0) { $activity = $this->so_activity->get_single($activity_id); } if ($old_state != $new_state && ($new_state == 3 || $new_state == 5)) { $kontor = $this->so_activity->get_office_name($activity->get_office()); $subject = lang('mail_subject_update'); $body = lang('mail_body_state_' . $new_state, $activity->get_title(), $kontor); if ($activity->get_group_id() && $activity->get_group_id() > 0) { $activity->set_contact_persons(activitycalendar_socontactperson::get_instance()->get_booking_contact_persons($activity->get_group_id(), true)); activitycalendar_uiactivities::send_mailnotification_to_group($activity->get_contact_person_1(), $subject, $body); } else { if ($activity->get_organization_id() && $activity->get_organization_id() > 0) { $activity->set_contact_persons(activitycalendar_socontactperson::get_instance()->get_booking_contact_persons($activity->get_organization_id())); activitycalendar_uiactivities::send_mailnotification_to_organization($activity->get_contact_person_1(), $subject, $body); } } } $GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 'activitycalendar.uiactivities.view', 'id' => $activity->get_id(), 'saved_ok' => 'yes')); } else { if (!$target_ok) { $error .= "<br/>" . lang('target_not_selected'); } if (!$district_ok) { $error .= "<br/>" . lang('district_not_selected'); } return $this->render('activity.php', array('activity' => $activity, 'organizations' => $organizations, 'org_name' => $org_name, 'groups' => $groups, 'local_group' => $local_group, 'arenas' => $arenas, 'buildings' => $buildings, 'categories' => $categories, 'targets' => $targets, 'districts' => $districts, 'offices' => $offices, 'editable' => true, 'cancel_link' => $cancel_link, 'message' => isset($message) ? $message : phpgw::get_var('message'), 'error' => isset($error) ? $error : phpgw::get_var('error'))); } } } $editable = true; if ($activity->get_new_org()) { $error = lang('org_not_transferred'); $editable = false; } //var_dump($local_group); return $this->render('activity.php', array('activity' => $activity, 'organizations' => $organizations, 'org_name' => $org_name, 'groups' => $groups, 'local_group' => $local_group, 'arenas' => $arenas, 'buildings' => $buildings, 'categories' => $categories, 'targets' => $targets, 'districts' => $districts, 'offices' => $offices, 'editable' => $editable, 'cancel_link' => $cancel_link, 'message' => isset($message) ? $message : phpgw::get_var('message'), 'error' => isset($error) ? $error : phpgw::get_var('error'))); }