Esempio n. 1
0
 function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
 {
     // Need to look up all the menu items that are linked to blogs
     $results = array();
     $text = trim($text);
     if (empty($text)) {
         return $results;
     }
     if (is_array($areas)) {
         if (count(array_intersect($areas, array_keys($this->onContentSearchAreas()))) == 0) {
             return array();
         }
     }
     // We want to keep an eye on any blogs we've seen before, as
     // they may be linked in as multiple menus
     $seenBlogs = array();
     $menuIDs = WordbridgeHelper::getWordbridgeMenuIDs();
     $app = JFactory::getApplication();
     $menu = $app->getMenu();
     foreach ($menuIDs as $itemid) {
         $params = $menu->getParams($itemid);
         $blog_name = $params->get('wordbridge_blog_name');
         if (!$params || $params->get('wordbridge_searchable') == 'no' || empty($blog_name)) {
             continue;
         }
         if (array_key_exists($blog_name, $seenBlogs)) {
             continue;
         }
         $seenBlogs[$blog_name] = 1;
         // Create a curl request for the search
         $blogInfo = WordbridgeHelper::getBlogInfo($blog_name, true);
         if (!$blogInfo) {
             continue;
         }
         $url = sprintf('http://%s/?s=%s&feed=rss2', WordbridgeHelper::fqdnBlogName($blog_name), urlencode($text));
         $entries = WordbridgeHelper::getEntriesFromUrl($url);
         WordbridgeHelper::storeBlogEntries($entries, $blogInfo['uuid']);
         foreach ($entries as $entry) {
             $results[] = (object) array('href' => sprintf('index.php?option=com_wordbridge&Itemid=%d&view=entry&p=%d&slug=%s', $itemid, $entry['postid'], urlencode($entry['slug'])), 'title' => $entry['title'], 'section' => JText::_('PLG_SEARCH_WORDBRIDGE_AREA'), 'created' => $entry['date'], 'text' => strip_tags($entry['content']));
         }
     }
     // Results really should be sorted
     switch ($ordering) {
         case 'oldest':
             usort($results, array('plgSearchWordbridge', '_sortByOldest'));
             break;
         case 'alpha':
             usort($results, array('plgSearchWordbridge', '_sortByName'));
             break;
         case 'newest':
         default:
             usort($results, array('plgSearchWordbridge', '_sortByNewest'));
             break;
     }
     return $results;
 }
Esempio n. 2
0
 /**
  * Return an array of stats about a blog
  */
 function getBlogStats($blog_name = null)
 {
     // Lookup the menus that we're using
     $menuIDs = WordbridgeHelper::getWordbridgeMenuIDs();
     $menuToBlogMap = array();
     $app = JFactory::getApplication();
     $menu = $app->getMenu('site');
     foreach ($menuIDs as $itemid) {
         $params = $menu->getParams($itemid);
         $menu_blog_name = $params->get('wordbridge_blog_name');
         if (empty($menu_blog_name)) {
             continue;
         }
         if (!array_key_exists($menu_blog_name, $menuToBlogMap)) {
             $menuToBlogMap[$menu_blog_name] = array();
         }
         $menuToBlogMap[$menu_blog_name][] = $menu->getItem($itemid);
     }
     $db = JFactory::getDBO();
     foreach (array_keys($menuToBlogMap) as $blog) {
         $item = (object) array('blog_id' => '', 'blog_uuid' => '', 'blog_name' => $blog, 'description' => '', 'last_post' => '', 'updated' => null);
         $query = 'SELECT blog_id, blog_uuid, blog_name, description, last_post, UNIX_TIMESTAMP(updated) FROM #__com_wordbridge_blogs WHERE blog_name = ' . $db->quote($blog, true);
         $db->setQuery($query);
         $row = $db->loadRow();
         if ($row) {
             $item->blog_id = $row[0];
             $item->blog_uuid = $row[1];
             $item->blog_name = $row[2];
             $item->description = $row[3];
             $item->last_post = $row[4];
             $item->updated = $row[5];
         }
         // Look up the number of posts that are cached for this
         // blog
         $post_query = sprintf('SELECT COUNT(*) FROM #__com_wordbridge_posts WHERE blog_uuid = %s', $db->quote($item->blog_uuid, true));
         $db->setQuery($post_query);
         $item->post_count = $db->loadResult();
         // Look up the number of pages cached for this blog
         $page_query = sprintf('SELECT COUNT(*) FROM #__com_wordbridge_cache WHERE blog_uuid = %s', $db->quote($item->blog_uuid, true));
         $db->setQuery($page_query);
         $item->page_count = $db->loadResult();
         $item->menus = array();
         if (array_key_exists($item->blog_name, $menuToBlogMap)) {
             $item->menus = $menuToBlogMap[$item->blog_name];
         }
         $result[] = $item;
     }
     return $result;
 }