diff --git a/application/modules/default/models/ProjectClone.php b/application/modules/default/models/ProjectClone.php index 9014a2cb5..1b2906a4a 100755 --- a/application/modules/default/models/ProjectClone.php +++ b/application/modules/default/models/ProjectClone.php @@ -1,234 +1,234 @@ . **/ class Default_Model_ProjectClone extends Default_Model_DbTable_ProjectClone { public function fetchOrigins($project_id) { $sql = " SELECT c.project_id as project_id_clone ,c.project_id_parent as project_id ,c.external_link ,c.member_id ,c.text ,' ' as catTitle ,p.project_category_id ,p.title ,p.image_small ,p.changed_at FROM project_clone c JOIN project p ON p.project_id = c.project_id_parent WHERE c.is_deleted = 0 and c.is_valid = 1 and c.project_id = :project_id AND p.`status` = 100 order by c.created_at desc "; $resultSet = $this->_db->fetchAll($sql, array('project_id' => $project_id)); return $this->generateRowSet($resultSet); // return $resultSet; } public function fetchClones($project_id) { $sql = " SELECT c.project_id as project_id ,c.project_id_parent as project_id_origin ,c.external_link ,c.member_id ,c.text ,' ' as catTitle ,(select project_category_id from project p where p.project_id = c.project_id_parent) project_category_id ,p.title ,p.image_small ,p.changed_at FROM project_clone c JOIN project p ON p.project_id = c.project_id WHERE c.is_deleted = 0 and c.is_valid = 1 and c.project_id_parent = :project_id AND p.`status` = 100 order by c.created_at desc "; $resultSet = $this->_db->fetchAll($sql, array('project_id' => $project_id)); return $this->generateRowSet($resultSet); // return $resultSet; } public function fetchParent($project_id) { $sql = " SELECT * FROM project_clone c WHERE c.is_deleted = 0 and c.is_valid = 1 and c.project_id = :project_id "; $resultSet = $this->_db->fetchRow($sql, array('project_id' => $project_id)); return $this->generateRowSet($resultSet); } public function fetchRelatedProducts($project_id) { $sql = " select distinct * from ( SELECT c.project_id as project_id ,c.external_link ,c.member_id ,c.text ,' ' as catTitle ,(select project_category_id from project p where p.project_id = c.project_id_parent) project_category_id ,p.title ,p.image_small ,p.changed_at FROM project_clone c JOIN project p on p.project_id = c.project_id WHERE c.is_deleted = 0 and c.is_valid = 1 and c.project_id_parent = :project_id AND p.`status` = 100 union SELECT c.project_id as project_id ,c.external_link ,c.member_id ,c.text ,' ' as catTitle ,(select project_category_id from project p where p.project_id = c.project_id_parent) project_category_id ,p.title ,p.image_small ,p.changed_at FROM project_clone c JOIN project p on p.project_id = c.project_id WHERE c.project_id<> :project_id and c.is_deleted = 0 and c.is_valid = 1 AND p.`status` = 100 and c.project_id_parent in ( select project_id_parent from project_clone c where c.project_id = :project_id and c.is_valid = 1 and c.is_deleted = 0 ) ) a where a.catTitle is not null order by changed_at desc "; $resultSet = $this->_db->fetchAll($sql, array('project_id' => $project_id)); return $this->generateRowSet($resultSet); } public function fetchCredits() { $sql = " SELECT c.project_clone_id ,c.project_id ,c.project_id_parent ,c.external_link ,c.text ,c.member_id as reported_by ,m.username as reporter_username ,m.profile_image_url as reporter_profile_image_url ,p.cat_title catTitle ,p.title ,p.image_small ,p.changed_at ,p.laplace_score ,p.member_id ,p.username ,pp.cat_title parent_catTitle ,pp.title parent_title ,pp.image_small parent_image_small ,pp.changed_at parent_changed_at ,pp.laplace_score parent_laplace_score ,pp.member_id parent_member_id ,pp.username parent_username FROM project_clone c join stat_projects pp on pp.project_id =c.project_id_parent join member m on m.member_id = c.member_id left JOIN stat_projects p on p.project_id = c.project_id WHERE c.is_deleted = 0 and c.is_valid = 0 AND pp.status = 100 order by c.created_at desc "; $resultSet = $this->_db->fetchAll($sql); return $this->generateRowSet($resultSet); } /** * @return string comma seperated ids */ function fetchChildrensIds($project_id){ $sql = " select GROUP_CONCAT(project_id) as ids from project_clone c where c.project_id_parent = :project_id "; $resultSet = $this->_db->fetchRow($sql, array('project_id' => $project_id)); return $resultSet['ids']; } /** * @return string comma seperated ids */ function fetchParentIds($project_id){ $sql = " select GROUP_CONCAT(distinct project_id_parent) as ids from project_clone c where c.project_id = :project_id and c.project_id_parent >0 "; $resultSet = $this->_db->fetchRow($sql, array('project_id' => $project_id)); return $resultSet['ids']; } /** * @return string siblings project ids without itself */ function fetchSiblings($project_id){ $sql = " select GROUP_CONCAT(distinct project_id) as ids from project_clone c where c.project_id_parent in ( select project_id_parent from project_clone c where c.project_id = :project_id ) and c.project_id <> :project_id "; $resultSet = $this->_db->fetchRow($sql, array('project_id' => $project_id)); return $resultSet['ids']; } /** * @return string comma seperated ids */ - function fetchAncestersIds($project_id,$level=3){ + function fetchAncestersIds($project_id,$level=5){ $parentIds = self::fetchParentIds($project_id); $ids=''; while ($level>0 && strlen($parentIds)>0) { $sql = "select GROUP_CONCAT(distinct project_id_parent) as ids from project_clone c where c.project_id in(".$parentIds.")"; $resultSet = $this->_db->fetchRow($sql); if($resultSet['ids']) { $ids.=','.$resultSet['ids']; } else{ break; } $parentIds = $resultSet['ids']; $level--; } if(substr($ids, 0, 1)==','){ $ids=substr($ids,1);}; return $ids; } } \ No newline at end of file