/**
  * 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);
 }