| @@ -154,13 +154,25 @@ | ||
| 154 | 154 | |
| 155 | 155 | /** |
| 156 | 156 | * Method get_logs_users(). |
| 157 | 157 | * |
| 158 | + * @param array|null $sites_ids Optional, array websites ids. | |
| 159 | + * | |
| 158 | 160 | * @return array Users list. |
| 159 | 161 | */ |
| 160 | - public function get_logs_users() { //phpcs:ignore -- NOSONAR -complex. | |
| 162 | + public function get_logs_users( $sites_ids = null ) { //phpcs:ignore -- NOSONAR -complex. | |
| 161 | 163 | $where = MainWP_DB::instance()->get_sql_where_allow_access_sites( 'wp' ); |
| 162 | - $sql = 'SELECT lo.log_id, lo.site_id, lo.user_id, lo.user_login, lo.connector, wp.name, me.meta_log_id, me.meta_key, me.meta_value ' | |
| 164 | + | |
| 165 | + if ( ! empty( $sites_ids ) ) { | |
| 166 | + $sites_ids = array_map( 'intval', $sites_ids ); | |
| 167 | + $placeholders = implode( ',', array_fill( 0, count( $sites_ids ), '%d' ) ); | |
| 168 | + $where .= $this->wpdb->prepare( | |
| 169 | + " AND wp.id IN ($placeholders)", // phpcs:ignore --NOSONAR -- $placeholders contains only generated %d placeholders. | |
| 170 | + $sites_ids | |
| 171 | + ); | |
| 172 | + } | |
| 173 | + | |
| 174 | + $sql = 'SELECT lo.log_id, lo.site_id, lo.user_id, lo.user_login, lo.connector, wp.name, me.meta_log_id, me.meta_key, me.meta_value ' | |
| 163 | 175 | . ', CASE |
| 164 | 176 | WHEN connector != "non-mainwp-changes" THEN "dashboard" |
| 165 | 177 | ELSE "wpadmin" |
| 166 | 178 | END AS log_source ' |
| @@ -169,9 +181,8 @@ | ||
| 169 | 181 | . ' LEFT JOIN ' . $this->table_name( 'wp_logs_meta' ) . ' me ON lo.log_id = me.meta_log_id ' |
| 170 | 182 | . ' WHERE me.meta_key = "user_meta_json" ' |
| 171 | 183 | . $where |
| 172 | 184 | . ' GROUP BY site_id, user_id, log_source '; |
| 173 | - | |
| 174 | 185 | $users_sites_logs = $this->wpdb->get_results( $sql ); //phpcs:ignore -- ok. |
| 175 | 186 | if ( $users_sites_logs ) { |
| 176 | 187 | $logs_users = array(); |
| 177 | 188 | $dash_users = array(); |