/** * Return paginated set of project objects * * @param array $arguments * @param itneger $page * @param integer $per_page * @return array */ function paginate($arguments = null, $page = 1, $per_page = 10) { if (!is_array($arguments)) { $arguments = array(); } // if $arguments['limit'] = $per_page; $arguments['offset'] = ($page - 1) * $per_page; $items = ProjectObjects::findBySQL(DataManager::prepareSelectFromArguments($arguments, TABLE_PREFIX . 'project_objects'), null, array_var($arguments, 'one')); $total_items = ProjectObjects::count(array_var($arguments, 'conditions')); return array($items, new Pager($page, $total_items, $per_page)); }
/** * Return number of completed tasks in a given object * * @param ProjectObject $object * @param integer $min_state * @return integer */ function countCompletedByObject($object, $min_state = STATE_VISIBLE) { return ProjectObjects::count(array('parent_id = ? AND type = ? AND state >= ? AND completed_on IS NOT NULL', $object->getId(), 'Task', $min_state)); }
/** * Find # of a timerecord in a project * * @param Timerecord $timerecord * @param integer $min_state * @param integer $min_visiblity * @return integer */ function findTimerecordNum($timerecord, $min_state = STATE_VISIBLE, $min_visiblity = VISIBILITY_NORMAL) { return ProjectObjects::count(array("type = 'Timerecord' AND date_field_1 > ? AND project_id = ? AND state >= ? AND visibility >= ?", $timerecord->getRecordDate(), $timerecord->getProjectId(), $min_state, $min_visiblity)) + 1; }
/** * Return comment # for a given comment in a parent object * * @param Comment $comment * @param integer $min_state * @param integer $min_visibility * @return integer */ function findCommentNum($comment, $min_state = STATE_VISIBLE, $min_visiblity = VISIBILITY_NORMAL) { return ProjectObjects::count(array("type = 'Comment' AND created_on < ? AND parent_id = ? AND state >= ? AND visibility >= ?", $comment->getCreatedOn(), $comment->getParentId(), $min_state, $min_visiblity)) + 1; }