Source for file class.scale.php
Documentation is available at class.scale.php
* @author linea21 <info@linea21.com>
* @license http://opensource.org/licenses/gpl-3.0.html
var $DEPTH_TABLE = array (); // tableau contenant les profondeurs d'échelles
var $SON_TABLE = array (); // tableau contenant les fils d'échelles
var $ALL_REC = array (); // tableau contenant les fils d'échelles
public function __call($method, $arguments)
$event = $this->dispatcher->notifyUntil(new sfEvent($this, 'scale.extensible_function', array(
'arguments' => $arguments
if (!$event->isProcessed())
throw new Exception(sprintf('Call to undefined method %s::%s.', get_class($this), $method));
return $event->getReturnValue();
* scale::CheckDataIntegrity()
* Vérification des données d'une echelle
* @param array $table_scale : contient les composants d'une echelle
* @return boolean si vrai renvoie true sinon message d'erreurs (string)
$notdenomination = _t('scale','object_notdenomination');
$notnumsurface = _t('scale','object_notnumsurface');
$notnuminhabitants = _t('scale','object_notnuminhabitants');
$notroot = _t('scale','object_notroot');
if (strlen($table_scale[0]) < 2) return $notdenomination;
if (trim($table_scale[1]) != '' && !is_numeric($table_scale[1])) return $notnumsurface;
if (trim($table_scale[2]) != '' && !is_numeric($table_scale[2])) return $notnuminhabitants;
if (!is_numeric($table_scale[3]) || $table_scale[3] == - 1) return $notroot;
* obtention de la profondeur max d'une échelle ( par rapport a ses filles
* @param $id : identifiant de l'échelle courante
* @return array $return_table contennat profondeur et échelle d'exclusion
$requete = "SELECT scale_dependencies FROM " . $this->TDB_SCALE . " WHERE scale_id='" . $this->ID . "';";
$result = $sql_object->DBSelect($requete);
$return_table["exclusion"] = $this->SON_TABLE;
* scale::getScaleDepthAndSon()
* obtention des fils et profondeur ( récursif ) par rapport à une échelle données
* stockage dans des tableaux respectifs.
* @param $table Ensemble des échelles
* @param $id échelle courante
for($i = 0; $i < count($table); $i++ ) {
$current_dep = $table[$i]['scale_dependencies'];
$current_root = $table[$i]['scale_root'];
$current_id = $table[$i]['scale_id'];
if ($id == $current_root) {
* Obtention de toutes les échelles.
$requete = "SELECT scale_dependencies, scale_id, scale_root FROM " . $this->TDB_SCALE . ";";
$this->ALL_REC = $sql_object->DBSelect($requete);
* @param array $table_scale contient les composants d'une echelle
* @param object $sql_object
* @return integer $last_id
function AddScale($table_scale, $sql_object)
$table_scale= $sql_object->DBescape($table_scale);
if (strlen($table_scale[0]) > 1) {
} else return $notdenomination;
if (trim($table_scale[1]) == '') {
if (trim($table_scale[2]) == '') {
$this->ROOT = $table_scale[3];
if ($table_scale[5] != '') {
switch ($table_scale[5]) {
$this->STATUT = $table_scale[5];
$this->STATUT = $table_scale[5];
// On Determine le rang de l'échelle
$requete = "SELECT scale_dependencies FROM " . $this->TDB_SCALE . " WHERE scale_id=" . $this->ROOT . ";";
$result = $sql_object->DBSelect($requete);
$requete = "INSERT INTO " . $this->TDB_SCALE . " (scale_denomination, scale_surface, scale_inhabitantsnumber, scale_root, scale_comment, " . "scale_dependencies, scale_statut, scale_date_crea) " . "VALUES('" . $this->DENOMINATION . "', " . $this->SURFACE . ", " . $this->INHABITANTSNUM . ", " . $this->ROOT . ", '" . $this->COMMENT . "', " . $this->DEPENDENCIES . ", '" . $this->STATUT . "', NOW());";
$last_id = $sql_object->DBInsert ($requete, 1);
* modification d'une echelle
* @param int $ID identifiant de l'echelle
* @param object $sql_object
* @param array $table_scale contient les composants d'une echelle
$table_scale= $sql_object->DBescape($table_scale);
if ($table_scale[0] != '') {
if (trim($table_scale[1]) == '') {
if (trim($table_scale[2]) == '') {
$this->ROOT = $table_scale[3];
if ($table_scale[5] != '') {
switch ($table_scale[5]) {
$this->STATUT = $table_scale[5];
$this->STATUT = $table_scale[5];
// On Determine le rang de l'échelle
$requete = "SELECT scale_dependencies FROM " . $this->TDB_SCALE . " WHERE scale_id=" . $this->ROOT . ";";
$result = $sql_object->DBSelect($requete);
// Si ce n'est pas l'échelle racine on assigne sinon =-1
$current_depth= (empty($result)) ? - 1 : $result[0]['scale_dependencies'];
// mise à jour du niveau des informations relatives à l'échelle
$requete = "UPDATE " . $this->TDB_SCALE . " set scale_denomination='" . $this->DENOMINATION . "', scale_surface=" . $this->SURFACE . ", scale_inhabitantsnumber=" . $this->INHABITANTSNUM . ", scale_root=" . $this->ROOT . ", scale_comment='" . $this->COMMENT . "', scale_dependencies=" . $this->DEPENDENCIES . ", scale_statut='" . $this->STATUT . "', scale_last_modify=NOW() WHERE scale_id=" . $this->ID . ";";
$result = $sql_object->DBQuery($requete);
// si la nouvelle échelle root diffère de la précédente, update récursif des dépendances des échelles filles
if ($table_scale[6] != $this->ROOT) {
* scale::update_all_dependencies()
* Mise à jour de l'ensemble des échelles filles par rapport à ul'échelle courante.
for($i = 0; $i < count($table); $i++ ) {
$current_dep = $table[$i]['scale_dependencies'];
$current_root = $table[$i]['scale_root'];
$current_id = $table[$i]['scale_id'];
if ($id == $current_root) {
$requete = "UPDATE " . $this->TDB_SCALE . " SET scale_dependencies='" . ($depth + 1) . "' WHERE scale_id='" . $current_id . "';";
$result = $sql_object->DBQuery($requete);
* modification du statut d'une échelle
* @param int $id identifiant de l'echelle
* @param string $state (facultatif) 'P' Public/'D' Draft
* @param object $sql_object
$requete = "UPDATE " . $this->TDB_SCALE . " set scale_statut='" . $this->STATUT . "', scale_last_modify=NOW() WHERE scale_id=" . $this->ID . ";";
$result = $sql_object->DBQuery($requete);
* suppression d'une echelle
* @param int $ID identifiant de l'echelle
* @param string $type 'MASS_DELETE'
* 'MASS_DELETE' toutes les ressources associées à l'échelle sont rendues inactives
* 'MASS_MODIFY' remplacement de l'ancienne échelle par $ID_new
* @param int $ID_new nouvel id de rattachement
* @param object $sql_object
* @return integer $affected // nombre de ressources affectées par les changements
function DeleteScale($ID, $sql_object, $type, $ID_new = - 1)
if ($type == 'MASS_MODIFY') {
$requete = "UPDATE " . $this->TDB_SCALE . " set scale_statut='E', scale_last_modify=NOW() WHERE scale_id=" . $this->ID . ";";
$result = $sql_object->DBQuery($requete);
$requete = "SELECT scale_dependencies FROM " . $this->TDB_SCALE . " WHERE scale_id=" . $ID_new . ";";
$result = $sql_object->DBSelect($requete);
$dependencies = $result[0]['scale_dependencies'];
$requete = "UPDATE " . $this->TDB_SCALE . " set scale_root=" . $ID_new . " WHERE scale_root=" . $this->ID . ";";
$result = $sql_object->DBQuery($requete);
// modification récursive des dépendances.
// mise à jour des ressources.
$requete_news = "UPDATE " . T_NEWS . " set news_scale=" . $ID_new . " WHERE news_scale=" . $this->ID . ";";
$result = $sql_object->DBQuery($requete_news);
$affected += $sql_object->DBaffectedRow();
$requete_project = "UPDATE " . T_PROJECT . " set project_scale_id=" . $ID_new . " WHERE project_scale_id=" . $this->ID . ";";
$result = $sql_object->DBQuery($requete_project);
$affected += $sql_object->DBaffectedRow();
$requete_publication = "UPDATE " . T_PUBLI . " set publi_scale=" . $ID_new . " WHERE publi_scale=" . $this->ID . ";";
$result = $sql_object->DBQuery($requete_publication);
$affected += $sql_object->DBaffectedRow();
$requete_sdi = "UPDATE " . T_SDI_VALUE . " set sdiv_scale=" . $ID_new . " WHERE sdiv_scale=" . $this->ID . ";";
$result = $sql_object->DBQuery($requete_sdi);
$affected += $sql_object->DBaffectedRow();
if ($type == 'MASS_DELETE') {
$update_bdd_scale .= " OR scale_id='" . $this->SON_TABLE[$i] . "'";
$update_bdd_news .= " OR news_scale='" . $this->SON_TABLE[$i] . "'";
$update_bdd_publi .= " OR publi_scale='" . $this->SON_TABLE[$i] . "'";
$update_bdd_sdi .= " OR sdiv_scale='" . $this->SON_TABLE[$i] . "'";
$update_bdd_project .= " OR projetc_scale_id='" . $this->SON_TABLE[$i] . "'";
// Effacement de l'échelle et ses fils
$requete = "UPDATE " . $this->TDB_SCALE . " set scale_statut='E', scale_last_modify=NOW() WHERE scale_id='" . $this->ID . "'";
$requete .= $update_bdd_scale;
$result = $sql_object->DBQuery($requete);
$requete_news = "UPDATE " . T_NEWS . " SET news_statut='E' WHERE news_scale='" . $this->ID . "'";
$requete_news .= $update_bdd_news;
$result = $sql_object->DBQuery($requete_news);
$affected += $sql_object->DBaffectedRow();
$requete_project = "UPDATE " . T_PROJECT . " SET project_statut='E' WHERE project_scale_id='" . $this->ID . "'";
$requete_project .= $update_bdd_project;
$result = $sql_object->DBQuery($requete_project);
$affected += $sql_object->DBaffectedRow();
$requete_publication = "UPDATE " . T_PUBLI . " SET publi_statut='E' WHERE publi_scale='" . $this->ID . "'";
$requete_publication .= $update_bdd_publi;
$requete_publication .= ";";
$result = $sql_object->DBQuery($requete_publication);
$affected += $sql_object->DBaffectedRow();
$requete_sdi = "UPDATE " . T_SDI_VALUE . " SET sdiv_statut='E' WHERE sdiv_scale='" . $this->ID . "'";
$requete_sdi .= $update_bdd_sdi;
$result = $sql_object->DBQuery($requete_sdi);
$affected += $sql_object->DBaffectedRow();
|