Not signed in ( Sign In)

Categories

Welcome, Guest

Want to take part in these discussions? Sign in if you have an account, or apply for one below

Vanilla 1.1.10 is a product of Lussumo. More Information: Documentation, Community Support.

    •  
      CommentAuthortojo72
    • CommentTimeOct 28th 2007 edited
     permalink
    scrivo in off topic perche' il problema che vado ad esporre e' piu' generale (o piu' ristretto al campo php), che a flatpress.

    ho creato un plugin che si "collega" ad un altro script php che gestiste un calendario eventi.
    in pratica serve a mostrare l'elenco di eventi futuri (o del giorno corrente).
    il problema riguarda le variabili globali.
    c'e' una funzione che crea il link all'evento e viene ripetuta tutte le volte necessarie (corrispondenti cioe' agli eventi futuri)
    da qui devo estrarre il risultato e passarlo come $sontent a flat press
    cio' che non funziona e' usare "global $nome_variabile;" per esportare il tutto.
    sono dovuto ricorrere a $_REQUEST per ovviare in modo poco ortodosso.

    qui di seguito posto il plugin...
    la domanda e': come posso ottenere lo stesso risultato senza usare $_REQUEST?

    <?php
    /*
    Plugin Name: Event
    Plugin URI:
    Description:
    Version: 0.0.1
    Author URI: http://www.figolandia.tk
    */
    function plugin_event_widget() {
    $_REQUEST = "";
    //always returns true so all records will be returned

    function returnAll($item){
    if($item)
    return true;
    }

    //displays record
    function show_record($record){
    $eventNumber = $record["event_key"];
    $eventName = $record["event_name"];
    $eventYear = $record["event_year"];
    $eventDay = $record["event_day"];
    $eventMonth = $record["event_month"];
    $url = $record["event_submitted_by"];


    if ($eventMonth == "January") {
    $eventMonth = eregi_replace("January", "gennaio", $eventMonth);
    $numero_mese = "01";
    }
    else if ($eventMonth == "February") {
    $eventMonth = eregi_replace("February", "febbraio", $eventMonth);
    $numero_mese = "02";
    }
    else if ($eventMonth == "March") {
    $eventMonth = eregi_replace("March", "marzo", $eventMonth);
    $numero_mese = "03";
    }
    else if ($eventMonth == "April") {
    $eventMonth = eregi_replace("April", "aprile", $eventMonth);
    $numero_mese = "04";
    }
    else if ($eventMonth == "May") {
    $eventMonth = eregi_replace("May", "maggio", $eventMonth);
    $numero_mese = "05";
    }
    else if ($eventMonth == "June") {
    $eventMonth = eregi_replace("June", "giugno", $eventMonth);
    $numero_mese = "06";
    }
    else if ($eventMonth == "July") {
    $eventMonth = eregi_replace("July", "luglio", $eventMonth);
    $numero_mese = "07";
    }
    else if ($eventMonth == "August") {
    $eventMonth = eregi_replace("August", "agosto", $eventMonth);
    $numero_mese = "08";
    }
    else if ($eventMonth == "September") {
    $eventMonth = eregi_replace("September", "settembre", $eventMonth);
    $numero_mese = "09";
    }
    else if ($eventMonth == "October") {
    $eventMonth = eregi_replace("October", "ottobre", $eventMonth);
    $numero_mese = "10";
    }
    else if ($eventMonth == "November") {
    $eventMonth = eregi_replace("November", "novembre", $eventMonth);
    $numero_mese = "11";
    }
    else if ($eventMonth == "December") {
    $eventMonth = eregi_replace("December", "dicembre", $eventMonth);
    $numero_mese = "12";
    }

    if ($eventDay < 10) {
    $numero_giorno = "0$eventDay";
    }
    else {
    $numero_giorno = $eventDay;
    }

    $oggi = date('Ymd');
    $data_evento = ("$eventYear$numero_mese$numero_giorno");

    if ($oggi <= $data_evento) {

    $evento = "<a href=\"$url\">$eventName</a>";
    $data = trim("($eventDay $eventMonth $eventYear)");
    $output = "<li>$evento<br><div align=\"right\">$data</div></li>";


    $_REQUEST .= $output;
    }
    }


    // Include the FFDB library
    include("calendar/ffdb.inc.php");

    //open db or create new db
    $db = new FFDB();
    if (!$db->open("calendar/calendar"))
    {
    // Define the database shema.
    // Note that the "last_name" field is our key.
    $schema = array(
    array("event_key", FFDB_INT, "key"),
    array("event_name", FFDB_STRING),
    array("event_description", FFDB_STRING),
    array("event_submitted_by", FFDB_STRING),
    array("event_month", FFDB_STRING),
    array("event_day", FFDB_INT),
    array("event_year", FFDB_INT)
    );
    }


    $result = $db->getbyfunction("returnAll", "event_key");

    foreach($result as $item)
    show_record($item);

    /*
    processing goes here;
    you'll fill here the $subject and $content vars

    of course, you can vary the names ;)
    */
    $content = <ul>$_REQUEST</ul>";
    $subject = "Prossimi concerti";

    // here's the key, return this array
    return array(

    'subject' => $subject, // this will appear as small title (if any) in your bar
    'content' => $content
    );

    }

    /* this is to make sure this will work after the upgrade */
    if (function_exists('register_widget')) {

    register_widget(
    'event', // plugin id (the dir name, and the part between plugin. and .php)
    'Event', // full name
    'plugin_event_widget' // widget function
    );

    }
    •  
      CommentAuthorNoWhereMan
    • CommentTimeOct 28th 2007
     permalink
    non fare MAI $_REQUEST='' una cosa TERRIBILE stai azzerando una var di sistema (sistema inteso come sistema PHP); al limite puoi fare un $_REQUEST['ROBAMIA']='', e comunque esiste $GLOBALS['miavar']; fare $miavar =& $GLOBALS['miavar'] è sostanzialmente equivalente a fare global $miavar (con l'unica differenza che se $miavar non è inizializzata con $GLOBALS['miavar'] otterrai un notice; basta premettere un @ : @$miavar =& $GLOBALS['miavar'] ).

    Comunque non riesco a capire perché dovresti usare una global, visto che quella variabile viene riempita direttamente nel tuo script e poi non verrà mai più utilizzata altrove, da quanto capisco

    PS: se intendi rilasciare il plugin usa un nome un po' più specifico di "event";
    •  
      CommentAuthortojo72
    • CommentTimeOct 29th 2007
     permalink
    faccio una doverosa premessa... cioe' che di php non capisco molto... non ho detto NIENTE, ma piu' che altro mi barcameno adattando alle mie esigenze script gia' esistenti... tipo flat press ;)

    detto questo rispondo a:
    Comunque non riesco a capire perché dovresti usare una global, visto che quella variabile viene riempita direttamente nel tuo script e poi non verrà mai più utilizzata altrove, da quanto capisco

    perche' poi devo passarla a $content per poterla visualizzare e se faccio $content = $output ottendo una variabile vuota perche' non riesco a portare $output al di fuori della funzione (se non con una variabile globale)

    PS: se intendi rilasciare il plugin usa un nome un po' più specifico di "event"; ---> direi che siamo moooolto indietro per una pubblicazione ;)
    •  
      CommentAuthorNoWhereMan
    • CommentTimeOct 29th 2007
     permalink
    fare un return? :D

    anziché

    $_REQUEST .= $output;

    return $output;

    poi più in basso

    $content = '';
    foreach($result as $item)
    $content .= show_record($item);
    •  
      CommentAuthortojo72
    • CommentTimeOct 29th 2007
     permalink
    aggiudicato!!!


    ps
    per la pubblicazione del plugin cosi com'e' adesso mi vergogno ;) a diffonderla all'umanita'
    se ti puo' interessare posso spedirti il "malloppone", cosi se hai tempo puoi renderlo decente e pubblicabile

    famme sape'
    •  
      CommentAuthorNoWhereMan
    • CommentTimeOct 29th 2007
     permalink
    dovrei leggermi il codice di quel calendario, penso potrebbe esserci un metodo più semplice che definire tutte quelle funzioni :/

    però devo già star dietro alla release di crescendo+1 e mannaggia mi dispiace di non essere ancora riuscito a finire :(
    •  
      CommentAuthortojo72
    • CommentTimeOct 29th 2007
     permalink
    il calendario e' questo:
    http://www.circulargenius.com/flatcalendar/

    lo sviluppo e' fermo a 5 anni fa!

    comunque quando hai tempo (e voglia...) posso mandarti la versione flatpressizza e tojoizzata :D
    •  
      CommentAuthorNoWhereMan
    • CommentTimeOct 30th 2007
     permalink
    l'avevo già trovato cercando "FFDB", e avevo notato lo sviluppo fermo :D ma 'scolta, considerando che tanto poi dovrai aggiornare a mano, non è più facile gestire una banale lista con blockparser?
    •  
      CommentAuthortojo72
    • CommentTimeOct 30th 2007
     permalink
    non è più facile gestire una banale lista con blockparser? ---> parla potabile ;)
    •  
      CommentAuthortojo72
    • CommentTimeOct 30th 2007
     permalink
    si... ho capito (in ritardo)

    ma cosi e' piu' bello, perche' gli eventi "scaduti" se ne vanno da soli (io non abito su internet quindi non posso aggiornare in continuazione) e in piu' c'e' il calendario con gli eventi nelle caselle del giorno