@@ -817,39 +817,31 @@ public function removeTempdata(string $key)
817
817
*/
818
818
public function markAsTempdata ($ key , int $ ttl = 300 ): bool
819
819
{
820
- $ ttl += Time::now ()->getTimestamp ();
820
+ $ time = Time::now ()->getTimestamp ();
821
+ $ keys = is_array ($ key ) ? $ key : [$ key ];
821
822
822
- if (is_array ($ key )) {
823
- $ temp = [];
824
-
825
- foreach ($ key as $ k => $ v ) {
826
- // Do we have a key => ttl pair, or just a key?
827
- if (is_int ($ k )) {
828
- $ k = $ v ;
829
- $ v = $ ttl ;
830
- } elseif (is_string ($ v )) {
831
- $ v = Time::now ()->getTimestamp () + $ ttl ;
832
- } else {
833
- $ v += Time::now ()->getTimestamp ();
834
- }
823
+ if (array_is_list ($ keys )) {
824
+ $ keys = array_fill_keys ($ keys , $ ttl );
825
+ }
835
826
836
- if (! array_key_exists ($ k , $ _SESSION )) {
837
- return false ;
838
- }
827
+ $ tempdata = [];
839
828
840
- $ temp [$ k ] = $ v ;
829
+ foreach ($ keys as $ sessionKey => $ timeToLive ) {
830
+ if (! array_key_exists ($ sessionKey , $ _SESSION )) {
831
+ return false ;
841
832
}
842
833
843
- $ _SESSION ['__ci_vars ' ] = isset ($ _SESSION ['__ci_vars ' ]) ? array_merge ($ _SESSION ['__ci_vars ' ], $ temp ) : $ temp ;
844
-
845
- return true ;
846
- }
834
+ if (is_int ($ timeToLive )) {
835
+ $ timeToLive += $ time ;
836
+ } else {
837
+ $ timeToLive = $ time + $ ttl ;
838
+ }
847
839
848
- if (! isset ($ _SESSION [$ key ])) {
849
- return false ;
840
+ $ tempdata [$ sessionKey ] = $ timeToLive ;
850
841
}
851
842
852
- $ _SESSION ['__ci_vars ' ][$ key ] = $ ttl ;
843
+ $ _SESSION ['__ci_vars ' ] ??= [];
844
+ $ _SESSION ['__ci_vars ' ] = [...$ _SESSION ['__ci_vars ' ], ...$ tempdata ];
853
845
854
846
return true ;
855
847
}
0 commit comments