function getStructuredProjects($original_project_id = 0, $project_status = -1, $active_only = false) { global $AppUI, $st_projects_arr; $st_projects = array(0 => ''); $q = new w2p_Database_Query(); $q->addTable('projects'); $q->addJoin('companies', '', 'projects.project_company = company_id', 'inner'); $q->addQuery('DISTINCT(projects.project_id), project_name, project_parent'); if ($original_project_id) { $q->addWhere('project_original_parent = ' . (int) $original_project_id); } if ($project_status >= 0) { $q->addWhere('project_status = ' . (int) $project_status); } if ($active_only) { $q->addWhere('project_active = 1'); } $q->addOrder('project_start_date, project_end_date'); $obj = new CCompany(); $obj->setAllowedSQL($AppUI->user_id, $q); $dpt = new CDepartment(); $dpt->setAllowedSQL($AppUI->user_id, $q); $q->leftJoin('project_departments', 'pd', 'pd.project_id = projects.project_id'); $q->leftJoin('departments', 'd', 'd.dept_id = pd.department_id'); $st_projects = $q->loadList(); $tnums = count($st_projects); for ($i = 0; $i < $tnums; $i++) { $st_project = $st_projects[$i]; if ($st_project['project_parent'] == $st_project['project_id']) { show_st_project($st_project); find_proj_child($st_projects, $st_project['project_id']); } } }
/** * TODO: Remove for v4.0 - caseydk 20 September 2012 * * @deprecated */ function find_proj_child(&$tarr, $parent, $level = 0) { trigger_error("find_proj_child() has been deprecated in v3.0 and will be removed in v4.0. There is no replacement.", E_USER_NOTICE); $level++; $n = count($tarr); for ($x = 0; $x < $n; $x++) { if ($tarr[$x]['project_parent'] == $parent && $tarr[$x]['project_parent'] != $tarr[$x]['project_id']) { show_st_project($tarr[$x], $level); find_proj_child($tarr, $tarr[$x]['project_id'], $level); } } }
/** * Tests show_st_project function */ public function testShowStProject() { global $st_projects_arr; $st_projects_arr = array(); $st_projects = array(0 => ''); $q = new w2p_Database_Query(); $q->addTable('projects'); $q->addJoin('companies', '', 'projects.project_company = company_id', 'inner'); $q->addJoin('project_departments', 'pd', 'pd.project_id = projects.project_id'); $q->addJoin('departments', 'dep', 'pd.department_id = dep.dept_id'); $q->addQuery('projects.project_id, project_name, project_parent'); $q->addWhere('projects.project_id = 1'); $st_projects = $q->loadList(); show_st_project($st_projects[1]); $this->assertEquals(1, count($st_projects_arr)); $this->assertEquals(2, count($st_projects_arr[0])); $this->assertEquals(1, $st_projects_arr[0][0]['project_id']); $this->assertEquals('Test Project', $st_projects_arr[0][0]['project_name']); $this->assertEquals(1, $st_projects_arr[0][0]['project_parent']); $this->assertEquals(0, $st_projects_arr[0][1]); }