2013-07-10 18:46:06 +00:00
< ? php
2013-07-10 18:53:11 +00:00
2013-08-09 17:30:30 +00:00
function webpages_content ( & $a ) {
2013-07-10 18:53:11 +00:00
if ( argc () > 1 )
$which = argv ( 1 );
else {
notice ( t ( 'Requested profile is not available.' ) . EOL );
$a -> error = 404 ;
return ;
}
$profile = 0 ;
$channel = $a -> get_channel ();
if (( local_user ()) && ( argc () > 2 ) && ( argv ( 2 ) === 'view' )) {
$which = $channel [ 'channel_address' ];
$profile = argv ( 1 );
}
profile_load ( $a , $which , $profile );
2013-07-10 18:46:06 +00:00
2013-08-14 19:46:48 +00:00
// Figure out who the page owner is.
2013-08-09 17:30:30 +00:00
$r = q ( " select channel_id from channel where channel_address = '%s' " ,
dbesc ( $which )
);
if ( $r ) {
$owner = intval ( $r [ 0 ][ 'channel_id' ]);
}
2013-08-14 19:46:48 +00:00
// Get the observer, check their permissions
2013-07-10 18:46:06 +00:00
2013-08-09 17:30:30 +00:00
$observer = $a -> get_observer ();
$ob_hash = (( $observer ) ? $observer [ 'xchan_hash' ] : '' );
$perms = get_all_perms ( $owner , $ob_hash );
2013-07-10 18:46:06 +00:00
2013-08-09 17:30:30 +00:00
if ( ! $perms [ 'write_pages' ]) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
2013-07-10 18:53:11 +00:00
2013-12-19 10:16:14 +00:00
// if(local_user() && local_user() == $owner) {
// $a->set_widget('design',design_tools());
// }
2013-09-04 02:55:26 +00:00
2013-09-02 20:31:59 +00:00
$mimetype = get_config ( 'system' , 'page_mimetype' );
if ( ! $mimetype )
$mimetype = 'choose' ;
2013-09-03 03:25:33 +00:00
$layout = get_config ( 'system' , 'page_layout' );
if ( ! $layout )
$layout = 'choose' ;
2013-07-10 18:53:11 +00:00
// Create a status editor (for now - we'll need a WYSIWYG eventually) to create pages
2013-08-14 19:46:48 +00:00
// Nickname is set to the observers xchan, and profile_uid to the owners. This lets you post pages at other people's channels.
2013-11-14 22:19:20 +00:00
require_once ( 'include/conversation.php' );
require_once ( 'include/acl_selectors.php' );
2013-12-07 23:20:12 +00:00
if ( local_user () && local_user () == $a -> profile_uid ) {
$channel = $a -> get_channel ();
$channel_acl = array (
'allow_cid' => $channel [ 'channel_allow_cid' ],
'allow_gid' => $channel [ 'channel_allow_gid' ],
'deny_cid' => $channel [ 'channel_deny_cid' ],
'deny_gid' => $channel [ 'channel_deny_gid' ]
);
}
else
$channel_acl = array ();
2013-07-10 18:53:11 +00:00
$x = array (
2013-09-02 01:22:31 +00:00
'webpage' => ITEM_WEBPAGE ,
2013-07-10 18:53:11 +00:00
'is_owner' => true ,
2013-07-13 17:42:49 +00:00
'nickname' => $a -> profile [ 'channel_address' ],
2013-07-10 18:53:11 +00:00
'lockstate' => (( $group || $cid || $channel [ 'channel_allow_cid' ] || $channel [ 'channel_allow_gid' ] || $channel [ 'channel_deny_cid' ] || $channel [ 'channel_deny_gid' ]) ? 'lock' : 'unlock' ),
'bang' => (( $group || $cid ) ? '!' : '' ),
2013-12-07 23:20:12 +00:00
'acl' => (( local_user () && local_user () == $owner ) ? populate_acl ( $channel_acl ) : '' ),
2013-07-10 18:53:11 +00:00
'visitor' => 'block' ,
2013-08-09 17:30:30 +00:00
'profile_uid' => intval ( $owner ),
2013-09-02 20:31:59 +00:00
'mimetype' => $mimetype ,
2013-09-03 03:25:33 +00:00
'layout' => $layout ,
2013-07-10 18:53:11 +00:00
);
$o .= status_editor ( $a , $x );
2013-09-02 08:38:17 +00:00
2013-07-10 18:53:11 +00:00
//Get a list of webpages. We can't display all them because endless scroll makes that unusable, so just list titles and an edit link.
2013-08-14 19:46:48 +00:00
//TODO - this should be replaced with pagelist_widget
2013-07-10 18:53:11 +00:00
2013-11-14 22:19:20 +00:00
$r = q ( " select item_id.* from item_id left join item on item_id.iid = item.id where item_id.uid = %d and service = 'WEBPAGE' order by item.created desc " ,
intval ( $owner )
);
2013-07-10 18:46:06 +00:00
2013-11-14 22:19:20 +00:00
$pages = null ;
2013-07-10 18:46:06 +00:00
2013-11-14 22:19:20 +00:00
if ( $r ) {
$pages = array ();
foreach ( $r as $rr ) {
$pages [ $rr [ 'iid' ]][] = array ( 'url' => $rr [ 'iid' ], 'title' => $rr [ 'sid' ]);
}
}
2013-07-10 18:46:06 +00:00
2013-08-01 17:40:50 +00:00
//Build the base URL for edit links
2013-08-09 17:30:30 +00:00
$url = z_root () . " /editwebpage/ " . $which ;
2013-07-10 18:53:11 +00:00
// This isn't pretty, but it works. Until I figure out what to do with the UI, it's Good Enough(TM).
return $o . replace_macros ( get_markup_template ( " webpagelist.tpl " ), array (
2013-08-01 17:40:50 +00:00
'$baseurl' => $url ,
'$edit' => t ( 'Edit' ),
2013-07-12 22:01:55 +00:00
'$pages' => $pages ,
2013-08-09 17:30:30 +00:00
'$channel' => $which ,
2013-07-12 22:01:55 +00:00
'$view' => t ( 'View' ),
2013-10-24 02:35:51 +00:00
'$preview' => t ( 'Preview' ),
2013-07-12 22:01:55 +00:00
2013-07-10 18:53:11 +00:00
));
2013-07-10 18:46:06 +00:00
2013-07-10 18:53:11 +00:00
}