コード例 #1
0
 /**
  * @param array $aUnsortedMailFolders
  * @return void
  */
 public function InitByUnsortedMailFolderArray($aUnsortedMailFolders)
 {
     $this->Clear();
     $aSortedByLenImapFolders = array();
     foreach ($aUnsortedMailFolders as &$oMailFolder) {
         $aSortedByLenImapFolders[$oMailFolder->FullNameRaw()] =& $oMailFolder;
         unset($oMailFolder);
     }
     unset($aUnsortedMailFolders);
     $aAddedFolders = array();
     foreach ($aSortedByLenImapFolders as $oMailFolder) {
         $sDelimiter = $oMailFolder->Delimiter();
         $aFolderExplode = explode($sDelimiter, $oMailFolder->FullNameRaw());
         if (1 < count($aFolderExplode)) {
             array_pop($aFolderExplode);
             $sNonExistenFolderFullNameRaw = '';
             foreach ($aFolderExplode as $sFolderExplodeItem) {
                 $sNonExistenFolderFullNameRaw .= 0 < strlen($sNonExistenFolderFullNameRaw) ? $sDelimiter . $sFolderExplodeItem : $sFolderExplodeItem;
                 if (!isset($aSortedByLenImapFolders[$sNonExistenFolderFullNameRaw])) {
                     $aAddedFolders[$sNonExistenFolderFullNameRaw] = CApiMailFolder::NewNonExistenInstance($sNonExistenFolderFullNameRaw, $sDelimiter);
                 }
             }
         }
     }
     $aSortedByLenImapFolders = array_merge($aSortedByLenImapFolders, $aAddedFolders);
     unset($aAddedFolders);
     uasort($aSortedByLenImapFolders, array(&$this, 'aASortHelper'));
     // INBOX and Utf-7 modified sort
     $aFoot = $aTop = array();
     foreach ($aSortedByLenImapFolders as $sKey => &$oMailFolder) {
         if (0 === strpos($sKey, '&')) {
             $aFoot[] = $oMailFolder;
             unset($aSortedByLenImapFolders[$sKey]);
         } else {
             if ('INBOX' === strtoupper($sKey)) {
                 array_unshift($aTop, $oMailFolder);
                 unset($aSortedByLenImapFolders[$sKey]);
             } else {
                 if ('[GMAIL]' === strtoupper($sKey)) {
                     $aTop[] = $oMailFolder;
                     unset($aSortedByLenImapFolders[$sKey]);
                 }
             }
         }
     }
     $aSortedByLenImapFolders = array_merge($aTop, $aSortedByLenImapFolders, $aFoot);
     foreach ($aSortedByLenImapFolders as &$oMailFolder) {
         $this->AddWithPositionSearch($oMailFolder);
         unset($oMailFolder);
     }
     unset($aSortedByLenImapFolders);
 }