Inserite le mail di gestione utenti ed amministratori con task annessi;

Inserito stile per commenti e form commenti;
Inseriti articoli home e lato destro delle pagine in base alle
visualizzazioni;
Bugfix vari;
This commit is contained in:
Riccardo Di Dato
2016-03-17 17:56:39 +01:00
parent 3133d605a6
commit 8a29353046
23 changed files with 786 additions and 42 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
<?php
require_once(dirname(__FILE__). "/../load.php");
$tasks = array("NewsletterCheckTask");
$tasks = array("NewsletterCheckTask","DeleteOldPasswordResetRequestsTask");
if (sizeof($tasks)>0){
foreach ($tasks as $taskName){
+7 -1
View File
@@ -7,7 +7,13 @@ Creation Date: 12/gen/2016
require_once(dirname(__FILE__). "/../load.php");
$tasks = array("MailSendTask","GenerateAdminActivationMailTask");
$tasks = array(
"GenerateAdminActivationMailTask",
"GenerateUserActivationMailTask",
"GenerateAdminPasswordRecoveryMailTask",
"GenerateUserPasswordRecoveryMailTask",
"MailSendTask",
);
if (sizeof($tasks)>0){
foreach ($tasks as $taskName){
+51 -3
View File
@@ -11,6 +11,7 @@ class FDN_MailHelper {
$tmp = new stdClass();
$tmp->from = $config->emails->postmaster;
$tmp->fromName = "I Fatti di Napoli - Automailer";
$tmp->recipient = $admin->email;
$tmp->subject = "Attivazione account I Fatti di Napoli";
@@ -22,16 +23,63 @@ class FDN_MailHelper {
return new MailModel($tmp);
}
public static function getAdminPasswordResetMail($admin){
public static function getAdminPasswordResetMail(PasswordRecoveryRequestModel $request){
$config = GlobalVariables::get("config");
$user = GlobalVariables::get("dao")->getFirst($request->target->class,array("id"=>$request->target->id));
$tmp = new stdClass();
$tmp->from = $config->emails->postmaster;
$tmp->fromName = "I Fatti di Napoli - Automailer";
$tmp->recipient = $user->email;
$tmp->subject = "I Fatti di Napoli - Recupero password";
$confirmLink = GUIHandler::getBaseUrl()."admin/passwordRecovery.php?req=".$request->id."&u=".$request->target->id;
$tmp->body = "Hai ricevuto questo messaggio perchè hai effettuato una richiesta di recupero password dal nostro sito.<br/><br/>";
$tmp->body.= "Se non hai effettuato nessuna richiesta, semplicemente ignora questo messaggio.<br/><br/>";
$tmp->body.= "Clicka sul seguente link per generare una nuova password.<br/><br/>";
$tmp->body.='<a href="'.$confirmLink.'">'.$confirmLink.'</a>';
return new MailModel($tmp);
}
public static function getUserConfirmMail($user){
$config = GlobalVariables::get("config");
$tmp = new stdClass();
$tmp->from = $config->emails->postmaster;
$tmp->fromName = "I Fatti di Napoli - Automailer";
$tmp->recipient = $user->email;
$tmp->subject = "Attivazione account I Fatti di Napoli";
$confirmLink = GUIHandler::getBaseUrl()."confirmUser.php?regcode=".$user->id."&email=".$user->email;
$tmp->body = "Per attivare il tuo account clicka sul link riportato in seguito o copialo e incollalo nel tuo browser.<br/><br/>";
$tmp->body.='<a href="'.$confirmLink.'">'.$confirmLink.'</a>';
return new MailModel($tmp);
}
public static function getUserPasswordResetMail($user){
public static function getUserPasswordResetMail(PasswordRecoveryRequestModel $request){
$config = GlobalVariables::get("config");
$user = GlobalVariables::get("dao")->getFirst($request->target->class,array("id"=>$request->target->id));
$tmp = new stdClass();
$tmp->from = $config->emails->postmaster;
$tmp->fromName = "I Fatti di Napoli - Automailer";
$tmp->recipient = $user->email;
$tmp->subject = "I Fatti di Napoli - Recupero password";
$confirmLink = GUIHandler::getBaseUrl()."passwordRecovery.php?req=".$request->id."&u=".$request->target->id;
$tmp->body = "Hai ricevuto questo messaggio perchè hai effettuato una richiesta di recupero password dal nostro sito.<br/><br/>";
$tmp->body.= "Se non hai effettuato nessuna richiesta, semplicemente ignora questo messaggio.<br/><br/>";
$tmp->body.= "Clicka sul seguente link per generare una nuova password.<br/><br/>";
$tmp->body.='<a href="'.$confirmLink.'">'.$confirmLink.'</a>';
return new MailModel($tmp);
}
}
+37
View File
@@ -161,6 +161,43 @@ class PipelineHelper {
return $rval;
}
/**
* Il risultato di questa pipeline restituisce un oggetto con _id.banner contenente l'id del banner e visualizzazioni contenente il numero
* di visualizzazioni per oggi ordinati in modo crescente per visualizzazioni
* @param unknown $position
* @return multitype:multitype:multitype:number multitype:multitype:unknown number multitype:MongoDate multitype:multitype:multitype:number multitype:multitype:string
*/
public static function getMostViewedOfLastDays($startDate,$limit = 5){
$rval = array(
array(
'$match'=>array(
'statType'=>StatisticModel::STAT_TYPE_NOTIZIA,
'date'=>array(
'$gte'=>new MongoDate($startDate)
)
)
),
array(
'$group'=>array(
"_id"=>array(
'notizia'=>'$content.notizia',
),
"visualizzazioni"=>array(
'$sum'=>1
)
)
),
array(
'$sort'=>array(
"visualizzazioni"=>-1
)
),
array(
'$limit'=>$limit
)
);
return $rval;
}
}
+2
View File
@@ -37,6 +37,8 @@ require_once(dirname(__FILE__)."/models/BannerModel.php");
require_once(dirname(__FILE__)."/models/CBSQueueModel.php");
require_once(dirname(__FILE__)."/models/PasswordRecoveryRequestModel.php");
$dao = new GenericDao($database->dbName,$database->connectionString);
GlobalVariables::set("dao", $dao);
@@ -0,0 +1,52 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
class PasswordRecoveryRequestModel extends Model{
public function __construct($saveableObject = null){
parent::__construct($saveableObject);
if (!$this->hasProperty("target")){
throw new CoreException("Missing parameter 'target' while calling PasswordRecoveryRequestModel::__construct()");
}
if (!array_key_exists("class", $this->target)){
throw new CoreException("Missing parameter 'target.class' while calling PasswordRecoveryRequestModel::__construct()");
}
if (!array_key_exists("id", $this->target)){
throw new CoreException("Missing parameter 'target.id' while calling PasswordRecoveryRequestModel::__construct()");
}
if (!$this->hasProperty("date")){
$this->date = new MongoDate();
}
if (!$this->hasProperty("sent")){
$this->sent = false;
}
}
public static function fromModel(Model $model){
$buildObj = new stdClass();
if ($model instanceof UserModel || $model instanceof AdminModel ){
$buildObj->target = array();
$buildObj->target["class"] = get_class($model);
$buildObj->target["id"] = $model->id;
return new self($buildObj);
}
else {
throw new CoreException("Impossible to build a PasswordRecoveryRequestModel from a model of class '".get_class($model)."' in PasswordRecoveryRequestModel::fromModel()");
}
}
public static function getCollectionName(){
return "passwordRecovery";
}
}
?>
+19 -2
View File
@@ -320,10 +320,27 @@ class GUIHandler {
public static function generateRightBannerBlock(){
$stats = GlobalVariables::get("dao")->aggregate("StatisticModel",PipelineHelper::getMostViewedOfLastDays(strtotime("-7 days"),5));
$idArray = array_map(function ($ele){ return new MongoId($ele["_id"]["notizia"]);}, $stats);
$lastsNews = GlobalVariables::get("dao")->query("NotiziaModel",
array("status"=>NotiziaModel::STATUS_ACCEPTED),
array("sort"=>array("about.data"=>-1),"limit"=>5)
array("status"=>NotiziaModel::STATUS_ACCEPTED,"_id"=>array('$in'=>$idArray)),
array("sort"=>array("about.data"=>-1))
);
if (sizeof($lastsNews)<5){
$missing = 5-sizeof($lastsNews);
$add = GlobalVariables::get("dao")->query("NotiziaModel",
array("status"=>NotiziaModel::STATUS_ACCEPTED,"_id"=>array('$nin'=>$idArray)),
array("sort"=>array("about.data"=>-1),"limit"=>$missing)
);
$lastsNews = array_merge($lastsNews,$add);
}
// $lastsNews = GlobalVariables::get("dao")->query("NotiziaModel",
// array("status"=>NotiziaModel::STATUS_ACCEPTED),
// array("sort"=>array("about.data"=>-1),"limit"=>5)
// );
if (sizeof($lastsNews)>0){
$lastsNews = array_map(function($ele){$ele->testo = strip_tags($ele->testo);$ele->sottotitolo = strip_tags($ele->sottotitolo); return $ele; }, $lastsNews);
}
@@ -0,0 +1,27 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
class DeleteOldPasswordResetRequestsTask extends Task {
public static function getName(){
return "deleteOldPasswordRequests";
}
public static function getLabel(){
return "Cancella le richieste di reset password scadute";
}
public static function execute(){
$requests = GlobalVariables::get("dao")->query("PasswordRecoveryRequestModel",array("date"=>array( '$lte'=>new MongoDate( strtotime("-10 minutes") ) ) ) ,array("limit"=>10));
if(sizeof($requests)>0){
foreach ($requests as $request){
GlobalVariables::get("dao")->delete($request);
}
}
}
}
?>
@@ -0,0 +1,30 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
class GenerateAdminPasswordRecoveryMailTask extends Task {
public static function getName(){
return "generateAdminPasswordRecovery";
}
public static function getLabel(){
return "Genera email di recupero password per gli amministratori";
}
public static function execute(){
$requests = GlobalVariables::get("dao")->query("PasswordRecoveryRequestModel",array("sent"=>false,"target.class"=>"AdminModel"),array("limit"=>10));
if(sizeof($requests)>0){
foreach ($requests as $request){
$mail = FDN_MailHelper::getAdminPasswordResetMail($request);
GlobalVariables::get("dao")->save($mail);
$request->sent = true;
GlobalVariables::get("dao")->save($request);
}
}
}
}
?>
@@ -0,0 +1,30 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
class GenerateUserActivationMailTask extends Task {
public static function getName(){
return "generateUserActivation";
}
public static function getLabel(){
return "Genera email di attivazione utenti";
}
public static function execute(){
$users = GlobalVariables::get("dao")->query("UserModel",array("activationSent"=>false),array("limit"=>10));
if(sizeof($users)>0){
foreach ($users as $user){
$mail = FDN_MailHelper::getUserConfirmMail($user);
GlobalVariables::get("dao")->save($mail);
$user->activationSent = true;
GlobalVariables::get("dao")->save($user);
}
}
}
}
?>
@@ -0,0 +1,30 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
class GenerateUserPasswordRecoveryMailTask extends Task {
public static function getName(){
return "generateUserPasswordRecovery";
}
public static function getLabel(){
return "Genera email di recupero password per gli utenti";
}
public static function execute(){
$requests = GlobalVariables::get("dao")->query("PasswordRecoveryRequestModel",array("sent"=>false,"target.class"=>"UserModel"),array("limit"=>10));
if(sizeof($requests)>0){
foreach ($requests as $request){
$mail = FDN_MailHelper::getUserPasswordResetMail($request);
GlobalVariables::get("dao")->save($mail);
$request->sent = true;
GlobalVariables::get("dao")->save($request);
}
}
}
}
?>
+7
View File
@@ -12,4 +12,11 @@ require_once(dirname(__FILE__)."/NewsletterCheckTask.php");
require_once(dirname(__FILE__)."/SendBackupTask.php");
require_once(dirname(__FILE__)."/GenerateAdminActivationMailTask.php");
require_once(dirname(__FILE__)."/GenerateUserPasswordRecoveryMailTask.php");
require_once(dirname(__FILE__)."/GenerateAdminPasswordRecoveryMailTask.php");
require_once(dirname(__FILE__)."/DeleteOldPasswordResetRequestsTask.php");
require_once(dirname(__FILE__)."/GenerateUserActivationMailTask.php");
?>
+10 -1
View File
@@ -20,7 +20,16 @@ MenuGenerator::generateMenu();
HTMLHelper::generateAdminHead();
$taskList = array("MailSendTask","NewsletterCheckTask","SendBackupTask","GenerateAdminActivationMailTask");
$taskList = array(
"MailSendTask",
"NewsletterCheckTask",
"SendBackupTask",
"GenerateAdminActivationMailTask",
"GenerateUserPasswordRecoveryMailTask",
"GenerateAdminPasswordRecoveryMailTask",
"DeleteOldPasswordResetRequestsTask",
"GenerateUserActivationMailTask"
);
$saved = false;
$action = PostHandler::get("action");
+1
View File
@@ -26,6 +26,7 @@ $columns = array(
$buttons = array(
array("icon"=>"icon-medium-blue icon-editmed","page"=>"editGiornalisti.php"),
array("icon"=>"icon-medium-blue icon-lockmed","page"=>"resetPassword.php"),
array("icon"=>"icon-medium-blue icon-remove","page"=>"deleteGiornalisti.php")
);
+108
View File
@@ -0,0 +1,108 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
require_once(dirname(__FILE__)."/../load.php");
GUIHandler::generateHtmlHeaders(array(),true);
HTMLHelper::generateAdminHead();
try{
$changed = false;
if (!array_key_exists("req",$_GET) || strcmp("req", "")==0 || !array_key_exists("u",$_GET) || strcmp("u", "")==0){
GUIHandler::redirect("admin/login.php");
}
$requestCode = $_GET['req'];
$adminId = $_GET['u'];
$admin = GlobalVariables::get("dao")->getFirst("AdminModel",array("id"=>$adminId));
if (is_null($admin)){
GUIHandler::redirect("admin/login.php");
}
$request = GlobalVariables::get("dao")->getFirst("PasswordRecoveryRequestModel",array("id"=>$requestCode,"target.id"=>$adminId,"target.class"=>"AdminModel"));
if (is_null($request)){
GUIHandler::redirect("admin/login.php");
}
$action = PostHandler::get("action");
if (!is_null($action) && strcmp("", $action)!=0){
if (strcmp("change", $action)==0){
$err = false;
$exc = new GUIException(array());
// Validate Password
$pass = trim(PostHandler::get("password"));
if (strcmp($pass,"")==0){
$err = true;
$exc->addMessage("Inserire una nuova password");
}
if (strcmp($pass,PostHandler::get("password_confirm"))!=0){
$err = true;
$exc->addMessage("Le password inserite non coincidono");
}
$admin->password = sha1($pass);
if ($err){
throw $exc;
}
GlobalVariables::get("dao")->delete($request);
GlobalVariables::get("dao")->save($admin);
$changed = true;
GUIHandler::redirect("admin/login.php");
}
}
}catch(GUIException $ex){
$error = $ex->getMessageMerged("<br/>");
}catch (Exception $exec){
LoggingFacilityManager::getLogger("gui")->log(LoggingFacility::$LEVEL_ERROR, $exec->getMessage());
$error = "Si è verificato un errore inaspettato durante l'esecuzione della pagina. Se l'errore persiste contattare il supporto tecnico.";
}
if ($changed){
?>
<div>
La password è stata modificata con successo.
<div class="formBtns">
<a href="login.php" >Login</a>
</div>
</div>
<?php
}
else {
?>
<div>
<?php
if(strcmp($error, "")!=0){
echo '<div style="font-size: 16px; color:red;">'.$error.'</div>';
}
?>
<form id="adminConfirmForm" method="POST" action="">
<input type="hidden" name="action" value="" />
<div>
<span class="label">Password</span>
<input type="password" name="password" value="" />
</div>
<div>
<span class="label">Conferma Password</span>
<input type="password" name="password_confirm" value="" />
</div>
</form>
<div class="formBtns">
<a href="#" id="adminConfirmForm_salva" >Conferma</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(event){
$("#adminConfirmForm_salva").click(function(event){
$("form#adminConfirmForm input[type=hidden][name=action]").val("change");
$("form#adminConfirmForm").submit();
});
});
</script>
<?php
}
?>
+69
View File
@@ -0,0 +1,69 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
require_once(dirname(__FILE__)."/../load.php");
GUIHandler::generateHtmlHeaders(array(),true);
if (!AdminLoginManager::isLogged()){
GUIHandler::redirect("admin/login.php");
}
else if (!AdminLoginManager::getLogged()->hasRole(AdminModel::ADMIN_TYPE_SUPERADMIN)){
GUIHandler::redirect("admin/index.php");
}
MenuGenerator::generateMenu();
HTMLHelper::generateAdminHead();
$id = PostHandler::get("id");
if (is_null($id) || strcmp("", $id)==0){
GUIHandler::redirect("admin/listAmministratori.php");
}
$giornalista = GlobalVariables::get("dao")->getFirst("AdminModel",array("id"=>$id));
if (is_null($giornalista)){
GUIHandler::redirect("admin/listAmministratori.php");
}
$confirm = PostHandler::get("confirm");
if (!is_null($confirm) && strcmp("", $confirm)!=0){
if (strcmp("true", $confirm)==0){
$oldOne = GlobalVariables::get("dao")->getFirst("PasswordRecoveryRequestModel",array("target.class"=>"AdminModel","target.id"=>$giornalista->id));
if (!is_null($oldOne)){
GlobalVariables::get("dao")->delete($oldOne);
}
$request = PasswordRecoveryRequestModel::fromModel($giornalista);
GlobalVariables::get("dao")->save($request);
}
GUIHandler::redirect("admin/listAmministratori.php");
}
?>
<div>
<?php
echo "Inviare una mail per il reset della password all'amministratore ".$giornalista->nome." ".$giornalista->cognome."?";
?>
<form id="giornalistaResetPassForm" method="POST" action="">
<input type="hidden" name="confirm" value="" />
<input type="hidden" name="id" value="<?php echo $id;?>" />
</form>
<a href="#" id="giornalistaResetPassForm_confirm" >Conferma</a>
<a href="#" id="giornalistaResetPassForm_cancel" >Annulla</a>
</div>
<script type="text/javascript">
$(document).ready(function(event){
$("#giornalistaResetPassForm_confirm").click(function(event){
$("form#giornalistaResetPassForm input[type=hidden][name=confirm]").val("true");
$("form#giornalistaResetPassForm").submit();
});
$("#giornalistaResetPassForm_cancel").click(function(event){
$("form#giornalistaResetPassForm input[type=hidden][name=confirm]").val("false");
$("form#giornalistaResetPassForm").submit();
});
});
</script>
+2
View File
@@ -49,10 +49,12 @@ try{
if (strcmp($validation, "accept")==0){
$commento->status = CommentoModel::STATUS_ACCEPTED;
GlobalVariables::get("dao")->save($commento);
GUIHandler::redirect("admin/unacceptedCommenti.php");
}
else if (strcmp($validation, "reject")==0){
$commento->status = CommentoModel::STATUS_REJECTED;
GlobalVariables::get("dao")->save($commento);
GUIHandler::redirect("admin/unacceptedCommenti.php");
}
}
+26 -15
View File
@@ -80,7 +80,7 @@ try {
// var_dump($articolo->sondaggio);
}
if(array_key_exists("sendCommento", $_POST) && strcmp($_POST["sendCommento"] ,"Send")==0){
if(array_key_exists("sendCommento", $_POST) && strcmp($_POST["sendCommento"] ,"Invia")==0){
if(UserLoginManager::isLogged()){
$saveable = new stdClass();
@@ -191,6 +191,12 @@ GUIHandler::generateHtmlHeaders(array("additionalHeaders"=>$additionalHeaders));
</div>
<?php }?>
<div class="commentiContainer">
<div class="commentiLabelContainer">
<div class="commentiLabel">
Commenti dei nostri lettori
</div>
<hr style="color:#ddd;">
</div>
<?php if(sizeof($commenti)>0){
?>
<div class="oldCommentiContainer">
@@ -201,8 +207,7 @@ GUIHandler::generateHtmlHeaders(array("additionalHeaders"=>$additionalHeaders));
<div class="commentoTitle"><?php echo $oldCommento->titolo;?></div>
<div class="commentoTesto"><?php echo $oldCommento->testo;?></div>
<div class="userInfo">
<div class="userCommento"><span ><?php echo $utonto->nome." ".$utonto->cognome;?></span></div>
<div class="dataCommento"><?php echo date("d/m/Y",$oldCommento->date->sec)?></div>
<div class="userCommento">Inviato da <span class="user" ><?php echo $utonto->nome." ".$utonto->cognome;?></span> il <span class="data"><?php echo date("d/m/Y",$oldCommento->date->sec)?></span></div>
</div>
</div>
<?php }
@@ -210,26 +215,32 @@ GUIHandler::generateHtmlHeaders(array("additionalHeaders"=>$additionalHeaders));
</div>
<?php
}
echo '<hr style="color:#ddd;">';
if($sendComment){
?>
<div class="commentoInviato">Il tuo commento è stato inviato alla redazione ed è in attesa di essere accettato.</div>
<div class="commento commentoInviato">Il tuo commento è stato inviato alla redazione ed è in attesa di essere accettato.</div>
<?php }
if(UserLoginManager::isLogged()){
else if(UserLoginManager::isLogged()){
?>
<div id="commentoArea" class="newCommento">
<form method="POST" id="commentoForm">
<div class="newTitle">Titolo commento:</div>
<textarea name="titolo" rows="2" cols="30"></textarea>
<div>Commento:</div>
<textarea name="commento"rows="5" cols="80"></textarea>
<input type="hidden" name="id" value="<?php echo $articolo->id;?>" />
<input type="submit" name="sendCommento" value="Send" />
</form>
<div id="commentoArea" class="commento">
<div class="commentoTitle">
Aggiungi il tuo commento per questa notizia
</div>
<div>
<form method="POST" id="commentoForm">
<input name="titolo" type="text" placeholder="Titolo del commento"/>
<textarea name="commento" placeholder="Il tuo commento" rows="5" cols="80"></textarea>
<input type="hidden" name="id" value="<?php echo $articolo->id;?>" />
<div class="sendBtnDiv">
<input type="submit" name="sendCommento" value="Invia" />
</div>
</form>
</div>
</div>
<?php }
else{
?>
<div class="noLogin">Effettua il <a href="#loginLink">login</a> per commentare o se non hai ancora un account <a href="#regButton">registrati</a></div>
<div class="commento noLogin">Per commentare questa notizia <a href="#loginLink">accedi</a> all'applicazione o <a href="#regButton">registrati</a> se non hai ancora un account </div>
<?php }
?>
+56
View File
@@ -0,0 +1,56 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
require_once(dirname(__FILE__)."/load.php");
GUIHandler::generateHtmlHeaders();
try{
if (!array_key_exists("regcode",$_GET) || strcmp("regcode", "")==0 || !array_key_exists("email",$_GET) || strcmp("email", "")==0){
GUIHandler::redirect("index.php");
}
$regCode = $_GET['regcode'];
$email = $_GET['email'];
if (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/",$email)){
GUIHandler::redirect("index.php");
}
$user = GlobalVariables::get("dao")->getFirst("UserModel",array("id"=>$regCode,"email"=>$email,"active"=>false));
if (is_null($user)){
GUIHandler::redirect("index.php");
}
$user->active = true;
GlobalVariables::get("dao")->save($user);
}catch(GUIException $ex){
$error = $ex->getMessageMerged("<br/>");
}catch (Exception $exec){
LoggingFacilityManager::getLogger("gui")->log(LoggingFacility::$LEVEL_ERROR, $exec->getMessage());
$error = "Si è verificato un errore inaspettato durante l'esecuzione della pagina. Se l'errore persiste contattare il supporto tecnico.";
}
?>
<div style="width:1000px;margin-left:auto;margin-right:auto;">
<?php
GUIHandler::generateHeadPublic();
GUIHandler::generateMenu();
?>
<div>
<div class="passwordChange">
<div class="title" style="text-align:center;">
Il tuo account è stato attivato con successo
</div>
<div class="formBtns">
<a href="index.php" >Home</a>
</div>
</div>
</div>
<?php
GUIHandler::generateFooter();
?>
</div>
+13 -2
View File
@@ -73,10 +73,21 @@ try {
$ristorantiNews = array_map(function($ele){$ele->testo = strip_tags($ele->testo);$ele->sottotitolo = strip_tags($ele->sottotitolo); return $ele; }, $ristorantiNews);
}
$stats = GlobalVariables::get("dao")->aggregate("StatisticModel",PipelineHelper::getMostViewedOfLastDays(strtotime("-7 days"),5));
$idArray = array_map(function ($ele){ return new MongoId($ele["_id"]["notizia"]);}, $stats);
$lastsNews = GlobalVariables::get("dao")->query("NotiziaModel",
array("status"=>NotiziaModel::STATUS_ACCEPTED),
array("sort"=>array("about.data"=>-1),"limit"=>5)
array("status"=>NotiziaModel::STATUS_ACCEPTED,"_id"=>array('$in'=>$idArray)),
array("sort"=>array("about.data"=>-1))
);
if (sizeof($lastsNews)<5){
$missing = 5-sizeof($lastsNews);
$add = GlobalVariables::get("dao")->query("NotiziaModel",
array("status"=>NotiziaModel::STATUS_ACCEPTED,"_id"=>array('$nin'=>$idArray)),
array("sort"=>array("about.data"=>-1),"limit"=>$missing)
);
$lastsNews = array_merge($lastsNews,$add);
}
if (sizeof($lastsNews)>0){
$lastsNews = array_map(function($ele){$ele->testo = strip_tags($ele->testo);$ele->sottotitolo = strip_tags($ele->sottotitolo); return $ele; }, $lastsNews);
}
+22 -7
View File
@@ -22,7 +22,15 @@ try {
}
else {
$sent = true;
$mail = FDN_MailHelper::getUserPasswordResetMail($user);
$oldOne = GlobalVariables::get("dao")->getFirst("PasswordRecoveryRequestModel",array("target.class"=>"UserModel","target.id"=>$user->id));
if (!is_null($oldOne)){
GlobalVariables::get("dao")->delete($oldOne);
}
$request = PasswordRecoveryRequestModel::fromModel($user);
GlobalVariables::get("dao")->save($request);
// $mail = FDN_MailHelper::getUserPasswordResetMail($user);
// GlobalVariables::get("dao")->save($mail);
}
@@ -32,15 +40,22 @@ try {
$msg = $ex->getMessage();
$err = true;
}catch (Exception $exec){
$msg = LogModel::fromException($exec);
GlobalVariables::get("dao")->save($msg);
$model = LogModel::fromException($exec);
GlobalVariables::get("dao")->save($model);
$msg = "Si è verificato un errore inatteso durante l'operazione. Se il problema persiste contattaci comunicandoci il seguente codice <b>" . $model->getCode() . "</b>";
}
if ($sent){
?>
<div style="padding:2em;">A breve riceverai una email per modificare la password!</div>
<?php
if (strcmp("", $msg)!=0){
?>
<div style="color:red; text-align:center;"><?php echo $msg;?></div>
<?php
}
else {
?>
<div style="padding:2em;">A breve riceverai una email per modificare la password!</div>
<?php
}
}
else {
?>
+123
View File
@@ -0,0 +1,123 @@
<?php
/*
Author: Riccardo Di Dato
Creation Date: 17/mar/2016
*/
require_once(dirname(__FILE__)."/load.php");
GUIHandler::generateHtmlHeaders();
try{
$changed = false;
if (!array_key_exists("req",$_GET) || strcmp("req", "")==0 || !array_key_exists("u",$_GET) || strcmp("u", "")==0){
GUIHandler::redirect("index.php");
}
$requestCode = $_GET['req'];
$userId = $_GET['u'];
$user = GlobalVariables::get("dao")->getFirst("UserModel",array("id"=>$userId));
if (is_null($user)){
GUIHandler::redirect("index.php");
}
$request = GlobalVariables::get("dao")->getFirst("PasswordRecoveryRequestModel",array("id"=>$requestCode,"target.id"=>$userId,"target.class"=>"UserModel"));
if (is_null($request)){
GUIHandler::redirect("index.php");
}
$action = PostHandler::get("action");
if (!is_null($action) && strcmp("", $action)!=0){
if (strcmp("change", $action)==0){
$err = false;
$exc = new GUIException(array());
// Validate Password
$pass = trim(PostHandler::get("password"));
if (strcmp($pass,"")==0){
$err = true;
$exc->addMessage("Inserire una nuova password");
}
if (strcmp($pass,PostHandler::get("password_confirm"))!=0){
$err = true;
$exc->addMessage("Le password inserite non coincidono");
}
$user->password = sha1($pass);
if ($err){
throw $exc;
}
GlobalVariables::get("dao")->delete($request);
GlobalVariables::get("dao")->save($user);
$changed = true;
}
}
}catch(GUIException $ex){
$error = $ex->getMessageMerged("<br/>");
}catch (Exception $exec){
LoggingFacilityManager::getLogger("gui")->log(LoggingFacility::$LEVEL_ERROR, $exec->getMessage());
$error = "Si è verificato un errore inaspettato durante l'esecuzione della pagina. Se l'errore persiste contattare il supporto tecnico.";
}
?>
<div style="width:1000px;margin-left:auto;margin-right:auto;">
<?php
GUIHandler::generateHeadPublic();
GUIHandler::generateMenu();
if ($changed){
?>
<div class="passwordChange">
<div class="title" style="text-align:center;">
La password è stata modificata con successo.
</div>
<div class="formBtns">
<a href="index.php" >Home</a>
</div>
</div>
<?php
}
else {
?>
<div class="passwordChange">
<div class="title">
Inserire la nuova password da utilizzare per utilizzare l'applicazione
</div>
<?php
if(strcmp($error, "")!=0){
echo '<div style="font-size: 16px; color:red;">'.$error.'</div>';
}
?>
<form id="passwordChangeForm" method="POST" action="">
<input type="hidden" name="action" value="" />
<div class="row">
<span class="label">Password</span>
<input type="password" name="password" value="" />
</div>
<div class="row">
<span class="label">Conferma Password</span>
<input type="password" name="password_confirm" value="" />
</div>
</form>
<div class="formBtns">
<a href="#" id="passwordChangeForm_salva" >Conferma</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(event){
$("#passwordChangeForm_salva").click(function(event){
$("form#passwordChangeForm input[type=hidden][name=action]").val("change");
$("form#passwordChangeForm").submit();
});
$("form#passwordChangeForm input[type=password][name=password_confirm]").keypress(function(event) {
if (event.which==13){
$('#passwordChangeForm_salva').click();
return false;
}
});
});
</script>
<?php
}
GUIHandler::generateFooter();
?>
</div>
+63 -10
View File
@@ -178,7 +178,7 @@ display: inline-block;
.ansaTesto > p{margin:0px;text-align:justify;}
.socialBarAnsa{margin-top:3px;border:solid #d6d6d6 1px;border-left:0px;border-right:0px;border-top:0px;padding-left:10px;}
.socialBarAnsa{margin-top:3px;border:solid #d6d6d6 1px;border-left:0px;border-right:0px;border-top:0px;padding-left:20px;}
.socialBarAnsa > a{margin-right:3px;display:inline-block;}
.socialBarAnsa > a > div{display:inline-block;width:22px;height:22px;background-repeat:no-repeat;background-position:center;}
@@ -352,14 +352,30 @@ display: inline-block;
.carosImage > img {vertical-align:middle; }
.commentiContainer{padding:5px;}
.oldCommentiContainer{border-radius:10px;margin:5px 0px;}
.commento{border:solid #ddd 1px;border-radius:10px;padding:5px;margin:5px 0px;}
.userCommento{/* display:inline-block; */}
.userCommento span {color:#5847c1;}
.userInfo{text-align:right;padding:5px;}
.dataCommento{font-size:14px;}
.oldCommentiContainer{margin:5px 0px; padding-left: 30px;}
.commento{border: 4px solid #CFCFCF;border-radius: 15px;padding: 12px 5px 5px 20px;margin: 5px 0px;background-color: #e6e6e6;}
.commentoTitle{font-weight:bold;}
.commentoTesto{padding:2px 5px;}
.commentoTesto{padding: 5px 26px;text-align: justify;}
.commentiLabel{display: inline-block;background-color: #cfdbe9;padding: 10px 20px;border-radius: 10px;font-style: italic;color: #222;font-weight: bold;font-size: 11pt;}
.userCommento{/* display:inline-block; */}
/* .userCommento span {color:#5847c1;} */
.userInfo{text-align: right;padding: 0 26px 3px;font-size: 9pt;font-style: italic;}
.dataCommento{font-size:14px;}
.userInfo .user{font-weight:bold;}
.commento form{width:100%;}
.commento input[type="text"]{width: 90%;padding: 5px 10px;font-weight: bold;}
.commento textarea{margin-left:5%;width:85%;padding: 5px 10px;resize:none;font-size: 11pt;}
.commento form .sendBtnDiv{text-align: right;padding-right: 6%;}
.commento form .sendBtnDiv input{padding:5px 20px;}
.commento.noLogin{font-size: 14pt;padding-bottom: 15px;background-color: rgb(252, 252, 198);}
.commento.noLogin a {color:#1C89C3; font-weight:bold;}
#commentoArea{background-color:#E0F6E5;}
#commentoArea .commentoTitle{font-size: 10pt;padding: 0px 0px 10px;text-align: center;font-style: italic;}
.newCommento{padding:10px 5px;}
.newCommento div{padding:5px 0px;}
@@ -381,9 +397,9 @@ display: inline-block;
.summaryRightBar{width:370px;padding:5px;vertical-align:top;display:inline-block;}
.rightBarContainer{width:100%;height:100%;}
.commentoInviato, .noLogin{padding:10px;border:solid #C0C0C0 2px;margin:5px;border-radius:10px;}
.commentoInviato{padding:10px;border:solid #C0C0C0 2px;margin:5px;border-radius:10px;}
.commentoInviato{color:green;text-align:center;}
.noLogin a {color:#68A2C1;}
.newCommento textarea{resize:none;}
@@ -410,3 +426,40 @@ display: inline-block;
.contattiRedazione{text-align:center;font-size:23px;padding:10px 5px;}
/*
Password Recovery
*/
.passwordChange{padding:20px 80px;
background: rgb(206,236,244); /* Old browsers */
background: -moz-linear-gradient(top, rgba(206,236,244,1) 65%, rgba(135,220,242,1) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(top, rgba(206,236,244,1) 65%,rgba(135,220,242,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, rgba(206,236,244,1) 65%,rgba(135,220,242,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ceecf4', endColorstr='#87dcf2',GradientType=0 ); /* IE6-9 */
}
.passwordChange .title{padding:0 0 25px; color:#444;}
.passwordChange .row{padding:3px 0;}
.passwordChange span.label{display: inline-block;text-align: right;padding-right: 5px;text-transform: uppercase;font-size: 10pt;width: 300px;color: rgb(68, 68, 68);font-weight: bold;}
.passwordChange .row input{padding:9px 6px;}
.passwordChange div.formBtns{padding: 15px 0px 0px 370px;}
.passwordChange div.formBtns a{background: rgb(115,216,245); /* Old browsers */
background: -moz-linear-gradient(top, rgba(115,216,245,1) 53%, rgba(66,196,239,1) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(top, rgba(115,216,245,1) 53%,rgba(66,196,239,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, rgba(115,216,245,1) 53%,rgba(66,196,239,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#73d8f5', endColorstr='#42c4ef',GradientType=0 ); /* IE6-9 */
padding: 5px 20px;
border-radius: 2px 2px 2px 2px;
color: rgb(0, 133, 185);
font-weight: bold;
box-shadow: 0px 0px 2px 0px;
text-transform: uppercase;
font-size: 12px;
display: inline-block;
}