Discontinuar lineado de un gráfico para n niveles de un factor utilizando ggplot

Tengo un código con el que grafico unos datos similares a los del ejemplo mínimo que comparto.

Como puede observarse la variable z contiene 4 condiciones: “H C R”, “I C R”, “H C W” e “I C W”.

Actualmente, al graficar, cada condición aparece de un color diferente según la paleta de colores “Spectral”.

Objetivo

Me gustaría conseguir lo siguiente:

  1. Que la línea de condición “H C” apareciera en el color anaranjado que utiliza la paleta “Spectral”.

  2. Que la línea de condición “I C” apareciera en el color verde oscuro que utiliza la paleta “Spectral”.

  3. Que la línea de condición “R” apareciera continua.

  4. Que la línea de la condición “W” apareciera discontínua.

Por motivos de organización, sería preferible separar en la leyenda dos grupos de títulos de leyenda: Condición para “H C” e “I C” y Modelo para “R” y “W”.

Mis intentos hasta ahora han pasado por intentar hacer un separación de los niveles de z y después utilizar linetype para cambiar el estilo de línea. Pero tengo problemas porque el código opera datos dentro de una tubería.

Agradezco sugerencias.

library(dplyr) library(ggplot2) library(scales) tribble(    ~y,    ~cb,   ~z,    ~x,             1     , 0,   "H C R"    ,1,             2     , 1,   "H C R"    ,1,             2     , 0,   "I C R"    ,1,             3     , 1,   "I C R"    ,1,             1.5   , 0,   "H C W"    ,1,             2     , 1,   "H C W"    ,1,             2     , 0,   "I C W"    ,1,             2     , 1,   "I C W"    ,1,             3     , 0,   "H C R"    ,2,             3     , 1,   "H C R"    ,2,             0.5   , 0,   "I C R"    ,2,             2     , 1,   "I C R"    ,2,             2     , 0,   "H C W"    ,2,             2     , 1,   "H C W"    ,2,             1     , 0,   "I C W"    ,2,             1     , 1,   "I C W"    ,2)-> datos datos %>%   group_by(x, z, cb) %>%   summarise(media = mean(y),              desvio = sd(y),                                         error_est = desvio / sqrt(n()),                          intervalo_sup = media + (2*error_est),                    intervalo_inf = media - (2*error_est)) %>%     ggplot(aes(x = x, y = media, color = z)) +   geom_line(aes(group = z), size=0.5) +                         geom_errorbar(aes(ymax = intervalo_sup,                                    ymin = intervalo_inf),                 width=0.3) +    labs(x = "x", y = "y", color = "Condition") +   scale_color_brewer(type='div', palette="Spectral") +   scale_x_continuous(breaks = seq(1,7, by=1)) +   theme(legend.position="bottom", legend.text=element_text(size=12)) +   guides(color=guide_legend(ncol=2)) +   theme(axis.text=element_text(size=14),         axis.title=element_text(size=14))+   facet_wrap(~cb) 

Code Igniter Diferentes tipos de niveles / roles para usuarios

Buenas estoy armando un sitio y estoy empezando con Code Igniter saque una base para iniciar a la hora de agregar un header quiero ponerle 3 tipos de niveles/rol.

Dejo mi

header.php

<?php  ob_start(); session_start(); require_once 'templates/include.php'; require_once 'funcion.php';  require_once 'config.php';  if(!isset($  _SESSION['logged_in'])){     header('Location: index.php'); } ?> 

Por ej cuando inicio sesión siendo administrador en vez de enviarme a index.php me llevara a admin.php

parte del codigo User.php

public function login( array $  data )     {         $  _SESSION['logged_in'] = false;         if( !empty( $  data ) ){              // Trim todos los datos entrantes:             $  trimmed_data = array_map('trim', $  data);              // escapar de las variables para la seguridad             $  email = mysqli_real_escape_string( $  this->_con,  $  trimmed_data['email'] );             $  password = mysqli_real_escape_string( $  this->_con,  $  trimmed_data['password'] );             $  level = mysqli_real_escape_string( $  this->_con,  $  trimmed_data['level'] );              if((!$  email) ||  (!$  password) ||  (!$  key15) ) {                 throw new Exception( LOGIN_FIELDS_MISSING );             }             $  password = md5( $  password );             $  query = "SELECT user_id, name, email, level, created FROM users where email = '$  email' and password = '$  password' ";             $  result = mysqli_query($  this->_con, $  query);             $  data = mysqli_fetch_assoc($  result);             $  count = mysqli_num_rows($  result);             mysqli_close($  this->_con);             if( $  count == 1){                 $  _SESSION = $  data;                 $  _SESSION['logged_in'] = true;                 return true;             }else{                 throw new Exception( LOGIN_FAIL );             }         } else{             throw new Exception( LOGIN_FIELDS_MISSING );         }     }