Your IP : 216.73.216.249


Current Path : /home/etiennec/www/oldsite/plugins/auto/mediatheque/base/
Upload File :
Current File : /home/etiennec/www/oldsite/plugins/auto/mediatheque/base/medias.php

<?php
/**
 * Plugin Portfolio/Gestion des documents
 * Licence GPL (c) 2006-2008 Cedric Morin, romy.tetue.net
 *
 */

function medias_declarer_tables_interfaces($interface){
	$interface['exceptions_des_tables']['documents']['media']=array('types_documents', 'media');
	return $interface;
}

function medias_declarer_tables_principales($tables_principales){
	
	$tables_principales['spip_documents']['field']['fichier'] = "text NOT NULL DEFAULT ''";
	$tables_principales['spip_documents']['field']['mode'] = "varchar(10) DEFAULT 'document' NOT NULL";
	$tables_principales['spip_types_documents']['field']['media'] = "varchar(10) DEFAULT 'file' NOT NULL";
	$tables_principales['spip_documents']['field']['statut'] = "varchar(10) DEFAULT '0' NOT NULL";
	$tables_principales['spip_documents']['field']['credits'] = "varchar(255) DEFAULT '' NOT NULL";	
	$tables_principales['spip_documents']['field']['date_publication'] = "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL";
	$tables_principales['spip_documents']['field']['brise'] = "tinyint DEFAULT 0";
	return $tables_principales;
}

function medias_declarer_tables_auxiliaires($tables_auxiliaires){


	return $tables_auxiliaires;
}

function medias_upgrade($nom_meta_base_version,$version_cible){
	$current_version = 0.0;
	if (   (!isset($GLOBALS['meta'][$nom_meta_base_version]) )
			|| (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
		if (version_compare($current_version,'0.2','<')){
			include_spip('base/abstract_sql');
			sql_alter("TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL");
			medias_check_type_media();
			sql_alter("TABLE spip_documents ADD statut varchar(10) DEFAULT '0' NOT NULL");
			ecrire_meta($nom_meta_base_version,$current_version="0.2",'non');
		}
		if (version_compare($current_version,'0.3','<')){
			include_spip('base/abstract_sql');
			// ajouter un champ
			sql_alter("TABLE spip_documents ADD date_publication datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
			// vider le cache des descriptions de tables
			$trouver_table = charger_fonction('trouver_table','base');
			$trouver_table(false);
			// reinit les statuts pour ceux qui avaient subi une version 0.2 bugguee
			sql_updateq('spip_documents',array('statut'=>'0'));
			// ecrire la version pour ne plus passer la
			ecrire_meta($nom_meta_base_version,$current_version="0.3",'non');
		}			
		if (version_compare($current_version,'0.4','<')){
			// recalculer tous les statuts en tenant compte de la date de publi des articles...
			$res = sql_select('id_document','spip_documents',"statut='0'");
			include_spip('action/editer_document');
			while ($row = sql_fetch($res))
				instituer_document($row['id_document']);
			ecrire_meta($nom_meta_base_version,$current_version="0.4",'non');
		}
		if (version_compare($current_version,'0.5','<')){
			include_spip('base/abstract_sql');
			// ajouter un champ
			sql_alter("TABLE spip_documents ADD brise tinyint DEFAULT 0");
			// vider le cache des descriptions de tables
			$trouver_table = charger_fonction('trouver_table','base');
			$trouver_table(false);
			ecrire_meta($nom_meta_base_version,$current_version="0.5",'non');
		}
		if (version_compare($current_version,'0.6','<')){
			include_spip('base/abstract_sql');
			sql_alter("TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL");
			medias_check_type_media();
			ecrire_meta($nom_meta_base_version,$current_version="0.6",'non');
		}
		if (version_compare($current_version,'0.7','<')){
			include_spip('base/abstract_sql');
			sql_alter("TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL");
			ecrire_meta($nom_meta_base_version,$current_version="0.7",'non');
		}
		if (version_compare($current_version,'0.8','<')){
			// reset des statut='0' pour forcer un recalcul de tous les statuts
			include_spip('base/abstract_sql');
			sql_updateq('spip_documents',array("statut"=>'0'));
			ecrire_meta($nom_meta_base_version,$current_version="0.8",'non');
		}
		// version 0.9 n'avait pas DEFAULT '' sur le champ fichier
		if (version_compare($current_version,'0.10','<')){
			// Augmentation de la taille du champ fichier pour permettre les URL longues
			include_spip('base/abstract_sql');
			sql_alter("TABLE spip_documents CHANGE fichier fichier TEXT NOT NULL DEFAULT ''");
			ecrire_meta($nom_meta_base_version,$current_version="0.10",'non');
		}
		if (version_compare($current_version,'0.11','<')){
			// Passage du mode en varchar
			include_spip('base/abstract_sql');
			sql_alter("TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL");
			ecrire_meta($nom_meta_base_version,$current_version="0.11",'non');
		}
	}
	medias_check_statuts();
	medias_check_type_media();
}

function medias_check_type_media(){
	include_spip('base/abstract_sql');
	// mettre a jour les bonnes valeurs
	// les cas evidents
	sql_updateq('spip_types_documents',array('media'=>'image'),"mime_type REGEXP '^image/'");
	sql_updateq('spip_types_documents',array('media'=>'audio'),"mime_type REGEXP '^audio/'");
	sql_updateq('spip_types_documents',array('media'=>'video'),"mime_type REGEXP '^video/'");
	// les cas particuliers ...
	sql_updateq('spip_types_documents',array('media'=>'video'),"mime_type='application/ogg' OR mime_type='application/x-shockwave-flash'");
	sql_updateq('spip_types_documents',array('media'=>'image'),"mime_type='application/illustrator'");
	sql_updateq('spip_types_documents',array('media'=>'video'),"mime_type='application/mp4'");
	// le plugin Vidéo(s) et toutes ses vidéos "distantes" sont des medias de type video
	sql_updateq('spip_types_documents',array('media'=>'video'),"extension REGEXP '^dist_'");
}
function medias_check_statuts(){
	$trouver_table = charger_fonction('trouver_table','base');
	$desc = $trouver_table('documents');
	if (!isset($desc['field']['statut']))
		return;

	$docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'"));
	if (count($docs)){
		include_spip('action/editer_document');
		foreach($docs as $id_document)
			// mettre a jour le statut si necessaire
			instituer_document($id_document);
	}
}

function medias_install($action,$prefix,$version_cible){
	$version_base = $GLOBALS[$prefix."_base_version"];
	switch ($action){
		case 'test':
			medias_check_statuts();
			medias_check_type_media();
			return (isset($GLOBALS['meta'][$prefix."_base_version"])
				AND version_compare($GLOBALS['meta'][$prefix."_base_version"],$version_cible,">="));
			break;
		case 'install':
			medias_upgrade('medias_base_version',$version_cible);
			break;
		case 'uninstall':
			//medias_vider_tables();
			break;
	}
}

?>