Changeset 31692 in spip-zone


Ignore:
Timestamp:
Sep 21, 2009, 11:00:02 AM (10 years ago)
Author:
cedric@…
Message:

les jobs peuvent etre associes a des objets. Dans ce cas, ils apparaissent sur les page de visualisation de ces objets, avec un bouton pour annuler.
Cela permet a des plugins de lancer un job en laissant un petit delai pour annuler en cas d'erreur

Location:
_plugins_/job_queue
Files:
5 added
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/job_queue/base/queue.php

    r31607 r31692  
    1313        $interface['table_des_tables']['jobs']='jobs';
    1414
     15        $interface['tables_jointures']['spip_jobs'][] = 'jobs_liens';
    1516
    1617        return $interface;
     
    4243
    4344
     45function queue_declarer_tables_auxiliaires($tables_auxiliaires){
     46        $spip_jobs_liens = array(
     47                "id_job"        => "bigint(21) DEFAULT '0' NOT NULL",
     48                "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
     49                "objet" => "VARCHAR (25) DEFAULT '' NOT NULL",
     50        );
     51
     52$spip_documents_liens_key = array(
     53                "PRIMARY KEY"           => "id_job,id_objet,objet",
     54                "KEY id_job"    => "id_job");
     55
     56        $tables_auxiliaires['spip_jobs_liens'] = array(
     57                'field' => &$spip_jobs_liens,
     58                'key' => &$spip_documents_liens_key);
     59        return $tables_auxiliaires;
     60}
     61
    4462function queue_upgrade($nom_meta_base_version,$version_cible){
    4563        $current_version = 0.0;
     
    4765                        || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
    4866                include_spip('base/abstract_sql');
    49                 if ($current_version==0.0){
     67                if (version_compare($current_version,"0.2.0"<=0.0)){
    5068                        include_spip('base/serial');
     69                        include_spip('base/auxiliaires');
    5170                        include_spip('base/create');
    5271                        creer_base();
  • _plugins_/job_queue/inc/queue.php

    r31618 r31692  
    4343                        sql_countsel('spip_jobs',
    4444                                'fonction='.sql_quote($function)
    45                                 .(($no_duplicate=='function_only')?'':
     45                                .(($no_duplicate==='function_only')?'':
    4646                                 ' AND args='.sql_quote($arguments).' AND file='.sql_quote($file)))
    4747                )
     
    7878 */
    7979function queue_remove_job($id_job){
    80         if ($res = sql_delete('spip_jobs','id_job='.intval($id_job)))
     80        if ($res = sql_delete('spip_jobs','id_job='.intval($id_job))){
    8181                queue_update_next_job_time();
     82                queue_unlink_job($id_job);
     83        }
    8284        return $res;
    8385}
    8486
     87/**
     88 * Link a job with SPIP objects
     89 *
     90 *
     91 * @param int $id_job
     92 *      id of job to link
     93 * @param array $objets
     94 *  can be a simple array('objet'=>'article','id_objet'=>23)
     95 *  or an array of simple array to link multiples objet in one time
     96 */
     97function queue_link_job($id_job,$objets){
     98        if (is_array($objets) AND count($objets)){
     99                if (is_array(reset($objets))){
     100                        foreach($objets as $k=>$o){
     101                                $objets[$k]['id_job'] = $id_job;
     102                        }
     103                        sql_insertq_multi('spip_jobs_liens',$objets);
     104                }
     105                else
     106                        sql_insertq('spip_jobs_liens',array_merge(array('id_job'=>$id_job),$objets));
     107        }
     108}
     109
     110/**
     111 * Unlink job with SPIP objects
     112 *
     113 * @param int $id_job
     114 *      id of job to unlink ibject with
     115 * @return int/bool
     116 *      result of sql_delete
     117 */
     118function queue_unlink_job($id_job){
     119        return sql_delete("spip_jobs_liens","id_job=".intval($id_job));
     120}
    85121
    86122/**
     
    153189                                // l'executer
    154190                                $result = queue_start_job($row);
     191
     192                                // purger ses liens eventuels avec des objets
     193                                sql_delete("spip_jobs_liens","id_job=".intval($row['id_job']));
    155194
    156195                                // est-ce une tache cron qu'il faut relancer ?
  • _plugins_/job_queue/plugin.xml

    r31642 r31692  
    33  <auteur>Cedric&amp;Fil</auteur>
    44  <version>0.1</version>
    5   <version_base>0.1.0</version_base>
     5  <version_base>0.2.0</version_base>
    66  <etat>test</etat>
    77  <description>Gestion d'une queue de Jobs</description>
     
    1818                <inclure>base/queue.php</inclure>
    1919        </pipeline>
     20        <pipeline>
     21                <nom>declarer_tables_auxiliaires</nom>
     22                <inclure>base/queue.php</inclure>
     23        </pipeline>
     24        <pipeline>
     25                <nom>affiche_milieu</nom>
     26                <inclure>queue_pipelines.php</inclure>
     27        </pipeline>
     28
    2029</plugin>
  • _plugins_/job_queue/queue_options.php

    r31593 r31692  
    4242 */
    4343function job_queue_remove($id_job){
     44        include_spip('inc/queue');
    4445        return queue_remove_job($id_job);
    4546}
    4647
     48/**
     49 * Link a job with SPIP objects
     50 *
     51 *
     52 * @param int $id_job
     53 *      id of job to link
     54 * @param array $objets
     55 *  can be a simple array('objet'=>'article','id_objet'=>23)
     56 *  or an array of simple array to link multiples objet in one time
     57 */
     58function job_queue_link($id_job,$objets){
     59        include_spip('inc/queue');
     60        return queue_link_job($id_job,$objets);
     61}
     62
    4763?>
Note: See TracChangeset for help on using the changeset viewer.