/** * Paginate comments by object * * @param ProjectObject $object * @param integer $page * @param integer $per_page * @param integer $min_state * @param integer $min_visiblity * @return array */ function paginateByObject($object, $page = 1, $per_page = 30, $min_state = STATE_VISIBLE, $min_visiblity = VISIBILITY_NORMAL) { $link = mysql_connect(DB_HOST, DB_USER, DB_PASS); mysql_select_db(DB_NAME); $query = "select * from " . TABLE_PREFIX . "project_objects where parent_id='" . $object->getId() . "' and parent_type='" . $object->getType() . "' and type='Comment' and (position is null or position<='0')"; $result = mysql_query($query); if (mysql_num_rows($result)) { $count = 0; Comments::modify_comments_sorting($object, $count); } mysql_close($link); return ProjectObjects::paginate(array('conditions' => array("type = 'Comment' AND parent_id = ? AND state >= ? AND visibility >= ?", $object->getId(), $min_state, $min_visiblity), 'order' => 'position desc, created_on desc'), $page, $per_page); }
/** * Paginate trashed objects * * @param User $user * @param integer $page * @param integer $per_page * @return null */ function paginateTrashed($user, $page = 1, $per_page = 30) { if ($user->isAdministrator() || $user->isProjectManager()) { return ProjectObjects::paginate(array('conditions' => array("state = ? AND visibility >= ?", STATE_DELETED, $user->getVisibility()), 'order' => 'updated_on'), $page, $per_page); } else { $type_filter = ProjectUsers::getVisibleTypesFilter($user, array(PROJECT_STATUS_ACTIVE, PROJECT_STATUS_PAUSED, PROJECT_STATUS_CANCELED, PROJECT_STATUS_COMPLETED)); if ($type_filter) { return ProjectObjects::paginate(array('conditions' => array($type_filter . ' AND state = ? AND visibility >= ?', STATE_DELETED, $user->getVisibility()), 'order' => 'updated_on'), $page, $per_page); } else { return array(null, new Pager(1, 0, $per_page)); } // if } // if }
/** * Return paginated TimeRecords by object * * @param ProjectObject $object * @param integer $page * @param integer $per_page * @param integer $min_state * @param integer $min_visibility * @return array */ function paginateByObject($object, $page = 1, $per_page = 30, $min_state = STATE_VISIBLE, $min_visibility = VISIBILITY_NORMAL) { return ProjectObjects::paginate(array('conditions' => array('parent_id = ? AND type = ? AND state >= ? AND visibility >= ?', $object->getId(), 'TimeRecord', $min_state, $min_visibility), 'order' => 'date_field_1 DESC, id DESC'), $page, $per_page); }
/** * Return paginated discussions by Category * * @param Category $category * @param integer $page * @param integer $per_page * @param integer $min_state * @param integer $min_visibility * @return array */ function paginateByCategory($category, $page = 1, $per_page = 30, $min_state = STATE_VISIBLE, $min_visibility = VISIBILITY_NORMAL) { return ProjectObjects::paginate(array('conditions' => array('parent_id = ? AND type = ? AND state >= ? AND visibility >= ?', $category->getId(), 'Discussion', $min_state, $min_visibility), 'order' => 'boolean_field_1 DESC, datetime_field_1 DESC'), $page, $per_page); }
/** * Paginate category object based on preferences * * @param integer $page * @param integer $per_page * @param integer $min_state * @param integer $min_visiblity * @param string $relation_field * @return array */ function paginateObjects($page, $per_page, $min_state = STATE_VISIBLE, $min_visiblity = VISIBILITY_NORMAL, $relation_field = 'parent_id') { return ProjectObjects::paginate(array('conditions' => array("{$relation_field} = ? AND state >= ? AND visibility >= ?", $this->getId(), $min_state, $min_visiblity), 'order' => 'name'), $page, $per_page); }
/** * Paginate pages by project * * @param Project $project * @param integer $page * @param integer $per_page * @param integer $min_state * @param integer $min_visibility * @return array */ function paginateByProject($project, $page = 1, $per_page = 10, $min_state = STATE_VISIBLE, $min_visibility = VISIBILITY_NORMAL) { return ProjectObjects::paginate(array('conditions' => array('project_id = ? AND type = ? AND state >= ? AND visibility >= ?', $project->getId(), 'Page', $min_state, $min_visibility), 'order' => 'updated_on DESC'), $page, $per_page); }