forked from GNUsocial/gnu-social
		
	Merge branch 'master' of ../trunk
This commit is contained in:
		| @@ -1,5 +1,16 @@ | |||||||
| <?php | <?php | ||||||
| /* | /** | ||||||
|  |  * People search action class. | ||||||
|  |  * | ||||||
|  |  * PHP version 5 | ||||||
|  |  * | ||||||
|  |  * @category Action | ||||||
|  |  * @package  Laconica | ||||||
|  |  * @author   Evan Prodromou <evan@controlyourself.ca> | ||||||
|  |  * @author   Robin Millette <millette@controlyourself.ca> | ||||||
|  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | ||||||
|  |  * @link     http://laconi.ca/ | ||||||
|  |  * | ||||||
|  * Laconica - a distributed open-source microblogging tool |  * Laconica - a distributed open-source microblogging tool | ||||||
|  * Copyright (C) 2008, Controlez-Vous, Inc. |  * Copyright (C) 2008, Controlez-Vous, Inc. | ||||||
|  * |  * | ||||||
| @@ -17,26 +28,37 @@ | |||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| if (!defined('LACONICA')) { exit(1); } | if (!defined('LACONICA')) { | ||||||
|  |     exit(1); | ||||||
|  | } | ||||||
|  |  | ||||||
| require_once(INSTALLDIR.'/lib/searchaction.php'); | require_once INSTALLDIR.'/lib/searchaction.php'; | ||||||
| require_once(INSTALLDIR.'/lib/profilelist.php'); | require_once INSTALLDIR.'/lib/profilelist.php'; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * People search action class. | ||||||
|  |  * | ||||||
|  |  * @category Action | ||||||
|  |  * @package  Laconica | ||||||
|  |  * @author   Evan Prodromou <evan@controlyourself.ca> | ||||||
|  |  * @author   Robin Millette <millette@controlyourself.ca> | ||||||
|  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | ||||||
|  |  * @link     http://laconi.ca/ | ||||||
|  |  */ | ||||||
| class PeoplesearchAction extends SearchAction | class PeoplesearchAction extends SearchAction | ||||||
| { | { | ||||||
|  |     function getInstructions() | ||||||
|     function get_instructions() |  | ||||||
|     { |     { | ||||||
|         return _('Search for people on %%site.name%% by their name, location, or interests. ' . |         return _('Search for people on %%site.name%% by their name, location, or interests. ' . | ||||||
|                   'Separate the terms by spaces; they must be 3 characters or more.'); |                   'Separate the terms by spaces; they must be 3 characters or more.'); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function get_title() |     function title() | ||||||
|     { |     { | ||||||
|         return _('People search'); |         return _('People search'); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function show_results($q, $page) |     function showResults($q, $page) | ||||||
|     { |     { | ||||||
|  |  | ||||||
|         $profile = new Profile(); |         $profile = new Profile(); | ||||||
| @@ -57,28 +79,27 @@ class PeoplesearchAction extends SearchAction | |||||||
|         } |         } | ||||||
|         if ($cnt > 0) { |         if ($cnt > 0) { | ||||||
|             $terms = preg_split('/[\s,]+/', $q); |             $terms = preg_split('/[\s,]+/', $q); | ||||||
|             $results = new PeopleSearchResults($profile, $terms); |             $results = new PeopleSearchResults($profile, $terms, $this); | ||||||
|             $results->show_list(); |             $results->show(); | ||||||
|         } else { |         } else { | ||||||
|             $this->element('p', 'error', _('No results')); |             $this->element('p', 'error', _('No results')); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $profile->free(); |         $profile->free(); | ||||||
|          |          | ||||||
|         common_pagination($page > 1, $cnt > PROFILES_PER_PAGE, |         $this->pagination($page > 1, $cnt > PROFILES_PER_PAGE, | ||||||
|                           $page, 'peoplesearch', array('q' => $q)); |                           $page, 'peoplesearch', array('q' => $q)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| class PeopleSearchResults extends ProfileList | class PeopleSearchResults extends ProfileList | ||||||
| { | { | ||||||
|  |  | ||||||
|     var $terms = null; |     var $terms = null; | ||||||
|     var $pattern = null; |     var $pattern = null; | ||||||
|      |      | ||||||
|     function __construct($profile, $terms) |     function __construct($profile, $terms, $action) | ||||||
|     { |     { | ||||||
|         parent::__construct($profile); |         parent::__construct($profile, $terms, $action); | ||||||
|         $this->terms = array_map('preg_quote',  |         $this->terms = array_map('preg_quote',  | ||||||
|                                  array_map('htmlspecialchars', $terms)); |                                  array_map('htmlspecialchars', $terms)); | ||||||
|         $this->pattern = '/('.implode('|',$terms).')/i'; |         $this->pattern = '/('.implode('|',$terms).')/i'; | ||||||
| @@ -89,3 +110,4 @@ class PeopleSearchResults extends ProfileList | |||||||
|         return preg_replace($this->pattern, '<strong>\\1</strong>', htmlspecialchars($text)); |         return preg_replace($this->pattern, '<strong>\\1</strong>', htmlspecialchars($text)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -21,12 +21,10 @@ if (!defined('LACONICA')) { exit(1); } | |||||||
|  |  | ||||||
| class SubeditAction extends Action | class SubeditAction extends Action | ||||||
| { | { | ||||||
|  |  | ||||||
|     var $profile = null; |     var $profile = null; | ||||||
|  |  | ||||||
|     function prepare($args) |     function prepare($args) | ||||||
|     { |     { | ||||||
|  |  | ||||||
|         parent::prepare($args); |         parent::prepare($args); | ||||||
|  |  | ||||||
|         if (!common_logged_in()) { |         if (!common_logged_in()) { | ||||||
| @@ -37,8 +35,9 @@ class SubeditAction extends Action | |||||||
|         $token = $this->trimmed('token'); |         $token = $this->trimmed('token'); | ||||||
|  |  | ||||||
|         if (!$token || $token != common_session_token()) { |         if (!$token || $token != common_session_token()) { | ||||||
|             $this->clientError(_('There was a problem with your session token. Try again, please.')); |             $this->clientError(_('There was a problem with your session token. '. | ||||||
|             return; |                                  'Try again, please.')); | ||||||
|  |             return false; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $id = $this->trimmed('profile'); |         $id = $this->trimmed('profile'); | ||||||
|   | |||||||
| @@ -184,15 +184,13 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) | |||||||
|         // Display an error if the form markup couldn't be generated; |         // Display an error if the form markup couldn't be generated; | ||||||
|         // otherwise, render the HTML. |         // otherwise, render the HTML. | ||||||
|         if (Auth_OpenID::isFailure($form_html)) { |         if (Auth_OpenID::isFailure($form_html)) { | ||||||
|             $this->show_form(sprintf(_('Could not create OpenID form: %s'), $form_html->message)); |             common_server_error(sprintf(_('Could not create OpenID form: %s'), $form_html->message)); | ||||||
|         } else { |         } else { | ||||||
|             common_show_header(_('OpenID Auto-Submit'), null, null, '_oid_print_instructions'); |             $action = new AutosubmitAction(); // see below | ||||||
|             common_raw($form_html); |             $action->form_html = $form_html; | ||||||
|             common_element('script', null, |             $action->form_id = $form_id; | ||||||
|                            '$(document).ready(function() { ' . |             $action->prepare(array('action' => 'autosubmit')); | ||||||
|                            '    $("#'. $form_id .'").submit(); '. |             $action->handle(array('action' => 'autosubmit')); | ||||||
|                            '});'); |  | ||||||
|             common_show_footer(); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -251,3 +249,29 @@ function oid_update_user(&$user, &$sreg) | |||||||
|  |  | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | class AutosubmitAction extends Action | ||||||
|  | { | ||||||
|  |     var $form_html = null; | ||||||
|  |     var $form_id = null; | ||||||
|  |  | ||||||
|  |     function handle($args) | ||||||
|  |     { | ||||||
|  |         parent::handle($args); | ||||||
|  |         $this->showPage(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function title() | ||||||
|  |     { | ||||||
|  |         return _('OpenID Auto-Submit'); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function showContent() | ||||||
|  |     { | ||||||
|  |         $this->raw($this->form_html); | ||||||
|  |         $this->element('script', null, | ||||||
|  |                        '$(document).ready(function() { ' . | ||||||
|  |                        '    $(\'#'. $this->form_id .'\').submit(); '. | ||||||
|  |                        '});'); | ||||||
|  |     } | ||||||
|  | } | ||||||
|   | |||||||
| @@ -1,5 +1,16 @@ | |||||||
| <?php | <?php | ||||||
| /* | /** | ||||||
|  |  * Base search action class. | ||||||
|  |  * | ||||||
|  |  * PHP version 5 | ||||||
|  |  * | ||||||
|  |  * @category Action | ||||||
|  |  * @package  Laconica | ||||||
|  |  * @author   Evan Prodromou <evan@controlyourself.ca> | ||||||
|  |  * @author   Robin Millette <millette@controlyourself.ca> | ||||||
|  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | ||||||
|  |  * @link     http://laconi.ca/ | ||||||
|  |  * | ||||||
|  * Laconica - a distributed open-source microblogging tool |  * Laconica - a distributed open-source microblogging tool | ||||||
|  * Copyright (C) 2008, Controlez-Vous, Inc. |  * Copyright (C) 2008, Controlez-Vous, Inc. | ||||||
|  * |  * | ||||||
| @@ -17,12 +28,30 @@ | |||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| if (!defined('LACONICA')) { exit(1); } | if (!defined('LACONICA')) { | ||||||
|  |     exit(1); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | require_once INSTALLDIR.'/lib/searchgroupnav.php'; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Base search action class. | ||||||
|  |  * | ||||||
|  |  * @category Action | ||||||
|  |  * @package  Laconica | ||||||
|  |  * @author   Evan Prodromou <evan@controlyourself.ca> | ||||||
|  |  * @author   Robin Millette <millette@controlyourself.ca> | ||||||
|  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | ||||||
|  |  * @link     http://laconi.ca/ | ||||||
|  |  */ | ||||||
| class SearchAction extends Action | class SearchAction extends Action | ||||||
| { | { | ||||||
|  |     /** | ||||||
|     function is_readonly() |      * Return true if read only. | ||||||
|  |      * | ||||||
|  |      * @return boolean true | ||||||
|  |      */ | ||||||
|  |     function isReadOnly() | ||||||
|     { |     { | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
| @@ -30,27 +59,41 @@ class SearchAction extends Action | |||||||
|     function handle($args) |     function handle($args) | ||||||
|     { |     { | ||||||
|         parent::handle($args); |         parent::handle($args); | ||||||
|         $this->show_form(); |         $this->showPage(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function show_top($arr=null) |     /** | ||||||
|  |      * Show tabset for this page | ||||||
|  |      * | ||||||
|  |      * Uses the SearchGroupNav widget | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      * @see SearchGroupNav | ||||||
|  |      */ | ||||||
|  |  | ||||||
|  |     function showLocalNav() | ||||||
|  |     { | ||||||
|  |         $nav = new SearchGroupNav($this); | ||||||
|  |         $nav->show(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function showTop($arr=null) | ||||||
|     { |     { | ||||||
|         if ($arr) { |         if ($arr) { | ||||||
|             $error = $arr[1]; |             $error = $arr[1]; | ||||||
|         } |         } | ||||||
|         if ($error) { |         if ($error) { | ||||||
|             common_element('p', 'error', $error); |             $this->element('p', 'error', $error); | ||||||
|         } else { |         } else { | ||||||
|             $instr = $this->get_instructions(); |             $instr = $this->getInstructions(); | ||||||
|             $output = common_markup_to_html($instr); |             $output = common_markup_to_html($instr); | ||||||
|             common_element_start('div', 'instructions'); |             $this->elementStart('div', 'instructions'); | ||||||
|             common_raw($output); |             $this->raw($output); | ||||||
|             common_element_end('div'); |             $this->elementEnd('div'); | ||||||
|         } |         } | ||||||
|         $this->search_menu(); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function get_title() |     function title() | ||||||
|     { |     { | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
| @@ -60,59 +103,37 @@ class SearchAction extends Action | |||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function show_form($error=null) |     function showNoticeForm() { | ||||||
|  |         // remote post notice form | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function showContent() { | ||||||
|  |         $this->showTop(); | ||||||
|  |         $this->showForm(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function showForm($error=null) | ||||||
|     { |     { | ||||||
|         global $config; |         global $config; | ||||||
|  |  | ||||||
|         $q = $this->trimmed('q'); |         $q = $this->trimmed('q'); | ||||||
|         $page = $this->trimmed('page', 1); |         $page = $this->trimmed('page', 1); | ||||||
|  |         $this->elementStart('form', array('method' => 'get', | ||||||
|         common_show_header($this->get_title(), array($this, 'show_header'), array($q, $error), |  | ||||||
|                            array($this, 'show_top')); |  | ||||||
|         common_element_start('form', array('method' => 'get', |  | ||||||
|                                            'id' => 'login', |                                            'id' => 'login', | ||||||
|                                            'action' => common_local_url($this->trimmed('action')))); |                                            'action' => common_local_url($this->trimmed('action')))); | ||||||
|         common_element_start('p'); |         $this->elementStart('p'); | ||||||
|         if (!isset($config['site']['fancy']) || !$config['site']['fancy']) { |         if (!isset($config['site']['fancy']) || !$config['site']['fancy']) { | ||||||
|             common_element('input', array('name' => 'action', |             $this->hidden('action', $this->trimmed('action')); | ||||||
|                                           'type' => 'hidden', |  | ||||||
|                                           'value' => $this->trimmed('action'))); |  | ||||||
|         } |         } | ||||||
|         common_element('input', array('name' => 'q', |         $this->input('q', '', $q); | ||||||
|                                       'id' => 'q', |         $this->text(' '); | ||||||
|                                       'type' => 'text', |         $this->submit('search', 'Search'); | ||||||
|                                       'class' => 'input_text', |  | ||||||
|                                       'value' => ($q) ? $q : '')); |  | ||||||
|         common_text(' '); |  | ||||||
|         common_element('input', array('type' => 'submit', |  | ||||||
|                                       'id' => 'search', |  | ||||||
|                                       'name' => 'search', |  | ||||||
|                                       'class' => 'submit', |  | ||||||
|                                       'value' => _('Search'))); |  | ||||||
|  |  | ||||||
|         common_element_end('p'); |         $this->elementEnd('p'); | ||||||
|         common_element_end('form'); |         $this->elementEnd('form'); | ||||||
|         if ($q) { |         if ($q) { | ||||||
|             $this->show_results($q, $page); |             $this->showResults($q, $page); | ||||||
|         } |         } | ||||||
|         common_show_footer(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     function search_menu() |  | ||||||
|     { |  | ||||||
|         # action => array('prompt', 'title', $args) |  | ||||||
|         $action = $this->trimmed('action'); |  | ||||||
|         $menu = |  | ||||||
|           array('peoplesearch' => |  | ||||||
|                 array( |  | ||||||
|                       _('People'), |  | ||||||
|                       _('Find people on this site'), |  | ||||||
|                       ($action != 'peoplesearch' && $this->trimmed('q')) ? array('q' => $this->trimmed('q')) : null), |  | ||||||
|                 'noticesearch' => |  | ||||||
|                 array( _('Text'), |  | ||||||
|                        _('Find content of notices'), |  | ||||||
|                        ($action != 'noticesearch' && $this->trimmed('q')) ? array('q' => $this->trimmed('q')) : null) |  | ||||||
|                 ); |  | ||||||
|         $this->nav_menu($menu); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user