2009-01-14 07:13:22 +00:00
< ? php
/**
2009-08-25 23:12:20 +01:00
* StatusNet , the distributed open - source microblogging tool
2009-01-14 07:13:22 +00:00
*
* Form for posting a direct message
*
* PHP version 5
*
* LICENCE : This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*
* @ category Form
2009-08-25 23:12:20 +01:00
* @ package StatusNet
2009-08-25 23:19:04 +01:00
* @ author Evan Prodromou < evan @ status . net >
* @ author Sarven Capadisli < csarven @ status . net >
2009-08-25 23:12:20 +01:00
* @ copyright 2009 StatusNet , Inc .
2009-01-14 07:13:22 +00:00
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html GNU Affero General Public License version 3.0
2009-08-25 23:16:46 +01:00
* @ link http :// status . net /
2009-01-14 07:13:22 +00:00
*/
2009-08-26 15:41:36 +01:00
if ( ! defined ( 'STATUSNET' ) && ! defined ( 'LACONICA' )) {
2009-01-14 07:13:22 +00:00
exit ( 1 );
}
require_once INSTALLDIR . '/lib/form.php' ;
/**
* Form for posting a direct message
*
* @ category Form
2009-08-25 23:12:20 +01:00
* @ package StatusNet
2009-08-25 23:19:04 +01:00
* @ author Evan Prodromou < evan @ status . net >
* @ author Sarven Capadisli < csarven @ status . net >
2009-01-14 07:13:22 +00:00
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html GNU Affero General Public License version 3.0
2009-08-25 23:16:46 +01:00
* @ link http :// status . net /
2009-01-14 07:13:22 +00:00
*
* @ see HTMLOutputter
*/
class MessageForm extends Form
{
/**
* User to send a direct message to
*/
var $to = null ;
/**
* Pre - filled content of the form
*/
var $content = null ;
/**
* Constructor
*
* @ param HTMLOutputter $out output channel
* @ param User $to user to send a message to
* @ param string $content content to pre - fill
*/
function __construct ( $out = null , $to = null , $content = null )
{
parent :: __construct ( $out );
$this -> to = $to ;
$this -> content = $content ;
}
/**
* ID of the form
*
2009-10-31 16:16:37 +00:00
* @ return string ID of the form
2009-01-14 07:13:22 +00:00
*/
function id ()
2009-10-31 16:16:37 +00:00
{
return 'form_notice-direct' ;
}
/**
* Class of the form
*
* @ return string class of the form
*/
function formClass ()
2009-01-14 07:13:22 +00:00
{
2011-03-10 00:55:52 +00:00
return 'form_notice ajax-notice' ;
2009-01-14 07:13:22 +00:00
}
/**
* Action of the form
*
* @ return string URL of the action
*/
function action ()
{
return common_local_url ( 'newmessage' );
}
2009-01-21 03:38:50 +00:00
/**
* Legend of the Form
*
* @ return void
*/
function formLegend ()
{
$this -> out -> element ( 'legend' , null , _ ( 'Send a direct notice' ));
}
2009-01-14 07:13:22 +00:00
/**
* Data elements
*
* @ return void
*/
function formData ()
{
$user = common_current_user ();
$mutual_users = $user -> mutuallySubscribedUsers ();
$mutual = array ();
2010-11-19 19:56:03 +00:00
// TRANS Label entry in drop-down selection box in direct-message inbox/outbox. This is the default entry in the drop-down box, doubling as instructions and a brake against accidental submissions with the first user in the list.
$mutual [ 0 ] = _ ( 'Select recipient:' );
2009-01-14 07:13:22 +00:00
while ( $mutual_users -> fetch ()) {
if ( $mutual_users -> id != $user -> id ) {
$mutual [ $mutual_users -> id ] = $mutual_users -> nickname ;
}
}
$mutual_users -> free ();
unset ( $mutual_users );
2010-11-19 19:56:03 +00:00
if ( count ( $mutual ) == 1 ) {
// TRANS Entry in drop-down selection box in direct-message inbox/outbox when no one is available to message.
$mutual [ 0 ] = _ ( 'No mutual subscribers.' );
}
2009-01-14 07:13:22 +00:00
$this -> out -> dropdown ( 'to' , _ ( 'To' ), $mutual , null , false ,
2009-01-26 14:45:54 +00:00
( $this -> to ) ? $this -> to -> id : null );
2009-01-14 07:13:22 +00:00
2011-03-10 00:55:52 +00:00
$this -> out -> element ( 'textarea' , array ( 'class' => 'notice_data-text' ,
2009-01-21 03:38:50 +00:00
'cols' => 35 ,
'rows' => 4 ,
2009-01-14 07:13:22 +00:00
'name' => 'content' ),
( $this -> content ) ? $this -> content : '' );
2009-07-16 20:58:43 +01:00
2009-08-21 12:23:27 +01:00
$contentLimit = Message :: maxContent ();
if ( $contentLimit > 0 ) {
2011-01-14 20:36:06 +00:00
$this -> out -> element ( 'span' ,
2011-03-04 01:15:17 +00:00
array ( 'class' => 'count' ),
2009-08-21 12:23:27 +01:00
$contentLimit );
}
2009-01-14 07:13:22 +00:00
}
/**
* Action elements
*
* @ return void
*/
function formActions ()
{
2009-01-21 03:38:50 +00:00
$this -> out -> element ( 'input' , array ( 'id' => 'notice_action-submit' ,
'class' => 'submit' ,
2009-01-14 07:13:22 +00:00
'name' => 'message_send' ,
'type' => 'submit' ,
2010-03-01 14:57:27 +00:00
'value' => _m ( 'Send button for sending notice' , 'Send' )));
2009-01-14 07:13:22 +00:00
}
2009-01-21 03:38:50 +00:00
}