/** * Return parent folder instance * * @param void * @return ProjectFolder */ function getFolder() { if (is_null($this->folder)) { $this->folder = ProjectFolders::findById($this->getFolderId()); if ($this->folder instanceof ProjectFolder && $this->folder->getProjectId() != $this->getProjectId()) { $this->folder = null; } // if } // if return $this->folder; }
/** * Return paged project files * * @param Project $project * @param ProjectFolder $folder * @param boolean $hide_private Don't show private files * @param string $order Order files by name or by posttime (desc) * @param integer $page Current page * @param integer $files_per_page Number of files that will be showed per single page * @param boolean $group_by_order Group files by order field * @return array */ static function getProjectFiles(Project $project, $folder = null, $hide_private = false, $order = null, $page = null, $files_per_page = null, $group_by_order = false) { trace(__FILE__, 'getProjectFiles()'); if ($order == self::ORDER_BY_POSTTIME) { $order_by = '`created_on` DESC'; } else { $order_by = '`filename`'; } // if // #PAGE# is reserved as a placeholder //if (!($page == '#PAGE#')) { if ((int) $page < 1) { $page = 1; } if ((int) $files_per_page < 1) { $files_per_page = 10; } //} // if $folder_ids = array(); if ($folder instanceof ProjectFolder && $folder->getProjectId() == $project->getId()) { if ($hide_private) { $conditions = array('`project_id` = ? AND `folder_id` = ? AND `is_private` = ? AND `is_visible` = ?', $project->getId(), $folder->getId(), false, true); } else { $conditions = array('`project_id` = ? AND `folder_id` = ? AND `is_visible` = ?', $project->getId(), $folder->getId(), true); } // if } else { if ($hide_private) { $conditions = array('`project_id` = ? AND `is_private` = ? AND `is_visible` = ?', $project->getId(), false, true); } else { $conditions = array('`project_id` = ? AND `is_visible` = ?', $project->getId(), true); } // if } // if list($files, $pagination) = ProjectFiles::paginate(array('conditions' => $conditions, 'order' => $order_by), $files_per_page, $page); if ($group_by_order) { $grouped_files = array(); if (is_array($files) && count($files)) { $today = DateTimeValueLib::now(); foreach ($files as $file) { $group_by_str = ''; if ($order == self::ORDER_BY_POSTTIME) { $created_on = $file->getCreatedOn(); if ($created_on->getYear() == $today->getYear()) { $group_by_str = format_descriptive_date($created_on); } else { $group_by_str = format_date($created_on); } // if } else { $group_by_str = strtoupper(substr_utf($file->getFilename(), 0, 1)); } // if if (!isset($grouped_files[$group_by_str]) || !is_array($grouped_files[$group_by_str])) { $grouped_files[$group_by_str] = array(); } $grouped_files[$group_by_str][] = $file; } // foreach } // if $files = is_array($grouped_files) ? $grouped_files : null; } // if return array($files, $pagination); }