예제 #1
0
 /**
  * 一覧をページの読みでソートし出力
  * @param string $type 一覧を表示するタイプ
  * @param boolean $force キャッシュを再生成する(※ページの経過時間はキャッシュの対象外)
  * @return array
  */
 private static function getHeadings($type = 'wiki', $force = false)
 {
     global $cache;
     static $heading;
     $cache_name = self::PAGENAME_HEADING_CACHE_PREFIX . $type;
     if ($force) {
         // キャッシュ再生成
         unset($heading[$type]);
         $cache['wiki']->removeItem($cache_name);
     } else {
         if (!empty($heading[$type])) {
             // メモリにキャッシュがある場合
             return $heading[$type];
         } else {
             if ($cache['wiki']->hasItem($cache_name)) {
                 // キャッシュから最終更新を読み込む
                 $heading[$type] = $cache['wiki']->getItem($cache_name);
                 return $heading[$type];
             }
         }
     }
     $ret = array();
     $pages = self::pages($type);
     if ($type !== 'attach') {
         foreach ($pages as $page) {
             // ここで一覧取得
             $initial = Reading::getReadingChar($page);
             // ページの読みを取得
             if ($initial === $page) {
                 // 読み込めなかった文字
                 $initial = Reading::OTHER_CHAR;
             } else {
                 if (preg_match('/^(' . Reading::SYMBOL_PATTERN . ')/u', $initial)) {
                     $initial = Reading::SYMBOL_CHAR;
                 }
             }
             // ページの頭文字でページとページの読みを保存
             $ret[$initial][$page] = Reading::getReading($page);
         }
     } else {
         foreach ($pages as $page => $a) {
             // ここで一覧取得
             $initial = Reading::getReadingChar($page);
             // ページの読みを取得
             if ($initial === $page) {
                 // 読み込めなかった文字
                 $initial = Reading::OTHER_CHAR;
             } else {
                 if (preg_match('/^(' . Reading::SYMBOL_PATTERN . ')/u', $initial)) {
                     $initial = Reading::SYMBOL_CHAR;
                 }
             }
             // ページの頭文字でページとページの読みを保存
             $ret[$initial][$page] = Reading::getReading($page);
         }
     }
     unset($initial, $page);
     // ページの索引でソート
     ksort($ret, SORT_NATURAL);
     foreach ($ret as $initial => &$pages) {
         // ページ名の「読み」でソート
         asort($pages, SORT_NATURAL);
         // 「読み」でソートしたやつを$headingに保存
         $heading[$type][$initial] = array_keys($pages);
     }
     unset($ret);
     // キャッシュに保存
     $cache['wiki']->setItem($cache_name, $heading[$type]);
     return $heading[$type];
 }
예제 #2
0
 /**
  * 一覧をページの読みでソートし出力
  * @param string $dir ディレクトリ
  * @param boolean $force キャッシュを再生成する(※ページの経過時間はキャッシュの対象外)
  * @return array
  */
 private static function getHeadings($dir = DATA_DIR, $force = false)
 {
     global $cache;
     static $heading;
     $func = self::getCacheName($dir);
     $cache_name = self::PAGENAME_HEADING_CACHE_PREFIX . $func;
     if ($force) {
         // キャッシュ再生成
         unset($heading[$func]);
         $cache['wiki']->removeItem($cache_name);
     } else {
         if (!empty($heading[$func])) {
             // メモリにキャッシュがある場合
             return $heading[$func];
         } else {
             if ($cache['wiki']->hasItem($cache_name)) {
                 // キャッシュから最終更新を読み込む
                 $heading[$func] = $cache['wiki']->getItem($cache_name);
                 return $heading[$func];
             }
         }
     }
     foreach (self::getExists($dir) as $file => $page) {
         $initial = Reading::getReadingChar($page);
         if ($initial === $page) {
             // 読み込めなかった文字
             $initial = Reading::OTHER_CHAR;
         } else {
             if (preg_match('/^(' . Reading::SYMBOL_PATTERN . ')/u', $initial)) {
                 $initial = Reading::SYMBOL_CHAR;
             }
         }
         // ページの頭文字でページとページの読みを保存
         $ret[$initial][$page] = Reading::getReading($page);
     }
     unset($initial, $page);
     // ページの索引でソート
     ksort($ret, SORT_NATURAL);
     foreach ($ret as $initial => &$pages) {
         // ページ名の「読み」でソート
         asort($pages, SORT_NATURAL);
         // 「読み」でソートしたやつを$headingに保存
         $heading[$func][$initial] = array_keys($pages);
     }
     unset($ret);
     // キャッシュに保存
     $cache['wiki']->setItem($cache_name, $heading[$func]);
     return $heading[$func];
 }