aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Macgirvin <mike@macgirvin.com>2010-07-19 19:09:58 -0700
committerMike Macgirvin <mike@macgirvin.com>2010-07-19 19:09:58 -0700
commitc3fd5ed73202f4dd17dda87ac968b0db4f44d423 (patch)
tree353a6394ebb8ea8eddd0f8dc862fa7d09a3ee0b1
parent6695b4a203ab03941c8b3305a3e55cc02b85a5ac (diff)
downloadvolse-hubzilla-c3fd5ed73202f4dd17dda87ac968b0db4f44d423.tar.gz
volse-hubzilla-c3fd5ed73202f4dd17dda87ac968b0db4f44d423.tar.bz2
volse-hubzilla-c3fd5ed73202f4dd17dda87ac968b0db4f44d423.zip
one true profile photo, force nicknames
-rw-r--r--include/auth.php12
-rw-r--r--mod/dfrn_request.php47
-rw-r--r--mod/photo.php78
-rw-r--r--mod/profile.php9
-rw-r--r--mod/profile_photo.php165
-rw-r--r--mod/profiles.php8
-rw-r--r--mod/register.php55
-rw-r--r--mod/settings.php32
-rw-r--r--view/cropbody.tpl3
-rw-r--r--view/profile_edit.tpl4
-rw-r--r--view/profile_entry.tpl7
-rw-r--r--view/profile_entry_default.tpl6
-rw-r--r--view/profile_listing_header.tpl2
-rw-r--r--view/profile_photo.tpl2
-rw-r--r--view/register.tpl16
-rw-r--r--view/style.css40
16 files changed, 273 insertions, 213 deletions
diff --git a/include/auth.php b/include/auth.php
index bbbe8eb0d..513d717e3 100644
--- a/include/auth.php
+++ b/include/auth.php
@@ -23,12 +23,7 @@ if((x($_SESSION,'authenticated')) && (! ($_POST['auth-params'] == 'login'))) {
if(strlen($a->user['timezone']))
date_default_timezone_set($a->user['timezone']);
- if(x($a->user,'nickname'))
- $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
- else
- $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['uid'];
-
-
+ $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
$r = q("SELECT * FROM `contact` WHERE `uid` = %s AND `self` = 1 LIMIT 1",
intval($_SESSION['uid']));
@@ -61,10 +56,7 @@ else {
$_SESSION['uid'] = $r[0]['uid'];
$_SESSION['admin'] = $r[0]['admin'];
$_SESSION['authenticated'] = 1;
- if(x($r[0],'nickname'))
- $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
- else
- $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['uid'];
+ $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
$_SESSION['sysmsg'] = "Welcome back " . $r[0]['username'] . EOL;
$a->user = $r[0];
diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php
index b0c7b36aa..33a898d36 100644
--- a/mod/dfrn_request.php
+++ b/mod/dfrn_request.php
@@ -75,19 +75,19 @@ function dfrn_request_post(&$a) {
$parms = scrape_dfrn($dfrn_url);
if(! count($parms)) {
- notice( 'URL is not valid or does not contain profile information.' . EOL );
+ notice( 'Profile location is not valid or does not contain profile information.' . EOL );
return;
}
else {
if(! x($parms,'fn'))
- notice( 'Warning: DFRN profile has no identifiable owner name.' . EOL );
+ notice( 'Warning: profile location has no identifiable owner name.' . EOL );
if(! x($parms,'photo'))
- notice( 'Warning: DFRN profile has no profile photo.' . EOL );
+ notice( 'Warning: profile location has no profile photo.' . EOL );
$invalid = validate_dfrn($parms);
if($invalid) {
- notice( $invalid . ' required DFRN parameter'
+ notice( $invalid . ' required parameter'
. (($invalid == 1) ? " was " : "s were " )
- . "not found at the given URL" . EOL . print_r($parms,true)) ;
+ . "not found at the given location." . EOL ) ;
return;
}
}
@@ -145,10 +145,8 @@ function dfrn_request_post(&$a) {
// If our user confirms the request, a record of it will need to exist on the
// originator's site in order for the confirmation process to complete..
- if($a->profile['nickname'])
- $tailname = $a->profile['nickname'];
- else
- $tailname = $a->profile['uid'];
+
+ $tailname = $a->profile['nickname'];
$uid = $a->profile['uid'];
@@ -170,9 +168,26 @@ function dfrn_request_post(&$a) {
$hostname = substr($url,strpos($url,'@') + 1);
require_once('Scrape.php');
- $parms = scrape_meta('http://' . $url);
- if((x($parms,'dfrn-template')) && strstr($parms['dfrn-template'],'%s'))
+
+ $parms = scrape_meta('https://' . $url);
+ if((x($parms,'dfrn-template')) && strstr($parms['dfrn-template'],'%s')) {
$url = sprintf($parms['dfrn-template'],$username);
+ }
+ else {
+ $parms = scrape_meta('http://' . $url);
+ if((x($parms,'dfrn-template')) && strstr($parms['dfrn-template'],'%s')) {
+ $url = sprintf($parms['dfrn-template'],$username);
+ }
+ else {
+ $url = '';
+ }
+ }
+
+ }
+
+ if(! strlen($url)) {
+ notice("Unable to resolve your name at the provided location." . EOL);
+ return;
}
$ret = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1",
@@ -207,19 +222,19 @@ function dfrn_request_post(&$a) {
$parms = scrape_dfrn($url);
if(! count($parms)) {
- notice( 'URL is not valid or does not contain profile information.' . EOL );
+ notice( 'Profile location is not valid or does not contain profile information.' . EOL );
killme();
}
else {
if(! x($parms,'fn'))
- notice( 'Warning: DFRN profile has no identifiable owner name.' . EOL );
+ notice( 'Warning: profile location has no identifiable owner name.' . EOL );
if(! x($parms,'photo'))
- notice( 'Warning: DFRN profile has no profile photo.' . EOL );
+ notice( 'Warning: profile location has no profile photo.' . EOL );
$invalid = validate_dfrn($parms);
if($invalid) {
- notice( $invalid . ' required DFRN parameter'
+ notice( $invalid . ' required parameter'
. (($invalid == 1) ? " was " : "s were " )
- . "not found at the given URL" . EOL . print_r($parms,true)) ;
+ . "not found at the given location." . EOL ) ;
return;
}
diff --git a/mod/photo.php b/mod/photo.php
index bd0e415bf..f922c7ab2 100644
--- a/mod/photo.php
+++ b/mod/photo.php
@@ -2,24 +2,72 @@
function photo_init(&$a) {
- if($a->argc != 2) {
- killme();
+ switch($a->argc) {
+ case 3:
+ $person = $a->argv[2];
+ $type = $a->argv[1];
+ break;
+ case 2:
+ $photo = $a->argv[1];
+ break;
+ case 1:
+ default:
+ killme();
+ return; // NOTREACHED
+ }
+
+ if(x($type)) {
+ switch($type) {
+
+ case 'profile':
+ $resolution = 4;
+ break;
+ case 'avatar':
+ default:
+ $resolution = 5;
+ break;
+ }
+
+ $uid = str_replace('.jpg', '', $person);
+
+ $r = q("SELECT * FROM `photo` WHERE `scale` = %d AND `uid` = %d AND `profile` = 1 LIMIT 1",
+ intval($resolution),
+ intval($uid)
+ );
+ if(count($r)) {
+ $data = $r[0]['data'];
+ }
+ if(x($data) === false) {
+ $data = file_get_contents(($resolution == 5)
+ ? 'images/default-profile-sm.jpg'
+ : 'images/default-profile.jpg');
+ }
}
- $resolution = 0;
- $photo = $a->argv[1];
- $photo = str_replace('.jpg','',$photo);
- if(substr($photo,-2,1) == '-') {
- $resolution = intval(substr($photo,-1,1));
- $photo = substr($photo,0,-2);
+ else {
+ $resolution = 0;
+ $photo = str_replace('.jpg','',$photo);
+
+ if(substr($photo,-2,1) == '-') {
+ $resolution = intval(substr($photo,-1,1));
+ $photo = substr($photo,0,-2);
+ }
+
+ $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d LIMIT 1",
+ dbesc($photo),
+ intval($resolution)
+ );
+ if(count($r)) {
+ $data = $r[0]['data'];
+ }
}
- $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s'
- AND `scale` = %d LIMIT 1",
- dbesc($photo),
- intval($resolution));
- if($r === NULL || (! count($r))) {
+
+ if(x($data) === false) {
killme();
+ return; // NOTREACHED
}
- header("Content-type: image/jpeg");
- echo $r[0]['data'];
+ header("Content-type: image/jpeg");
+ echo $data;
+ killme();
+ return; //NOTREACHED
} \ No newline at end of file
diff --git a/mod/profile.php b/mod/profile.php
index 5cd13d596..db538750d 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -1,11 +1,7 @@
<?php
if(! function_exists('profile_load')) {
-function profile_load(&$a,$uid,$profile = 0) {
-
- $sql_extra = (($uid) && (intval($uid))
- ? " WHERE `user`.`uid` = " . intval($uid)
- : " WHERE `user`.`nickname` = '" . dbesc($uid) . "' " );
+function profile_load(&$a, $username, $profile = 0) {
if(remote_user()) {
$r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
@@ -23,7 +19,8 @@ function profile_load(&$a,$uid,$profile = 0) {
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile`
LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
- $sql_extra $sql_which LIMIT 1"
+ WHERE `user`.`nickname` = '%s' $sql_which LIMIT 1",
+ dbesc($username)
);
if(($r === false) || (! count($r))) {
diff --git a/mod/profile_photo.php b/mod/profile_photo.php
index 8b536c2aa..36657ba14 100644
--- a/mod/profile_photo.php
+++ b/mod/profile_photo.php
@@ -4,9 +4,7 @@ require_once("Photo.php");
function profile_photo_init(&$a) {
- if((! x($_SESSION,'authenticated')) && (x($_SESSION,'uid'))) {
- $_SESSION['sysmsg'] .= "Permission denied." . EOL;
- $a->error = 404;
+ if((! local_user()) {
return;
}
require_once("mod/profile.php");
@@ -16,23 +14,22 @@ function profile_photo_init(&$a) {
function profile_photo_post(&$a) {
-
-
- if((! x($_SESSION,'authenticated')) && (! (x($_SESSION,'uid')))) {
- $_SESSION['sysmsg'] .= "Permission denied." . EOL;
+ if((! local_user()) {
+ notice ( "Permission denied." . EOL );
return;
}
- if($a->argc > 1)
- $profile_id = intval($a->argv[1]);
+ if((x($_POST,'cropfinal')) && ($_POST['cropfinal'] == 1)) {
- if(x($_POST,'xstart') !== false) {
// phase 2 - we have finished cropping
- if($a->argc != 3) {
- $_SESSION['sysmsg'] .= "Image uploaded but image cropping failed." . EOL;
+
+ if($a->argc != 2) {
+ notice( "Image uploaded but image cropping failed." . EOL );
return;
}
- $image_id = $a->argv[2];
+
+ $image_id = $a->argv[1];
+
if(substr($image_id,-2,1) == '-') {
$scale = substr($image_id,-1,1);
$image_id = substr($image_id,0,-2);
@@ -44,77 +41,64 @@ function profile_photo_post(&$a) {
$srcW = $_POST['xfinal'] - $srcX;
$srcH = $_POST['yfinal'] - $srcY;
- $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d LIMIT 1",
+ $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d AND `scale` = %d LIMIT 1",
dbesc($image_id),
+ dbesc($_SESSION['uid']),
intval($scale));
- if($r !== NULL && (count($r))) {
- $im = new Photo($r[0]['data']);
+
+ if(count($r)) {
+
+ $base_image = $r[0];
+
+ $im = new Photo($base_image['data']);
$im->cropImage(175,$srcX,$srcY,$srcW,$srcH);
- $s = $im->imageString();
- $x = $im->getWidth();
- $y = $im->getHeight();
$ret = q("INSERT INTO `photo` ( `uid`, `resource-id`, `created`, `edited`, `filename`,
- `height`, `width`, `data`, `scale` )
- VALUES ( %d, '%s', '%s', '%s', '%s', %d, %d, '%s', 4 )",
+ `height`, `width`, `data`, `scale`, `profile` )
+ VALUES ( %d, '%s', '%s', '%s', '%s', %d, %d, '%s', 4, 1 )",
intval($_SESSION['uid']),
- dbesc($r[0]['resource-id']),
+ dbesc($base_image['resource-id']),
datetime_convert(),
datetime_convert(),
- dbesc($r[0]['filename']),
- intval($y),
- intval($x),
- dbesc($s));
- if($r === NULL)
- $_SESSION['sysmsg'] .= "Image size reduction (175) failed." . EOL;
+ dbesc($base_image['filename']),
+ intval($im->getHeight()),
+ intval($im->getWidth()),
+ dbesc($im->imageString()
+ );
+
+ if($r === false)
+ notice ("Image size reduction (175) failed." . EOL );
$im->scaleImage(80);
- $s = $im->imageString();
- $x = $im->getWidth();
- $y = $im->getHeight();
+
$ret = q("INSERT INTO `photo` ( `uid`, `resource-id`, `created`, `edited`, `filename`,
- `height`, `width`, `data`, `scale` )
- VALUES ( %d, '%s', '%s', '%s', '%s', %d, %d, '%s', 5 )",
+ `height`, `width`, `data`, `scale`, `profile` )
+ VALUES ( %d, '%s', '%s', '%s', '%s', %d, %d, '%s', 5, 1 )",
intval($_SESSION['uid']),
- dbesc($r[0]['resource-id']),
+ dbesc($base_image['resource-id']),
datetime_convert(),
datetime_convert(),
- dbesc($r[0]['filename']),
- intval($y),
- intval($x),
- dbesc($s));
- if($r === NULL)
- $_SESSION['sysmsg'] .= "Image size reduction (80) failed." . EOL;
- $r = q("UPDATE `profile` SET `photo` = '%s', `thumb` = '%s' WHERE `id` = %d LIMIT 1",
- dbesc($a->get_baseurl() . '/photo/' . $image_id . '-4.jpg'),
- dbesc($a->get_baseurl() . '/photo/' . $image_id . '-5.jpg'),
- intval($profile_id)
+ dbesc($base_image['filename']),
+ intval($im->getHeight()),
+ intval($im->getWidth()),
+ dbesc($im->imageString()
);
+
if($r === false)
- $_SESSION['sysmsg'] .= "Failed to add image to profile." . EOL;
-// We should really only do this if requested, or if it is the default profile. The contact
-//table images are used in coversations.
- $r = q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s' WHERE `uid` = %d AND `self` = 1 LIMIT 1",
- dbesc($a->get_baseurl() . '/photo/' . $image_id . '-4.jpg'),
- dbesc($a->get_baseurl() . '/photo/' . $image_id . '-5.jpg'),
+ notice("Image size reduction (80) failed." . EOL);
+
+ // Unset the profile photo flag from any other photos I own
+
+ $r = q("UPDATE `photo` SET `profile` = 0 WHERE `profile` = 1 AND `resource-id` != '%s' AND `uid` = %d"
+ dbesc($base_image['resource-id']),
intval($_SESSION['uid'])
- );
- if($r ===false)
- notice("Failed to add photo to contact table." .EOL );
+ )
}
goaway($a->get_baseurl() . '/profiles');
+ return; // NOTREACHED
}
- $extra_sql = (($profile_id) ? " AND `id` = " . intval($profile_id) : " AND `is-default` = 1 " );
-
-
- $r = q("SELECT `id` FROM `profile` WHERE `uid` = %d $extra_sql LIMIT 1", intval($_SESSION['uid']));
- if($r === NULL || (! count($r))) {
- $_SESSION['sysmsg'] .= "Profile unavailable." . EOL;
- return;
- }
-
$src = $_FILES['userfile']['tmp_name'];
$filename = basename($_FILES['userfile']['name']);
$filesize = intval($_FILES['userfile']['size']);
@@ -123,16 +107,17 @@ function profile_photo_post(&$a) {
$ph = new Photo($imagedata);
if(! ($image = $ph->getImage())) {
- $_SESSION['sysmsg'] .= "Unable to process image." . EOL;
+ notice("Unable to process image." . EOL);
@unlink($src);
return;
}
@unlink($src);
+
$width = $ph->getWidth();
$height = $ph->getHeight();
- if($width < 175 || $width < 175) {
+ if($width < 175 || $height < 175) {
$ph->scaleImageUp(200);
$width = $ph->getWidth();
$height = $ph->getHeight();
@@ -142,6 +127,7 @@ function profile_photo_post(&$a) {
$str_image = $ph->imageString();
$smallest = 0;
+
$r = q("INSERT INTO `photo` ( `uid`, `resource-id`, `created`, `edited`, `filename`,
`height`, `width`, `data`, `scale` )
VALUES ( %d, '%s', '%s', '%s', '%s', %d, %d, '%s', 0 )",
@@ -154,9 +140,9 @@ function profile_photo_post(&$a) {
intval($width),
dbesc($str_image));
if($r)
- $_SESSION['sysmsg'] .= "Image uploaded successfully." . EOL;
+ notice("Image uploaded successfully." . EOL);
else
- $_SESSION['sysmsg'] .= "Image upload failed." . EOL;
+ notice("Image upload failed." . EOL);
if($width > 640 || $height > 640) {
$ph->scaleImage(640);
@@ -172,11 +158,12 @@ function profile_photo_post(&$a) {
datetime_convert(),
datetime_convert(),
dbesc(basename($filename)),
- intval($height),
- intval($width),
- dbesc($str_image));
- if($r === NULL)
- $_SESSION['sysmsg'] .= "Image size reduction (640) failed." . EOL;
+ intval($ph->getHeight()),
+ intval($ph->getWidth()),
+ dbesc($ph->imageString()
+ );
+ if($r === false)
+ notice("Image size reduction (640) failed." . EOL );
else
$smallest = 1;
}
@@ -184,48 +171,34 @@ function profile_photo_post(&$a) {
$a->config['imagecrop'] = $hash;
$a->config['imagecrop_resolution'] = $smallest;
$a->page['htmlhead'] .= file_get_contents("view/crophead.tpl");
-
+ return;
}
if(! function_exists('profile_photo_content')) {
function profile_photo_content(&$a) {
+ if(! local_user()) {
+ notice("Permission denied." . EOL );
+ return;
+ }
if(! x($a->config,'imagecrop')) {
- if((! x($_SESSION['authenticated'])) && (! (x($_SESSION,'uid')))) {
- $_SESSION['sysmsg'] .= "Permission denied." . EOL;
- return;
- }
-
- if($a->argc > 1)
- $profile_id = intval($a->argv[1]);
- $extra_sql = (($profile_id) ? " AND `id` = $profile_id " : " AND `is-default` = 1 " );
+ $tpl = file_get_contents('view/profile_photo.tpl');
+ $o .= replace_macros($tpl,array(
- $r = q("SELECT `id` FROM `profile` WHERE `uid` = %d $extra_sql LIMIT 1", intval($_SESSION['uid']));
- if($r === NULL || (! count($r))) {
- $_SESSION['sysmsg'] .= "Profile unavailable." . EOL;
- return;
- }
-
- $o = file_get_contents('view/profile_photo.tpl');
-
- $o = replace_macros($o,array(
- '$profile_id' => $r[0]['id'],
- '$uid' => $_SESSION['uid'],
- ));
+ ));
return $o;
}
else {
$filename = $a->config['imagecrop'] . '-' . $a->config['imagecrop_resolution'] . '.jpg';
$resolution = $a->config['imagecrop_resolution'];
- $o = file_get_contents("view/cropbody.tpl");
- $o = replace_macros($o,array(
+ $tpl = file_get_contents("view/cropbody.tpl");
+ $o .= replace_macros($tpl,array(
'$filename' => $filename,
- '$profile_id' => $a->argv[1],
'$resource' => $a->config['imagecrop'] . '-' . $a->config['imagecrop_resolution'],
'$image_url' => $a->get_baseurl() . '/photo/' . $filename
));
@@ -233,5 +206,5 @@ function profile_photo_content(&$a) {
return $o;
}
-
+ return; // NOTREACHED
}} \ No newline at end of file
diff --git a/mod/profiles.php b/mod/profiles.php
index 208f8545e..db4426474 100644
--- a/mod/profiles.php
+++ b/mod/profiles.php
@@ -4,7 +4,7 @@
function profiles_post(&$a) {
if(! local_user()) {
- $_SESSION['sysmsg'] .= "Unauthorised." . EOL;
+ notice( "Permission denied." . EOL);
return;
}
if(($a->argc > 1) && ($a->argv[1] != "new") && intval($a->argv[1])) {
@@ -251,9 +251,6 @@ function profiles_content(&$a) {
}
-
-
-
if(intval($a->argv[1])) {
$r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($a->argv[1]),
@@ -265,7 +262,7 @@ function profiles_content(&$a) {
}
require_once('mod/profile.php');
- profile_load($a,$_SESSION['uid'],$r[0]['id']);
+ profile_load($a,$a->user['nickname'],$r[0]['id']);
require_once('view/profile_selectors.php');
@@ -293,6 +290,7 @@ function profiles_content(&$a) {
$is_default = (($r[0]['is-default']) ? 1 : 0);
$tpl = file_get_contents("view/profile_edit.tpl");
$o .= replace_macros($tpl,array(
+ '$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''),
'$baseurl' => $a->get_baseurl(),
'$profile_id' => $r[0]['id'],
'$profile_name' => $r[0]['profile-name'],
diff --git a/mod/register.php b/mod/register.php
index 53ead682f..5e132d584 100644
--- a/mod/register.php
+++ b/mod/register.php
@@ -32,10 +32,12 @@ function register_post(&$a) {
if(x($_POST,'username'))
$username = notags(trim($_POST['username']));
+ if(x($_POST['nickname']))
+ $nickname = notags(trim($_POST['nickname']));
if(x($_POST,'email'))
- $email =notags(trim($_POST['email']));
+ $email = notags(trim($_POST['email']));
- if((! x($username)) || (! x($email))) {
+ if((! x($username)) || (! x($email)) || (! x($nickname))) {
notice( "Please enter the required information.". EOL );
return;
}
@@ -43,17 +45,28 @@ function register_post(&$a) {
$err = '';
if(!eregi('[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z]{2,6}',$email))
- $err .= " Not valid email.";
- if(strlen($username) > 40)
+ $err .= " Not a valid email address.";
+ if(strlen($username) > 48)
$err .= " Please use a shorter name.";
if(strlen($username) < 3)
$err .= " Name too short.";
$r = q("SELECT `uid` FROM `user`
WHERE `email` = '%s' LIMIT 1",
dbesc($email)
- );
+ );
+
if($r !== false && count($r))
- $err .= " This email address is already registered.";
+ $err .= " This email address is already registered on this system.";
+
+ if(! preg_match("/^[a-zA-Z][a-zA-Z0-9\-\_]*$/",$nickname))
+ $err .= " Nickname <strong>must</strong> start with a letter and contain only letters, numbers, dashes, or underscore.";
+ $r = q("SELECT `uid` FROM `user`
+ WHERE `nickname` = '%s' LIMIT 1",
+ dbesc($nickname)
+ );
+ if(count($r))
+ $err .= " Nickname is already registered. Please choose another." . EOL;
+
if(strlen($err)) {
notice( $err . EOL );
return;
@@ -79,12 +92,13 @@ function register_post(&$a) {
$pkey = openssl_pkey_get_details($res);
$pubkey = $pkey["key"];
- $r = q("INSERT INTO `user` ( `username`, `password`, `email`,
+ $r = q("INSERT INTO `user` ( `username`, `password`, `email`, `nickname`,
`pubkey`, `prvkey`, `verified`, `blocked` )
- VALUES ( '%s', '%s', '%s', '%s', '%s', %d, %d )",
+ VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
dbesc($username),
dbesc($new_password_encoded),
dbesc($email),
+ dbesc($nickname),
dbesc($pubkey),
dbesc($prvkey),
intval($verified),
@@ -105,15 +119,15 @@ function register_post(&$a) {
return;
}
- if(x($newuid) !== NULL) {
+ if(x($newuid) !== false) {
$r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb` )
VALUES ( %d, '%s', %d, '%s', '%s', '%s' ) ",
intval($newuid),
'default',
1,
dbesc($username),
- dbesc($a->get_baseurl() . '/images/default-profile.jpg'),
- dbesc($a->get_baseurl() . '/images/default-profile-sm.jpg')
+ dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
+ dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg")
);
if($r === false) {
@@ -129,13 +143,13 @@ function register_post(&$a) {
intval($newuid),
datetime_convert(),
dbesc($username),
- dbesc($a->get_baseurl() . '/images/default-profile.jpg'),
- dbesc($a->get_baseurl() . '/images/default-profile-sm.jpg'),
- dbesc($a->get_baseurl() . '/profile/' . intval($newuid)),
- dbesc($a->get_baseurl() . '/dfrn_request/' . intval($newuid)),
- dbesc($a->get_baseurl() . '/dfrn_notify/' . intval($newuid)),
- dbesc($a->get_baseurl() . '/dfrn_poll/' . intval($newuid)),
- dbesc($a->get_baseurl() . '/dfrn_confirm/' . intval($newuid))
+ dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
+ dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
+ dbesc($a->get_baseurl() . "/profile/$nickname"),
+ dbesc($a->get_baseurl() . "/dfrn_request/$nickname"),
+ dbesc($a->get_baseurl() . "/dfrn_notify/$nickname"),
+ dbesc($a->get_baseurl() . "/dfrn_poll/$nickname"),
+ dbesc($a->get_baseurl() . "/dfrn_confirm/$nickname")
);
@@ -181,7 +195,10 @@ function register_content(&$a) {
}
$o = file_get_contents("view/register.tpl");
- $o = replace_macros($o, array('$registertext' =>((x($a->config,'register_text'))? $a->config['register_text'] : "" )));
+ $o = replace_macros($o, array(
+ '$registertext' =>((x($a->config,'register_text'))? $a->config['register_text'] : "" ),
+ '$sitename' => $a->get_hostname()
+ ));
return $o;
}}
diff --git a/mod/settings.php b/mod/settings.php
index 1abb60fcc..54fca992c 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -53,13 +53,10 @@ function settings_post(&$a) {
$username = notags(trim($_POST['username']));
$email = notags(trim($_POST['email']));
- if(x($_POST,'nick'))
- $nick = notags(trim($_POST['nick']));
$timezone = notags(trim($_POST['timezone']));
$username_changed = false;
$email_changed = false;
- $nick_changed = false;
$zone_changed = false;
$err = '';
@@ -81,19 +78,6 @@ function settings_post(&$a) {
if($r !== NULL && count($r))
$err .= " This email address is already registered." . EOL;
}
- if((x($nick)) && ($nick != $a->user['nickname'])) {
- $nick_changed = true;
- if(! preg_match("/^[a-zA-Z][a-zA-Z0-9\-\_]*$/",$nick))
- $err .= " Nickname must start with a letter and contain only contain letters, numbers, dashes, and underscore.";
- $r = q("SELECT `uid` FROM `user`
- WHERE `nickname` = '%s' LIMIT 1",
- dbesc($nick)
- );
- if($r !== NULL && count($r))
- $err .= " Nickname is already registered. Try another." . EOL;
- }
- else
- $nick = $a->user['nickname'];
if(strlen($err)) {
$_SESSION['sysmsg'] .= $err . EOL;
@@ -104,11 +88,10 @@ function settings_post(&$a) {
if(strlen($timezone))
date_default_timezone_set($timezone);
}
- if($email_changed || $username_changed || $nick_changed || $zone_changed ) {
- $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `nickname` = '%s', `timezone` = '%s' WHERE `uid` = %d LIMIT 1",
+ if($email_changed || $username_changed || $zone_changed ) {
+ $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `timezone` = '%s' WHERE `uid` = %d LIMIT 1",
dbesc($username),
dbesc($email),
- dbesc($nick),
dbesc($timezone),
intval($_SESSION['uid']));
if($r)
@@ -119,17 +102,6 @@ function settings_post(&$a) {
// FIXME - set to un-verified, blocked and redirect to logout
}
- if($nick_changed) {
- $r = q ("UPDATE `profile` SET `url` = '%s', `request` = '%s', `notify` = '%s', `poll` = '%s', `confirm` = '%s'
- WHERE `uid` = %d AND `self` = 1 LIMIT 1",
- dbesc( $a->get_baseurl() . '/profile/' . $nick ),
- dbesc( $a->get_baseurl() . '/dfrn_request/' . $nick ),
- dbesc( $a->get_baseurl() . '/dfrn_notify/' . $nick ),
- dbesc( $a->get_baseurl() . '/dfrn_poll/' . $nick ),
- dbesc( $a->get_baseurl() . '/dfrn_confirm/' . $nick ),
- intval($_SESSION['uid'])
- );
- }
// Refresh the content display with new data
diff --git a/view/cropbody.tpl b/view/cropbody.tpl
index 03baf61e7..39395af8e 100644
--- a/view/cropbody.tpl
+++ b/view/cropbody.tpl
@@ -39,9 +39,10 @@ Please adjust the image cropping for optimum viewing.
</script>
-<form action="profile_photo/$profile_id/$resource" id="crop-image-form" method="post" />
+<form action="profile_photo/$resource" id="crop-image-form" method="post" />
<input type="hidden" name="imagename" value="$hash" />
+<input type="hidden" name="cropfinal" value="1" />
<input type="hidden" name="xstart" id="x1" />
<input type="hidden" name="ystart" id="y1" />
<input type="hidden" name="xfinal" id="x2" />
diff --git a/view/profile_edit.tpl b/view/profile_edit.tpl
index 3dcf8df2c..20b9a0993 100644
--- a/view/profile_edit.tpl
+++ b/view/profile_edit.tpl
@@ -2,6 +2,10 @@
<div id="profile-edit-clone-link-wrapper" ><a href="profiles/clone/$profile_id" id="profile-edit-clone-link" title="Create a new profile using these settings">Clone this profile</a></div>
+<div id="profile-edit-drop-link-wrapper" ><a href="profiles/drop/$profile_id" id="profile-edit-drop-link" title="Delete this profile" $disabled >Delete this profile</a></div>
+
+<div id="profile-edit-links-end"></div>
+
$default
<div id="profile-edit-wrapper" >
diff --git a/view/profile_entry.tpl b/view/profile_entry.tpl
index 9b3be79d3..db28c0a8f 100644
--- a/view/profile_entry.tpl
+++ b/view/profile_entry.tpl
@@ -1,13 +1,10 @@
<div class="profile-listing" >
<div class="profile-listing-photo-wrapper" >
-<a class="profile-listing-photo-edit-link" id="profile-listing-photo-edit-link-$id" title="Edit/Change Profile Photo" href="profile_photo/$id" ><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Profile Image" /></a>
+<a href="profiles/$id" class="profile-listing-edit-link"><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Profile Image" /></a>
</div>
+<div class="profile-listing-photo-end"></div>
<div class="profile-listing-name" id="profile-listing-name-$id">$profile_name</div>
-<div class="profile-listing-edit-buttons-wrapper" id="profile-listing-edit-buttons-wrapper-$id">
-<a href="profiles/$id" class="profile-listing-edit-link" ><img src="images/b_edit.gif" alt="Edit Profile" title="Edit Profile" /></a>
-<a href="profiles/drop/$id" class="profile-listing-drop-link" ><img src="images/b_drop.gif" alt="Delete Profile" title="Delete Profile" /></a>
-</div>
</div>
<div class="profile-listing-end"></div>
diff --git a/view/profile_entry_default.tpl b/view/profile_entry_default.tpl
index bd74b9c54..e9bceba89 100644
--- a/view/profile_entry_default.tpl
+++ b/view/profile_entry_default.tpl
@@ -1,11 +1,9 @@
<div class="profile-listing" >
<div class="profile-listing-photo-wrapper" >
-<a class="profile-listing-photo-edit-link" id="profile-listing-photo-edit-link-$id" title="Edit/Change Profile Photo" href="profile_photo/$id" ><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Profile Image" /></a>
+<a href="profiles/$id" class="profile-listing-edit-link" ><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Profile Image" /></a>
</div>
+<div class="profile-listing-photo-end" ></div>
<div class="profile-listing-name" id="profile-listing-name-$id">$profile_name</div>
-<div class="profile-listing-edit-buttons-wrapper" id="profile-listing-edit-buttons-wrapper-$id">
-<a href="profiles/$id" class="profile-listing-edit-link" ><img src="images/b_edit.gif" alt="Edit Profile" title="Edit Profile" /></a>
-</div>
</div>
<div class="profile-listing-end"></div>
diff --git a/view/profile_listing_header.tpl b/view/profile_listing_header.tpl
index ce052658d..d4b139a69 100644
--- a/view/profile_listing_header.tpl
+++ b/view/profile_listing_header.tpl
@@ -1,6 +1,6 @@
<h1>Profiles</h1>
<p id="profile-listing-desc" >
-Click photo to change profile image or use controls to edit/delete profile details.
+<a href="profile_photo" >Change profile photo</a>
</p>
<div id="profile-listing-new-link-wrapper" >
<a href="profiles/new" id="profile-listing-new-link" name="Create New Profile" >Create New Profile</a>
diff --git a/view/profile_photo.tpl b/view/profile_photo.tpl
index 0bd5d7b1b..d518e7331 100644
--- a/view/profile_photo.tpl
+++ b/view/profile_photo.tpl
@@ -1,6 +1,6 @@
<h1>Upload Profile Photo</h1>
-<form enctype="multipart/form-data" action="profile_photo/$profile_id" method="post">
+<form enctype="multipart/form-data" action="profile_photo" method="post">
<div id="profile-photo-upload-wrapper">
<label id="profile-photo-upload-label" for="profile-photo-upload">Upload File: </label>
diff --git a/view/register.tpl b/view/register.tpl
index 30cc1ca1f..9b78d47eb 100644
--- a/view/register.tpl
+++ b/view/register.tpl
@@ -1,3 +1,4 @@
+<h3>Registration</h3>
<form action="register" method="post" >
$registertext
@@ -6,11 +7,26 @@
<input type="text" maxlength="60" size="32" name="username" id="register-name" value="" >
</div>
<div id="register-name-end" ></div>
+
+
<div id="register-email-wrapper" >
<label for="register-email" id="label-register-email" >Your Email Address: </label>
<input type="text" maxlength="60" size="32" name="email" id="register-email" value="" >
</div>
<div id="register-email-end" ></div>
+
+ <p id="register-nickname-desc" >
+ You will use a unique nickname to identify yourself in our social network. This must begin with a text character.
+ Your profile identifier will then be '<strong>nickname@$sitename</strong>'.
+ </p>
+ <div id="register-nickname-wrapper" >
+ <label for="register-nickname" id="label-register-nickname" >Choose a nickname: </label>
+ <input type="text" maxlength="60" size="32" name="nickname" id="register-nickname" value="" ><div id="register-sitename">@$sitename</div>
+ </div>
+ <div id="register-nickname-end" ></div>
+
+
+
<div id="register-submit-wrapper">
<input type="submit" name="submit" id="register-submit-button" value="Register" />
</div>
diff --git a/view/style.css b/view/style.css
index a8f1abb13..128464b1d 100644
--- a/view/style.css
+++ b/view/style.css
@@ -102,24 +102,32 @@ footer {
margin-right: 20px;
}
-#label-register-name, #label-register-email {
+#label-register-name, #label-register-email, #label-register-nickname {
float: left;
width: 350px;
margin-top: 10px;
}
-#register-name, #register-email {
+#register-name, #register-email, #register-nickname {
float: left;
margin-top: 10px;
width: 150px;
}
-#register-name-end, #register-email-end, #register-submit-end {
+#register-name-end, #register-email-end, #register-nickname-end, #register-submit-end {
clear: both;
}
+#register-nickname-desc {
+ margin-top: 30px;
+ width: 650px;
+}
+#register-sitename {
+ float: left;
+ margin-top: 10px;
+}
#register-submit-button {
- margin-top: 10px;
+ margin-top: 50px;
margin-left: 350px;
}
@@ -275,8 +283,22 @@ input#dfrn-url {
}
#profile-edit-clone-link-wrapper {
+ float: left;
margin-left: 50px;
margin-bottom: 20px;
+ width: 300px;
+}
+
+#profile-edit-drop-link-wrapper {
+ float: left;
+
+}
+
+#profile-edit-links-end {
+ clear: both;
+}
+.profile-listing-photo {
+ border: none;
}
.profile-edit-submit-wrapper {
@@ -494,7 +516,12 @@ input#dfrn-url {
margin-bottom: 30px;
}
+#profile-listing-desc {
+ margin-left: 30px;
+}
+
#profile-listing-new-link-wrapper {
+ margin-left: 30px;
margin-bottom: 30px;
}
.profile-listing-photo-wrapper {
@@ -520,7 +547,12 @@ input#dfrn-url {
}
.profile-listing-name {
float: left;
+ margin-left: 32px;
margin-top: 10px;
+ color: #3172BD;
+ font-weight: bold;
+ width: 200px;
+
}
.fortune {
margin-top: 50px;