<?PHP

require_once 'class.templatepage.php';

class ComposersPage extends TemplatePage {
	public function __construct() {
		if ( !count( $_GET ) ) {
			$this->cache_time = 3600 * 24; // cache landing page
		}

		if ( count( $_GET ) <= 2 && isset( $_GET['composer_id'] ) ) {
			$this->cache_time = 3600 * 24;
			$this->cache_qs = [ 'composer_id', '_render' ];
		}

		parent::__construct();
	}

	public function generate() {
		$this->common_title = $this->language( 'title-composers' );

		$composer_id = getInt( 'composer_id' );
		$edit = getInt( 'edit' );
		$delete = getInt( 'delete' );

		// show/edit user
		if ( $composer_id || ( $edit && !$composer_id ) ) {
			if ( $edit || $delete ) {
				$this->composerService->clearById( $composer_id );
			}
			$row = $this->composerService->getById( $composer_id );
			if ( $row || ( $edit && !$composer_id ) ) {
				$this->add_breadcrumb( $this->language( 'breadcrumb-all-composers' ), 'composers' );
				$composer = new Composer( $this, $row );

				$this->write_menu( 'composers' );

				if ( $edit || $delete ) {
					require_once 'composers.edit.php';
				} else {
					// Show composer
					require_once 'composers.view.php';
				}
			} else {
				// composer_id not found
				$this->redirect( "{$this->base}/composers" );
			}

		} else {
			require_once 'composers.search.php';
		}
	}

	public function render_opus() {
		$composer_id = getInt( 'composer_id' );
		$composer = new Composer( $this );
		$stmt = $composer->get( [ 'composer_id' => $composer_id ], null, null, null, [ 'users' ] );
		if ( $row = $stmt->fetch_assoc() ) {
			$composer = new Composer( $this, $row );
			require_once 'composers.view.opus.php';
		}
	}
}
new ComposersPage();
