/** * Guarda en sesion aquellas propiedades del componente marcadas anteriormente como pertenecientes a sesion * @ignore */ function guardar_estado_sesion() { //Busco las propiedades que se desea persistir entre las sesiones if (count($this->_propiedades_sesion) > 0) { for ($a = 0; $a < count($this->_propiedades_sesion); $a++) { //Existe la propiedad $nombre_prop = $this->_propiedades_sesion[$a]; if (isset($this->{$nombre_prop})) { //Si la propiedad es un array que posee objetos, lo serializo //a mano para no tener problemas con la desserializacion automatica de la sesion //que requiere todos los includes del proyecto antes del session start if (is_array($this->{$nombre_prop})) { $posee_objetos = array_posee_objetos($this->{$nombre_prop}); } else { $posee_objetos = false; } if (is_object($this->{$nombre_prop}) || $posee_objetos) { $temp[$this->_propiedades_sesion[$a]] = serialize($this->{$nombre_prop}); //Dejo la marca de que serialize un OBJETO. $temp["toba__indice_objetos_serializados"][] = $this->_propiedades_sesion[$a]; } else { $temp[$this->_propiedades_sesion[$a]] = $this->{$nombre_prop}; } } } if (isset($temp)) { $temp['toba__descripcion_objeto'] = '[' . get_class($this) . '] ' . $this->_info['nombre']; toba::memoria()->set_dato_operacion($this->_id_ses_grec, $temp); } else { //Si existia y las propiedades pasaron a null, hay que borrarlo toba::memoria()->eliminar_dato_operacion($this->_id_ses_grec); } } }
/** * Determina si alguna componente recursiva del arreglo es un objeto php * @param array $variable * @return boolean */ function array_posee_objetos($variable) { foreach ($variable as $elemento) { if (is_object($elemento)) { return true; } if (is_array($elemento)) { return array_posee_objetos($elemento); } } return false; }