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);
        }
    }
}
Example #3
0
 /**
  * Test find_proj_child with passing in a level
  */
 public function testFindProjChildWithLevel()
 {
     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');
     $st_projects = $q->loadList();
     find_proj_child($st_projects, 1, 2);
     $this->assertEquals(5, count($st_projects));
     $this->assertEquals(3, count($st_projects[0]));
     $this->assertEquals(3, count($st_projects[1]));
     $this->assertEquals(3, count($st_projects[2]));
     $this->assertEquals(3, count($st_projects[3]));
     $this->assertEquals(3, count($st_projects[4]));
     $this->assertEquals(1, $st_projects[0]['project_id']);
     $this->assertEquals('Test Project', $st_projects[0]['project_name']);
     $this->assertEquals(1, $st_projects[0]['project_parent']);
     $this->assertEquals(1, $st_projects[1]['project_id']);
     $this->assertEquals('Test Project', $st_projects[1]['project_name']);
     $this->assertEquals(1, $st_projects[1]['project_parent']);
     $this->assertEquals(2, $st_projects[2]['project_id']);
     $this->assertEquals('Test Project 2', $st_projects[2]['project_name']);
     $this->assertEquals(1, $st_projects[2]['project_parent']);
     $this->assertEquals(3, $st_projects[3]['project_id']);
     $this->assertEquals('Test Project 3', $st_projects[3]['project_name']);
     $this->assertEquals(1, $st_projects[3]['project_parent']);
     $this->assertEquals(4, $st_projects[4]['project_id']);
     $this->assertEquals('Test Project 4', $st_projects[4]['project_name']);
     $this->assertEquals(1, $st_projects[4]['project_parent']);
 }