2010-12-25 14:02:06 +00:00
< ? php
/**
* GNU Social
* Copyright ( C ) 2010 , Free Software Foundation , Inc .
*
* 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 Widget
* @ package GNU Social
* @ author Ian Denhardt < ian @ zenhack . net >
* @ author Sean Corbett < sean @ gnu . org >
* @ author Max Shinn < trombonechamp @ gmail . com >
* @ copyright 2010 Free Software Foundation , Inc .
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html AGPL 3.0
*/
if ( ! defined ( 'STATUSNET' )) {
exit ( 1 );
}
include_once INSTALLDIR . '/actions/conversation.php' ;
include_once INSTALLDIR . '/classes/Notice.php' ;
class PhotoAction extends Action
{
var $user = null ;
function prepare ( $args )
{
parent :: prepare ( $args );
$args = $this -> returnToArgs ();
2010-12-27 02:51:17 +00:00
$this -> photoid = $args [ 1 ][ 'photoid' ];
2010-12-27 22:57:13 +00:00
$this -> photo = GNUsocialPhoto :: staticGet ( 'id' , $this -> photoid );
$this -> notice = Notice :: staticGet ( 'id' , $this -> photo -> notice_id );
2010-12-25 14:02:06 +00:00
2010-12-27 02:42:45 +00:00
$this -> user = Profile :: staticGet ( 'id' , $this -> notice -> profile_id );
2010-12-27 02:51:17 +00:00
2010-12-28 14:57:28 +00:00
$notices = Notice :: conversationStream (( int ) $this -> notice -> conversation , null , null );
2010-12-25 14:02:06 +00:00
$this -> conversation = new ConversationTree ( $notices , $this );
return true ;
}
function handle ( $args )
{
parent :: handle ( $args );
$this -> showPage ();
}
function title ()
{
if ( empty ( $this -> user )) {
return _m ( 'No such user.' );
} else if ( empty ( $this -> photo )) {
2010-12-27 02:51:17 +00:00
return _m ( 'No such photo.' );
} else if ( ! empty ( $this -> photo -> title )) {
2010-12-25 14:02:06 +00:00
return $this -> photo -> title ;
2010-12-27 02:51:17 +00:00
} else {
2010-12-25 14:02:06 +00:00
return sprintf ( _m ( " %s's Photo. " ), $this -> user -> nickname );
}
}
function showLocalNav ()
{
2010-12-27 13:42:00 +00:00
$nav = new GNUsocialPhotoNav ( $this , $this -> user -> nickname );
2010-12-25 14:02:06 +00:00
$nav -> show ();
}
function showContent ()
{
if ( empty ( $this -> user )) {
return ;
}
$this -> elementStart ( 'a' , array ( 'href' => $this -> photo -> uri ));
$this -> element ( 'img' , array ( 'src' => $this -> photo -> uri ));
$this -> elementEnd ( 'a' );
2010-12-28 16:40:58 +00:00
//Image "toolbar"
$cur = common_current_user ();
if ( $this -> photo -> profile_id == $cur -> profile_id ) {
$this -> elementStart ( 'div' , array ( 'id' => 'image_toolbar' ));
$this -> element ( 'a' , array ( 'href' => '/editphoto/' . $this -> photo -> id ), 'Edit' );
$this -> elementEnd ( 'div' );
}
2010-12-29 01:45:25 +00:00
$this -> element ( 'p' , array ( 'class' => 'photodescription' ), $this -> photo -> photo_description );
2010-12-27 02:51:17 +00:00
//This is a hack to hide the top-level comment
2010-12-27 23:12:25 +00:00
$this -> element ( 'style' , array (), " #notice- { $this -> photo -> notice_id } div { display: none } #notice- { $this -> photo -> notice_id } ol li div { display: inline } " );
2010-12-27 02:51:17 +00:00
$this -> conversation -> show ();
2010-12-25 14:02:06 +00:00
}
}