2013-07-10 18:36:53 +00:00
< ? php
2013-09-03 23:31:59 +00:00
// Required for setting permissions. (FIXME)
require_once ( 'acl_selectors.php' );
2013-07-10 18:36:53 +00:00
function editwebpage_content ( & $a ) {
2013-09-03 23:31:59 +00:00
// We first need to figure out who owns the webpage, grab it from an argument
$which = argv ( 1 );
2013-08-01 17:40:50 +00:00
2013-09-03 23:31:59 +00:00
// $a->get_channel() and stuff don't work here, so we've got to find the owner for ourselves.
2013-08-07 21:04:05 +00:00
$r = q ( " select channel_id from channel where channel_address = '%s' " ,
2013-08-01 17:40:50 +00:00
dbesc ( $which )
2013-09-03 23:31:59 +00:00
);
if ( $r ) {
$owner = intval ( $r [ 0 ][ 'channel_id' ]);
//logger('owner: ' . print_r($owner,true));
}
2013-12-07 23:20:12 +00:00
$is_owner = (( local_user () && local_user () == $owner ) ? true : false );
2013-09-03 23:31:59 +00:00
2013-07-10 18:36:53 +00:00
$o = '' ;
2013-09-03 23:31:59 +00:00
// Figure out which post we're editing
2013-08-01 17:40:50 +00:00
$post_id = (( argc () > 2 ) ? intval ( argv ( 2 )) : 0 );
2013-07-10 18:36:53 +00:00
if ( ! $post_id ) {
notice ( t ( 'Item not found' ) . EOL );
return ;
}
2013-09-03 23:31:59 +00:00
// Now we've got a post and an owner, let's find out if we're allowed to edit it
2013-08-01 17:40:50 +00:00
2013-09-03 23:31:59 +00:00
$observer = $a -> get_observer ();
$ob_hash = (( $observer ) ? $observer [ 'xchan_hash' ] : '' );
2013-08-01 17:40:50 +00:00
2013-09-03 23:31:59 +00:00
$perms = get_all_perms ( $owner , $ob_hash );
2013-08-01 17:40:50 +00:00
2013-09-03 23:31:59 +00:00
if ( ! $perms [ 'write_pages' ]) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
2013-08-01 17:40:50 +00:00
2013-07-10 18:36:53 +00:00
2013-09-03 23:31:59 +00:00
// We've already figured out which item we want and whose copy we need, so we don't need anything fancy here
$itm = q ( " SELECT * FROM `item` WHERE `id` = %d and uid = %s LIMIT 1 " ,
intval ( $post_id ),
intval ( $owner )
);
2013-07-10 18:36:53 +00:00
2013-12-07 23:20:12 +00:00
if ( $itm [ 0 ][ 'item_flags' ] & ITEM_OBSCURED ) {
$key = get_config ( 'system' , 'prvkey' );
if ( $itm [ 0 ][ 'title' ])
$itm [ 0 ][ 'title' ] = crypto_unencapsulate ( json_decode_plus ( $itm [ 0 ][ 'title' ]), $key );
if ( $itm [ 0 ][ 'body' ])
$itm [ 0 ][ 'body' ] = crypto_unencapsulate ( json_decode_plus ( $itm [ 0 ][ 'body' ]), $key );
}
$item_id = q ( " select * from item_id where service = 'WEBPAGE' and iid = %d limit 1 " ,
$itm [ 0 ][ 'id' ]
);
if ( $item_id )
$page_title = $item_id [ 0 ][ 'sid' ];
2013-07-10 18:36:53 +00:00
$plaintext = true ;
2013-09-03 00:48:48 +00:00
2013-09-03 23:31:59 +00:00
if ( feature_enabled ( $itm [ 0 ][ 'uid' ], 'richtext' ))
$plaintext = false ;
2013-09-03 00:48:48 +00:00
$mimetype = $itm [ 0 ][ 'mimetype' ];
2013-09-03 23:31:59 +00:00
if ( $mimetype === 'application/x-php' ) {
if (( ! local_user ()) || ( local_user () != $itm [ 0 ][ 'uid' ])) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
}
2013-09-03 00:48:48 +00:00
$mimeselect = '' ;
if ( $mimetype != 'text/bbcode' )
$plaintext = true ;
2013-09-06 10:10:25 +00:00
if ( get_config ( 'system' , 'page_mimetype' ))
$mimeselect = '<input type="hidden" name="mimetype" value="' . $mimetype . '" />' ;
else
2013-09-06 10:56:47 +00:00
$mimeselect = mimetype_select ( $itm [ 0 ][ 'uid' ], $mimetype );
2013-09-03 00:48:48 +00:00
2013-09-03 23:31:59 +00:00
$layout = get_config ( 'system' , 'page_layout' );
if ( $layout )
$layoutselect = '<input type="hidden" name="layout_mid" value="' . $layout . '" />' ;
else
2014-01-11 23:49:23 +00:00
$layoutselect = layout_select ( $itm [ 0 ][ 'uid' ], $itm [ 0 ][ 'layout_mid' ]);
2013-09-03 23:31:59 +00:00
2013-07-10 18:36:53 +00:00
$o .= replace_macros ( get_markup_template ( 'edpost_head.tpl' ), array (
2013-09-06 11:07:43 +00:00
'$title' => t ( 'Edit Webpage' )
2013-07-10 18:36:53 +00:00
));
$a -> page [ 'htmlhead' ] .= replace_macros ( get_markup_template ( 'jot-header.tpl' ), array (
'$baseurl' => $a -> get_baseurl (),
'$editselect' => (( $plaintext ) ? 'none' : '/(profile-jot-text|prvmail-text)/' ),
'$ispublic' => ' ' , // t('Visible to <strong>everybody</strong>'),
'$geotag' => $geotag ,
2014-01-01 15:18:39 +00:00
'$nickname' => $a -> user [ 'nickname' ],
'$confirmdelete' => t ( 'Delete webpage?' )
2013-07-10 18:36:53 +00:00
));
2013-09-03 00:48:48 +00:00
2013-07-10 18:36:53 +00:00
$tpl = get_markup_template ( " jot.tpl " );
$jotplugins = '' ;
$jotnets = '' ;
call_hooks ( 'jot_tool' , $jotplugins );
call_hooks ( 'jot_networks' , $jotnets );
$channel = $a -> get_channel ();
//$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
2013-08-14 19:46:48 +00:00
//FIXME A return path with $_SESSION doesn't always work for observer - it may WSoD instead of loading a sensible page. So, send folk to the webpage list.
2013-08-01 17:40:50 +00:00
2013-08-14 19:46:48 +00:00
$rp = '/webpages/' . $which ;
2013-12-07 23:20:12 +00:00
$lockstate =
2013-07-10 18:36:53 +00:00
$o .= replace_macros ( $tpl , array (
2013-08-01 17:40:50 +00:00
'$return_path' => $rp ,
2014-01-04 21:44:43 +00:00
'$webpage' => ITEM_WEBPAGE ,
2013-12-07 23:20:12 +00:00
'$placeholdpagetitle' => t ( 'Page link title' ),
'$pagetitle' => $page_title ,
2013-07-10 18:36:53 +00:00
'$action' => 'item' ,
'$share' => t ( 'Edit' ),
'$upload' => t ( 'Upload photo' ),
'$attach' => t ( 'Attach file' ),
'$weblink' => t ( 'Insert web link' ),
'$youtube' => t ( 'Insert YouTube video' ),
'$video' => t ( 'Insert Vorbis [.ogg] video' ),
'$audio' => t ( 'Insert Vorbis [.ogg] audio' ),
'$setloc' => t ( 'Set your location' ),
'$noloc' => t ( 'Clear browser location' ),
'$wait' => t ( 'Please wait' ),
'$permset' => t ( 'Permission settings' ),
'$ptyp' => $itm [ 0 ][ 'type' ],
'$content' => undo_post_tagging ( $itm [ 0 ][ 'body' ]),
'$post_id' => $post_id ,
'$baseurl' => $a -> get_baseurl (),
2013-12-07 23:20:12 +00:00
'$defloc' => $itm [ 0 ][ 'location' ],
'$visitor' => ( $is_owner ) ? 'block' : 'none' ,
'$acl' => populate_acl ( $itm [ 0 ]),
'$showacl' => true ,
'$pvisit' => ( $is_owner ) ? 'block' : 'none' ,
2013-07-10 18:36:53 +00:00
'$public' => t ( 'Public post' ),
'$jotnets' => $jotnets ,
2013-09-03 00:48:48 +00:00
'$mimeselect' => $mimeselect ,
2013-09-03 23:31:59 +00:00
'$layoutselect' => $layoutselect ,
2013-12-12 10:01:42 +00:00
'$title' => htmlspecialchars ( $itm [ 0 ][ 'title' ], ENT_COMPAT , 'UTF-8' ),
2013-07-10 18:36:53 +00:00
'$placeholdertitle' => t ( 'Set title' ),
'$category' => '' ,
'$placeholdercategory' => t ( 'Categories (comma-separated list)' ),
'$emtitle' => t ( 'Example: bob@example.com, mary@example.com' ),
2013-12-07 23:20:12 +00:00
'lockstate' => ((( strlen ( $itm [ 0 ][ 'allow_cid' ])) || ( strlen ( $itm [ 0 ][ 'allow_gid' ])) || ( strlen ( $itm [ 0 ][ 'deny_cid' ])) || ( strlen ( $itm [ 0 ][ 'deny_gid' ]))) ? 'lock' : 'unlock' ),
'$acl' => populate_acl ( $itm [ 0 ]),
2013-07-10 18:36:53 +00:00
'$bang' => '' ,
2013-08-01 17:40:50 +00:00
'$profile_uid' => ( intval ( $owner )),
2013-07-10 18:36:53 +00:00
'$preview' => (( feature_enabled ( local_user (), 'preview' )) ? t ( 'Preview' ) : '' ),
'$jotplugins' => $jotplugins ,
'$sourceapp' => t ( $a -> sourcename ),
2013-11-07 08:47:50 +00:00
'$defexpire' => '' ,
'$feature_expire' => 'none' ,
'$expires' => t ( 'Set expiration date' ),
2013-07-10 18:36:53 +00:00
));
2013-09-06 11:07:43 +00:00
$ob = get_observer_hash ();
if (( $itm [ 0 ][ 'author_xchan' ] === $ob ) || ( $itm [ 0 ][ 'owner_xchan' ] === $ob ))
2014-01-01 15:18:39 +00:00
$o .= '<br /><br /><a class="page-delete-link" href="item/drop/' . $itm [ 0 ][ 'id' ] . '" >' . t ( 'Delete Webpage' ) . '</a><br />' ;
2013-09-06 11:07:43 +00:00
2013-07-10 18:36:53 +00:00
return $o ;
}