@@ -83,8 +83,8 @@ public function get_folders($folder = null, $only_subscribed = false, $unsubscri
8383 $ folders = [$ folders ];
8484 }
8585 foreach ($ folders as $ folder ) {
86- $ id = bin2hex ( $ folder ->getFolderId ()->getId () );
87- $ parentId = bin2hex ( $ folder ->getParentFolderId ()->getId () );
86+ $ id = $ folder ->getFolderId ()->getId ();
87+ $ parentId = $ folder ->getParentFolderId ()->getId ();
8888 $ name = $ folder ->getDisplayName ();
8989 if ($ only_subscribed && in_array ($ id , $ unsubscribed_folders )) {
9090 continue ;
@@ -119,15 +119,15 @@ public function get_special_use_folders($folder = false) {
119119 'flagged ' => false ,
120120 'all ' => false ,
121121 'junk ' => Enumeration \DistinguishedFolderIdNameType::JUNKEMAIL ,
122- 'archive ' => Enumeration \DistinguishedFolderIdNameType:: ARCHIVE ,
122+ 'archive ' => false ,
123123 'drafts ' => Enumeration \DistinguishedFolderIdNameType::DRAFTS ,
124124 ];
125125 foreach ($ special as $ type => $ folderId ) {
126126 if ($ folderId ) {
127127 try {
128128 $ distinguishedFolder = $ this ->api ->getFolderByDistinguishedId ($ folderId );
129129 if ($ distinguishedFolder ) {
130- $ special [$ type ] = bin2hex ( $ distinguishedFolder ->getFolderId ()->getId () );
130+ $ special [$ type ] = $ distinguishedFolder ->getFolderId ()->getId ();
131131 }
132132 } catch (\Exception $ e ) {
133133 Hm_Msgs::add ($ e ->getMessage (), 'danger ' );
@@ -150,100 +150,17 @@ public function get_folder_name_quick($folder) {
150150 }
151151 }
152152
153- /**
154- * TODO: Remove this one, we needed it only while testing
155- * Find a folder by its display name
156- * @param string $folderName The display name to search for
157- * @param string $parentFolder Parent folder ID (hex) or distinguished folder name
158- * @return array|false Folder details or false if not found
159- */
160- public function find_folder_by_name ($ folderName , $ parentFolder = null ) {
161- if (!$ parentFolder ) {
162- $ parentFolder = new Type \DistinguishedFolderIdType (Enumeration \DistinguishedFolderIdNameType::MSGFOLDERROOT );
163- } elseif ($ this ->is_distinguished_folder ($ parentFolder )) {
164- $ parentFolder = new Type \DistinguishedFolderIdType ($ parentFolder );
165- } elseif (ctype_xdigit ($ parentFolder )) {
166- $ parentFolder = new Type \FolderIdType (hex2bin ($ parentFolder ));
167- } else {
168- return false ;
169- }
170-
171- $ findFolderRequest = array (
172- 'Traversal ' => 'Shallow ' ,
173- 'FolderShape ' => array (
174- 'BaseShape ' => 'Default '
175- ),
176- 'ParentFolderIds ' => $ parentFolder ->toArray (true ),
177- 'Restriction ' => array (
178- 'IsEqualTo ' => array (
179- 'FieldURI ' => array (
180- 'FieldURI ' => 'folder:DisplayName '
181- ),
182- 'FieldURIOrConstant ' => array (
183- 'Constant ' => array (
184- 'Value ' => $ folderName
185- )
186- )
187- )
188- )
189- );
190-
191- try {
192- $ response = $ this ->ews ->FindFolder ($ findFolderRequest );
193- $ folders = $ response ->getFolders ()->getFolder ();
194-
195- if ($ folders ) {
196- if ($ folders instanceof Type \FolderType) {
197- $ folders = [$ folders ];
198- }
199-
200- foreach ($ folders as $ folder ) {
201- return [
202- 'id ' => bin2hex ($ folder ->getFolderId ()->getId ()),
203- 'name ' => $ folder ->getDisplayName (),
204- 'parent ' => !is_null ($ folder ->getParentFolderId ()) ? bin2hex ($ folder ->getParentFolderId ()->getId ()) : null ,
205- 'messages ' => $ folder ->getTotalCount () ?? 0 ,
206- 'unseen ' => $ folder ->getUnreadCount () ?? 0 ,
207- ];
208- }
209- }
210- } catch (\Exception $ e ) {
211- Hm_Msgs::add ('Error finding folder: ' . $ e ->getMessage (), 'danger ' );
212- }
213-
214- return false ;
215- }
216-
217153 public function get_folder_status ($ folder , $ report_error = true ) {
218154 try {
219155 if ($ this ->is_distinguished_folder ($ folder )) {
220156 $ folderObj = new Type \DistinguishedFolderIdType ($ folder );
221157 $ result = $ this ->api ->getFolder ($ folderObj ->toArray (true ));
222- } elseif (ctype_xdigit ($ folder ) || base64_encode (base64_decode ($ folder , true )) === $ folder ) {
223- $ folderObj = new Type \FolderIdType (hex2bin ($ folder ));
224- $ result = $ this ->api ->getFolder ($ folderObj ->toArray (true ));
225-
226158 } else {
227- // TODO: To be removed, we needed it only while testing
228- // Try to find by display name using our new function
229- $ folderData = $ this ->find_folder_by_name ($ folder );
230- if ($ folderData ) {
231- return [
232- 'id ' => $ folderData ['id ' ],
233- 'name ' => $ folderData ['name ' ],
234- 'messages ' => $ folderData ['messages ' ],
235- 'uidvalidity ' => false ,
236- 'uidnext ' => false ,
237- 'recent ' => false ,
238- 'unseen ' => $ folderData ['unseen ' ],
239- ];
240- } else {
241- return [];
242- // ; throw new Exception('Folder not found: ' . $folder);
243- }
159+ $ folderObj = new Type \FolderIdType ($ folder );
160+ $ result = $ this ->api ->getFolder ($ folderObj ->toArray (true ));
244161 }
245162 return [
246- 'id ' => bin2hex ( $ result ->getFolderId ()->getId () ),
163+ 'id ' => $ result ->getFolderId ()->getId (),
247164 'name ' => $ result ->getDisplayName (),
248165 'messages ' => $ result ->getTotalCount (),
249166 'uidvalidity ' => false ,
@@ -266,7 +183,7 @@ public function create_folder($folder, $parent = null) {
266183 if (empty ($ parent )) {
267184 $ parent = new Type \DistinguishedFolderIdType (Enumeration \DistinguishedFolderIdNameType::MESSAGE_ROOT );
268185 } else {
269- $ parent = new Type \FolderIdType (hex2bin ( $ parent) );
186+ $ parent = new Type \FolderIdType ($ parent );
270187 }
271188 try {
272189 $ request = [
@@ -276,7 +193,7 @@ public function create_folder($folder, $parent = null) {
276193 'ParentFolderId ' => $ parent ->toArray (true ),
277194 ];
278195 $ result = $ this ->ews ->CreateFolder ($ request );
279- return bin2hex ( $ result ->getId () );
196+ return $ result ->getId ();
280197 } catch (\Exception $ e ) {
281198 Hm_Msgs::add ($ e ->getMessage (), 'danger ' );
282199 return false ;
@@ -338,7 +255,6 @@ public function rename_folder($folder, $new_name, $parent = null) {
338255
339256 public function delete_folder ($ folder ) {
340257 try {
341- // Convert hex ID to binary for EWS
342258 return $ this ->api ->deleteFolder (new Type \FolderIdType (hex2bin ($ folder )));
343259 } catch (\Exception $ e ) {
344260 Hm_Msgs::add ($ e ->getMessage (), 'danger ' );
@@ -423,12 +339,10 @@ public function search($folder, $sort, $reverse, $flag_filter, $offset, $limit,
423339 $ lower_folder = strtolower ($ folder );
424340 if ($ this ->is_distinguished_folder ($ lower_folder )) {
425341 $ folderObj = new Type \DistinguishedFolderIdType ($ lower_folder );
342+ } elseif (ctype_xdigit ($ folder )) {
343+ $ folderObj = new Type \FolderIdType (hex2bin ($ folder ));
426344 } else {
427- if (!hex2bin ($ folder )) {
428- $ folderObj = new Type \FolderIdType ($ folder );
429- }else {
430- $ folderObj = new Type \FolderIdType (hex2bin ($ folder ));
431- }
345+ $ folderObj = new Type \FolderIdType ($ folder );
432346 }
433347 $ request = array (
434348 'Traversal ' => 'Shallow ' ,
@@ -1150,7 +1064,6 @@ protected function move_items_to_junk($itemIds) {
11501064 'DestinationFolderId ' => $ junkFolder ->toArray (true ),
11511065 'ItemIds ' => [
11521066 'ItemId ' => $ itemIds = array_map (function ($ itemId ) {
1153- // Convert hex item ID to binary for EWS API
11541067 return (new Type \ItemIdType (hex2bin ($ itemId )))->toArray ();
11551068 }, $ itemIds ),
11561069 ]
@@ -1185,13 +1098,13 @@ protected function delete_items($itemIds, $hard = false) {
11851098 return false ;
11861099 }
11871100 foreach ($ folders as $ folder => $ itemIds ) {
1188- if ($ trash && bin2hex ( $ trash ->getFolderId ()->getId () ) == $ folder ) {
1101+ if ($ trash && $ trash ->getFolderId ()->getId () == $ folder ) {
11891102 $ options = ['DeleteType ' => 'HardDelete ' ];
11901103 } else {
11911104 $ options = [];
11921105 }
11931106 $ binaryItemIds = array_map (function ($ itemId ) {
1194- return (new Type \ItemIdType (hex2bin ( $ itemId) ))->toArray ();
1107+ return (new Type \ItemIdType ($ itemId ))->toArray ();
11951108 }, $ itemIds );
11961109 $ result = $ result && $ this ->api ->deleteItems ($ binaryItemIds , $ options );
11971110 }
@@ -1207,8 +1120,7 @@ protected function copy_items($itemIds, $folder) {
12071120 if ($ this ->is_distinguished_folder ($ folder )) {
12081121 $ folder = new Type \DistinguishedFolderIdType ($ folder );
12091122 } else {
1210- // Convert hex folder ID to binary for EWS API
1211- $ folder = new Type \FolderIdType (hex2bin ($ folder ));
1123+ $ folder = new Type \FolderIdType ($ folder );
12121124 }
12131125 $ request = [
12141126 'ToFolderId ' => $ folder ->toArray (true ),
@@ -1225,8 +1137,7 @@ protected function copy_items($itemIds, $folder) {
12251137 $ result = [$ result ];
12261138 }
12271139 $ result = array_map (function ($ itemId ) {
1228- // Convert binary result back to hex format
1229- return bin2hex ($ itemId ->getId ());
1140+ return $ itemId ->getId ();
12301141 }, $ result );
12311142 } catch (\Exception $ e ) {
12321143 Hm_Msgs::add ($ e ->getMessage (), 'danger ' );
@@ -1239,7 +1150,7 @@ protected function move_items($itemIds, $folder) {
12391150 if ($ this ->is_distinguished_folder ($ folder )) {
12401151 $ folder = new Type \DistinguishedFolderIdType ($ folder );
12411152 } else {
1242- $ folder = new Type \FolderIdType (hex2bin ( $ folder) );
1153+ $ folder = new Type \FolderIdType ($ folder );
12431154 }
12441155 $ request = [
12451156 'ToFolderId ' => $ folder ->toArray (true ),
@@ -1257,7 +1168,7 @@ protected function move_items($itemIds, $folder) {
12571168 $ result = [$ result ];
12581169 }
12591170 $ result = array_map (function ($ itemId ) {
1260- return bin2hex ( $ itemId ->getId () );
1171+ return $ itemId ->getId ();
12611172 }, $ result );
12621173 } catch (\Exception $ e ) {
12631174 Hm_Msgs::add ($ e ->getMessage (), 'danger ' );
@@ -1288,11 +1199,11 @@ protected function get_parent_folders_of_items($itemIds) {
12881199 $ result = [$ result ];
12891200 }
12901201 foreach ($ result as $ message ) {
1291- $ folder = bin2hex ( $ message ->getParentFolderId ()->getId () );
1202+ $ folder = $ message ->getParentFolderId ()->getId ();
12921203 if (! isset ($ folders [$ folder ])) {
12931204 $ folders [$ folder ] = [];
12941205 }
1295- $ folders [$ folder ][] = bin2hex ( $ message ->getItemId ()->getId () );
1206+ $ folders [$ folder ][] = $ message ->getItemId ()->getId ();
12961207 }
12971208 return $ folders ;
12981209 }
0 commit comments