Пример #1
0
 /**
  * gets tmost recent page revision from the wiki
  */
 public static function get_page_data($page_id = false)
 {
     if ($page_id === false) {
         return array();
     }
     /* check for cache */
     $cache_key = "bios/" . $page_id;
     $page_data = json_decode(wkwCache::get_cache($cache_key));
     if (!$page_data) {
         /* get page from MediaWIki */
         $results = self::query(array('query' => 'page', 'term' => $page_id));
         $page_data = array();
         if ($results && $results->query && $results->query->pages) {
             /* use $all_names to supplement data */
             $all_names = self::get_all_names();
             foreach ($results->query->pages as $id => $name) {
                 foreach ($all_names as $n) {
                     if ($n->pageid == $id) {
                         $page_data['pageid'] = $n->pageid;
                         $page_data['title'] = $n->title;
                         $page_data['surname'] = $n->surname;
                         if (count($name->revisions)) {
                             foreach ($name->revisions[0] as $rev => $content) {
                                 $page_data['full_text'] = $content;
                                 $c = explode("<h2", $content);
                                 $page_data['biog'] = $c[0];
                                 break;
                             }
                         } else {
                             $page_data['full_text'] = '';
                             $page_data['biog'] = '';
                         }
                     }
                 }
             }
         }
         wkwCache::save_cache($cache_key, json_encode($page_data));
     }
     return $page_data;
 }
Пример #2
0
 /**
  * processes any changes from the datascape options page
  */
 public static function process_datascape_options()
 {
     /* first display any messages from Wordpress */
     if (isset($_REQUEST['settings-updated']) && $_REQUEST['settings-updated'] == "true") {
         echo '<div id="message" class="updated"><p><strong>Settings saved.</strong></p></div>';
     }
     settings_errors('wkw_datascape_options');
     /* process cache refresh actions */
     if (isset($_REQUEST["action"])) {
         switch ($_REQUEST["action"]) {
             case "refreshDataCache":
                 /* refreshes just the data cache */
                 if (isset($_REQUEST["wkw_nonce"]) && wp_verify_nonce($_REQUEST["wkw_nonce"], 'refreshDataCache')) {
                     wkwCache::force_refresh("data");
                     echo '<div class="updated"><p>Primary data cache refreshed</p></div>';
                 }
                 break;
             case "refreshBiogCache":
                 /* refreshes just the data cache */
                 if (isset($_REQUEST["wkw_nonce"]) && wp_verify_nonce($_REQUEST["wkw_nonce"], 'refreshBiogCache')) {
                     wkwCache::force_refresh("bios");
                     echo '<div class="updated"><p>Biography data cache refreshed</p></div>';
                 }
                 break;
             case "refreshLinkCache":
                 /* refreshes just the data cache */
                 if (isset($_REQUEST["wkw_nonce"]) && wp_verify_nonce($_REQUEST["wkw_nonce"], 'refreshLinkCache')) {
                     wkwCache::force_refresh("links");
                     echo '<div class="updated"><p>link data cache refreshed</p></div>';
                 }
                 break;
             case "refreshImageCache":
                 /* refreshesimage cache */
                 if (isset($_REQUEST["wkw_nonce"]) && wp_verify_nonce($_REQUEST["wkw_nonce"], 'refreshImageCache')) {
                     wkwCache::force_refresh("images");
                     echo '<div class="updated"><p>Image cache cleared - new images generated</p></div>';
                 }
                 break;
             case "refreshImage":
                 /* refreshes a single image */
                 $cacheDir = wkwCache::get_cache_dir("names");
                 if (isset($_REQUEST["wkw_pageid"])) {
                     $all_names = wkwMediaWiki::get_all_names();
                     foreach ($all_names as $name) {
                         if ($name->pageid == $_REQUEST["wkw_pageid"]) {
                             wkwFontImage::generate($name, true);
                             echo '<div class="updated"><p>New image generated for ' . $name->title . '</p></div>';
                             break;
                         }
                     }
                 } elseif (isset($_REQUEST["wkw_linkid"])) {
                     $f_img = $cacheDir . '/' . $_REQUEST["wkw_linkid"] . '.png';
                     $f_name = $cacheDir . '/' . $_REQUEST["wkw_linkid"] . '.txt';
                     if (file_exists($f_name)) {
                         $name = file_get_contents($f_name);
                         if (!empty($name)) {
                             $surname = wkwFontImage::get_unlinked_surname($name);
                             $n = (object) array('pageid' => $_REQUEST["wkw_linkid"], 'title' => $name, 'surname' => $surname, 'sortkeyprefix' => $surname, 'urltitle' => false, 'hasDetail' => false);
                             /* generate image for name */
                             wkwFontImage::generate($n);
                             echo '<div class="updated"><p>New image generated for ' . $name . '</p></div>';
                         }
                     }
                 }
                 break;
         }
     }
 }
Пример #3
0
 /**
  * cache freshener - called from theme option screen
  */
 public static function force_refresh($which = "data")
 {
     set_time_limit(0);
     $all_names = wkwMediaWiki::get_all_names();
     if ($all_names && count($all_names)) {
         switch ($which) {
             case "images":
                 self::clear_image_cache();
                 foreach ($all_names as $name) {
                     wkwFontImage::generate($name);
                 }
                 break;
             case "bios":
             case "links":
                 foreach ($all_names as $name) {
                     $getdata = true;
                     $data = wkwCache::get_cache_dir($which) . $name->pageid . '.json';
                     $touched = strtotime($name->touched);
                     if (file_exists($data) && filemtime($data) >= $touched) {
                         $getdata = false;
                     }
                     if ($getdata) {
                         @unlink($data);
                         $method = $which == "bios" ? "get_page_data" : "get_linked_names";
                         wkwMediaWiki::$method($name->pageid);
                     }
                 }
                 break;
             default:
                 self::clear_data_cache();
                 $all_names = wkwMediaWiki::get_all_names(true);
                 break;
         }
     }
 }