2013-09-02 01:22:31 +00:00
< ? php
function layouts_content ( & $a ) {
if ( argc () > 1 )
$which = argv ( 1 );
else {
notice ( t ( 'Requested profile is not available.' ) . EOL );
$a -> error = 404 ;
return ;
}
profile_load ( $a , $which , 0 );
// Figure out who the page owner is.
$r = q ( " select channel_id from channel where channel_address = '%s' " ,
dbesc ( $which )
);
if ( $r ) {
$owner = intval ( $r [ 0 ][ 'channel_id' ]);
}
2013-09-04 02:55:26 +00:00
// Block design features from visitors
if (( ! local_user ()) || ( local_user () != $owner )) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
2014-02-28 04:48:10 +00:00
// Get the observer, check their permissions
2013-09-04 02:55:26 +00:00
2014-02-28 04:48:10 +00:00
$observer = $a -> get_observer ();
$ob_hash = (( $observer ) ? $observer [ 'xchan_hash' ] : '' );
2013-09-04 02:55:26 +00:00
2014-02-28 04:48:10 +00:00
$perms = get_all_perms ( $owner , $ob_hash );
2013-09-04 02:55:26 +00:00
2014-02-28 04:48:10 +00:00
if ( ! $perms [ 'write_pages' ]) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
2013-09-02 01:22:31 +00:00
2014-03-04 04:05:23 +00:00
if (( argc () > 3 ) && ( argv ( 2 ) === 'share' ) && ( argv ( 3 ))) {
$r = q ( " select sid, service, mimetype, title, body from item_id left join item on item.id = item_id.iid where item_id.uid = %d and item.mid = '%s' and service = 'PDL' order by sid asc " ,
intval ( $owner ),
dbesc ( argv ( 3 ))
);
if ( $r ) {
header ( 'Content-type: application/x-redmatrix-layout' );
header ( 'Content-disposition: attachment; filename="' . $r [ 0 ][ 'sid' ] . '.pdl"' );
echo json_encode ( $r );
killme ();
}
}
2014-02-28 04:48:10 +00:00
$tabs = array (
array (
'label' => t ( 'Layout Help' ),
'url' => 'help/Comanche' ,
'sel' => '' ,
'title' => t ( 'Help with this feature' ),
'id' => 'layout-help-tab' ,
));
2013-09-02 01:22:31 +00:00
2014-02-28 04:48:10 +00:00
$o .= replace_macros ( get_markup_template ( 'common_tabs.tpl' ), array ( '$tabs' => $tabs ));
2013-09-04 02:55:26 +00:00
2013-10-29 00:48:42 +00:00
2014-02-28 04:48:10 +00:00
// Create a status editor (for now - we'll need a WYSIWYG eventually) to create pages
// Nickname is set to the observers xchan, and profile_uid to the owners. This lets you post pages at other people's channels.
2013-10-29 00:48:42 +00:00
2014-02-28 04:48:10 +00:00
require_once ( 'include/conversation.php' );
2013-09-04 02:55:26 +00:00
2014-02-28 04:48:10 +00:00
$x = array (
'webpage' => ITEM_PDL ,
'is_owner' => true ,
'nickname' => $a -> profile [ 'channel_address' ],
'lockstate' => (( $group || $cid || $channel [ 'channel_allow_cid' ] || $channel [ 'channel_allow_gid' ] || $channel [ 'channel_deny_cid' ] || $channel [ 'channel_deny_gid' ]) ? 'lock' : 'unlock' ),
'bang' => (( $group || $cid ) ? '!' : '' ),
'visitor' => 'none' ,
'nopreview' => 1 ,
'ptlabel' => t ( 'Layout Name' ),
'profile_uid' => intval ( $owner ),
);
2013-09-04 02:55:26 +00:00
2014-02-28 04:48:10 +00:00
$o .= status_editor ( $a , $x );
2013-09-02 01:22:31 +00:00
2014-02-28 04:48:10 +00:00
// Get a list of blocks. We can't display all them because endless scroll makes that unusable, so just list titles and an edit link.
// TODO - this should be replaced with pagelist_widget
2013-09-02 01:22:31 +00:00
2014-03-04 04:05:23 +00:00
$r = q ( " select iid, sid, mid from item_id left join item on item.id = item_id.iid where item_id.uid = %d and service = 'PDL' order by sid asc " ,
2014-02-28 04:48:10 +00:00
intval ( $owner )
);
2013-09-02 01:22:31 +00:00
2014-02-28 04:48:10 +00:00
$pages = null ;
2013-09-02 01:22:31 +00:00
2014-02-28 04:48:10 +00:00
if ( $r ) {
$pages = array ();
foreach ( $r as $rr ) {
2014-03-04 04:05:23 +00:00
$pages [ $rr [ 'iid' ]][] = array ( 'url' => $rr [ 'iid' ], 'title' => $rr [ 'sid' ], 'mid' => $rr [ 'mid' ]);
2014-02-28 04:48:10 +00:00
}
}
2013-09-02 01:22:31 +00:00
2014-02-28 04:48:10 +00:00
//Build the base URL for edit links
$url = z_root () . " /editlayout/ " . $which ;
2013-09-02 01:22:31 +00:00
2014-03-04 04:05:23 +00:00
return $o . replace_macros ( get_markup_template ( " layoutlist.tpl " ), array (
2013-09-02 01:22:31 +00:00
'$baseurl' => $url ,
'$edit' => t ( 'Edit' ),
2014-03-04 04:05:23 +00:00
'$share' => t ( 'Share' ),
2013-09-02 01:22:31 +00:00
'$pages' => $pages ,
'$channel' => $which ,
'$view' => t ( 'View' ),
'$preview' => '1' ,
2014-02-28 04:48:10 +00:00
));
2013-09-02 01:22:31 +00:00
}