aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Connedit.php2
-rw-r--r--Zotlabs/Module/Cover_photo.php4
-rw-r--r--Zotlabs/Module/Profile_photo.php101
-rw-r--r--Zotlabs/Module/Profperm.php2
-rw-r--r--include/photos.php65
-rwxr-xr-xview/tpl/cropcover.tpl2
6 files changed, 108 insertions, 68 deletions
diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php
index 3feba5370..72b854079 100644
--- a/Zotlabs/Module/Connedit.php
+++ b/Zotlabs/Module/Connedit.php
@@ -219,7 +219,7 @@ class Connedit extends \Zotlabs\Web\Controller {
//Update profile photo permissions
logger('A new profile was assigned - updating profile photos');
- profile_photo_set_profile_perms($profile_id);
+ profile_photo_set_profile_perms(local_channel(),$profile_id);
}
diff --git a/Zotlabs/Module/Cover_photo.php b/Zotlabs/Module/Cover_photo.php
index a72c3389f..5633976c8 100644
--- a/Zotlabs/Module/Cover_photo.php
+++ b/Zotlabs/Module/Cover_photo.php
@@ -40,7 +40,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
*
*/
- function post() {
+ function post() {
if(! local_channel()) {
return;
@@ -271,7 +271,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
*/
- function get() {
+ function get() {
if(! local_channel()) {
notice( t('Permission denied.') . EOL );
diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php
index c02821a3c..72c92e721 100644
--- a/Zotlabs/Module/Profile_photo.php
+++ b/Zotlabs/Module/Profile_photo.php
@@ -53,8 +53,23 @@ class Profile_photo extends \Zotlabs\Web\Controller {
check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo');
- if((x($_POST,'cropfinal')) && ($_POST['cropfinal'] == 1)) {
+ if((array_key_exists('postfinal',$_POST)) && (intval($_POST['cropfinal']) == 1)) {
+ // phase 2 - we have finished cropping
+
+ if(argc() != 2) {
+ notice( t('Image uploaded but image cropping failed.') . EOL );
+ return;
+ }
+
+ $image_id = argv(1);
+
+ if(substr($image_id,-2,1) == '-') {
+ $scale = substr($image_id,-1,1);
+ $image_id = substr($image_id,0,-2);
+ }
+
+
// unless proven otherwise
$is_default_profile = 1;
@@ -69,25 +84,7 @@ class Profile_photo extends \Zotlabs\Web\Controller {
$is_default_profile = 0;
}
}
-
-logger('profile: ' . $_REQUEST['profile']);
-
-
- // phase 2 - we have finished cropping
-
- if(argc() != 2) {
- notice( t('Image uploaded but image cropping failed.') . EOL );
- return;
- }
-
- $image_id = argv(1);
-
- if(substr($image_id,-2,1) == '-') {
- $scale = substr($image_id,-1,1);
- $image_id = substr($image_id,0,-2);
- }
-
$srcX = $_POST['xstart'];
$srcY = $_POST['ystart'];
@@ -111,30 +108,38 @@ logger('profile: ' . $_REQUEST['profile']);
$aid = get_account_id();
- $p = array('aid' => $aid, 'uid' => local_channel(), 'resource_id' => $base_image['resource_id'],
- 'filename' => $base_image['filename'], 'album' => t('Profile Photos'));
+ $p = [
+ 'aid' => $aid,
+ 'uid' => local_channel(),
+ 'resource_id' => $base_image['resource_id'],
+ 'filename' => $base_image['filename'],
+ 'album' => t('Profile Photos')
+ ];
- $p['imgscale'] = 4;
+ $p['imgscale'] = PHOTO_RES_PROFILE_300;
$p['photo_usage'] = (($is_default_profile) ? PHOTO_PROFILE : PHOTO_NORMAL);
$r1 = $im->save($p);
$im->scaleImage(80);
- $p['imgscale'] = 5;
+ $p['imgscale'] = PHOTO_RES_PROFILE_80;
$r2 = $im->save($p);
$im->scaleImage(48);
- $p['imgscale'] = 6;
+ $p['imgscale'] = PHOTO_RES_PROFILE_48;
$r3 = $im->save($p);
if($r1 === false || $r2 === false || $r3 === false) {
// if one failed, delete them all so we can start over.
notice( t('Image resize failed.') . EOL );
- $x = q("delete from photo where resource_id = '%s' and uid = %d and imgscale >= 4 ",
+ $x = q("delete from photo where resource_id = '%s' and uid = %d and imgscale in ( %d, %d, %d ) ",
dbesc($base_image['resource_id']),
- local_channel()
+ local_channel(),
+ intval(PHOTO_RES_PROFILE_300),
+ intval(PHOTO_RES_PROFILE_80),
+ intval(PHOTO_RES_PROFILE_48)
);
return;
}
@@ -184,10 +189,7 @@ logger('profile: ' . $_REQUEST['profile']);
// Now copy profile-permissions to pictures, to prevent privacyleaks by automatically created folder 'Profile Pictures'
- profile_photo_set_profile_perms($_REQUEST['profile']);
-
-
-
+ profile_photo_set_profile_perms(local_channel(),$_REQUEST['profile']);
}
else
notice( t('Unable to process image') . EOL);
@@ -197,7 +199,9 @@ logger('profile: ' . $_REQUEST['profile']);
return; // NOTREACHED
}
-
+ // A new photo was uploaded. Store it and save some important details
+ // in App::$data for use in the cropping function
+
$hash = photo_new_resource();
$smallest = 0;
@@ -221,7 +225,7 @@ logger('profile: ' . $_REQUEST['profile']);
$os_storage = false;
foreach($i as $ii) {
- if(intval($ii['imgscale']) < 2) {
+ if(intval($ii['imgscale']) < PHOTO_RES_640) {
$smallest = intval($ii['imgscale']);
$os_storage = intval($ii['os_storage']);
$imagedata = $ii['content'];
@@ -239,7 +243,10 @@ logger('profile: ' . $_REQUEST['profile']);
}
return $this->profile_photo_crop_ui_head($a, $ph, $hash, $smallest);
-
+
+ // This will "fall through" to the get() method, and since
+ // App::$data['imagecrop'] is set, it will proceed to cropping
+ // rather than present the upload form
}
@@ -294,11 +301,11 @@ logger('profile: ' . $_REQUEST['profile']);
}
$havescale = false;
foreach($r as $rr) {
- if($rr['imgscale'] == 5)
+ if($rr['imgscale'] == PHOTO_RES_PROFILE_80)
$havescale = true;
}
- // set an already loaded photo as profile photo
+ // set an already loaded and cropped photo as profile photo
if(($r[0]['album'] == t('Profile Photos')) && ($havescale)) {
// unset any existing profile photos
@@ -319,7 +326,7 @@ logger('profile: ' . $_REQUEST['profile']);
dbesc($channel['xchan_hash'])
);
- profile_photo_set_profile_perms(); // Reset default photo permissions to public
+ profile_photo_set_profile_perms(local_channel()); // Reset default photo permissions to public
\Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
goaway(z_root() . '/profiles');
}
@@ -351,7 +358,7 @@ logger('profile: ' . $_REQUEST['profile']);
if($i) {
$hash = $i[0]['resource_id'];
foreach($i as $ii) {
- if(intval($ii['imgscale']) < 2) {
+ if(intval($ii['imgscale']) < PHOTO_RES_640) {
$smallest = intval($ii['imgscale']);
}
}
@@ -359,9 +366,14 @@ logger('profile: ' . $_REQUEST['profile']);
}
$this->profile_photo_crop_ui_head($a, $ph, $hash, $smallest);
+
+ // falls through with App::$data['imagecrop'] set so we go straight to the cropping section
}
- $profiles = q("select id, profile_name as name, is_default from profile where uid = %d",
+
+ // present an upload form
+
+ $profiles = q("select id, profile_name as name, is_default from profile where uid = %d order by id asc",
intval(local_channel())
);
@@ -388,6 +400,9 @@ logger('profile: ' . $_REQUEST['profile']);
return $o;
}
else {
+
+ // present a cropping form
+
$filename = \App::$data['imagecrop'] . '-' . \App::$data['imagecrop_resolution'];
$resolution = \App::$data['imagecrop_resolution'];
$tpl = get_markup_template("cropbody.tpl");
@@ -425,13 +440,13 @@ logger('profile: ' . $_REQUEST['profile']);
if($max_length > 0)
$ph->scaleImage($max_length);
- $width = $ph->getWidth();
- $height = $ph->getHeight();
+ \App::$data['width'] = $ph->getWidth();
+ \App::$data['height'] = $ph->getHeight();
- if($width < 500 || $height < 500) {
+ if(\App::$data['width'] < 500 || \App::$data['height'] < 500) {
$ph->scaleImageUp(400);
- $width = $ph->getWidth();
- $height = $ph->getHeight();
+ \App::$data['width'] = $ph->getWidth();
+ \App::$data['height'] = $ph->getHeight();
}
diff --git a/Zotlabs/Module/Profperm.php b/Zotlabs/Module/Profperm.php
index 33e9d1ece..79ce7a7ed 100644
--- a/Zotlabs/Module/Profperm.php
+++ b/Zotlabs/Module/Profperm.php
@@ -97,7 +97,7 @@ class Profperm extends \Zotlabs\Web\Controller {
//Time to update the permissions on the profile-pictures as well
- profile_photo_set_profile_perms($profile['id']);
+ profile_photo_set_profile_perms(local_channel(),$profile['id']);
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'",
intval(local_channel()),
diff --git a/include/photos.php b/include/photos.php
index da6118b38..c70478146 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -707,40 +707,65 @@ function gps2Num($coordPart) {
return floatval($parts[0]) / floatval($parts[1]);
}
-function profile_photo_set_profile_perms($profileid = '') {
+function profile_photo_set_profile_perms($uid, $profileid = 0) {
$allowcid = '';
- if (x($profileid)) {
-
- $r = q("SELECT photo, profile_guid, id, is_default, uid FROM profile WHERE profile.id = %d OR profile.profile_guid = '%s' LIMIT 1", intval($profileid), dbesc($profileid));
-
- } else {
-
+ if($profileid) {
+ $r = q("SELECT photo, profile_guid, id, is_default, uid
+ FROM profile WHERE uid = %d and ( profile.id = %d OR profile.profile_guid = '%s') LIMIT 1",
+ intval($profileid),
+ dbesc($profileid)
+ );
+ }
+ else {
logger('Resetting permissions on default-profile-photo for user'.local_channel());
- $r = q("SELECT photo, profile_guid, id, is_default, uid FROM profile WHERE profile.uid = %d AND is_default = 1 LIMIT 1", intval(local_channel()) ); //If no profile is given, we update the default profile
+
+ $r = q("SELECT photo, profile_guid, id, is_default, uid FROM profile
+ WHERE profile.uid = %d AND is_default = 1 LIMIT 1",
+ intval($uid)
+ ); //If no profile is given, we update the default profile
}
+ if(! $r)
+ return;
$profile = $r[0];
- if(x($profile['id']) && x($profile['photo'])) {
- preg_match("@\w*(?=-\d*$)@i", $profile['photo'], $resource_id);
- $resource_id = $resource_id[0];
+
+ if($profile['id'] && $profile['photo']) {
+ preg_match("@\w*(?=-\d*$)@i", $profile['photo'], $resource_id);
+ $resource_id = $resource_id[0];
- if (intval($profile['is_default']) != 1) {
- $r0 = q("SELECT channel_hash FROM channel WHERE channel_id = %d LIMIT 1", intval(local_channel()) );
- $r1 = q("SELECT abook.abook_xchan FROM abook WHERE abook_profile = '%d' ", intval($profile['id'])); //Should not be needed in future. Catches old int-profile-ids.
- $r2 = q("SELECT abook.abook_xchan FROM abook WHERE abook_profile = '%s'", dbesc($profile['profile_guid']));
+ if (! intval($profile['is_default'])) {
+ $r0 = q("SELECT channel_hash FROM channel WHERE channel_id = %d LIMIT 1",
+ intval($uid)
+ );
+ //Should not be needed in future. Catches old int-profile-ids.
+ $r1 = q("SELECT abook.abook_xchan FROM abook WHERE abook_profile = '%d' ",
+ intval($profile['id'])
+ );
+ $r2 = q("SELECT abook.abook_xchan FROM abook WHERE abook_profile = '%s'",
+ dbesc($profile['profile_guid'])
+ );
$allowcid = "<" . $r0[0]['channel_hash'] . ">";
foreach ($r1 as $entry) {
$allowcid .= "<" . $entry['abook_xchan'] . ">";
}
foreach ($r2 as $entry) {
- $allowcid .= "<" . $entry['abook_xchan'] . ">";
- }
+ $allowcid .= "<" . $entry['abook_xchan'] . ">";
+ }
- q("UPDATE `photo` SET allow_cid = '%s' WHERE resource_id = '%s' AND uid = %d",dbesc($allowcid),dbesc($resource_id),intval($profile['uid']));
+ q("UPDATE photo SET allow_cid = '%s' WHERE resource_id = '%s' AND uid = %d",
+ dbesc($allowcid),
+ dbesc($resource_id),
+ intval($uid)
+ );
- } else {
- q("UPDATE `photo` SET allow_cid = '' WHERE profile = 1 AND uid = %d",intval($profile['uid'])); //Reset permissions on default profile picture to public
+ }
+ else {
+ //Reset permissions on default profile picture to public
+ q("UPDATE photo SET allow_cid = '' WHERE photo_usage = %d AND uid = %d",
+ intval(PHOTO_PROFILE),
+ intval($uid)
+ );
}
}
diff --git a/view/tpl/cropcover.tpl b/view/tpl/cropcover.tpl
index 68c948889..04b96a603 100755
--- a/view/tpl/cropcover.tpl
+++ b/view/tpl/cropcover.tpl
@@ -28,7 +28,7 @@
minWidth: 240,
minHeight: 87,
maxWidth: 320,
- maxHeight: 320,
+ maxHeight: 116,
ratioDim: { x: 100, y:36 },
displayOnInit: true,
onEndCrop: onEndCrop