Joomla.it Forum
Joomla! 3 => Joomla! 3 => : Secursystem 19 Jul 2014, 20:43:33
-
Ciao a tutti,
avrei la necessità che gli articoli siano leggibili a tutti, quindi con permessi public per "X" giorni, poi che diventino leggibili solo per utenti registrati quindi con permessi registered.
Esiste un modulo che mi permette di cambiare i permessi degli articoli K2 "a tempo" ?
Grazie
L
-
non credo esista una cosa del genere.
Se hai un po' di esperienza in php si tratta di uno script di poche righe. Ti illustro i passi.
- Seleziono dal db tutti gli articoli che devono avere questa proprietà
- conto i giorni dalla pubblicazione
- se i giorni sono > di X cambio l'accesso dell'articolo a registered.
ci vuole (quasi) più a dirlo che a farlo :)
ovviamente devi prevedere l'esecuzione dello script quotidianamente, o lo esegui tu a mano o usi cronjob
-
Il problema è che non ho esperienza di PHP e non saprei dove mettere le mani, speravo di trovare qualcosa di pronto :(
-
Tempo fa lo avevo cercato anche io per j 2.5, avevo visto questo, ma aveva un prezzo eccessivo e non l'ho nemmeno provato...
-
prima cosa: contatta il tuo hosting e chiedi se c'è possibilità di configurare uno script temporizzato.
-
Per cortesia il regolamento vieta di citare estensioni commerciali, cerchiamo di non infrangerlo. Grazie.
-
buon natale :D
<?php
/*-------inserisci i tuoi dati*/
$host = 'localhost';
$user = 'root';
$password = '';
$db = 'joomla';
$dbprefix = 'q1w9t_';
$INTERVALLO=10;
/*------------------------------*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Article Access Manager</title>
<style>
table td{
background:#c6fdff;
padding:10px}
table th{background:#c4dbff;
padding:10px
}
</style>
</head>
<body>
<?php
$mysqli = new mysqli($host,$user,$passowrd,$db);
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$result = $mysqli->query("SELECT id,title,created,access FROM ".$dbprefix."content");
if (!$result) {
printf("Query fallita:".mysql_error());
exit;
}
$dt = new DateTime();
while ($row = $result->fetch_assoc()) {
$date = new DateTime($row["created"]);
$diff=$date->diff($dt);
if($diff->days>$INTERVALLO){
if($row["access"]==1)
$up_article= $mysqli->query("UPDATE ".$dbprefix."content SET `access`=2 WHERE id=".$row["id"]);
}
}
$result->data_seek(0);
echo '<h1>Article Access Manager</h1><table><th>Titolo</th><th>Data creazione</th><th>Accesso</th>';
while ($row = $result->fetch_assoc()) {
$date = new DateTime($row["created"]);
$diff2=$date->diff($dt);
echo '<tr>
<td>'.$row["title"].'</td>
<td>'.$date->format('Y-m-d').'- Pubblicato da '. $diff2->format('%R%a').' giorni</td><td>';
switch ($row["access"]) {
case 1:
echo 'public';
break;
case 2:
echo 'registered';
break;
case 3:
echo 'special';
break;
case 5:
echo 'guest';
break;
case 6:
echo 'super user';
break;
}
echo '</td></tr>';
}
echo '</table>';
$result->close();
?>
</body></html>
-
Per cortesia il regolamento vieta di citare estensioni commerciali, cerchiamo di non infrangerlo. Grazie.
Sorry sorry sorry... :-[
-
boh sarò io l'arrogante, ma mi sarei aspettato un almeno grazie ???
-
Scusami ma ho letto solo ora la risposta!!!
Ti ringrazio tantissimo sei stato davvero prezioso, a buon rendere ;)
Luca
-
hai capito come far funzionare lo script?
-
Non ho ancora avuto modo di metterlo alla prova, a grandi linee lo farcisco con i dati del mio database, lo uppo e lancio il percorso del file (esempi "articoli.php") giusto?
L
-
si, se poi fila tutto liscio stamperà semplicemente tutti gli articoli con i permessi aggiornati
(ma non ti dice quali sono stati aggiornati, ci ho pensato ora a questa cosa :) )
ps: ovviamente $INTERVALLO è in giorni
-
Appena lo uso (sono in fase di creazione sito ancora) ti faccio sapere :)
Grazie di nuovo intanto!
L