Make WebChannel and AjaxWebChannel work
These command-output channels were using the old common_element_* functions. They now take an $out constructor parameter, and use that for output. The WebChannel has pretty remedial output; it would be nice if it output a real formatted page.
This commit is contained in:
		@@ -141,9 +141,9 @@ class NewnoticeAction extends Action
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if ($cmd) {
 | 
					        if ($cmd) {
 | 
				
			||||||
            if ($this->boolean('ajax')) {
 | 
					            if ($this->boolean('ajax')) {
 | 
				
			||||||
                $cmd->execute(new AjaxWebChannel());
 | 
					                $cmd->execute(new AjaxWebChannel($this));
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                $cmd->execute(new WebChannel());
 | 
					                $cmd->execute(new WebChannel($this));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ if (!defined('LACONICA')) { exit(1); }
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class Channel
 | 
					class Channel
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function on($user)
 | 
					    function on($user)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
@@ -36,12 +36,12 @@ class Channel
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function error($user, $text)
 | 
					    function error($user, $text)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function source()
 | 
					    function source()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
@@ -52,22 +52,22 @@ class XMPPChannel extends Channel
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var $conn = null;
 | 
					    var $conn = null;
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function source()
 | 
					    function source()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return 'xmpp';
 | 
					        return 'xmpp';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function __construct($conn)
 | 
					    function __construct($conn)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->conn = $conn;
 | 
					        $this->conn = $conn;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function on($user)
 | 
					    function on($user)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->set_notify($user, 1);
 | 
					        return $this->set_notify($user, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function off($user)
 | 
					    function off($user)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->set_notify($user, 0);
 | 
					        return $this->set_notify($user, 0);
 | 
				
			||||||
@@ -78,13 +78,13 @@ class XMPPChannel extends Channel
 | 
				
			|||||||
        $text = '['.common_config('site', 'name') . '] ' . $text;
 | 
					        $text = '['.common_config('site', 'name') . '] ' . $text;
 | 
				
			||||||
        jabber_send_message($user->jabber, $text);
 | 
					        jabber_send_message($user->jabber, $text);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function error($user, $text)
 | 
					    function error($user, $text)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $text = '['.common_config('site', 'name') . '] ' . $text;
 | 
					        $text = '['.common_config('site', 'name') . '] ' . $text;
 | 
				
			||||||
        jabber_send_message($user->jabber, $text);
 | 
					        jabber_send_message($user->jabber, $text);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function set_notify(&$user, $notify)
 | 
					    function set_notify(&$user, $notify)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $orig = clone($user);
 | 
					        $orig = clone($user);
 | 
				
			||||||
@@ -105,20 +105,25 @@ class XMPPChannel extends Channel
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
class WebChannel extends Channel
 | 
					class WebChannel extends Channel
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    var $out = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function __construct($out=null)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->out = $out;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function source()
 | 
					    function source()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return 'web';
 | 
					        return 'web';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function on($user)
 | 
					    function on($user)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function off($user)
 | 
					    function off($user)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
@@ -129,47 +134,49 @@ class WebChannel extends Channel
 | 
				
			|||||||
        # XXX: buffer all output and send it at the end
 | 
					        # XXX: buffer all output and send it at the end
 | 
				
			||||||
        # XXX: even better, redirect to appropriate page
 | 
					        # XXX: even better, redirect to appropriate page
 | 
				
			||||||
        #      depending on what command was run
 | 
					        #      depending on what command was run
 | 
				
			||||||
        common_show_header(_('Command results'));
 | 
					        $this->out->startHTML();
 | 
				
			||||||
        common_element('p', null, $text);
 | 
					        $this->out->elementStart('head');
 | 
				
			||||||
        common_show_footer();
 | 
					        $this->out->element('title', null, _('Command results'));
 | 
				
			||||||
 | 
					        $this->out->elementEnd('head');
 | 
				
			||||||
 | 
					        $this->out->elementStart('body');
 | 
				
			||||||
 | 
					        $this->out->element('p', array('id' => 'command_result'), $text);
 | 
				
			||||||
 | 
					        $this->out->elementEnd('body');
 | 
				
			||||||
 | 
					        $this->out->endHTML();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function error($user, $text)
 | 
					    function error($user, $text)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        common_user_error($text);
 | 
					        common_user_error($text);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
class AjaxWebChannel extends WebChannel
 | 
					class AjaxWebChannel extends WebChannel
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					 | 
				
			||||||
    function output($user, $text)
 | 
					    function output($user, $text)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        common_start_html('text/xml;charset=utf-8', true);
 | 
					        $this->out->startHTML('text/xml;charset=utf-8');
 | 
				
			||||||
        common_element_start('head');
 | 
					        $this->out->elementStart('head');
 | 
				
			||||||
        common_element('title', null, _('Command results'));
 | 
					        $this->out->element('title', null, _('Command results'));
 | 
				
			||||||
        common_element_end('head');
 | 
					        $this->out->elementEnd('head');
 | 
				
			||||||
        common_element_start('body');
 | 
					        $this->out->elementStart('body');
 | 
				
			||||||
        common_element('p', array('id' => 'command_result'), $text);
 | 
					        $this->out->element('p', array('id' => 'command_result'), $text);
 | 
				
			||||||
        common_element_end('body');
 | 
					        $this->out->elementEnd('body');
 | 
				
			||||||
        common_element_end('html');
 | 
					        $this->out->endHTML();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function error($user, $text)
 | 
					    function error($user, $text)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        common_start_html('text/xml;charset=utf-8', true);
 | 
					        $this->out->startHTML('text/xml;charset=utf-8');
 | 
				
			||||||
        common_element_start('head');
 | 
					        $this->out->elementStart('head');
 | 
				
			||||||
        common_element('title', null, _('Ajax Error'));
 | 
					        $this->out->element('title', null, _('Ajax Error'));
 | 
				
			||||||
        common_element_end('head');
 | 
					        $this->out->elementEnd('head');
 | 
				
			||||||
        common_element_start('body');
 | 
					        $this->out->elementStart('body');
 | 
				
			||||||
        common_element('p', array('id' => 'error'), $text);
 | 
					        $this->out->element('p', array('id' => 'error'), $text);
 | 
				
			||||||
        common_element_end('body');
 | 
					        $this->out->elementEnd('body');
 | 
				
			||||||
        common_element_end('html');
 | 
					        $this->out->endHTML();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
class MailChannel extends Channel
 | 
					class MailChannel extends Channel
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -179,17 +186,17 @@ class MailChannel extends Channel
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        return 'mail';
 | 
					        return 'mail';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function __construct($addr=null)
 | 
					    function __construct($addr=null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->addr = $addr;
 | 
					        $this->addr = $addr;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function on($user)
 | 
					    function on($user)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->set_notify($user, 1);
 | 
					        return $this->set_notify($user, 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function off($user)
 | 
					    function off($user)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->set_notify($user, 0);
 | 
					        return $this->set_notify($user, 0);
 | 
				
			||||||
@@ -200,23 +207,23 @@ class MailChannel extends Channel
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $headers['From'] = $user->incomingemail;
 | 
					        $headers['From'] = $user->incomingemail;
 | 
				
			||||||
        $headers['To'] = $this->addr;
 | 
					        $headers['To'] = $this->addr;
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        $headers['Subject'] = _('Command complete');
 | 
					        $headers['Subject'] = _('Command complete');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return mail_send(array($this->addr), $headers, $text);
 | 
					        return mail_send(array($this->addr), $headers, $text);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function error($user, $text)
 | 
					    function error($user, $text)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        $headers['From'] = $user->incomingemail;
 | 
					        $headers['From'] = $user->incomingemail;
 | 
				
			||||||
        $headers['To'] = $this->addr;
 | 
					        $headers['To'] = $this->addr;
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        $headers['Subject'] = _('Command failed');
 | 
					        $headers['Subject'] = _('Command failed');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return mail_send(array($this->addr), $headers, $text);
 | 
					        return mail_send(array($this->addr), $headers, $text);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    function set_notify($user, $value)
 | 
					    function set_notify($user, $value)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $orig = clone($user);
 | 
					        $orig = clone($user);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user