Changeset 48933 in spip-zone


Ignore:
Timestamp:
Jun 19, 2011, 9:01:16 PM (10 years ago)
Author:
cedric@…
Message:

Mise a jour des appels de l'api editer/document
utilisation de la fonction objet_test_si_publie() pour publier un document en fonction du statut des objets liés

Location:
_core_/plugins/medias
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/medias/action/ajouter_documents.php

    r47630 r48933  
    181181        // Installer le document dans la base
    182182        if (!$id_document){
    183                 if ($id_document = insert_document())
     183                if ($id_document = document_inserer())
    184184                        spip_log ("ajout du document ".$file['tmp_name']." ".$file['name']."  (M '$mode' T '$objet' L '$id_objet' D '$id_document')",'medias');
    185185                else
  • _core_/plugins/medias/action/dissocier_document.php

    r48095 r48933  
    8080        // verifier son statut apres une suppression de lien
    8181        include_spip('action/editer_document');
    82         instituer_document($id_document);
     82        document_instituer($id_document);
    8383
    8484        pipeline('post_edition',
  • _core_/plugins/medias/action/editer_document.php

    r46791 r48933  
    1717 * Action editer_document
    1818 *
    19  * @return unknown
     19 * @param int $arg
     20 * @return array
    2021 */
    2122function action_editer_document_dist($arg=null) {
     
    4243 * Creer un nouveau document
    4344 *
    44  * @return unknown
     45 * @return int
    4546 */
    4647function document_inserer() {
     
    8081 *
    8182 * @param int $id_document
    82  * @param array $set
     83 * @param array|bool $set
    8384 */
    8485function document_modifier($id_document, $set=false) {
     
    148149 *
    149150 * @param int $id_document
     151 * @param array $champs
     152 * @return bool
    150153 */
    151154function document_instituer($id_document,$champs=array()){
     
    169172                // penser a ouvrir un ticket d'ici la :p
    170173                $date_publication=time()+10*365*24*3600;
     174                include_spip('base/objets');
    171175                while($row = sql_fetch($res)){
    172                         $table = table_objet_sql($row['objet']);
    173                         $desc = $trouver_table($table);
    174                         // si pas de champ statut, c'est un objet publie, donc c'est bon
    175                         if (!isset($desc['field']['statut'])){
     176                        if (
     177                                // si pas de champ statut, c'est un objet publie, donc c'est bon
     178                                !isset($desc['field']['statut'])
     179                                // cas particulier des rubriques qui sont publiees des qu'elles contiennent un document !
     180                          OR $row['objet']=='rubrique'
     181                                // ou si objet publie selon sa declaration
     182                          OR objet_test_si_publie($row['objet'],$row['id_objet'])){
    176183                                $statut = 'publie';
    177184                                $date_publication=0;
    178185                                continue;
    179186                        }
    180                         $id_table = id_table_objet($row['objet']);
    181                         $row2 = sql_fetsel('statut'.($table=='spip_articles'?",date":""),$table,$id_table.'='.intval($row['id_objet']));
    182                         if ($row2['statut']=='publie'
    183                                 // cas particulier des rubriques qui sont publiees des qu'elles contiennent un document !
    184                           OR $row['objet']=='rubrique'){
    185                                 $statut = 'publie';
    186                                 // si ce n'est pas un article, c'est donc deja publie, on met la date a 0
    187                                 if (!$row2['date']){
    188                                         $date_publication=0;
    189                                         continue;
    190                                 }
    191                                 else {
    192                                         $date_publication = min($date_publication,strtotime($row2['date']));
    193                                 }
     187                        // si pas publie, et article, il faut checker la date de post-publi eventuelle
     188                        elseif ($row['objet']=='article'
     189                          AND $row2 = sql_fetsel('date','spip_articles','id_article='.intval($row['id_objet'])." AND statut='publie'")){
     190                                $date_publication = min($date_publication,strtotime($row2['date']));
    194191                        }
    195192                }
    196193                $date_publication = date('Y-m-d H:i:s',$date_publication);
    197                 if ($statut=='publie' AND $statut_ancien=='publie' AND $date_publie==$date_publication_ancienne)
     194                if ($statut=='publie' AND $statut_ancien=='publie' AND $date_publication==$date_publication_ancienne)
    198195                        return false;
    199196                if ($statut!='publie' AND $statut_ancien!='publie' AND $statut_ancien!='0')
     
    221218 * chaque parent est liste au format objet|id_objet
    222219 *
    223  * @param unknown_type $id_document
    224  * @param unknown_type $parents
     220 * @param int $id_document
     221 * @param array $parents
     222 * @param bool $ajout
    225223 */
    226224function medias_revision_document_parents($id_document, $parents=null, $ajout=false){
  • _core_/plugins/medias/medias_pipelines.php

    r46156 r48933  
    6161                include_spip('action/editer_document');
    6262                // mettre a jour le statut si necessaire
    63                 instituer_document($flux['args']['id_objet']);
     63                document_instituer($flux['args']['id_objet']);
    6464        }
    6565        // si on institue un objet, mettre ses documents lies a jour
     
    8181                        foreach($docs as $id_document)
    8282                                // mettre a jour le statut si necessaire
    83                                 instituer_document($id_document);
     83                                document_instituer($id_document);
    8484                }
    8585        }
  • _core_/plugins/medias/plugin.xml

    r48717 r48933  
    33        <auteur>Collectif SPIP, Cedric Morin &amp; Romy Duhem-Verdiere pour la mediatheque</auteur>
    44        <icon>prive/themes/spip/images/portfolio-64.png</icon>
    5         <version>2.0.1</version>
     5        <version>2.0.2</version>
    66        <version_base>0.14.0</version_base>
    77        <etat>test</etat>
Note: See TracChangeset for help on using the changeset viewer.