db_name, [ 'id', 'id_order', 'name', 'id_ready', 'id_admin' ], [ 'ORDER' => ['id_order' => 'ASC'] ]); // Обрабатываем id_admin для каждого проекта return array_map(function($project) use ($current_user_id) { $admins = $project['id_admin'] ? json_decode($project['id_admin'], true) : []; if ($current_user_id && in_array((int)$current_user_id, $admins, true)) { $project['id_admin'] = true; } else { unset($project['id_admin']); } return $project; }, $projects); } // Получение одного проекта // $current_user_id — ID текущего пользователя для проверки админства public static function get($id, $current_user_id = null) { $project = Database::get('project', [ 'id', 'id_order', 'name', 'id_ready', 'id_admin' ], ['id' => $id]); if ($project) { $admins = $project['id_admin'] ? json_decode($project['id_admin'], true) : []; // Если передан user_id — проверяем админство if ($current_user_id && in_array((int)$current_user_id, $admins, true)) { $project['id_admin'] = true; } else { // Не админ — убираем поле unset($project['id_admin']); } } return $project; } // Получение id_ready (ID колонки "Готово") по ID проекта public static function getReadyColumnId($project_id) { $project = Database::get('project', ['id_ready'], ['id' => $project_id]); return $project ? (int)$project['id_ready'] : null; } // Получение колонок проекта public static function getColumns($project_id) { return Database::select('columns', [ 'id', 'name_columns', 'color', 'id_order' ], [ 'id_project' => $project_id, 'ORDER' => ['id_order' => 'ASC'] ]); } // Получение отделов проекта public static function getDepartments($project_id) { return Database::select('departments', [ 'id', 'name_departments', 'color' ], [ 'id_project' => $project_id ]); } // Получение всех данных проекта (проект + колонки + отделы + метки) public static function getProjectData($project_id) { // Получаем ID текущего пользователя для проверки админства $current_user_id = RestApi::getCurrentUserId(); $project = self::get($project_id, $current_user_id); if (!$project) { return null; } // Получаем метки (глобальные) $labels = Database::select('labels', [ 'id', 'name_labels', 'icon', 'color' ]); return [ 'project' => $project, 'columns' => self::getColumns($project_id), 'departments' => self::getDepartments($project_id), 'labels' => $labels ]; } // Проверка является ли пользователь админом проекта public static function isAdmin($project_id, $user_id): bool { $project = Database::get('project', ['id_admin'], ['id' => $project_id]); if (!$project || !$project['id_admin']) { return false; } $admins = json_decode($project['id_admin'], true) ?: []; return in_array((int)$user_id, $admins, true); } } ?>