Jump to content

Script verifica aggiornamenti di hook


BomAle

Recommended Posts

7734fc853b1244b081ad863865b9717a.png

Ogni sviluppatore di Invision Power Board per sfruttare il sistema di aggiornamento interno della piattaforma deve realizzare uno script per permettere ai clienti di controllare nuove versioni del plugin.

 

Per permettere allo sviluppatore ciò il team IPS ha predisposto, dalla 3.1.x, il metodo $_GET.

 

Il codice

/* PATH (IPS_ROOT_PATH, DOC_IPS_ROOT_PATH) */define('MY_IPB_LOCATION', '/home/****/public_html/forum/');require_once( MY_IPB_LOCATION . '/initdata.php' );require_once( MY_IPB_LOCATION . CP_DIRECTORY  . '/sources/base/ipsRegistry.php' );$registry = ipsRegistry::instance();$registry->init();/******* INIZIO CLASSE *******//**  * Class versionCheck for IPB Hooks & Apps * @version 1.0.0 * @author Amged Osman * @link http://amgedosman.com/ * @date 11:19 PM Friday, December 6, 2013 */ class versionCheck{   private $ipb30x = array ( '30001', '30003','30004', '30005', '30008', '30009', '30010', '30011', '30012');  private $ipb31x = array ( '31000','31003', '31004', '31005', '31006','31007');  private $ipb32x = array ( '32000', '32001', '32002', '32003', '32004', '32005', '32006', '32007');  private $ipb33x = array ( '33000','33007', '33009', '33010', '33012', '33013', '33014', '33015', '33016');  private $ipb34x = array ( '34000', '34005', '34007', '34008', '34009', '34010', '34011', '34012' );    public $TRUEorFALSE = array (true => 1, false => 0);  public $theReturn = true;  public $debug = 0;  public $TRUEorFALSE_debug = array (true => 'Update Available', false => "You're up-to-date");                  /**       * @access public       * autoRun for the class & switch       */      public function autoRun(){          $this->boardVersion = isset($_GET['boardVersion']) ? $_GET['boardVersion'] : 00000;          $this->version = isset($_GET['version']) ? $_GET['version'] : 00000;          $this->fileId = isset($_GET['fileid']) ? $_GET['fileid'] : 000;                    switch ($this->fileId){              case '000':               default:               $this->showNone();               break;                              case '6766':               $this->pmod_all();	               break;          }        return $this->results;        $this->_returnResults();        exit();      }   /**    * @access protected    * later on this will return the public functions return to the index.php    */   protected function _returnResults(){      return $this->results;   }      /**    * @return (advanced) HTML & the update status    * @access public    */   public function showNone(){               $this->theReturn = false;     $html =  "No Id Passed";     $this->results = array ('html' => $html, 'return' => $this->theReturn );    }       /**    * @return (advanced) HTML & the update status    * @access public    */   public function pmod_all(){          $latestFileVersion = 20001;          if (in_array($this->boardVersion ,  $this->ipb30x) ){ $latestFileVersion = 10000; }          if (in_array($this->boardVersion ,  $this->ipb31x) ){ $latestFileVersion = 10000; }                    if ($latestFileVersion <= $this->version ){               $this->theReturn = false;          }                    $html = $this->TRUEorFALSE[$this->theReturn];          if ($this->debug === 1){             $html =  "Latest File: {$latestFileVersion}<br />Current Version: {$this->version}<br />{$this->TRUEorFALSE_debug[$this->theReturn]}";          }         $this->results = array ('html' => $html, 'return' => $this->theReturn );  }    }/******* FINE CLASSE *******/$versionCheckClass = new versionCheck();$versionCheckClass->debug = 0;$results = $versionCheckClass->autoRun();echo $results['html'];return $results['return'];

Funzionamento

La richiesta passa nello script chiamando la classe versionCheck e stampa a video 1 se c'è un aggiornamento e 0 se non presente.

 

Configurazione

Per inserire un nuovo elemento nel processo bisogna creare un "case" nella funzione autoRun esempio

               case '6766':               $this->pmod_all();	               break;

quindi bisogna creare un metodo/funzione esempio

   public function pmod_all(){          $latestFileVersion = 20001;          if (in_array($this->boardVersion ,  $this->ipb30x) ){ $latestFileVersion = 10000; }          if (in_array($this->boardVersion ,  $this->ipb31x) ){ $latestFileVersion = 10000; }                    if ($latestFileVersion <= $this->version ){               $this->theReturn = false;          }                    $html = $this->TRUEorFALSE[$this->theReturn];          if ($this->debug === 1){             $html =  "Latest File: {$latestFileVersion}<br />Current Version: {$this->version}<br />{$this->TRUEorFALSE_debug[$this->theReturn]}";          }         $this->results = array ('html' => $html, 'return' => $this->theReturn );  }

È possibile effettuare un debug (controllo delle variabili passate dall'url) cambiando il valore a 1, abilitatelo per un analisi e reimpostate 0 quanto possibile...

$versionCheckClass->debug = 1;

 e ricordatevi di specificare i parametri di get boardVersion e version esempio

http://vostrosito.it/check.php?&boardVersion=34000&version=20000&fileid=6766

Utilizzo

Salvate il codice in una pagina di ip.content o creando un file nell'ftp, nel mio caso check.php, in una directory a piacere...

Recatevi presso le impostazioni della hook creata e aggiungete in "Update URL" la pagina web esempio

http://www.invisionita.it/bomale/hook/check.php?&fileid=6766

ricordandovi di specificare il "fileid" passato nello switch di autoRun()

infine per controllare gli aggiornamenti delle hook seguite il link di seguito...

http://vostrosito.it/admin/index.php?&app=core&module=applications&section=hooks&do=hooks_overview&checkUpdates=1

Ringrazio amgedosman per l'articolo originale in inglese, e per le istruzioni passo passo di Michael (2011)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. to insert a cookie message.