Your SlideShare is downloading. ×
Relazione Trimestrale dell'attività svolta presso la ditta
Image Now Studio
di Macerata – 5 Febbraio – 5 Maggio 2007

In q...
<authorUrl>http://www.lucamengoni.com</authorUrl>
        <creationDate>2007-02-12</creationDate>
        <copyright>(C) 2...
folder = 'system'";
        // assegna alla variabile database il valore di $query
        $database->setQuery( $query );
...
global $database;

       $sql = 'SELECT MAX(`id`) FROM `jos_users`';
                    $database->setQuery($sql);
     ...
Il mambot e le modifiche al componente Hydra sono prima stati testati in locale, poi implementati
nel sito www.s2badv.com ...
E quella di joomla

Come si può vedere, le due tabelle sono sincronizzate con gli stessi utenti.


Andiamo ora ad analizza...
modificato funzionante:




Il calendario completo del master, con possibilità di scegliere le categorie e la visione degl...
L'anteprima di stampa del calendario completo


Vediamo ora la terza personalizzazione e modifiche effettuate per conto di...
CREATE TABLE `jos_jl_cv` (
 `id` int(11) unsigned NOT NULL auto_increment,
 `created` date NOT NULL default '0000-00-00',
...
$database->setquery($sql);
$email_recipient_address = $database->loadRowList();
$subject = 'Cancellazione Curriculum dal d...
Il form per l'inserimento del curriculum
L'elenco delle offerte di lavoro




Il form per l'invio dell'offerta di lavoro
E' stata aggiunta anche la possibilità di eseguire ricerche per fasce di età , e di inviare il curriculum
per una specific...
Upcoming SlideShare
Loading in...5
×

Relazione Trimestrale finale alla Image Now - Dettagliata

236

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
236
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Relazione Trimestrale finale alla Image Now - Dettagliata"

  1. 1. Relazione Trimestrale dell'attività svolta presso la ditta Image Now Studio di Macerata – 5 Febbraio – 5 Maggio 2007 In questi primi 3 mesi di attività, si è proceduto allo studio del php e del codice dei vari componenti, moduli e mambots di joomla, in modo da creare ex-novo o, se fosse stato sufficiente, attuare modifiche a componenti già esistenti che rispondessero alle esigenze dei vari clienti della ditta. Analizzeremo in dettaglio i casi affrontati. Per il primo cliente, si aveva la necessità di adottare un componente per la gestione di progetti aziendali tramite joomla, dopo una ricerca iniziale la scelta è caduta sul componente Hydra (pagina di riferimento http://www.hydramanager.com) , che però non corrispondeva pienamente a tutte le caratteristiche richieste, che erano: ● Possibilità di limitare il numero di registrazioni degli utenti del sito ● Registrazione sincronizzata di utenti su hydra e joomla (di default non avveniva, bisognava importare manualmente in hydra gli utenti che si registravano in joomla) ● Possibilità di aggiungere utenti solo da parte dell'amministratore, e non da parte degli utenti stessi ● Cancellazione sincronizzata fra hydra e joomla (cancellando un utente da hydra automaticamente questo sarebbe stato cancellato anche da quelli di joomla) Per rispondere a queste richieste, si è proceduto nel seguente modo. Per limitare il numero di registrazioni di utenti al sito del cliente, si è scritto un mambot apposito, in cui si poteva indicare dall'amministrazione di joomla il numero massimo di utenti che potevano registrarsi, dopodichè all'utente appariva una schermata di errore di “massimo numero di utenti registrati raggiunto”. (Vedi Fig.1) Figura 1: Il messaggio di errore in caso di numero massimo di utenti raggiunto Il Mambot è stato chiamato Registration Limit, di seguito i 2 file che lo compongono, uno che definisce l'interfaccia nell'amministrazione di joomla, e l'altro col codice php che esegue il controllo sul database, ricavando il valore del numero di utenti registrati dalla tabella di Joomla jos_users. Codice file mosreglimt.xml: <?xml version="1.0" encoding="iso-8859-1"?> <mosinstall version="1.0.0" type="mambot" group="system"> <name>MosRegLimit</name> <license>GPL</license> <author>Luca Mengoni</author> <authorEmail>lucamengoni@gmail.com</authorEmail>
  2. 2. <authorUrl>http://www.lucamengoni.com</authorUrl> <creationDate>2007-02-12</creationDate> <copyright>(C) 2007 Luca Mengoni</copyright> <version>1.0</version> <description> <![CDATA[ <b>RegistrationLimit</b> vi permette di definire il numero massimo di utenti che possono registrarsi. <p>&copy; 2007 by Luca Mengoni &ndash; tutti i diritti riservati</p> <a href="http://www.lucamengoni.com">http://www.lucamengoni.com</a> ]]> </description> <files> <filename mambot="mosreglimit">mosreglimit.php</filename> </files> <params> <param name="maxreguser" type="text" label="Numero massimo di utenti che possono registrarsi al sito" description="Inserite il numero massimo di utenti che possono registrarsi al sito."/> <param name="maxregusermsg" type="text" default="Spiacente, è stato raggiunto il numero massimo di utenti che possono registrarsi" label="Messaggio di errore quando si raggiunge il numero massimo di utenti registrati al sito" description="Testo da mostrare quando è stato raggiunto il numero massimo di registrazioni consentite."/> </params> </mosinstall> Questo è il file mosreglimit.php , con commenti: <?php /* RegistrationLimit 1.0 vi permette di definire il numero massimo di utenti che si possono registrare. © 2007 Luca Mengoni http://www.lucamengoni.com */ defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); $_MAMBOTS->registerFunction( 'onStart', 'botRegLimit' ); function botRegLimit() { // Prima controllo se c'è qualcosa da fare $option = strtolower (strval( mosGetParam( $_REQUEST, 'option' ) ) ); $task = strtolower (strval( mosGetParam( $_REQUEST, 'task' ) ) ); if(!in_array($option, array('com_registration', 'com_comprofiler')) || $task! ='saveregistration') return true; global $database; // carica i parametri dal mambot mosreglimit, definiti nel file xml $query = "SELECT params FROM #__mambots WHERE element = 'mosreglimit' AND
  3. 3. folder = 'system'"; // assegna alla variabile database il valore di $query $database->setQuery( $query ); // carica il mambot $database->loadObject($mambot); $botParams = new mosParameters( $mambot->params ); // la query che ritorna il numero di utenti attualmente registrati, chiamiamo la variabile $numuser $sql = "SELECT COUNT('id') FROM `#__users`"; $database->setQuery( $sql ); $numuser = $database->loadResult($sql); $botParams = new mosParameters( $mambot->params ); // definisce il messaggio di errore $msg = $botParams->def('maxregusermsg'); // assegna a $maxreguser il valore impostato nel file xml $maxreguser = $botParams->get('maxreguser'); if ($numuser >= $maxreguser) { mosErrorAlert($msg); } } ?> Ecco la schermata della gestione del mambot Registration Limit:Su parametri si può indicare il numero massimo di utenti che si possono registrare e personalizzare il messaggio di errore che si vuole far visualizzare nel frontend del sito Si è passati poi a modificare il componente per sincronizzare la registrazione degli utenti fra le tabelle degli utenti hydra e quelli di joomla Per fare in modo che quando un utente si registri vengano aggiunti i valori anche nelle tabelle di jos_hydra_users oltre che jos_users, aggiungo al file registration.php la funzione modificata importUsers e la chiamo subito dopo la saveregistration() riga 40 di registration.php Il valore del campo id di Jos_Users corrisponde al valore del campo jid di Jos_Hydra_Users function importUsers() {
  4. 4. global $database; $sql = 'SELECT MAX(`id`) FROM `jos_users`'; $database->setQuery($sql); $jid = $database->loadresult($sql); $query = "INSERT INTO #__hydra_users VALUES ('','$jid','0')"; $database->setQuery($query); $database->query(); } Richiamata subito dopo il Saveregistration, salva correttamente il nuovo utente registrato nella tabella hydra_users. Inserito il collegamento sul menù utente per vedere e modificare il profilo utente, il link è index.php?option=com_user&task=UserDetails Per non visualizzare più la voce importa utenti sul pannello di controllo di Hydra, ho commentato la riga 114 del file controlpanel_right.html.php nella directory administratorcomponentscom_hydrahtml Commentata anche la riga 115 del file controlpanel_right.html.php nella cartella administrator/components/com_hydra_html , in modo da non far più comparire il tasto elimina utente nel pannello di gestione utenti di Hydra. Aggiunta poi la possibilità, quando eliminiamo un utente hydra, di rimuoverlo automaticamente anche dalla tabella degli utenti di joomla. Ecco il codice funzionante: // get the joomla users $query = "SELECT jid FROM #__hydra_users WHERE id IN ($cids)"; $database->setQuery($query); $joomla_users = implode(",", $database->loadResultArray()); // delete user $query = "DELETE FROM #__hydra_users WHERE id IN ($cids)"; $database->setQuery($query); $database->query(); // delete joomla users $query = "DELETE FROM #__users WHERE id IN ($joomla_users)"; $database->setQuery($query); $database->query(); Il cliente aveva anche l'esigenza di aggiungere nuovi utenti dal frontend, senza passare per il pannello amministrativo del backend, in modo da poterli aggiungere successivamente agli utenti assegnati a un determinato progetto hydra Si è proceduto alla creazione nel menù utente di un link alla voce di registrazione del modulo login di joomla predefinito, e successivamente modificato questo modulo in modo da non rendere più visibile il link alla registrazione. Accesso a Hydra e alla voce di registrazione nuovi utenti solo ad utenti di livello special (quindi solo gli amministratori potranno vedere queste 2 voci).
  5. 5. Il mambot e le modifiche al componente Hydra sono prima stati testati in locale, poi implementati nel sito www.s2badv.com . Ecco alcune schermate esplicative del lavoro portato a conclusione: Inserimento utenti da parte dell'amministratore L'interfaccia di Hydra Modificata per il sito S2badv.com La gestione utenti di Hydra
  6. 6. E quella di joomla Come si può vedere, le due tabelle sono sincronizzate con gli stessi utenti. Andiamo ora ad analizzare un'altra personalizzazione effettuata su commissione di un altro cliente, l'università degli studi di macerata, nel suo sito www.masterpa.it. Questi aveva la necessità di un componente per la gestione del calendario delle lezioni del master, che rendesse possibile la stampa degli eventi divisi per i diversi moduli che componevano il programma, la scelta è caduta sul componente di joomla di nome Jevents. Questi presentava però un bug che non permetteva la corretta stampa del calendario, allora si è proceduto a modificare il codice del componente in modo da permettere questa stampa. Si è proceduto duplicando 3 file del componente (events.php, events.html.php e events.class.php) e mettendoli nella cartella com_events2,dopo averli modificati. E' stata successivamente linkata l'icona di stampa alla popup che appare quando si selezionano le categorie, ecco il codice: if ($task == "view_cat" ){ global $mosConfig_live_site, $hide_js, $pop, $catidsIn, $catid; if (isset($catidsIn) && $catidsIn!="NONE") $cids = "&amp;catids=$catidsIn"; else $cids = ""; // link used by print button $print_link = $mosConfig_live_site. "/index2.php? option=com_events2&task=view_cat&offset=1&catid=$catid;"; Il link porta alla pagina duplicata di events, in cui è stata tolta la parte per selezionare le categorie, e nel file events2.html.php è stato aggiunto il link per la stampa tramite javascript, ecco il codice <a href="#" onclick="javascript:window.print();"> <img src="<?php echo $mosConfig_live_site;? >/images/M_images/printButton.png" align="middle" name="image" border="0" alt="<?php echo _CMN_PRINT;?>" /> </a> In questo modo, cliccando sull'iconcina della stampante che appare nella popup con i risultati della query di selezione categorie, stampa correttamente. E' stata poi aggiunta la visualizzazione della descrizione quando si inserisce un evento nel calendario, tolti i link al dettaglio della notizia in modo che non apparisse più la finestra di pop-up, messo il titolo in grassetto, data e descrizione in carattere piccolo, e tolto il limite di caratteri dalla visualizzazione della descrizione,anche la stampa funziona correttamente. Modificati i file events.html.php, events.php, events2.php, events.css.css . Ecco le schermate del calendario
  7. 7. modificato funzionante: Il calendario completo del master, con possibilità di scegliere le categorie e la visione degli eventi dettagliata
  8. 8. L'anteprima di stampa del calendario completo Vediamo ora la terza personalizzazione e modifiche effettuate per conto di un altro cliente, www.apindustria.org. Si aveva necessità di un componente per inserire le offerte di lavoro da parte delle aziende e curriculum da parte degli utenti. Ogni annuncio doveva avere un codice identificativo, il curriculum poter essere agganciato al codice dell'annuncio, oppure inserito direttamente nel database, messo a disposizione delle aziende. Queste dovevano poter scegliere fra i diversi curriculum in base a fasce di età ,al codice annuncio (vedere solo gli annunci che rispondono al loro codice), all'area di competenza (es.amministrativo, tecnico, commerciale), e alle lingue straniere conosciute.Inizialmente la scelta è caduta sul componente Jobline associato ad un altro componente, Dbquery, successivamente si è passati invece a Fabrik. E' importante che nella tabella dove l'utente inserisce il curriculum ci sia anche la data di inserzione del curriculum, perchè dopo 6 mesi, tramite un file php scritto appositamente, i vecchi curriculum dovevano essere cancellati dal database e chi li aveva inviati riceve notifica via mail, venendo invitato a inviarne una versione aggiornata. Per prima cosa sono state create 2 nuove tabelle nel sito di nome jos_jl_cv, in cui memorizzare i dati dei curriculum , e jos_jl_jobposting , per la memorizzazione delle offerte di lavoro inviate. Struttura della tabella `jos_jl_cv`
  9. 9. CREATE TABLE `jos_jl_cv` ( `id` int(11) unsigned NOT NULL auto_increment, `created` date NOT NULL default '0000-00-00', `name` varchar(50) NOT NULL default '', `surname` varchar(50) NOT NULL default '', `address` varchar(255) NOT NULL default '', `zipcode` varchar(10) NOT NULL default '', `city` varchar(70) NOT NULL default '', `province` varchar(50) NOT NULL default '', `age` tinyint(5) NOT NULL default '0', `homephone` varchar(255) NOT NULL default '', `cellphone` varchar(255) NOT NULL default '', `email` varchar(255) NOT NULL default '', `baseknowledge` varchar(255) NOT NULL default '', `workexperience` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) Create le seguenti voci di menù , collegate alle due tabelle, che permettono le operazioni richieste : ● Elenco curriculum : mostra un elenco dei curriculum inviati tramite form, con link alla visualizzazione dettagliata del curriculum, e menù a tendina per la ricerca in base alle fasce di età , area di competenza e codice di riferimento offerta di lavoro. Permette alle aziende di visualizzare i curricula inviati. ● Invia curriculum : appare una form coi campi di interesse del candidato, che sono il codice offerta di lavoro per la quale ci si applica, i dati anagrafici,l'area di compenteza , lingue conosciute, telefono, e-mail, istruzione, corsi di aggiornamento, esperienza professionale, conoscenze informatiche, altre competenze e capacità. Quando qualcuno invia un curriculum , arriva una notifica via mail ad Apindustria. ● Elenco offerte di lavoro: mostra un elenco delle offerte di lavoro inserite dalle aziende, con link in ogni offerta alla possibilità di inserire un curriculum per l'offerta. In ogni offerta sono presenti il codice di riferimento, la data di inserimento, il titolo, la società, la descrizione dell'offerta, livello di istruzione richiesto, gli altri requisiti richiesti, e i dati per contattare la società. Pubblico e riservato a tutti i navigatori del sito apindustria. ● Inserisci offerta di lavoro: form per permettere alle aziende registrate su apindustria di inviare nuove offerte di lavoro. ● Cancella vecchi curriculum: collegamento al file deletecv.php, con accesso ad esso solo agli amministratori del sito, permette di effettuare la pulizia sulla tabella dei curriculum eliminando quelli più vecchi di 6 mesi e inviando la notifica automatica agli utenti che li avevano precedentemente inviati ad apindustria. Vediamo il codice del file deletecv.php : <?php // Set flag that this is a parent file define( '_VALID_MOS', 1 ); include_once( 'globals.php' ); require_once( 'configuration.php' ); require_once( 'includes/joomla.php' ); global $database; $email_from_address = 'info@imagenow.com'; $email_from_display_name = 'Image Now Studio'; $sql = 'SELECT email FROM `jos_jl_cv` WHERE (curdate( ) - created) >=180';
  10. 10. $database->setquery($sql); $email_recipient_address = $database->loadRowList(); $subject = 'Cancellazione Curriculum dal database'; $text = "Siamo spiacenti di comunicarle che abbiamo provveduto a cancellare il suo curriculum dal nostro database,in quanto ormai obsoleto. La invitiamo ad inviarcene uno aggiornato. Distinti Saluti"; for($i = 0, $n = count($email_recipient_address); $i < $n; $i++) { mosMail ($email_from_address, $email_from_display_name, $email_recipient_address[$i], $subject, $text ); } $text = sprintf( $text ); echo "mail sent to: $email_recipient_address<br/>"; $sql = 'DELETE FROM `jos_jl_cv` WHERE (curdate( ) - created) >=180'; $database->setquery($sql); $database->query(); echo "curriculum obsoleti cancellati"; ?> Recupera dalla tabella jos_jl_cv la data di inserimento curriculum, la confronta con 180 giorni, se è maggiore, prepara un'email che viene spedita all'email di chi ha inserito il curriculum scaduto, e cancella il curriculum. Ecco le schermate del componente personalizzato per le esigenze di Apindustria. La schermata della gestione dell'elenco dei curricula inviati, con possibilità per l'amministratore di modifica e cancellazione diretta.
  11. 11. Il form per l'inserimento del curriculum
  12. 12. L'elenco delle offerte di lavoro Il form per l'invio dell'offerta di lavoro
  13. 13. E' stata aggiunta anche la possibilità di eseguire ricerche per fasce di età , e di inviare il curriculum per una specifica offerta di lavoro, cliccando su un apposito link che memorizza il codice dell'offerta per la quale ci si applica. Nel secondo trimestre si continuerà il lavoro di creazione e modifica componenti di Joomla per adattarli alle esigenze dei clienti della ditta. Macerata li 04 Maggio 2007 Il Borsista Firma del Tutor

×