// SPDX-FileCopyrightText: 2021 Harald Eilertsen // // SPDX-License-Identifier: AGPL-3.0-or-later if ( !class_exists( 'GiglogAdmin_Concertlogs' ) ) { class GiglogAdmin_Concertlogs { private array $roles; private function __construct( $attr = [] ) { $this->roles['photo1'] = $attr->{"wpgcl_photo1"}; $this->roles['photo2'] = $attr->{"wpgcl_photo2"}; $this->roles['rev1'] = $attr->{"wpgcl_rev1"}; $this->roles['rev2'] = $attr->{"wpgcl_rev2"}; } /** * Adds a default entry for the given concert id in the * concert logs table. * * @return void */ public static function add($concert_id): void { global $wpdb; $q = $wpdb->prepare( "INSERT INTO wpg_concertlogs SET wpgcl_concertid = %d", intval($concert_id)); $wpdb->query($q); } static function update($cid, $ph1, $ph2, $rev1, $rev2) { global $wpdb; $res = $wpdb->update('wpg_concertlogs', array( 'wpgcl_photo1' => $ph1, 'wpgcl_photo2' => $ph2, 'wpgcl_rev1' => $rev1, 'wpgcl_rev2' => $rev2 ), array('wpgcl_concertid' => $cid) ); if ( !$res ) { // exit( var_dump( $wpdb->last_query ) ); //for onscreen debugging when needed error_log( __CLASS__ . '::' . __FUNCTION__ . ": {$wpdb->last_error}"); die; } return ($wpdb->last_error); } public static function get_status(int $concert_id) : ?int { global $wpdb; $q = $wpdb->prepare( 'select wpgcl_status from wpg_concertlogs where id = %d', $concert_id); $res = $wpdb->get_results($q); return $res ? $res[0]->wpgcl_status : null; } public static function get_assigned_user( int $concert_id, string $role ) : ?string { global $wpdb; if ( ! in_array( $role, [ 'photo1', 'photo2', 'rev1', 'rev2' ] ) ) { error_log(__METHOD__ . ": invalid \$role ({$role}) given."); return null; } $column = "wpgcl_{$role}"; $q = $wpdb->prepare( "select {$column} from wpg_concertlogs where id = %d", $concert_id); $res = $wpdb->get_row($q, ARRAY_A); return array_shift( $res ); } public static function get(int $concert_id) : ?self { global $wpdb; $q = $wpdb->prepare( "select * from wpg_concertlogs where id = %d", $concert_id); $res = $wpdb->get_row($q); return $res ? new self($res) : null; } public function get_assigned_role(string $username) : ?string { return array_search( $username, $this->roles ) || NULL; } public function assigned_user(string $role) : ?string { return $this->roles[$role]; } } }