public function edit($activity = null)
 {
     $activity_id = phpgw::get_var('id');
     $parent_activity_id = phpgw::get_var('parent_id', 'int');
     $project_id = phpgw::get_var('project_id', 'int');
     if ($activity == null) {
         if ($activity_id && is_numeric($activity_id)) {
             $activity = $this->so->get_single($activity_id);
             $project_id = $activity->get_project_id();
         } else {
             $activity = new logistic_activity();
             if ($project_id && is_numeric($project_id)) {
                 $project = $this->so_project->get_single($project_id);
                 $activity->set_project_id($project_id);
             } else {
                 if ($parent_activity_id) {
                     $activity->set_parent_id($parent_activity_id);
                     $parent_activity = $this->so->get_single($parent_activity_id);
                     $project_id = $parent_activity->get_project_id();
                     $activity->set_project_id($project_id);
                     $activity->set_start_date($parent_activity->get_start_date());
                     $activity->set_end_date($parent_activity->get_end_date());
                 }
             }
         }
     }
     $accounts = $GLOBALS['phpgw']->acl->get_user_list_right(PHPGW_ACL_READ, 'run', 'logistic');
     $activities = $this->so->get(0, 0, 'name', true, null, null, null, true);
     if ($activity_id) {
         $exclude = array($activity_id);
         $children = $this->so->get_children($activity_id, 0, true);
         foreach ($children as $child) {
             $exclude[] = $child['id'];
         }
         $k = count($activities);
         for ($i = 0; $i < $k; $i++) {
             if (in_array($activities[$i]->get_id(), $exclude)) {
                 unset($activities[$i]);
             }
         }
     }
     $data = array('responsible_users' => $accounts, 'activities' => $project_id ? $activities : array(), 'activity' => $activity, 'editable' => true, 'breadcrumb' => $this->_get_breadcrumb($activity_id, 'logistic.uiactivity.edit', 'id'));
     if ($project) {
         $data['project'] = $project;
     }
     //			if($activity->get_parent_id() || $activity_id)
     //			if(	$activity_id )
     if ($project_id) {
         $parent_activity = $this->so->get_single($activity->get_parent_id());
         $data['parent_activity'] = $parent_activity;
     } else {
         $projects = $this->so_project->get();
         $data['projects'] = $projects;
     }
     $this->use_yui_editor('description');
     $GLOBALS['phpgw_info']['flags']['app_header'] = lang('logistic') . '::' . lang('Add activity');
     $GLOBALS['phpgw']->jqcal->add_listener('start_date', 'datetime');
     $GLOBALS['phpgw']->jqcal->add_listener('end_date', 'datetime');
     self::add_javascript('logistic', 'logistic', 'activity.js');
     self::add_javascript('phpgwapi', 'yui3', 'yui/yui-min.js');
     self::add_javascript('phpgwapi', 'yui3-gallery', 'gallery-formvalidator/gallery-formvalidator-min.js');
     $GLOBALS['phpgw']->css->add_external_file('phpgwapi/js/yui3-gallery/gallery-formvalidator/validatorCss.css');
     //_debug_array($data);die();
     self::render_template_xsl('activity/add_activity_item', $data);
 }
 protected function populate(int $activity_id, &$activity)
 {
     if ($activity == null) {
         $activity = new logistic_activity((int) $activity_id);
         $activity->set_name($this->unmarshal($this->db->f('name'), 'string'));
         $activity->set_description($this->unmarshal($this->db->f('description'), 'string'));
         $activity->set_parent_id($this->unmarshal($this->db->f('parent_activity_id'), 'int'));
         $activity->set_project_id($this->unmarshal($this->db->f('project_id'), 'int'));
         $activity->set_start_date($this->unmarshal($this->db->f('start_date'), 'int'));
         $activity->set_end_date($this->unmarshal($this->db->f('end_date'), 'int'));
         $activity->set_responsible_user_id($this->unmarshal($this->db->f('responsible_user_id'), 'int'));
         $activity->set_create_date($this->unmarshal($this->db->f('create_date'), 'int'));
         $activity->set_create_user($this->unmarshal($this->db->f('create_user'), 'int'));
         $activity->set_update_date($this->unmarshal($this->db->f('update_date'), 'int'));
         $activity->set_update_user($this->unmarshal($this->db->f('update_user'), 'int'));
     }
     return $activity;
 }