Update 3.1.4

This commit is contained in:
Alchemy
2011-02-24 14:23:54 +01:00
parent b12242f3f4
commit d6c7c7b206
31 changed files with 2373 additions and 2146 deletions

View File

@@ -71,7 +71,7 @@ class answer
$preview = '/include/directprev.php%3F'."bas%3D".$base_id."%26rec%3D".$record_id;
$JS_roll = '<div class="imgTips" style="z-index:99;width:'.((int)$sd["preview"]["width"]+10).'px;height:'.((int)$sd["preview"]["height"]+10).'px" id="rolloverpreview"></div>
<script type="text/javascript">flowplayer("rolloverpreview", {src:"/include/flowplayer/flowplayer-3.2.2.swf", wmode: "transparent"}, {clip:{url:"'.$preview.'",autoPlay: true,autoBuffering:true,provider: "h264streaming",scaling:"fit"}, onError:function(code,message){getNewVideoToken('.$base_id.', '.$record_id.', this);},plugins: {h264streaming: {url: "/include/flowplayer/flowplayer.pseudostreaming-3.2.2.swf"}}});</script>';
<script type="text/javascript">flowplayer("rolloverpreview", {src:"/include/flowplayer/flowplayer-3.2.6.swf", wmode: "transparent"}, {clip:{url:"'.$preview.'",autoPlay: true,autoBuffering:true,provider: "h264streaming",scaling:"fit"}, onError:function(code,message){getNewVideoToken('.$base_id.', '.$record_id.', this);},plugins: {h264streaming: {url: "/include/flowplayer/flowplayer.pseudostreaming-3.2.6.swf"}}});</script>';
}
}
@@ -256,12 +256,12 @@ class answer
$token = md5(time().mt_rand(100000,999999));
$html_view = '<div class="record record_video" style="width:'.$width.'px;height:'.$height.'px;">
<div id="preview_'.$base_id.'_'.$record_id.'_'.$token.'" class="PNB" style=""></div>
<div id="rolloverpreview" class="PNB" style=""></div>
<input type="hidden" name="width" value="'.$width.'"/>
<input type="hidden" name="height" value="'.$height.'"/>
</div><script type="text/javascript">flowplayer("preview_'.$base_id.'_'.$record_id.'_'.$token.'",{src:"/include/flowplayer/flowplayer-3.2.2.swf", wmode: "transparent"},{clip:{url:"'.$preview.'",autoPlay: true,autoBuffering:true,provider: "h264streaming",scaling:"fit"},onError:function(code,message){getNewVideoToken('.$base_id.', '.$record_id.', this);},plugins: {h264streaming: {url: "/include/flowplayer/flowplayer.pseudostreaming-3.2.2.swf"}}});</script>';
</div><script type="text/javascript">flowplayer("rolloverpreview",{src:"/include/flowplayer/flowplayer-3.2.6.swf", wmode: "transparent"},{clip:{url:"'.$preview.'",autoPlay: true,autoBuffering:true,provider: "h264streaming",scaling:"fit"},onError:function(code,message){getNewVideoToken('.$base_id.', '.$record_id.', this);},plugins: {h264streaming: {url: "/include/flowplayer/flowplayer.pseudostreaming-3.2.6.swf"}}});</script>';
$preview = '<div id="FLASHPREVIEW" class="PREVIEW_PIC" style="margin:0 auto;width: 600px; height: 300px;" ></div>';
$preview = '<div id="rolloverpreview" class="PREVIEW_PIC" style="margin:0 auto;width: 600px; height: 300px;" ></div>';
// $width = $height = '200';
}
elseif(in_array($sdMain[$typedoc]['mime'],$gviewer_docs))
@@ -453,7 +453,6 @@ class answer
$basesettings = phrasea::load_settings($locale);
$captions = _('reponses::record::Pas de description');
$xsl = '';
@@ -470,8 +469,8 @@ class answer
if($dom_doc->loadXML($xml))
{
$XPATH_thesaurus = databox::get_xpath_thesaurus($sbas_id);
$XPATH_struct = databox::get_xpath_structure($sbas_id);
$DOM_thFields = array();
if($XPATH_struct)
@@ -496,16 +495,16 @@ class answer
$context_noacc = noaccent_utf8($context_noacc, PARSED);
if($context_noacc)
{
$q = "($tbranch)//sy[@w='".$term_noacc."' and @k='".$context_noacc."']";
$q = "//sy[@w='".$term_noacc."' and @k='".$context_noacc."']";
}
else
{
$q = "($tbranch)//sy[@w='".$term_noacc."' and not(@k)]";
$q = "//sy[@w='".$term_noacc."' and not(@k)]";
}
$t = "";
foreach($DOM_branchs as $DOM_branch)
{
$nodes = $XPATH_thesaurus->query($q, $DOM_branch);
$nodes = $XPATH_thesaurus->cache_query($q, $DOM_branch, $tbranch);
if($nodes->length > 0)
{
$lngfound = false;
@@ -529,12 +528,12 @@ class answer
$t .= "');return(false);\"]]";
$t .= $fvalue;
$t .= "[[/a]]";
$lngfound = true;
break;
}
$synonyms = $XPATH_thesaurus->query("sy[@lng='" . $session->usr_i18 . "']", $node->parentNode);
$synonyms = $XPATH_thesaurus->query("sy[@lng='" . $session->usr_i18n . "']", $node->parentNode);
foreach($synonyms as $synonym)
{
$k = $synonym->getAttribute("k");
@@ -554,7 +553,6 @@ class answer
$t .= "');return(false);\"]]";
$t .= $link;
$t .= "[[/a]]";
$lngfound = true;
break;
}
@@ -1204,3 +1202,5 @@ class answer
return($value);
}
}

View File

@@ -2,6 +2,7 @@
abstract class base
{
var $schema = false;
var $conn = false;
var $dbname = false;
@@ -11,16 +12,15 @@ abstract class base
var $host = false;
var $type = false;
function init_conn()
{
require dirname( __FILE__ ) . '/../../config/connexion.inc';
$this->conn = mysql_connect($hostname.":".$port, $user, $password, true);
require dirname(__FILE__) . '/../../config/connexion.inc';
$this->conn = mysql_connect($hostname . ":" . $port, $user, $password, true);
mysql_set_charset('utf8',$this->conn);
mysql_set_charset('utf8', $this->conn);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $this->conn);
if($this->conn !== false)
if ($this->conn !== false)
return true;
return false;
@@ -31,45 +31,43 @@ abstract class base
}
function load_schema($schema_type)
{
$this->schema = false;
$structure = simplexml_load_file(dirname(__FILE__)."/../../lib/conf.d/bases_structure.xml");
if($structure !== false)
$structure = simplexml_load_file(dirname(__FILE__) . "/../../lib/conf.d/bases_structure.xml");
if ($structure !== false)
{
if($schema_type === 'application_box')
if ($schema_type === 'application_box')
$this->schema = $structure->appbox;
if($schema_type === 'data_box')
if ($schema_type === 'data_box')
$this->schema = $structure->databox;
}
return $this->schema !== false ? true : false ;
return $this->schema !== false ? true : false;
}
function createDb($dbname)
{
if($this->schema)
if ($this->schema)
{
$sql = 'CREATE DATABASE `'.mysql_real_escape_string($dbname,$this->conn).'` CHARACTER SET utf8 COLLATE utf8_unicode_ci';
if(mysql_query($sql,$this->conn) || mysql_select_db($dbname,$this->conn))
$sql = 'CREATE DATABASE `' . mysql_real_escape_string($dbname, $this->conn) . '` CHARACTER SET utf8 COLLATE utf8_unicode_ci';
if (mysql_query($sql, $this->conn) || mysql_select_db($dbname, $this->conn))
{
mysql_select_db($dbname,$this->conn);
mysql_select_db($dbname, $this->conn);
foreach($this->schema->tables->table as $table)
foreach ($this->schema->tables->table as $table)
{
$this->createTable($table);
}
$this->dbname = $dbname;
if(defined('GV_version'))
if (defined('GV_version'))
$this->setVersion(GV_version);
return true;
}
else
return false;
}
return false;
}
@@ -78,169 +76,177 @@ abstract class base
{
$field_stmt = $defaults_stmt = array();
$create_stmt = "CREATE TABLE `".mysql_real_escape_string($table['name'],$this->conn)."` (";
$create_stmt = "CREATE TABLE `" . mysql_real_escape_string($table['name'], $this->conn) . "` (";
foreach($table->fields->field as $field){
foreach ($table->fields->field as $field)
{
$isnull=trim($field->null)==""?"NOT NULL":"NULL";
$isnull = trim($field->null) == "" ? "NOT NULL" : "NULL";
if(trim($field->default) != "" && trim($field->default)!="CURRENT_TIMESTAMP")
$is_default = " default '".$field->default."'";
elseif(trim($field->default)=="CURRENT_TIMESTAMP")
$is_default = " default ".$field->default;
if (trim($field->default) != "" && trim($field->default) != "CURRENT_TIMESTAMP")
$is_default = " default '" . $field->default . "'";
elseif (trim($field->default) == "CURRENT_TIMESTAMP")
$is_default = " default " . $field->default;
else
$is_default = '';
$character_set = '';
if(in_array(strtolower((string)$field->type),array('text','longtext','mediumtext','tinytext')) || substr(strtolower((string)$field->type), 0, 7) == 'varchar' || in_array(substr(strtolower((string)$field->type), 0, 4), array('char','enum')))
if (in_array(strtolower((string) $field->type), array('text', 'longtext', 'mediumtext', 'tinytext')) || substr(strtolower((string) $field->type), 0, 7) == 'varchar' || in_array(substr(strtolower((string) $field->type), 0, 4), array('char', 'enum')))
{
$collation = trim((string)$field->collation) != '' ? trim((string)$field->collation) : 'utf8_unicode_ci';
$collation = trim((string) $field->collation) != '' ? trim((string) $field->collation) : 'utf8_unicode_ci';
$code = array_pop(array_reverse(explode('_',$collation)));
$character_set = ' CHARACTER SET '.$code.' COLLATE ' . $collation ;
$code = array_pop(array_reverse(explode('_', $collation)));
$character_set = ' CHARACTER SET ' . $code . ' COLLATE ' . $collation;
}
$field_stmt[] = " `".mysql_real_escape_string($field->name,$this->conn)."` ".$field->type." ".$field->extra." ".$character_set." ".$is_default." ".$isnull."";
$field_stmt[] = " `" . mysql_real_escape_string($field->name, $this->conn) . "` " . $field->type . " " . $field->extra . " " . $character_set . " " . $is_default . " " . $isnull . "";
}
if($table->indexes){
foreach($table->indexes->index as $index){
switch($index->type){
if ($table->indexes)
{
foreach ($table->indexes->index as $index)
{
switch ($index->type)
{
case "PRIMARY":{
case "PRIMARY":
{
$primary_fields = array();
foreach($index->fields->field as $field){
$primary_fields[] = "`".mysql_real_escape_string($field,$this->conn)."`";
foreach ($index->fields->field as $field)
{
$primary_fields[] = "`" . mysql_real_escape_string($field, $this->conn) . "`";
}
$field_stmt[] = 'PRIMARY KEY ('.implode(',' , $primary_fields).')';
};break;
$field_stmt[] = 'PRIMARY KEY (' . implode(',', $primary_fields) . ')';
};
break;
case "UNIQUE":{
case "UNIQUE":
{
$unique_fields = array();
foreach($index->fields->field as $field){
$unique_fields[] = "`".mysql_real_escape_string($field,$this->conn)."`";
foreach ($index->fields->field as $field)
{
$unique_fields[] = "`" . mysql_real_escape_string($field, $this->conn) . "`";
}
$field_stmt[] = 'UNIQUE KEY `'.mysql_real_escape_string($index->name,$this->conn).'` ('.implode(',',$unique_fields).')';
};break;
$field_stmt[] = 'UNIQUE KEY `' . mysql_real_escape_string($index->name, $this->conn) . '` (' . implode(',', $unique_fields) . ')';
};
break;
case "INDEX":{
case "INDEX":
{
$index_fields = array();
foreach($index->fields->field as $field){
$index_fields[] = "`".mysql_real_escape_string($field,$this->conn)."`";
}
$field_stmt[] = 'KEY `'.mysql_real_escape_string($index->name,$this->conn).'` ('.implode(',',$index_fields).')';
};break;
foreach ($index->fields->field as $field)
{
$index_fields[] = "`" . mysql_real_escape_string($field, $this->conn) . "`";
}
$field_stmt[] = 'KEY `' . mysql_real_escape_string($index->name, $this->conn) . '` (' . implode(',', $index_fields) . ')';
};
break;
}
}
if($table->defaults){
foreach($table->defaults->default as $default)
}
if ($table->defaults)
{
foreach ($table->defaults->default as $default)
{
$k = $v = array();
foreach($default->data as $data)
foreach ($default->data as $data)
{
$k[] = mysql_real_escape_string($data['key'],$this->conn);
if($k === 'usr_password')
$data = hash('sha256',$data);
$v[] = mysql_real_escape_string(trim(str_replace(array("\r\n","\r","\n","\t"),'',$data)),$this->conn);
$k[] = mysql_real_escape_string($data['key'], $this->conn);
if ($k === 'usr_password')
$data = hash('sha256', $data);
$v[] = mysql_real_escape_string(trim(str_replace(array("\r\n", "\r", "\n", "\t"), '', $data)), $this->conn);
}
$k = implode(',',$k);
$v = str_ireplace(array('"NOW()"','"null"'),array('NOW()','null'),'"'.implode('","',$v).'"');
$k = implode(',', $k);
$v = str_ireplace(array('"NOW()"', '"null"'), array('NOW()', 'null'), '"' . implode('","', $v) . '"');
$defaults_stmt[] = 'INSERT INTO '.mysql_real_escape_string($table['name'],$this->conn).' ('.$k.') VALUES ('.$v.') ';
$defaults_stmt[] = 'INSERT INTO ' . mysql_real_escape_string($table['name'], $this->conn) . ' (' . $k . ') VALUES (' . $v . ') ';
}
}
$engine = mb_strtolower(trim($table->engine));
$engine = in_array($engine,array('innodb','myisam')) ? $engine : 'innodb';
$engine = in_array($engine, array('innodb', 'myisam')) ? $engine : 'innodb';
$create_stmt .= implode(',' , $field_stmt);
$create_stmt .= ") ENGINE=".$engine." CHARACTER SET utf8 COLLATE utf8_unicode_ci;";
$create_stmt .= implode(',', $field_stmt);
$create_stmt .= ") ENGINE=" . $engine . " CHARACTER SET utf8 COLLATE utf8_unicode_ci;";
mysql_query($create_stmt,$this->conn);
mysql_query($create_stmt, $this->conn);
foreach($defaults_stmt as $def)
foreach ($defaults_stmt as $def)
{
mysql_query($def,$this->conn);
mysql_query($def, $this->conn);
}
}
private function upgradeTable($table)
{
$correct_table = array('fields'=>array(), 'indexes'=>array(), 'collation'=>array());
$correct_table = array('fields' => array(), 'indexes' => array(), 'collation' => array());
$alter = $alter_pre = array();
if($table)
if ($table)
{
foreach($table->fields->field as $field)
foreach ($table->fields->field as $field)
{
$expr = trim((string)$field->type);
$expr = trim((string) $field->type);
$_extra = trim((string)$field->extra);
if($_extra)
$_extra = trim((string) $field->extra);
if ($_extra)
$expr .= ' ' . $_extra;
$collation = trim((string)$field->collation) != '' ? trim((string)$field->collation) : 'utf8_unicode_ci';
$collation = trim((string) $field->collation) != '' ? trim((string) $field->collation) : 'utf8_unicode_ci';
if(in_array(strtolower((string)$field->type),array('text','longtext','mediumtext','tinytext')) || substr(strtolower((string)$field->type), 0, 7) == 'varchar' || in_array(substr(strtolower((string)$field->type), 0, 4), array('char','enum')))
if (in_array(strtolower((string) $field->type), array('text', 'longtext', 'mediumtext', 'tinytext')) || substr(strtolower((string) $field->type), 0, 7) == 'varchar' || in_array(substr(strtolower((string) $field->type), 0, 4), array('char', 'enum')))
{
$code = array_pop(array_reverse(explode('_',$collation)));
$code = array_pop(array_reverse(explode('_', $collation)));
$collation = ' CHARACTER SET '.$code.' COLLATE ' . $collation ;
$collation = ' CHARACTER SET ' . $code . ' COLLATE ' . $collation;
$correct_table['collation'][trim((string)$field->name)] = $collation ;
$correct_table['collation'][trim((string) $field->name)] = $collation;
$expr .= $collation;
}
$_null = mb_strtolower(trim((string)$field->null));
if(!$_null || $_null=='no')
$_null = mb_strtolower(trim((string) $field->null));
if (!$_null || $_null == 'no')
$expr .= ' NOT NULL';
$_default = (string)$field->default;
if($_default && $_default != 'CURRENT_TIMESTAMP')
$_default = (string) $field->default;
if ($_default && $_default != 'CURRENT_TIMESTAMP')
$expr .= ' DEFAULT \'' . $_default . '\'';
elseif($_default == 'CURRENT_TIMESTAMP')
elseif ($_default == 'CURRENT_TIMESTAMP')
$expr .= ' DEFAULT ' . $_default . '';
$correct_table['fields'][trim((string)$field->name)] = $expr;
$correct_table['fields'][trim((string) $field->name)] = $expr;
}
if($table->indexes)
if ($table->indexes)
{
foreach($table->indexes->index as $index)
foreach ($table->indexes->index as $index)
{
$i_name = (string)$index->name;
$i_name = (string) $index->name;
$expr = array();
foreach($index->fields->field as $field)
$expr[] = '`'.trim((string)$field).'`';
foreach ($index->fields->field as $field)
$expr[] = '`' . trim((string) $field) . '`';
$expr = implode(', ',$expr);
$expr = implode(', ', $expr);
switch((string)$index->type)
switch ((string) $index->type)
{
case "PRIMARY":
$correct_table['indexes']['PRIMARY'] = 'PRIMARY KEY (' . $expr . ')';
@@ -258,56 +264,56 @@ abstract class base
}
$sql = "SHOW FULL FIELDS FROM `".$table['name']."`";
if($rs2 = mysql_query($sql,$this->conn))
$sql = "SHOW FULL FIELDS FROM `" . $table['name'] . "`";
if ($rs2 = mysql_query($sql, $this->conn))
{
while( $row2 = mysql_fetch_assoc($rs2) )
while ($row2 = mysql_fetch_assoc($rs2))
{
$f_name = $row2['Field'];
$expr_found = trim($row2['Type']);
$_extra = $row2['Extra'];
if($_extra)
if ($_extra)
$expr_found .= ' ' . $_extra;
$_collation = $row2['Collation'];
$current_collation = '';
if($_collation)
if ($_collation)
{
$_collation = explode('_',$row2['Collation']);
$_collation = explode('_', $row2['Collation']);
$expr_found .= $current_collation = ' CHARACTER SET ' . $_collation[0] . ' COLLATE ' . implode('_', $_collation);
}
$_null = mb_strtolower(trim($row2['Null']));
if(!$_null || $_null=='no')
if (!$_null || $_null == 'no')
$expr_found .= ' NOT NULL';
$_default = $row2['Default'];
if($_default)
if ($_default)
{
if(trim($row2['Type'])=='timestamp' && $_default=='CURRENT_TIMESTAMP')
if (trim($row2['Type']) == 'timestamp' && $_default == 'CURRENT_TIMESTAMP')
$expr_found .= ' DEFAULT CURRENT_TIMESTAMP';
else
$expr_found .= ' DEFAULT \'' . $_default . '\'';
}
if(isset($correct_table['fields'][$f_name]))
if (isset($correct_table['fields'][$f_name]))
{
if(isset($correct_table['collation'][$f_name]) && $correct_table['collation'][$f_name] != $current_collation)
if (isset($correct_table['collation'][$f_name]) && $correct_table['collation'][$f_name] != $current_collation)
{
$old_type = mb_strtolower(trim($row2['Type']));
$new_type = false;
switch($old_type)
switch ($old_type)
{
case 'text':
$new_type = 'blob';
@@ -322,22 +328,22 @@ abstract class base
$new_type = 'tinyblob';
break;
default:
if(substr($old_type, 0, 4) == 'char')
if (substr($old_type, 0, 4) == 'char')
$new_type = 'varbinary(255)';
if(substr($old_type, 0, 7) == 'varchar')
if (substr($old_type, 0, 7) == 'varchar')
$new_type = 'varbinary(767)';
break;
}
if($new_type)
if ($new_type)
{
$alter_pre[] = "ALTER TABLE `".$table['name']."` CHANGE `$f_name` `$f_name` ".$new_type."";
$alter_pre[] = "ALTER TABLE `" . $table['name'] . "` CHANGE `$f_name` `$f_name` " . $new_type . "";
}
}
if(strtolower($expr_found) !== strtolower($correct_table['fields'][$f_name]))
if (strtolower($expr_found) !== strtolower($correct_table['fields'][$f_name]))
{
$alter[] = "ALTER TABLE `".$table['name']."` CHANGE `$f_name` `$f_name` " . $correct_table['fields'][$f_name] ;
$alter[] = "ALTER TABLE `" . $table['name'] . "` CHANGE `$f_name` `$f_name` " . $correct_table['fields'][$f_name];
}
unset($correct_table['fields'][$f_name]);
}
@@ -347,54 +353,54 @@ abstract class base
// }
}
foreach($correct_table['fields'] as $f_name=>$expr)
foreach ($correct_table['fields'] as $f_name => $expr)
{
$alter[] = "ALTER TABLE `".$table['name']."` ADD `$f_name` " . $correct_table['fields'][$f_name];
$alter[] = "ALTER TABLE `" . $table['name'] . "` ADD `$f_name` " . $correct_table['fields'][$f_name];
}
mysql_free_result($rs2);
}
$tIndex = array();
$sql = "SHOW INDEXES FROM `".$table['name']."`";
$sql = "SHOW INDEXES FROM `" . $table['name'] . "`";
if($rs2 = mysql_query($sql,$this->conn))
if ($rs2 = mysql_query($sql, $this->conn))
{
while( $row2 = mysql_fetch_assoc($rs2) )
while ($row2 = mysql_fetch_assoc($rs2))
{
if(!isset($tIndex[$row2['Key_name']]))
$tIndex[$row2['Key_name']] = array('unique'=>((int)($row2['Non_unique'])==0), 'columns'=>array());
$tIndex[$row2['Key_name']]['columns'][(int)($row2['Seq_in_index'])] = $row2['Column_name'];
if (!isset($tIndex[$row2['Key_name']]))
$tIndex[$row2['Key_name']] = array('unique' => ((int) ($row2['Non_unique']) == 0), 'columns' => array());
$tIndex[$row2['Key_name']]['columns'][(int) ($row2['Seq_in_index'])] = $row2['Column_name'];
}
mysql_free_result($rs2);
foreach($tIndex as $kIndex=>$vIndex)
foreach ($tIndex as $kIndex => $vIndex)
{
$strColumns = array();
foreach($vIndex['columns'] as $column)
$strColumns[] = '`'.$column.'`';
foreach ($vIndex['columns'] as $column)
$strColumns[] = '`' . $column . '`';
$strColumns = '('.implode(', ',$strColumns).')';
$strColumns = '(' . implode(', ', $strColumns) . ')';
if($kIndex=='PRIMARY')
$expr_found = 'PRIMARY KEY '.$strColumns;
if ($kIndex == 'PRIMARY')
$expr_found = 'PRIMARY KEY ' . $strColumns;
else
{
if($vIndex['unique'])
$expr_found = 'UNIQUE KEY `' . $kIndex . '` ' .$strColumns;
if ($vIndex['unique'])
$expr_found = 'UNIQUE KEY `' . $kIndex . '` ' . $strColumns;
else
$expr_found = 'KEY `' . $kIndex . '` ' .$strColumns;
$expr_found = 'KEY `' . $kIndex . '` ' . $strColumns;
}
$full_name_index = ($kIndex=='PRIMARY') ? 'PRIMARY KEY' : ('INDEX `'.$kIndex.'`');
$full_name_index = ($kIndex == 'PRIMARY') ? 'PRIMARY KEY' : ('INDEX `' . $kIndex . '`');
if( isset($correct_table['indexes'][$kIndex]) )
if (isset($correct_table['indexes'][$kIndex]))
{
if(mb_strtolower($expr_found) !== mb_strtolower($correct_table['indexes'][$kIndex]))
if (mb_strtolower($expr_found) !== mb_strtolower($correct_table['indexes'][$kIndex]))
{
$alter[] = 'ALTER TABLE `'.$table['name'].'` DROP ' . $full_name_index . ', ADD ' . $correct_table['indexes'][$kIndex];
$alter[] = 'ALTER TABLE `' . $table['name'] . '` DROP ' . $full_name_index . ', ADD ' . $correct_table['indexes'][$kIndex];
}
unset($correct_table['indexes'][$kIndex]);
@@ -404,63 +410,60 @@ abstract class base
}
}
foreach($correct_table['indexes'] as $kIndex=>$expr)
$alter[] = 'ALTER TABLE `'.$table['name'].'` ADD ' . $expr;
foreach ($correct_table['indexes'] as $kIndex => $expr)
$alter[] = 'ALTER TABLE `' . $table['name'] . '` ADD ' . $expr;
}
$return = true;
foreach($alter_pre as $a)
foreach ($alter_pre as $a)
{
if(!mysql_query($a, $this->conn))
if (!mysql_query($a, $this->conn))
$return = false;
}
foreach($alter as $a)
foreach ($alter as $a)
{
if(!mysql_query($a, $this->conn))
if (!mysql_query($a, $this->conn))
{
if(GV_debug)
if (GV_debug)
{
echo $a,' -- ',mysql_error($this->conn),'<br/>';
echo $a, ' -- ', mysql_error($this->conn), '<br/>';
}
$return = false;
}
}
return $return;
}
function upgradeDb()
{
require_once dirname( __FILE__ ) . '/../version.inc';
if($this->schema && $this->dbname)
require_once dirname(__FILE__) . '/../version.inc';
if ($this->schema && $this->dbname)
{
$allTables = array();
foreach($this->schema->tables->table as $table)
$allTables[(string)$table['name']] = $table;
foreach ($this->schema->tables->table as $table)
$allTables[(string) $table['name']] = $table;
$sql = "SHOW TABLE STATUS";
if($rs = mysql_query($sql,$this->conn))
if ($rs = mysql_query($sql, $this->conn))
{
while( $row = mysql_fetch_assoc($rs) )
while ($row = mysql_fetch_assoc($rs))
{
$tname = $row["Name"];
if(isset($allTables[$tname]))
if (isset($allTables[$tname]))
{
$engine = strtolower(trim($allTables[$tname]->engine));
$ref_engine = strtolower($row['Engine']);
if($engine != $ref_engine && in_array($engine,array('innodb','myisam')))
if ($engine != $ref_engine && in_array($engine, array('innodb', 'myisam')))
{
$sql = 'ALTER TABLE `'.$tname.'` ENGINE = '.$engine;
mysql_query($sql,$this->conn);
$sql = 'ALTER TABLE `' . $tname . '` ENGINE = ' . $engine;
mysql_query($sql, $this->conn);
}
self::upgradeTable($allTables[$tname]);
@@ -469,7 +472,7 @@ abstract class base
}
mysql_free_result($rs);
}
foreach($allTables as $tname=>$table)
foreach ($allTables as $tname => $table)
{
$this->createTable($table);
}
@@ -478,36 +481,36 @@ abstract class base
$current_version = self::getVersion();
if(self::apply_patches($current_version,GV_version))
if (self::apply_patches($current_version, GV_version))
self::setVersion(GV_version);
return true;
}
function apply_patches($from,$to)
function apply_patches($from, $to)
{
if(version_compare($from,$to,'='))
if (version_compare($from, $to, '='))
return true;
$list_patches = array();
$iterator = new DirectoryIterator(GV_RootPath.'lib/classes/patch/');
$iterator = new DirectoryIterator(GV_RootPath . 'lib/classes/patch/');
foreach ($iterator as $fileinfo)
{
if (!$fileinfo->isDot())
{
if(substr($fileinfo->getFilename(),0,1) == '.')
if (substr($fileinfo->getFilename(), 0, 1) == '.')
continue;
$classname = 'patch_'.array_pop(array_reverse(explode('.',$fileinfo->getFilename())));
$classname = 'patch_' . array_pop(array_reverse(explode('.', $fileinfo->getFilename())));
$patch = new $classname();
if(!in_array($this->type, $patch->concern()))
if (!in_array($this->type, $patch->concern()))
continue;
if(!version_compare($patch->get_release(), $from, '>') || !version_compare($patch->get_release(), $to, '<='))
if (!version_compare($patch->get_release(), $from, '>') || !version_compare($patch->get_release(), $to, '<='))
{
continue;
}
@@ -519,11 +522,11 @@ abstract class base
$success = true;
foreach($list_patches as $v=>$patches)
foreach ($list_patches as $v => $patches)
{
foreach($patches as $patch)
foreach ($patches as $patch)
{
if(!$patch->apply($this->id))
if (!$patch->apply($this->id))
$success = false;
}
}
@@ -531,24 +534,23 @@ abstract class base
return $success;
}
function upgradeAvalaible()
{
if($this->type == 'application_box')
if ($this->type == 'application_box')
$sql = 'SELECT version FROM sitepreff';
if($this->type == 'data_box')
if ($this->type == 'data_box')
$sql = 'SELECT value AS version FROM pref WHERE prop="version" LIMIT 1;';
if($sql !== '')
if ($sql !== '')
{
if($rs = mysql_query($sql,$this->conn))
if ($rs = mysql_query($sql, $this->conn))
{
if($row = mysql_fetch_assoc($rs))
if ($row = mysql_fetch_assoc($rs))
$version = $row['version'];
}
}
if(isset($version))
return version_compare(GV_version,$version,'>');
if (isset($version))
return version_compare(GV_version, $version, '>');
else
return true;
}
@@ -556,18 +558,18 @@ abstract class base
private function setVersion($version)
{
$sql = '';
if($this->type == 'application_box')
$sql = 'UPDATE sitepreff SET version = "'.$version.'"';
if($this->type == 'data_box')
if ($this->type == 'application_box')
$sql = 'UPDATE sitepreff SET version = "' . $version . '"';
if ($this->type == 'data_box')
{
$sql = 'DELETE FROM pref WHERE prop="version" AND locale IS NULL';
mysql_query($sql,$this->conn);
$sql = 'REPLACE INTO pref (id, prop, value,locale, updated_on) VALUES (null, "version", "'.$version.'","", NOW())';
mysql_query($sql, $this->conn);
$sql = 'REPLACE INTO pref (id, prop, value,locale, updated_on) VALUES (null, "version", "' . $version . '","", NOW())';
}
if($sql !== '')
if ($sql !== '')
{
if(mysql_query($sql,$this->conn))
if (mysql_query($sql, $this->conn))
return true;
}
@@ -577,20 +579,20 @@ abstract class base
public function getVersion()
{
$sql = '';
if($this->type == 'application_box')
if ($this->type == 'application_box')
$sql = 'SELECT version FROM sitepreff';
if($this->type == 'data_box')
if ($this->type == 'data_box')
{
$sql = 'DELETE FROM pref WHERE prop="version" AND locale IS NULL';
mysql_query($sql,$this->conn);
mysql_query($sql, $this->conn);
$sql = 'SELECT value AS version FROM pref WHERE prop="version" LIMIT 1;';
}
if($sql !== '')
if ($sql !== '')
{
if($rs = mysql_query($sql,$this->conn))
if ($rs = mysql_query($sql, $this->conn))
{
if($row = mysql_fetch_assoc($rs))
if ($row = mysql_fetch_assoc($rs))
{
return $row['version'];
}
@@ -600,7 +602,4 @@ abstract class base
return '0.0.0';
}
}

View File

@@ -1,11 +1,21 @@
<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2010 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class connection
{
private $private_connect = false;
private $private_lockedtables; // tableau assoc. des bases lockees
private static $_instance = array();
private static $_PDO_instance = array();
private static $_query_counter = array();
private $_id;
private $_name = false;
@@ -35,16 +45,58 @@ class connection
}
}
// if(!self::$_instance[$name]->isok())
// {
// header("HTTP/1.0 500 Internal Server Error");
// die('<h2>HTTP/1.0 500 Internal Server Error</h2><h2>Can\'t establish database connection<h2>');
// }
return array_key_exists($name, self::$_instance) ? self::$_instance[$name] : false;
}
/**
*
* @param string $name
* @return PDO
*/
public static function getPDOConnection($name = null)
{
if (!isset(self::$_PDO_instance[$name]))
{
$hostname = $port = $user = $password = $dbname = false;
$connection_params = array();
if (trim($name) !== '')
{
$connection_params = phrasea::sbas_params();
}
else
{
require (dirname(__FILE__) . '/../../config/connexion.inc');
$name = 'app_box';
}
if (isset($connection_params[$name]))
{
$hostname = $connection_params[$name]['host'];
$port = $connection_params[$name]['port'];
$user = $connection_params[$name]['user'];
$password = $connection_params[$name]['pwd'];
$dbname = $connection_params[$name]['dbname'];
}
$dsn = 'mysql:dbname=' . $dbname . ';host=' . $hostname.';port='.$port.';';
try
{
self::$_PDO_instance[$name] = new PDO($dsn, $user, $password);
self::$_PDO_instance[$name]->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
}
catch (Exception $e)
{
throw new Exception('Connection not avalaible');
}
}
if (array_key_exists($name, self::$_PDO_instance))
return self::$_PDO_instance[$name];
throw new Exception('Connection not avalaible');
}
function __construct($name)
{

View File

@@ -1,5 +1,7 @@
<?php
class databox extends base {
class databox extends base
{
var $id = false;
// var $request_mails = array();
@@ -16,22 +18,43 @@ class databox extends base {
function __construct($id=false, $host=false, $port=false, $user=false, $password=false)
{
$newServer = false;
if($host !== false && $port !== false && $user !== false && $password !== false)
if ($host !== false && $port !== false && $user !== false && $password !== false)
$newServer = array(
'hostname'=>$host,
'port'=>$port,
'user'=>$user,
'password'=>$password
'hostname' => $host,
'port' => $port,
'user' => $user,
'password' => $password
);
elseif ($id !== false)
{
try
{
$conn = connection::getPDOConnection();
$sql = 'SELECT host, port, user, pwd FROM sbas WHERE sbas_id= :sbas_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':sbas_id' => $id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$newServer = array(
'hostname' => $row['host'],
'port' => $row['port'],
'user' => $row['user'],
'password' => $row['pwd']
);
}
catch (Exception $e)
{
if($this->init_data_conn($newServer) === false)
}
}
if ($this->init_data_conn($newServer) === false)
return false;
if($this->load_schema('data_box')=== false)
if ($this->load_schema('data_box') === false)
return false;
if($id !== false)
$this->load((int)$id);
if ($id !== false)
$this->load((int) $id);
$this->type = 'data_box';
@@ -42,26 +65,17 @@ class databox extends base {
{
$conn = connection::getInstance();
$sql = 'SELECT dbname FROM sbas WHERE sbas_id="'.$id.'"';
if($rs = $conn->query($sql))
$sql = 'SELECT dbname FROM sbas WHERE sbas_id="' . $id . '"';
if ($rs = $conn->query($sql))
{
if($row = $conn->fetch_assoc($rs))
if ($row = $conn->fetch_assoc($rs))
{
$this->id = $id;
if(mysql_select_db($row['dbname'],$this->conn))
if (mysql_select_db($row['dbname'], $this->conn))
$this->dbname = $row['dbname'];
}
$conn->free_result($rs);
}
// $sql = 'SELECT value FROM pref WHERE prop="mail_request"';
// if($rs = mysql_query($sql,$this->conn))
// {
// while($row = mysql_fetch_assoc($rs))
// {
// $this->request_mails[] = $row['value'];
// }
// mysql_free_result($rs);
// }
return false;
}
@@ -77,10 +91,10 @@ class databox extends base {
$conn = connection::getInstance();
$colls = array();
$sql = 'SELECT server_coll_id FROM bas WHERE sbas_id="'.$conn->escape_string($this->id).'"';
if($rs = $conn->query($sql))
$sql = 'SELECT server_coll_id FROM bas WHERE sbas_id="' . $conn->escape_string($this->id) . '"';
if ($rs = $conn->query($sql))
{
while($row = $conn->fetch_assoc($rs))
while ($row = $conn->fetch_assoc($rs))
$colls[] = $row['server_coll_id'];
$conn->free_result($rs);
}
@@ -89,11 +103,11 @@ class databox extends base {
$mountable_colls = array();
$sql = 'SELECT coll_id, asciiname FROM coll WHERE coll_id NOT IN ('.implode(',', $colls).')';
$sql = 'SELECT coll_id, asciiname FROM coll WHERE coll_id NOT IN (' . implode(',', $colls) . ')';
if($rs = $connbas->query($sql))
if ($rs = $connbas->query($sql))
{
while($row = $connbas->fetch_assoc($rs))
while ($row = $connbas->fetch_assoc($rs))
$mountable_colls[$row['coll_id']] = $row['asciiname'];
$connbas->free_result($rs);
}
@@ -107,11 +121,11 @@ class databox extends base {
$colls = array();
foreach($lb['bases'] as $base)
foreach ($lb['bases'] as $base)
{
if($base['sbas_id'] != $this->id)
if ($base['sbas_id'] != $this->id)
continue;
foreach($base['collections'] as $coll)
foreach ($base['collections'] as $coll)
{
$colls[$coll['base_id']] = $coll['name'];
}
@@ -122,68 +136,67 @@ class databox extends base {
public function save($usr_id)
{
$conn = connection::getInstance();
if($this->id === false)
if ($this->id === false)
{
if(trim($this->dbname) == '')
if (trim($this->dbname) == '')
throw new Exception('invalid dbname');
if(trim($this->user) == '')
if (trim($this->user) == '')
throw new Exception('invalid user');
if(trim($this->host) == '')
if (trim($this->host) == '')
throw new Exception('invalid host');
$ord = 0;
$sql = '(SELECT MAX(ord) as ord FROM sbas)';
if($rs = $conn->query($sql))
if ($rs = $conn->query($sql))
{
if($row = mysql_fetch_assoc($rs))
$ord = $row['ord']+1;
if ($row = mysql_fetch_assoc($rs))
$ord = $row['ord'] + 1;
}
$sql = 'INSERT INTO sbas (sbas_id, ord, host, port, dbname, sqlengine, user, pwd) VALUES (null, "'.$ord.'", "'.$conn->escape_string($this->host).'", "'.$conn->escape_string($this->port).'", "'.$conn->escape_string($this->dbname).'", "MYSQL", "'.$conn->escape_string($this->user).'", "'.mysql_real_escape_string($this->passwd).'")';
$sql = 'INSERT INTO sbas (sbas_id, ord, host, port, dbname, sqlengine, user, pwd) VALUES (null, "' . $ord . '", "' . $conn->escape_string($this->host) . '", "' . $conn->escape_string($this->port) . '", "' . $conn->escape_string($this->dbname) . '", "MYSQL", "' . $conn->escape_string($this->user) . '", "' . mysql_real_escape_string($this->passwd) . '")';
if($conn->query($sql))
if ($conn->query($sql))
{
$this->id = $conn->insert_id();
$sql = 'INSERT INTO sbasusr (sbasusr_id, sbas_id, usr_id, bas_manage, bas_modify_struct, bas_modif_th, bas_chupub) VALUES (null, "'.$this->id.'", "'.$usr_id.'", "0", "0", "0", "0")';
$sql = 'INSERT INTO sbasusr (sbasusr_id, sbas_id, usr_id, bas_manage, bas_modify_struct, bas_modif_th, bas_chupub) VALUES (null, "' . $this->id . '", "' . $usr_id . '", "0", "0", "0", "0")';
$conn->query($sql);
}
else
throw new Exception('unable to save databox in sbasusr : '.$conn->last_error());
throw new Exception('unable to save databox in sbasusr : ' . $conn->last_error());
}
return $this->id;
}
function create($dbname)
{
$this->createDb($dbname);
$cache_appbox = cache_appbox::getInstance();
$cache_appbox->delete('list_bases');
cache_databox::update($this->id,'structure');
cache_databox::update($this->id, 'structure');
}
function mount($dbname, $usr_id)
{
$conn = connection::getInstance();
if(mysql_select_db($dbname,$this->conn))
if (mysql_select_db($dbname, $this->conn))
{
$this->dbname = $dbname;
if($this->save($usr_id) !== false)
if ($this->save($usr_id) !== false)
{
$cache_appbox = cache_appbox::getInstance();
$sql = "SELECT * FROM coll";
if($rs = mysql_query($sql, $this->conn))
if ($rs = mysql_query($sql, $this->conn))
{
$base_id = $this->getAppboxId('BAS', mysql_num_rows($rs));
while($row = mysql_fetch_assoc($rs))
while ($row = mysql_fetch_assoc($rs))
{
if(!empty($row['logo']) && ($fp = fopen(GV_RootPath.'config/minilogos/'.$base_id, 'w')) !== false)
if (!empty($row['logo']) && ($fp = fopen(GV_RootPath . 'config/minilogos/' . $base_id, 'w')) !== false)
{
fwrite($fp, $row["logo"]);
fclose($fp);
@@ -191,14 +204,14 @@ class databox extends base {
$sql = "INSERT INTO bas
(base_id, active, server_coll_id, sbas_id) VALUES
('".$conn->escape_string($base_id)."','1',
'".$conn->escape_string($row['coll_id'])."','".$conn->escape_string($this->id)."')";
if($conn->query($sql))
('" . $conn->escape_string($base_id) . "','1',
'" . $conn->escape_string($row['coll_id']) . "','" . $conn->escape_string($this->id) . "')";
if ($conn->query($sql))
{
$sql = "INSERT INTO basusr
(base_id, usr_id, canpreview, canpush, canhd, cancmd, canputinalbum, candwnldhd, candwnldpreview, canadmin, actif, canreport, canaddrecord, canmodifrecord, candeleterecord, chgstatus, imgtools, manage, modify_struct, mask_and, mask_xor, basusr_infousr, creationdate ) VALUES
('".$base_id."', '".$usr_id."', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '', NOW())";
('" . $base_id . "', '" . $usr_id . "', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '', NOW())";
$conn->query($sql);
}
@@ -206,7 +219,7 @@ class databox extends base {
$base_id++;
}
$cache_appbox->delete('list_bases');
cache_databox::update($this->id,'structure');
cache_databox::update($this->id, 'structure');
}
return $this->id;
}
@@ -226,16 +239,16 @@ class databox extends base {
$conn = connection::getInstance();
$sql = 'LOCK TABLE uids WRITE';
if($conn->query($sql))
if ($conn->query($sql))
{
$sql = "UPDATE uids SET uid=uid+$askfor_n WHERE name='$typeId'" ;
if($conn->query($sql))
$sql = "UPDATE uids SET uid=uid+$askfor_n WHERE name='$typeId'";
if ($conn->query($sql))
{
$sql = "SELECT uid FROM uids WHERE name='$typeId'";
if($result = $conn->query($sql))
if ($result = $conn->query($sql))
{
if($row = mysql_fetch_assoc($result))
$x = ($row["uid"]-$askfor_n)+1;
if ($row = mysql_fetch_assoc($result))
$x = ($row["uid"] - $askfor_n) + 1;
mysql_free_result($result);
}
}
@@ -248,21 +261,21 @@ class databox extends base {
private function init_data_conn($new_db=false)
{
// just in case
if(is_resource($this->conn))
if (is_resource($this->conn))
{
mysql_close($this->conn);
$this->conn = false;
}
// connect to appbox
require dirname( __FILE__ ) . '/../../config/connexion.inc';
require dirname(__FILE__) . '/../../config/connexion.inc';
$conn = connection::getInstance();
if($conn)
if ($conn)
{
if(!$new_db)
if (!$new_db)
{
// same as appbox
$this->host = $hostname;
@@ -278,94 +291,95 @@ class databox extends base {
$this->passwd = $new_db['password'];
}
$this->conn = mysql_connect($this->host.":".$this->port, $this->user, $this->passwd, true );
$this->conn = mysql_connect($this->host . ":" . $this->port, $this->user, $this->passwd, true);
mysql_set_charset('utf8',$this->conn);
mysql_set_charset('utf8', $this->conn);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $this->conn);
if($this->conn !== false)
if ($this->conn !== false)
return true;
}
return false;
}
public function setNewStructure($data_template,$path_web,$path_doc,$baseurl)
public function setNewStructure($data_template, $path_web, $path_doc, $baseurl)
{
if(is_file($data_template))
if (is_file($data_template))
{
$contents = file_get_contents($data_template);
$baseurl = $baseurl ? p4string::addEndSlash($baseurl) : '';
$contents = str_replace(
array("{{dataurl}}" , "{{basename}}" , "{{datapathweb}}" , "{{datapathnoweb}}"),
array($baseurl , $this->dbname, $path_web, $path_doc ),
array("{{dataurl}}", "{{basename}}", "{{datapathweb}}", "{{datapathnoweb}}"),
array($baseurl, $this->dbname, $path_web, $path_doc),
$contents
);
$this->structure = $contents;
$sql = 'UPDATE pref SET value="'.mysql_real_escape_string($this->structure,$this->conn).'", updated_on=NOW() WHERE prop="structure"';
if(mysql_query($sql,$this->conn))
$sql = 'UPDATE pref SET value="' . mysql_real_escape_string($this->structure, $this->conn) . '", updated_on=NOW() WHERE prop="structure"';
if (mysql_query($sql, $this->conn))
return true;
}
return false;
}
public function registerAdmin($usr_id,$bool)
public function registerAdmin($usr_id, $bool)
{
$conn = connection::getInstance();
$sql = 'UPDATE sbasusr SET bas_manage="'.($bool === true ? '1' : '0').'" WHERE usr_id = "'.$usr_id.'" AND sbas_id="'.$this->id.'"';
if($conn->query($sql))
$sql = 'UPDATE sbasusr SET bas_manage="' . ($bool === true ? '1' : '0') . '" WHERE usr_id = "' . $usr_id . '" AND sbas_id="' . $this->id . '"';
if ($conn->query($sql))
return true;
return false;
}
public function registerAdminStruct($usr_id,$bool)
public function registerAdminStruct($usr_id, $bool)
{
$conn = connection::getInstance();
$sql = 'UPDATE sbasusr SET bas_modify_struct="'.($bool === true ? '1' : '0').'" WHERE usr_id = "'.$usr_id.'" AND sbas_id="'.$this->id.'"';
if($conn->query($sql))
$sql = 'UPDATE sbasusr SET bas_modify_struct="' . ($bool === true ? '1' : '0') . '" WHERE usr_id = "' . $usr_id . '" AND sbas_id="' . $this->id . '"';
if ($conn->query($sql))
return true;
return false;
}
public function registerAdminThesaurus($usr_id,$bool)
public function registerAdminThesaurus($usr_id, $bool)
{
$conn = connection::getInstance();
$sql = 'UPDATE sbasusr SET bas_modif_th="'.($bool === true ? '1' : '0').'" WHERE usr_id = "'.$usr_id.'" AND sbas_id="'.$this->id.'"';
if($conn->query($sql))
$sql = 'UPDATE sbasusr SET bas_modif_th="' . ($bool === true ? '1' : '0') . '" WHERE usr_id = "' . $usr_id . '" AND sbas_id="' . $this->id . '"';
if ($conn->query($sql))
return true;
return false;
}
public function registerPublication($usr_id,$bool)
public function registerPublication($usr_id, $bool)
{
$conn = connection::getInstance();
$sql = 'UPDATE sbasusr SET bas_chupub="'.($bool === true ? '1' : '0').'" WHERE usr_id = "'.$usr_id.'" AND sbas_id="'.$this->id.'"';
if($conn->query($sql))
$sql = 'UPDATE sbasusr SET bas_chupub="' . ($bool === true ? '1' : '0') . '" WHERE usr_id = "' . $usr_id . '" AND sbas_id="' . $this->id . '"';
if ($conn->query($sql))
return true;
return false;
}
public static function printStatus($name)
{
$cache_data = cache_appbox::getInstance();
if(($tmp = $cache_data->get('status'.$name)) !== false)
if (($tmp = $cache_data->get('status' . $name)) !== false)
return $tmp;
$filename = GV_RootPath.'config/status/'.$name;
$filename = GV_RootPath . 'config/status/' . $name;
$out = '';
if(is_file($filename))
if (is_file($filename))
{
$out = file_get_contents($filename);
}
$cache_data->set('status'.$name,$out);
$cache_data->set('status' . $name, $out);
return $out;
}
@@ -376,7 +390,7 @@ class databox extends base {
$cache_data = cache_appbox::getInstance();
$out = '';
if(is_file( ($filename = GV_RootPath.'config/minilogos/logopdf_'.$sbas_id.'.jpg') ))
if (is_file(($filename = GV_RootPath . 'config/minilogos/logopdf_' . $sbas_id . '.jpg')))
$out = file_get_contents($filename);
return $out;
@@ -387,26 +401,26 @@ class databox extends base {
$tbas = array();
$conn = connection::getInstance();
if($sbas_id !== false)
$sql = "SELECT * FROM sbas s, bas b WHERE s.sbas_id='".$conn->escape_string($sbas_id)."' AND s.sbas_id = b.sbas_id AND b.active = '1' ORDER BY s.ord ASC, b.ord ASC";
if ($sbas_id !== false)
$sql = "SELECT * FROM sbas s, bas b WHERE s.sbas_id='" . $conn->escape_string($sbas_id) . "' AND s.sbas_id = b.sbas_id AND b.active = '1' ORDER BY s.ord ASC, b.ord ASC";
else
$sql = "SELECT * FROM sbas s, bas b WHERE s.sbas_id = b.sbas_id AND b.active = '1' ORDER BY s.ord ASC, b.ord ASC";
if($rs = $conn->query($sql))
if ($rs = $conn->query($sql))
{
while($row = $conn->fetch_assoc($rs))
while ($row = $conn->fetch_assoc($rs))
{
if(!isset($tbas[$row["sbas_id"]]))
if (!isset($tbas[$row["sbas_id"]]))
{
$tbas[$row["sbas_id"]] = array('viewname'=>(trim($row['viewname']) != '' ?$row['viewname'] : $row['dbname']), 'colls'=>array());
$tbas[$row["sbas_id"]] = array('viewname' => (trim($row['viewname']) != '' ? $row['viewname'] : $row['dbname']), 'colls' => array());
$connbas = connection::getInstance($row['sbas_id']);
if($connbas)
if ($connbas)
{
$sql = "SELECT coll_id, asciiname FROM coll";
if($rsbas = $connbas->query($sql))
if ($rsbas = $connbas->query($sql))
{
while($rowbas = $connbas->fetch_assoc($rsbas))
while ($rowbas = $connbas->fetch_assoc($rsbas))
{
$colls[$row['sbas_id']][$rowbas["coll_id"]] = $rowbas['asciiname'];
}
@@ -421,17 +435,16 @@ class databox extends base {
return($tbas);
}
public static function get_dom_thesaurus($sbas_id)
{
if(isset(self::$_dom_thesaurus[$sbas_id]))
if (isset(self::$_dom_thesaurus[$sbas_id]))
{
return self::$_dom_thesaurus[$sbas_id];
}
$thesaurus = self::get_thesaurus($sbas_id);
if($thesaurus && ($tmp = DomDocument::loadXML($thesaurus)) !== false)
if ($thesaurus && ($tmp = DomDocument::loadXML($thesaurus)) !== false)
self::$_dom_thesaurus[$sbas_id] = $tmp;
else
self::$_dom_thesaurus[$sbas_id] = false;
@@ -441,14 +454,14 @@ class databox extends base {
public static function get_xpath_thesaurus($sbas_id)
{
if(isset(self::$_xpath_thesaurus[$sbas_id]))
if (isset(self::$_xpath_thesaurus[$sbas_id]))
{
return self::$_xpath_thesaurus[$sbas_id];
}
$DOM_thesaurus = self::get_dom_thesaurus($sbas_id);
if($DOM_thesaurus && ($tmp = new DOMXPath( $DOM_thesaurus )) !== false)
if ($DOM_thesaurus && ($tmp = new phrasea_DOMXPath($DOM_thesaurus)) !== false)
self::$_xpath_thesaurus[$sbas_id] = $tmp;
else
self::$_xpath_thesaurus[$sbas_id] = false;
@@ -456,18 +469,17 @@ class databox extends base {
return self::$_xpath_thesaurus[$sbas_id];
}
public static function get_sxml_thesaurus($sbas_id)
{
if(isset(self::$_sxml_thesaurus[$sbas_id]))
if (isset(self::$_sxml_thesaurus[$sbas_id]))
{
return self::$_sxml_thesaurus[$sbas_id];
}
$thesaurus = self::get_thesaurus($sbas_id);
if($thesaurus && ($tmp = simplexml_load_string($thesaurus)) !== false)
if ($thesaurus && ($tmp = simplexml_load_string($thesaurus)) !== false)
self::$_sxml_thesaurus[$sbas_id] = $tmp;
else
self::$_sxml_thesaurus[$sbas_id] = false;
@@ -475,18 +487,17 @@ class databox extends base {
return self::$_sxml_thesaurus[$sbas_id];
}
public static function get_thesaurus($sbas_id)
{
$cache_appbox = cache_appbox::getInstance();
if(($tmp = $cache_appbox->get('thesaurus_'.$sbas_id)) !== false)
if (($tmp = $cache_appbox->get('thesaurus_' . $sbas_id)) !== false)
{
self::$_thesaurus[$sbas_id] = $tmp;
return $tmp;
}
if(isset(self::$_thesaurus[$sbas_id]))
if (isset(self::$_thesaurus[$sbas_id]))
{
return self::$_thesaurus[$sbas_id];
}
@@ -495,9 +506,9 @@ class databox extends base {
$connsbas = connection::getInstance($sbas_id);
$sql = 'SELECT value AS thesaurus FROM pref WHERE prop="thesaurus" LIMIT 1;';
if($rs = $connsbas->query($sql))
if ($rs = $connsbas->query($sql))
{
if($row = $connsbas->fetch_assoc($rs))
if ($row = $connsbas->fetch_assoc($rs))
{
$thesaurus = trim($row['thesaurus']);
}
@@ -506,29 +517,27 @@ class databox extends base {
self::$_thesaurus[$sbas_id] = $thesaurus;
if(self::$_thesaurus[$sbas_id])
$cache_appbox->set('thesaurus_'.$sbas_id,self::$_thesaurus[$sbas_id]);
if (self::$_thesaurus[$sbas_id])
$cache_appbox->set('thesaurus_' . $sbas_id, self::$_thesaurus[$sbas_id]);
return self::$_thesaurus[$sbas_id];
}
public static function get_structure($sbas_id)
{
$session = session::getInstance();
$locale = isset($session->locale) ? $session->locale : GV_default_lng;
$basesettings = phrasea::load_settings($locale);
if(isset($basesettings["bases"][$sbas_id]))
if (isset($basesettings["bases"][$sbas_id]))
return $basesettings["bases"][$sbas_id]["structure"];
return false;
}
public static function get_dom_structure($sbas_id)
{
if(isset(self::$_dom_structure[$sbas_id]))
if (isset(self::$_dom_structure[$sbas_id]))
{
return self::$_dom_structure[$sbas_id];
}
@@ -541,7 +550,7 @@ class databox extends base {
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
if($structure && $dom->loadXML($structure) !== false)
if ($structure && $dom->loadXML($structure) !== false)
self::$_dom_structure[$sbas_id] = $dom;
else
self::$_dom_structure[$sbas_id] = false;
@@ -549,18 +558,16 @@ class databox extends base {
return self::$_dom_structure[$sbas_id];
}
public static function get_sxml_structure($sbas_id)
{
if(isset(self::$_sxml_structure[$sbas_id]))
if (isset(self::$_sxml_structure[$sbas_id]))
{
return self::$_sxml_structure[$sbas_id];
}
$structure = self::get_structure($sbas_id);
if($structure && ($tmp = simplexml_load_string($structure)) !== false)
if ($structure && ($tmp = simplexml_load_string($structure)) !== false)
self::$_sxml_structure[$sbas_id] = $tmp;
else
self::$_sxml_structure[$sbas_id] = false;
@@ -568,17 +575,16 @@ class databox extends base {
return self::$_sxml_structure[$sbas_id];
}
public static function get_xpath_structure($sbas_id)
{
if(isset(self::$_xpath_structure[$sbas_id]))
if (isset(self::$_xpath_structure[$sbas_id]))
{
return self::$_xpath_structure[$sbas_id];
}
$dom_doc = self::get_dom_structure($sbas_id);
if($dom_doc && ($tmp = new DOMXpath($dom_doc)) !== false)
if ($dom_doc && ($tmp = new DOMXpath($dom_doc)) !== false)
self::$_xpath_structure[$sbas_id] = $tmp;
else
self::$_xpath_structure[$sbas_id] = false;
@@ -595,29 +601,29 @@ class databox extends base {
$errors = array();
foreach($subdefgroup as $k=>$subdefs)
foreach ($subdefgroup as $k => $subdefs)
{
$subdefgroup_name = trim((string)$subdefs->attributes()->name);
$subdefgroup_name = trim((string) $subdefs->attributes()->name);
if($subdefgroup_name == '')
if ($subdefgroup_name == '')
{
$errors[] = _('ERREUR : TOUTES LES BALISES subdefgroup necessitent un attribut name');
continue;
}
if(!isset($AvSubdefs[$subdefgroup_name]))
if (!isset($AvSubdefs[$subdefgroup_name]))
$AvSubdefs[$subdefgroup_name] = array();
foreach($subdefs as $sd)
foreach ($subdefs as $sd)
{
$sd_name = trim(mb_strtolower((string)$sd->attributes()->name));
$sd_class = trim(mb_strtolower((string)$sd->attributes()->class));
if($sd_name == '' || isset($AvSubdefs[$subdefgroup_name][$sd_name]))
$sd_name = trim(mb_strtolower((string) $sd->attributes()->name));
$sd_class = trim(mb_strtolower((string) $sd->attributes()->class));
if ($sd_name == '' || isset($AvSubdefs[$subdefgroup_name][$sd_name]))
{
$errors[] = _('ERREUR : Les name de subdef sont uniques par groupe de subdefs et necessaire');
continue;
}
if(!in_array($sd_class,array('thumbnail','preview','document')))
if (!in_array($sd_class, array('thumbnail', 'preview', 'document')))
{
$errors[] = _('ERREUR : La classe de subdef est necessaire et egal a "thumbnail","preview" ou "document"');
continue;
@@ -633,32 +639,46 @@ class databox extends base {
{
$sx_struct = self::get_sxml_structure($sbas_id);
if(!$sx_struct)
if (!$sx_struct)
return array();
$subdefgroup = $sx_struct->subdefs[0];
$AvSubdefs = array();
foreach($subdefgroup as $k=>$subdefs)
foreach ($subdefgroup as $k => $subdefs)
{
$subdefgroup_name = (string)$subdefs->attributes()->name;
$subdefgroup_name = (string) $subdefs->attributes()->name;
if(!isset($AvSubdefs[$subdefgroup_name]))
if (!isset($AvSubdefs[$subdefgroup_name]))
$AvSubdefs[$subdefgroup_name] = array();
foreach($subdefs as $sd)
foreach ($subdefs as $sd)
{
$AvSubdefs[$subdefgroup_name][mb_strtolower((string)$sd->attributes()->name)] = $sd;
$AvSubdefs[$subdefgroup_name][mb_strtolower((string) $sd->attributes()->name)] = $sd;
}
}
if(!isset($AvSubdefs['flash']))
if (!isset($AvSubdefs['flash']))
$AvSubdefs['flash'] = $AvSubdefs['image'];
if(!isset($AvSubdefs['document']))
if (!isset($AvSubdefs['document']))
$AvSubdefs['document'] = $AvSubdefs['image'];
return $AvSubdefs;
}
}
class phrasea_DOMXPath extends DOMXPath
{
static $r = array();
function cache_query($xquery, $context_node=NULL, $context_path='')
{
$context_path .= $xquery;
if(!array_key_exists($context_path, self::$r))
self::$r[$context_path] = $context_node ? parent::query($xquery, $context_node) : parent::query($xquery);
return(self::$r[$context_path]);
}
}

View File

@@ -699,7 +699,19 @@ class export
if(GV_modxsendfile)
{
$file_xaccel = str_replace(array(GV_X_Accel_Redirect, GV_RootPath.'tmp/download/'), array('/'.GV_X_Accel_Redirect_mount_point.'/', '/download/'), $file);
$file_xaccel = str_replace(
array(
GV_X_Accel_Redirect,
GV_RootPath . 'tmp/download/',
GV_RootPath . 'tmp/lazaret/'
)
, array(
'/' . GV_X_Accel_Redirect_mount_point . '/',
'/download/',
'/lazaret/'
)
, $file
);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

View File

@@ -5,36 +5,36 @@ class mail
public static function mail_test($email)
{
$from = array('email'=>GV_defaulmailsenderaddr,'name'=>GV_defaulmailsenderaddr);
$from = array('email' => GV_defaulmailsenderaddr, 'name' => GV_defaulmailsenderaddr);
$subject = _('mail:: test d\'envoi d\'email');
$message = sprintf(_('Ce mail est un test d\'envoi de mail depuis %s'),GV_ServerName);
$message = sprintf(_('Ce mail est un test d\'envoi de mail depuis %s'), GV_ServerName);
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $message, $to, $from);
}
public static function send_validation_results($email,$subject,$from, $message)
public static function send_validation_results($email, $subject, $from, $message)
{
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $message, $to, $from);
}
public static function hack_alert($email, $body)
{
$subject = 'Hack on '.GV_homeTitle;
$subject = 'Hack on ' . GV_homeTitle;
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function ftp_sent($email, $subject, $body)
{
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
@@ -43,102 +43,108 @@ class mail
{
$subject = _("task::ftp:Someone has sent some files onto FTP server");
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function send_documents($email, $url,$from, $message='',$accuse)
public static function send_documents($email, $url, $from, $endate_obj, $message='', $accuse)
{
$subject = _('export::vous avez recu des documents');
$body = '<div>'._('Vous avez recu des documents, vous pourrez les telecharger a ladresse suivante ')."</div>\n";
$body .= "<a title='' href='".$url."'>".$url."</a>\n";
$body = '<div>' . _('Vous avez recu des documents, vous pourrez les telecharger a ladresse suivante ') . "</div>\n";
$body .= "<a title='' href='" . $url . "'>" . $url . "</a>\n";
if($message != '')
$body .= '<br><div>' .
sprintf(
_('Attention, ce lien lien est valable jusqu\'au %s'),
phraseadate::getDate($endate_obj) . ' ' . phraseadate::getTime($endate_obj)
)
. '</div>';
if ($message != '')
{
$body .= "<div>---------------------------------------------------</div>\n".$message;
$body .= "<div>---------------------------------------------------</div>\n" . $message;
}
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to, $from, array(), $accuse);
}
public static function forgot_passord($email, $login, $url)
{
$subject = _('login:: Forgot your password') ; // Registration order on .
$subject = _('login:: Forgot your password'); // Registration order on .
$body = "<div>"._('login:: Quelqu\'un a demande a reinitialiser le mode passe correspondant au login suivant : ') . "</div><div>\n\n" . $login . "</div>\n\n";
$body .= "<div>"._('login:: Visitez le lien suivant et suivez les instructions pour continuer, sinon ignorez cet email et il ne se passera rien') . "</div>\n\n" ;
$body .= "<div>".'<a href="'.$url.'">'.$url.'</a>'."</div>\n" ;
$body = "<div>" . _('login:: Quelqu\'un a demande a reinitialiser le mode passe correspondant au login suivant : ') . "</div><div>\n\n" . $login . "</div>\n\n";
$body .= "<div>" . _('login:: Visitez le lien suivant et suivez les instructions pour continuer, sinon ignorez cet email et il ne se passera rien') . "</div>\n\n";
$body .= "<div>" . '<a href="' . $url . '">' . $url . '</a>' . "</div>\n";
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function register_confirm($email, $accept, $deny)
{
$subject = sprintf(_('login::register:email: Votre compte %s'), GV_homeTitle);
$body = '<div>'._('login::register:email: Voici un compte rendu du traitement de vos demandes d\'acces :')."</div>\n";
$body = '<div>' . _('login::register:email: Voici un compte rendu du traitement de vos demandes d\'acces :') . "</div>\n";
if($accept != '')
if ($accept != '')
{
$body .= "<br/>\n<div>"._('login::register:email: Vous avez ete accepte sur les collections suivantes : ')."</div>\n<ul>".$accept."</ul>\n";
$body .= "<br/>\n<div>" . _('login::register:email: Vous avez ete accepte sur les collections suivantes : ') . "</div>\n<ul>" . $accept . "</ul>\n";
}
if($deny != '')
if ($deny != '')
{
$body .= "<br/>\n<div>"._('login::register:email: Vous avez ete refuse sur les collections suivantes : ')."</div>\n<ul>".$deny."</ul>\n";
$body .= "<br/>\n<div>" . _('login::register:email: Vous avez ete refuse sur les collections suivantes : ') . "</div>\n<ul>" . $deny . "</ul>\n";
}
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function register_user($email, $auto, $others)
{
$subject = sprintf(_('login::register:email: Votre compte %s'),GV_homeTitle);
$subject = sprintf(_('login::register:email: Votre compte %s'), GV_homeTitle);
$body = "<div>"._('login::register:Votre inscription a ete prise en compte')."</div>\n";
$body = "<div>" . _('login::register:Votre inscription a ete prise en compte') . "</div>\n";
if($auto != '')
if ($auto != '')
{
$body .= "<br/>\n<div>"._('login::register: vous avez des a present acces aux collections suivantes : ')."</div>\n<ul>".$auto."</ul>\n";
$body .= "<br/>\n<div>" . _('login::register: vous avez des a present acces aux collections suivantes : ') . "</div>\n<ul>" . $auto . "</ul>\n";
}
if($others != '')
if ($others != '')
{
$body .= "<br/>\n<div>"._('login::register: vos demandes concernat les collections suivantes sont sujettes a approbation d\'un administrateur')."</div>\n<ul>".$others."</ul>\n";
$body .= "<br/>\n<div>"._('login::register : vous serez avertis par email lorsque vos demandes seront traitees')."</div>\n";
$body .= "<br/>\n<div>" . _('login::register: vos demandes concernat les collections suivantes sont sujettes a approbation d\'un administrateur') . "</div>\n<ul>" . $others . "</ul>\n";
$body .= "<br/>\n<div>" . _('login::register : vous serez avertis par email lorsque vos demandes seront traitees') . "</div>\n";
}
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function reset_email($email,$usr_id)
public static function reset_email($email, $usr_id)
{
$date = new DateTime('1 day');
$date = phraseadate::format_mysql($date);
$token = random::getUrlToken('email',$usr_id,$date,$email);
$token = random::getUrlToken('email', $usr_id, $date, $email);
$url = GV_ServerName.'login/reset-email.php?token='.$token;
$url = GV_ServerName . 'login/reset-email.php?token=' . $token;
$subject = _('login::register: sujet email : confirmation de votre adresse email');
$body = "<div>"._('admin::compte-utilisateur: email changement de mot d\'email Bonjour, nous avons bien recu votre demande de changement d\'adresse e-mail. Pour la confirmer, veuillez suivre le lien qui suit. SI vous recevez ce mail sans l\'avoir sollicite, merci de le detruire et de l\'ignorer.')."</div>\n";
$body .= '<div><a href="'.$url.'">'.$url.'</a></div>\n';
$body = "<div>" . _('admin::compte-utilisateur: email changement de mot d\'email Bonjour, nous avons bien recu votre demande de changement d\'adresse e-mail. Pour la confirmer, veuillez suivre le lien qui suit. SI vous recevez ce mail sans l\'avoir sollicite, merci de le detruire et de l\'ignorer.') . "</div>\n";
$body .= '<div><a href="' . $url . '">' . $url . '</a></div>\n';
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
@@ -147,11 +153,11 @@ class mail
{
$subject = _('login::register: sujet email : confirmation de votre adresse email');
$body = "<div>"._('login::register: merci d\'avoir confirme votre adresse email')."</div>\n";
$body .= "<br/><div>"._('login::register: vous pouvez maintenant vous connecter a l\'adresse suivante : ')."</div>\n";
$body .= "<div><a href='".GV_ServerName."' target='_blank'>".GV_ServerName."</a></div>\n";
$body = "<div>" . _('login::register: merci d\'avoir confirme votre adresse email') . "</div>\n";
$body .= "<br/><div>" . _('login::register: vous pouvez maintenant vous connecter a l\'adresse suivante : ') . "</div>\n";
$body .= "<div><a href='" . GV_ServerName . "' target='_blank'>" . GV_ServerName . "</a></div>\n";
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
@@ -161,64 +167,64 @@ class mail
$subject = _('login::register: sujet email : confirmation de votre adresse email');
$body = "<div>"._('login::register: merci d\'avoir confirme votre adresse email')."</div>\n";
$body .= "<br/>\n<div>"._('login::register: vous devez attendre la confirmation d\'un administrateur ; vos demandes sur les collections suivantes sont toujours en attente : ')."</div>\n<ul>".$others."</ul>\n";
$body .= "<br/>\n<div>"._('login::register : vous serez avertis par email lorsque vos demandes seront traitees')."</div>\n";
$body = "<div>" . _('login::register: merci d\'avoir confirme votre adresse email') . "</div>\n";
$body .= "<br/>\n<div>" . _('login::register: vous devez attendre la confirmation d\'un administrateur ; vos demandes sur les collections suivantes sont toujours en attente : ') . "</div>\n<ul>" . $others . "</ul>\n";
$body .= "<br/>\n<div>" . _('login::register : vous serez avertis par email lorsque vos demandes seront traitees') . "</div>\n";
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function mail_confirmation($email,$usr_id)
public static function mail_confirmation($email, $usr_id)
{
$expire = new DateTime('+3 days');
$expire = phraseadate::format_mysql($expire);
$token = random::getUrlToken('password',$usr_id,$expire,$email);
$token = random::getUrlToken('password', $usr_id, $expire, $email);
$subject = _('login::register: sujet email : confirmation de votre adresse email');
$body = "<div>"._('login::register: email confirmation email Pour valider votre inscription a la base de donnees, merci de confirmer votre e-mail en suivant le lien ci-dessous.')."</div>\n";
$body .= "<br/>\n<div><a href='".GV_ServerName."register-confirm=".$token."' target='_blank'>".GV_ServerName."register-confirm=".$token."</a></div>\n";
$body = "<div>" . _('login::register: email confirmation email Pour valider votre inscription a la base de donnees, merci de confirmer votre e-mail en suivant le lien ci-dessous.') . "</div>\n";
$body .= "<br/>\n<div><a href='" . GV_ServerName . "register-confirm=" . $token . "' target='_blank'>" . GV_ServerName . "register-confirm=" . $token . "</a></div>\n";
$to = array('email'=>$email,'name'=>$email);
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function send_mail($subject,$body,$to,$from=false,$files=array(),$reading_confirm_to=false)
public static function send_mail($subject, $body, $to, $from=false, $files=array(), $reading_confirm_to=false)
{
require_once(GV_RootPath.'lib/PHPMailer_v5.1/class.phpmailer.php');
require_once(GV_RootPath . 'lib/PHPMailer_v5.1/class.phpmailer.php');
if(!isset($to['email']) || !PHPMailer::ValidateAddress($to['email']))
if (!isset($to['email']) || !PHPMailer::ValidateAddress($to['email']))
return false;
$mail = new PHPMailer();
$body = eregi_replace("[\]",'',$body);
$body = eregi_replace("[\]", '', $body);
$body .= "<br/><br/><br/><br/>\n\n\n\n";
$body .= '<div style="font-style:italic;">'._('phraseanet::signature automatique des notifications par mail, infos a l\'url suivante')."</div>\n";
$body .= '<div><a href="'.GV_ServerName.'">'.GV_ServerName."</a></div>\n";
$body = '<body>'.$body.'</body>';
$body .= '<div style="font-style:italic;">' . _('phraseanet::signature automatique des notifications par mail, infos a l\'url suivante') . "</div>\n";
$body .= '<div><a href="' . GV_ServerName . '">' . GV_ServerName . "</a></div>\n";
$body = '<body>' . $body . '</body>';
try {
try
{
$mail->CharSet = 'utf-8';
$mail->Encoding = 'base64';//'quoted-printable';
$mail->Encoding = 'base64'; //'quoted-printable';
if(GV_smtp)
if (GV_smtp)
{
$mail->IsSMTP();
if(GV_smtp_host != '')
if (GV_smtp_host != '')
$mail->Host = GV_smtp_host;
// $mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
if(GV_smtp_auth)
if (GV_smtp_auth)
{
$mail->SMTPAuth = true;
if(GV_smtp_secure === true)
if (GV_smtp_secure === true)
{
$mail->SMTPSecure = "ssl";
}
@@ -229,8 +235,8 @@ class mail
}
}
if($from && trim($from['email']) != '')
$mail->AddReplyTo($from['email'],$from['name']);
if ($from && trim($from['email']) != '')
$mail->AddReplyTo($from['email'], $from['name']);
$mail->AddAddress($to['email'], $to['name']);
@@ -238,16 +244,16 @@ class mail
$mail->Subject = $subject;
$mail->AltBody = html_entity_decode(strip_tags($body),ENT_QUOTES,'UTF-8');
$mail->AltBody = html_entity_decode(strip_tags($body), ENT_QUOTES, 'UTF-8');
if($reading_confirm_to)
if ($reading_confirm_to)
{
$mail->ConfirmReadingTo = $reading_confirm_to;
}
$mail->MsgHTML(p4string::cleanTags($body));
foreach($files as $f)
foreach ($files as $f)
{
$mail->AddAttachment($f); // attachment
}
@@ -264,4 +270,5 @@ class mail
return $e->getMessage();
}
}
}

View File

@@ -37,7 +37,7 @@ class phraseadate
$diff = $compareTo->format('U') - $date->format('U');
$dayDiff = floor($diff / 86400);
if(is_nan($dayDiff) || $dayDiff < 0) {
if(is_nan($dayDiff)) {
return '';
}

View File

@@ -247,7 +247,6 @@ class query
$dstatus = status::getDisplayStatus();
$array_icons = array(
'flash' => '',
'document' => '',
@@ -309,6 +308,7 @@ class query
$thumbnail = answer::getThumbnail($session->ses_id, $data["base_id"], $data["record_id"],GV_zommPrev_rollover_clientAnswer);
if($thumbnail['sha256'])
$rsScreen[$irec]['sha256'] = $thumbnail['sha256'];
@@ -322,6 +322,7 @@ class query
if(isset($data) && isset($data["status"]))
{

View File

@@ -453,6 +453,7 @@ function getPreviewWindow($usr,$ses,$lng,$env,$pos,$contId,$roll)
$prev = answer::get_preview($bas,$rec,$isFullyPublic);
$preview_html = $prev['html'];
$preview = $prev['preview'];
$flashcontent = $prev['flashcontent'];
$width = $prev['width'];
@@ -678,6 +679,7 @@ function getPreviewWindow($usr,$ses,$lng,$env,$pos,$contId,$roll)
return p4string::jsonencode(array(
"prev"=>$preview
,"prev_html"=>$preview_html
,"flashcontent"=>$flashcontent
,"desc"=>p4string::entitydecode($caption)
,"width"=>$width

View File

@@ -170,7 +170,11 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/record/description/*">
<b><xsl:value-of select="name()" /></b> : <xsl:value-of select="current()" /><br />
<b>
<xsl:value-of select="name()" />
</b> :
<xsl:value-of select="current()" />
<br />
</xsl:template>
</xsl:stylesheet>
</layout>
@@ -179,7 +183,11 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/record/description/*">
<b><xsl:value-of select="name()" /></b> : <xsl:value-of select="current()" /><br />
<b>
<xsl:value-of select="name()" />
</b> :
<xsl:value-of select="current()" />
<br />
</xsl:template>
</xsl:stylesheet>
</layout>
@@ -190,7 +198,11 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/record/description/*">
<b><xsl:value-of select="name()" /></b> : <xsl:value-of select="current()" /><br />
<b>
<xsl:value-of select="name()" />
</b> :
<xsl:value-of select="current()" />
<br />
</xsl:template>
</xsl:stylesheet>
</layout>
@@ -199,7 +211,11 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/record/description/*">
<b><xsl:value-of select="name()" /></b> : <xsl:value-of select="current()" /><br />
<b>
<xsl:value-of select="name()" />
</b> :
<xsl:value-of select="current()" />
<br />
</xsl:template>
</xsl:stylesheet>
</layout>

View File

@@ -173,7 +173,11 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/record/description/*">
<b><xsl:value-of select="name()" /></b> : <xsl:value-of select="current()" /><br />
<b>
<xsl:value-of select="name()" />
</b> :
<xsl:value-of select="current()" />
<br />
</xsl:template>
</xsl:stylesheet>
</layout>
@@ -182,7 +186,11 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/record/description/*">
<b><xsl:value-of select="name()" /></b> : <xsl:value-of select="current()" /><br />
<b>
<xsl:value-of select="name()" />
</b> :
<xsl:value-of select="current()" />
<br />
</xsl:template>
</xsl:stylesheet>
</layout>
@@ -193,7 +201,11 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/record/description/*">
<b><xsl:value-of select="name()" /></b> : <xsl:value-of select="current()" /><br />
<b>
<xsl:value-of select="name()" />
</b> :
<xsl:value-of select="current()" />
<br />
</xsl:template>
</xsl:stylesheet>
</layout>
@@ -201,7 +213,11 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/record/description/*">
<b><xsl:value-of select="name()" /></b> : <xsl:value-of select="current()" /><br />
<b>
<xsl:value-of select="name()" />
</b> :
<xsl:value-of select="current()" />
<br />
</xsl:template>
</xsl:stylesheet>
</layout>

View File

@@ -1849,7 +1849,7 @@ function make1subdef($infile, $sd, $physdpath, $infos)
// attention, au cas ou il y aurait des espaces dans le path, il faut des quotes
// windows n'accepte pas les simple quotes
// pour mac les quotes pour les noms de fichiers sont indispensables car si il y a un espace -> ca plante
$array = array('application/pdf','image/psd','image/vnd.adobe.photoshop','image/photoshop','image/ai','image/illustrator','image/vnd.adobe.illustrator');
$array = array('image/tiff', 'application/pdf','image/psd','image/vnd.adobe.photoshop','image/photoshop','image/ai','image/illustrator','image/vnd.adobe.illustrator');
if( in_array($infos['mime'], $array ) )
$cmd .= ' "'.$infile .'[0]" "'. $outfile .'"';
else

View File

@@ -46,7 +46,7 @@
{% endif %}
{# MODULE #}
{% if module == "validation" %}
{% if module == "lightbox" %}
<b>{% trans 'admin::monitor: module validation' %}</b>
{% else %}
<a id="validation_link" style="display:"

View File

@@ -138,4 +138,9 @@
{% if lazaret|length == 0 %}
<div style="margin:20px 10px;">{% trans 'Aucun document dans la quarantaine actuellement' %}</div>
{% endif %}
<script type="text/javascript">
$(document).ready(function(){
$('.tooltip').tooltip();
});
</script>
</div>

View File

@@ -135,8 +135,7 @@ if($request->has_post_datas() && $user->is_admin === true)
}
}
}
elseif($parm['mount_base'] && $parm['new_hostname'] && $parm['new_port'] && $parm['new_user']
&& $parm['new_password'] && $parm['new_dbname'])
elseif($parm['mount_base'])
{
if(!$parm['new_settings'] && $parm['new_dbname'])
{
@@ -160,9 +159,8 @@ if($request->has_post_datas() && $user->is_admin === true)
}
}
elseif($parm['new_settings'] && $parm['new_hostname'] && $parm['new_port'] && $parm['new_user']
&& $parm['new_password'] && $parm['new_dbname'] && $parm['new_data_template'])
&& $parm['new_password'] && $parm['new_dbname'])
{
if(p4string::hasAccent($parm['new_dbname']))
$error['new_dbname'] = 'No special chars in dbname';
@@ -170,7 +168,7 @@ if($request->has_post_datas() && $user->is_admin === true)
{
if( ($base = new databox(false,$parm['new_hostname'],$parm['new_port'],$parm['new_user'],$parm['new_password'])) !== false )
{
if($base->mount($parm['new_dbname']))
if($base->mount($parm['new_dbname'], $usr_id))
{
$sbas_id = $base->save($usr_id);

View File

@@ -92,7 +92,12 @@ if($connbas)
if($parm["act"]=="CHGSTRUCTURE")
{
$errors = databox::get_structure_errors($parm["str"]);
if(count($errors) == 0 && $domst = @DOMDocument::loadXML($parm["str"])) // simplexml_load_string($parm["str"]))
if(count($errors) == 0)
{
$domst = new DOMDocument('1.0', 'UTF-8');
$domst->preserveWhiteSpace = false;
$domst->formatOutput = true;
if(@$domst->loadXML($parm["str"]))
{
$domst->documentElement->setAttribute("modification_date", $now = date("YmdHis"));
@@ -105,6 +110,12 @@ if($connbas)
cache_databox::update($parm["p0"],'structure');
}
else
{
$errors[] = "Error loadXML(structure)";
}
}
if(count($errors) != 0)
{
$msg .= p4string::MakeString(_('admin::base: xml invalide, les changements ne seront pas appliques'), 'js') . "" ;
$loadit = false;

View File

@@ -662,7 +662,7 @@ if($cssfile)
<input type="hidden" name="app" value="client">
</form>
<script type="text/javascript" src="/include/minify/g=client"></script>
<script type="text/javascript" src="/include/flowplayer/flowplayer-3.2.2.min.js"></script>
<script type="text/javascript" src="/include/flowplayer/flowplayer-3.2.6.min.js"></script>
<script type="text/javascript">

View File

@@ -94,7 +94,7 @@ function openPreview(env, pos, contId, reload){
'display': 'none'
});
$('#PREVIEWIMGCONT').empty();
empty_preview();
prevAjax = $.ajax({
type: "POST",
@@ -114,6 +114,7 @@ function openPreview(env, pos, contId, reload){
$('#current_result_n').empty().append(parseInt(pos)+1);
prevAjaxrunning = true;
$('#PREVIEWIMGDESC, #PREVIEWOTHERS').addClass('loading');
empty_preview();
},
error: function(data){
prevAjaxrunning = false;
@@ -139,7 +140,14 @@ function openPreview(env, pos, contId, reload){
return;
}
$('#PREVIEWIMGCONT').empty().append(data.prev);
if((data.type == 'video'))
{
$('#PREVIEWIMGCONT').html(data.prev_html);
}
else
{
$('#PREVIEWIMGCONT').html(data.prev);
}
$('#PREVIEWIMGDESCINNER').empty().append(data.desc);
$('#HISTORICOPS').empty().append(data.history);
@@ -171,7 +179,8 @@ function openPreview(env, pos, contId, reload){
p4.preview.current.pos = data.pos;
p4.preview.current.flashcontent = data.flashcontent;
if ((data.type == 'video' || data.type == 'audio' || data.type == 'flash')) {
if ((data.type == 'video' || data.type == 'audio' || data.type == 'flash'))
{
if(data.type != 'video' && p4.preview.current.flashcontent.url)
{
var flashvars = false;
@@ -192,22 +201,32 @@ function openPreview(env, pos, contId, reload){
}
else
{
flowplayer("FLASHPREVIEW", '/include/flowplayer/flowplayer-3.2.2.swf', {
clip: {
autoPlay: true,
autoBuffering:true,
provider: 'h264streaming',
metadata: false,
scaling:'fit',
url: data.flashcontent.flv
},
onError:function(code,message){getNewVideoToken(data.base_id, data.record_id, this);},
plugins: {
h264streaming: {
url: '/include/flowplayer/flowplayer.pseudostreaming-3.2.2.swf'
}
}
});
// alert(data.flashcontent.flv);
// try
// {
// flowplayer("FLASHPREVIEW", {src:"/include/flowplayer/flowplayer-3.2.6.swf", wmode: "transparent"}, {
// clip: {
// autoPlay: true,
// autoBuffering:true,
// provider: 'h264streaming',
// metadata: false,
// scaling:'fit',
// url: data.flashcontent.flv
// },
// onError:function(code,message){getNewVideoToken(data.base_id, data.record_id, this);},
// plugins: {
// h264streaming: {
// url: '/include/flowplayer/flowplayer.pseudostreaming-3.2.6.swf'
// }
// }
// });
// $('#PREVIEWIMGDESCINNER').empty().append('<textarea></textarea>').find('textarea').val($('#FLASHPREVIEW').html());
//
// }
// catch(err)
// {
// alert(err);
// }
}
}
@@ -365,10 +384,20 @@ function setTitle(title){
function cancelPreview(){
$('#PREVIEWIMGDESCINNER').empty();
$('#PREVIEWIMGCONT').empty();
empty_preview();
p4.preview.current = false;
}
function empty_preview()
{
var player_cont = $('#PREVIEWIMGCONT object').parent();
if(player_cont.attr('id') != 'PREVIEWIMGCONT')
{
player_cont.empty();
player_cont.remove();
}
$('#PREVIEWIMGCONT').empty();
}
function startSlide(){
if (!p4.slideShow) {
@@ -580,6 +609,7 @@ function doudouMode(){
function closePreview(){
p4.preview.open = false;
empty_preview();
hideOverlay();
$('#PREVIEWBOX').fadeTo(500, 0);

View File

@@ -143,6 +143,11 @@
// save elements title before the tooltip is displayed
function save(event) {
// if this is the current source, or it has no title (occurs with click event), stop
if(event.stopPropagation)
event.stopPropagation();
event.cancelBubble = true;
if ( $.tooltip.blocked || this == $.tooltip.current || (!this.tooltipText && !settings(this).bodyHandler) )
return;
@@ -509,6 +514,9 @@
$.tooltip.current = null;
function complete() {
helper.parent.removeClass( tsettings.extraClass ).hide().css("opacity", "");
var el =helper.parent.find('object').parent();
el.empty();
el.remove();
}
if ((!IE || !$.fn.bgiframe) && tsettings.fade) {
if (helper.parent.is(':animated'))

View File

@@ -95,7 +95,7 @@ $groups = array(
,'//prod/jquery.order.js'
,'//include/jslibs/jquery.sprintf.1.0.3.js'
, '//include/jquery.tooltip.js'
, '//include/flowplayer/flowplayer-3.2.2.min.js'
, '//include/flowplayer/flowplayer-3.2.6.min.js'
, '//include/jquery.p4.preview.js'
, '//prod/jquery.edit.js'
, '//include/jslibs/jquery.color.animation.js'
@@ -134,7 +134,7 @@ $groups = array(
,'//include/jslibs/jquery.contextmenu_scroll.js'
,'//include/jquery.common.js'
,'//lightbox/jquery.lightbox.js'
, '//include/flowplayer/flowplayer-3.2.2.min.js'
, '//include/flowplayer/flowplayer-3.2.6.min.js'
),
'lightboxie6' => array(
'//include/jslibs/jquery-1.4.4.js'
@@ -148,7 +148,7 @@ $groups = array(
, '//include/jslibs/jquery.contextmenu_scroll.js'
,'//include/jquery.common.js'
,'//lightbox/jquery.lightbox.ie6.js'
, '//include/flowplayer/flowplayer-3.2.2.min.js'
, '//include/flowplayer/flowplayer-3.2.6.min.js'
)
);

View File

@@ -117,7 +117,7 @@ phrasea::headers();
padding:50px 0 20px;
}
</style>
<script type="text/javascript" src="/include/flowplayer/flowplayer-3.2.2.min.js"></script>
<script type="text/javascript" src="/include/flowplayer/flowplayer-3.2.6.min.js"></script>
</head>
<body>
<?php
@@ -142,7 +142,7 @@ phrasea::headers();
$embed = '<img src="'.$url.'" title="" />';
break;
case 'video':
$embed = '<div style="width: 600px; height: 400px;" id="flash_preview"></div><script type="text/javascript">flowplayer("flash_preview", "/include/flowplayer/flowplayer-3.2.2.swf", "'.$url.'");</script>';
$embed = '<div style="width: 600px; height: 400px;" id="flash_preview"></div><script type="text/javascript">flowplayer("flash_preview", "/include/flowplayer/flowplayer-3.2.6.swf", "'.$url.'");</script>';
break;
case 'document':
$embed = '<object width="850" height="500" type="application/x-shockwave-flash" data="/include/FlexPaper_flash/FlexPaperViewer.swf" style="visibility: visible; width: 850px; height: 500px; top: 0px;">

View File

@@ -52,7 +52,8 @@ $list = $download->prepare_export($parm['obj'], $titre);
$list['export_name'] = $exportname.'.zip';
$endDate = phraseadate::format_mysql(new DateTime('+1 day'));
$endate_obj = new DateTime('+1 day');
$endDate = phraseadate::format_mysql($endate_obj);
$token = random::getUrlToken('download',false,$endDate,serialize($list));
@@ -75,7 +76,7 @@ if($parm['reading_confirm'] == '1')
foreach($dest as $email)
{
if(($result = mail::send_documents(trim($email), $url,$from, $parm["textmail"], $reading_confirm_to))!==true)
if(($result = mail::send_documents(trim($email), $url,$from, $endate_obj, $parm["textmail"], $reading_confirm_to))!==true)
$res[] = $email;
}

View File

@@ -51,7 +51,7 @@ try
'baskets_collection' => $basket_collection,
'basket' => $basket,
'local_title' => strip_tags($basket->name),
'module' => 'validation',
'module' => 'lightbox',
'module_name' => _('admin::monitor: module validation')
)
);

View File

@@ -26,10 +26,10 @@ $item = $defaultchannel->appendChild($defaultdom->createElement('item'));
$title = $item->appendChild($defaultdom->createElement('title'));
$title->appendChild($defaultdom->createTextNode(GV_homeTitle));
if(file_exists(GV_RootPath.'config/home.jpg'))
if(file_exists(GV_RootPath.'www/custom/home.jpg'))
{
$pathPic = GV_RootPath.'config/home.jpg';
$urlPic = '/config/home.jpg';
$pathPic = GV_RootPath.'www/custom/home.jpg';
$urlPic = '/custom/home.jpg';
}
else
{

View File

@@ -1,22 +1,22 @@
<?php
require_once dirname( __FILE__ ) . "/../../lib/bootstrap.php";
require_once dirname(__FILE__) . "/../../lib/bootstrap.php";
$session = session::getInstance();
require_once( GV_RootPath . 'lib/unicode/lownodiacritics_utf8.php' );
$request = httpRequest::getInstance();
if(!isset($parm))
$parm = $request->get_parms("bas", "qry", "pag"
if (!isset($parm))
$parm = $request->get_parms("bas", "qry", "pag"
, "sel", "ord"
, "search_type", "recordtype", "status", "fields", "datemin", "datemax", "datefield");
if(isset($session->usr_id) && isset($session->ses_id))
if (isset($session->usr_id) && isset($session->ses_id))
{
$ses_id = $session->ses_id;
$usr_id = $session->usr_id;
if(!($ph_session = phrasea_open_session((int)$ses_id, $usr_id)))
if (!($ph_session = phrasea_open_session((int) $ses_id, $usr_id)))
{
header("Location: /login/?err=no-session");
exit();
@@ -25,7 +25,7 @@ if(isset($session->usr_id) && isset($session->ses_id))
else
{
$request = httpRequest::getInstance();
if($request->is_ajax())
if ($request->is_ajax())
{
echo _('Votre session est expiree, veuillez vous reconnecter');
}
@@ -36,25 +36,25 @@ else
exit();
}
if(!($ph_session = phrasea_open_session($ses_id,$usr_id)))
if (!($ph_session = phrasea_open_session($ses_id, $usr_id)))
{
die();
}
if($parm["ord"]===NULL)
if ($parm["ord"] === NULL)
$parm["ord"] = PHRASEA_ORDER_DESC;
else
$parm["ord"] = (int)$parm["ord"];
$parm["ord"] = (int) $parm["ord"];
$parm['sel'] = explode(';',$parm['sel']);
$parm['sel'] = explode(';', $parm['sel']);
if(!$parm['bas'])
if (!$parm['bas'])
$parm['bas'] = array();
if(!$parm["pag"]===NULL)
if (!$parm["pag"] === NULL)
$parm["pag"] = "0";
if(trim($parm["qry"])==='')
if (trim($parm["qry"]) === '')
$parm["qry"] = "all";
$mod = user::getPrefs('view');
@@ -65,61 +65,61 @@ $options = array(
'champs' => $parm['fields'],
'status' => $parm['status'],
'date' => array(
'minbound'=>$parm['datemin'],
'maxbound'=>$parm['datemax'],
'field'=>explode('|',$parm['datefield'])
'minbound' => $parm['datemin'],
'maxbound' => $parm['datemax'],
'field' => explode('|', $parm['datefield'])
)
);
if($parm['recordtype'] != '' && in_array($parm['recordtype'],array('image','video','audio','document','flash')))
if ($parm['recordtype'] != '' && in_array($parm['recordtype'], array('image', 'video', 'audio', 'document', 'flash')))
{
$parm['qry'] .= ' AND recordtype='.$parm['recordtype'];
$parm['qry'] .= ' AND recordtype=' . $parm['recordtype'];
}
$query = new query($options);
$result = $query->results($parm['qry'], $parm["pag"]);//$parm['search_type'],
$result = $query->results($parm['qry'], $parm["pag"]); //$parm['search_type'],
$proposals = trim($parm['pag']) === '' ? $query->proposals() : false;
$npages = $result['pages'];
$page = $result['current_page'];
$string ='';
$string = '';
if($npages>1)
{
if ($npages > 1)
{
$d2top = ($npages - $page);
$d2bottom = $page;
if(min($d2top,$d2bottom) < 4)
if (min($d2top, $d2bottom) < 4)
{
if($d2bottom < 4)
if ($d2bottom < 4)
{
for($i=1;($i<=4 && (($i<=$npages)===true));$i++)
for ($i = 1; ($i <= 4 && (($i <= $npages) === true)); $i++)
{
if($i == $page)
$string .= '<input onkeypress="if(event.keyCode == 13 && !isNaN(parseInt(this.value)))gotopage(parseInt(this.value))" type="text" value="'.$i.'" size="'.(strlen((string)$i)).'" />';
if ($i == $page)
$string .= '<input onkeypress="if(event.keyCode == 13 && !isNaN(parseInt(this.value)))gotopage(parseInt(this.value))" type="text" value="' . $i . '" size="' . (strlen((string) $i)) . '" />';
else
$string .= "<a onclick='gotopage(".$i.");return false;'>".$i."</a>";
$string .= "<a onclick='gotopage(" . $i . ");return false;'>" . $i . "</a>";
}
if($npages >4)
$string .= "<a onclick='gotopage(".($npages).");return false;'>&gt;&gt;</a>";
if ($npages > 4)
$string .= "<a onclick='gotopage(" . ($npages) . ");return false;'>&gt;&gt;</a>";
}
else
{
$start = $npages-4;
if(($start)>0)
$start = $npages - 4;
if (($start) > 0)
$string .= "<a onclick='gotopage(1);return false;'>&lt;&lt;</a>";
else
$start = 1;
for($i=($start);$i<=$npages;$i++)
for ($i = ($start); $i <= $npages; $i++)
{
if($i == $page)
$string .= '<input onkeypress="if(event.keyCode == 13 && !isNaN(parseInt(this.value)))gotopage(parseInt(this.value))" type="text" value="'.$i.'" size="'.(strlen((string)$i)).'" />';
if ($i == $page)
$string .= '<input onkeypress="if(event.keyCode == 13 && !isNaN(parseInt(this.value)))gotopage(parseInt(this.value))" type="text" value="' . $i . '" size="' . (strlen((string) $i)) . '" />';
else
$string .= "<a onclick='gotopage(".$i.");return false;'>".$i."</a>";
$string .= "<a onclick='gotopage(" . $i . ");return false;'>" . $i . "</a>";
}
}
}
@@ -127,47 +127,41 @@ $string ='';
{
$string .= "<a onclick='gotopage(1);return false;'>&lt;&lt;</a>";
for($i=($page-2);$i<=($page+2);$i++)
for ($i = ($page - 2); $i <= ($page + 2); $i++)
{
if($i == $page)
$string .= '<input onkeypress="if(event.keyCode == 13 && !isNaN(parseInt(this.value)))gotopage(parseInt(this.value))" type="text" value="'.$i.'" size="'.(strlen((string)$i)).'" />';
if ($i == $page)
$string .= '<input onkeypress="if(event.keyCode == 13 && !isNaN(parseInt(this.value)))gotopage(parseInt(this.value))" type="text" value="' . $i . '" size="' . (strlen((string) $i)) . '" />';
else
$string .= "<a onclick='gotopage(".$i.");return false;'>".$i."</a>";
$string .= "<a onclick='gotopage(" . $i . ");return false;'>" . $i . "</a>";
}
$string .= "<a onclick='gotopage(".($npages).");return false;'>&gt;&gt;</a>";
$string .= "<a onclick='gotopage(" . ($npages) . ");return false;'>&gt;&gt;</a>";
}
}
$string .= '<div style="display:none;"><div id="NEXT_PAGE"></div><div id="PREV_PAGE"></div></div>';
$explain = $result['explain'];
$infoResult = ' | <a href="#" class="infoDialog" infos="' . str_replace('"', '&quot;', $explain) . '">' . sprintf(_('reponses:: %d reponses'), $session->prod['query']['nba']) . '</a> | ' . sprintf(_('reponses:: %s documents selectionnes'), '<span id="nbrecsel"></span>');
}
$string .= '<div style="display:none;"><div id="NEXT_PAGE"></div><div id="PREV_PAGE"></div></div>';
echo "<script type='text/javascript'>$('#tool_results').empty().append('" . str_replace("'", "\'", $infoResult) . "');</script>";
echo "<script type='text/javascript'>$('#tool_navigate').empty().append('" . str_replace("'", "\'", $string) . "');</script>";
$rsScreen = $result['result'];
$explain = $result['explain'];
$infoResult = ' | <a href="#" class="infoDialog" infos="'.str_replace('"','&quot;',$explain).'">'.sprintf(_('reponses:: %d reponses'),$session->prod['query']['nba']).'</a> | '.sprintf(_('reponses:: %s documents selectionnes'),'<span id="nbrecsel"></span>');
echo "<script type='text/javascript'>$('#tool_results').empty().append('".str_replace("'","\'",$infoResult)."');</script>";
echo "<script type='text/javascript'>$('#tool_navigate').empty().append('".str_replace("'","\'",$string)."');</script>";
$rsScreen = $result['result'];
if(count($rsScreen)>0)
{
if($mod == 'thumbs')
if (count($rsScreen) > 0)
{
if ($mod == 'thumbs')
require("answergrid.php");
else
require("answerlist.php");
}
else
{
}
else
{
echo '<div style="float:left;">';
phrasea::getHome('HELP','prod');
phrasea::getHome('HELP', 'prod');
echo '</div>';
}
}
function proposalsToHTML(&$proposals)
{
@@ -176,19 +170,19 @@ function proposalsToHTML(&$proposals)
$nbasesWprop = count($proposals["BASES"]);
$b = 0;
foreach($proposals["BASES"] as $zbase)
foreach ($proposals["BASES"] as $zbase)
{
if((int)(count($zbase["TERMS"]) > 0))
if ((int) (count($zbase["TERMS"]) > 0))
{
if(($nbasesWprop > 1))
if (($nbasesWprop > 1))
{
$style = $b==0 ? "style=\"margin-top:0px;\"":"";
$html .= "<h1".$style.">". sprintf(_('reponses::propositions pour la base %s'),$zbase["NAME"])."</h1>";
$style = $b == 0 ? "style=\"margin-top:0px;\"" : "";
$html .= "<h1" . $style . ">" . sprintf(_('reponses::propositions pour la base %s'), $zbase["NAME"]) . "</h1>";
}
$t = 0;
foreach($zbase["TERMS"] as $path=>$props)
foreach ($zbase["TERMS"] as $path => $props)
{
$style = $t==0 ? "style=\"margin-top:0px;\"":"";
$style = $t == 0 ? "style=\"margin-top:0px;\"" : "";
$html .= "<h2 $style>" . sprintf(_('reponses::propositions pour le terme %s'), $props["TERM"]) . "</h2>";
$html .= $props["HTML"];
$t++;
@@ -201,33 +195,39 @@ function proposalsToHTML(&$proposals)
}
?>
<script type="text/javascript">
$(document).ready(function(){
<?php
if($proposals)
{
?>
$('#proposals').empty().append("<?php echo $proposals?>");
$(document).ready(function(){
<?php
if ($proposals)
{
?>
$('#proposals').empty().append("<?php echo $proposals ?>");
$('.activeproposals').show();
<?php
}
elseif(trim($parm['pag']) === '')
{
?>
<?php
}
elseif (trim($parm['pag']) === '')
{
?>
$('#proposals').empty();
<?php
}
?>
<?php if($page>1 && $session->prod['query']['nba']>0){ ?>
$("#PREV_PAGE").bind('click',function(){gotopage(<?php echo ($page-1)?>)});
<?php }else{?>
<?php
}
?>
<?php if ($page > 1 && $session->prod['query']['nba'] > 0)
{ ?>
$("#PREV_PAGE").bind('click',function(){gotopage(<?php echo ($page - 1) ?>)});
<?php }
else
{ ?>
$("#PREV_PAGE").unbind('click');
<?php }
if($page<$npages && $session->prod['query']['nba']>0){ ?>
$("#NEXT_PAGE").bind('click',function(){gotopage(<?php echo ($page+1)?>)});
<?php }else{?>
<?php }
if ($page < $npages && $session->prod['query']['nba'] > 0)
{ ?>
$("#NEXT_PAGE").bind('click',function(){gotopage(<?php echo ($page + 1) ?>)});
<?php }
else
{ ?>
$("#NEXT_PAGE").unbind('click');
<?php }?>
p4.tot = <?php echo ((is_int((int)$session->prod['query']['nba']) && (int)$session->prod['query']['nba']>=0)?(int)$session->prod['query']['nba']:0)?>;
});
<?php } ?>
p4.tot = <?php echo ((is_int((int) $session->prod['query']['nba']) && (int) $session->prod['query']['nba'] >= 0) ? (int) $session->prod['query']['nba'] : 0) ?>;
});
</script>

View File

@@ -910,7 +910,7 @@ function HTML_Thesaurus(&$html)
$class_status = '';
}
?>
<div pos="<?php echo $idia ?>" id="idEditDiapo_<?php echo $idia ?>" class="diapo <?php echo $class_status; ?>" style="<?php echo $diapostyle ?>;">
<div pos="<?php echo $idia ?>" id="idEditDiapo_<?php echo $idia ?>" class="diapo <?php echo $class_status; ?> <?php echo $basrec['type'] ?>_bloc" style="<?php echo $diapostyle ?>;">
<div class='titre'>
<?php echo p4string::MakeString($basrec['originalname'], 'html') . "\n" ?>
</div>

View File

@@ -776,6 +776,8 @@ $rss_infos = user::getMyRss();
<script type="text/javascript" src="/include/swfobject/swfobject.js"></script>
<script type="text/javascript" src="/include/jslibs/jquery-1.4.4.js"></script>
<script type="text/javascript" src="/include/jslibs/jquery-ui-1.7.2.js"></script>
<script type="text/javascript" src="/include/colorpicker/js/colorpicker.js"></script>
<script type="text/javascript" src="/include/jslibs/json2.js"></script>
<script type="text/javascript" src="/include/jslibs/jquery.cookie.js"></script>
<script type="text/javascript" src="/include/jquery.common.js"></script>
<script type="text/javascript" src="/include/jslibs/jquery.form.2.49.js"></script>
@@ -783,6 +785,7 @@ $rss_infos = user::getMyRss();
<script type="text/javascript" src="/include/jslibs/json2.js"></script>
<script type="text/javascript" src="/include/jslibs/jquery.sprintf.1.0.3.js"></script>
<script type="text/javascript" src="/include/jquery.tooltip.js"></script>
<script type="text/javascript" src="/include/flowplayer/flowplayer-3.2.6.min.js"></script>
<script type="text/javascript" src="/include/jquery.p4.preview.js"></script>
<script type="text/javascript" src="/prod/jquery.edit.js"></script>
<script type="text/javascript" src="/include/jslibs/jquery.color.animation.js"></script>
@@ -1245,6 +1248,17 @@ $rss_infos = user::getMyRss();
?>
<!-- <li><a href="#popular-queries">Popular</a></li>-->
</ul>
<div id="bases-queries" class="PNB" style="top:30px;overflow:hidden;">
<div class="PNB10" style="overflow-y:auto;overflow-x:auto;">
<?php echo $outB.str_replace('__UNIQUEID__',mt_rand(10000,99999),implode('<div><hr/></div>',$sbase));?>
</div>
</div>
<div id="history-queries" class="PNB" style="top:30px;overflow:hidden;">
<div class="PNB10" style="overflow-y:auto;overflow-x:auto;">
<?php echo queries::history(); ?>
</div>
</div>
<?php
if(queries::topics_exists())
{
@@ -1262,17 +1276,6 @@ $rss_infos = user::getMyRss();
<?php
}
?>
<div id="bases-queries" class="PNB" style="top:30px;overflow:hidden;">
<div class="PNB10" style="overflow-y:auto;overflow-x:auto;">
<?php echo $outB.str_replace('__UNIQUEID__',mt_rand(10000,99999),implode('<div><hr/></div>',$sbase));?>
</div>
</div>
<div id="history-queries" class="PNB" style="top:30px;overflow:hidden;">
<div class="PNB10" style="overflow-y:auto;overflow-x:auto;">
<?php echo queries::history(); ?>
</div>
</div>
<!-- <div id="popular-queries" class="PNB" style="top:30px;overflow:hidden;">-->
<!-- <div class="PNB10" style="overflow-y:auto;overflow-x:auto;">-->
<!---->

View File

@@ -852,7 +852,7 @@ function edit_clk_editimg(evt, i)
}
}
$('#TH_Opreview .PNB10').empty();
empty_preview_edit();
var selected = $('#EDIT_FILM2 .diapo.selected');
if(selected.length == 1)
@@ -1234,6 +1234,7 @@ function edit_applyMultiDesc(evt)
var sendorder = "";
var sendChuOrder = "";
empty_preview_edit();
var t = "";
if(p4.edit.textareaIsDirty && edit_validField(evt, "ask_ok")==false)
@@ -1334,7 +1335,7 @@ function edit_applyMultiDesc(evt)
function edit_cancelMultiDesc(evt)
{
empty_preview_edit();
var dirty = false;
evt.cancelBubble = true;
@@ -1502,6 +1503,7 @@ function EditThesaurusSeeker(sbas_id)
this.jq = $.ajax({
url: url,
data: parms,
type:'POST',
success: function(ret)
{
me.TH_P_node.html("...");
@@ -1855,7 +1857,7 @@ function vsplit2()
function setPreviewEdit()
{
if(!$('#EDITWINDOW').is(':visible'))
if(!$('#TH_Opreview').is(':visible'))
return false;
var selected = $('#EDIT_FILM2 .diapo.selected');
@@ -1936,10 +1938,21 @@ function setPreviewEdit()
}
function empty_preview_edit()
{
var el = $('#TH_Opreview .PNB10 object').parent();
if(el.parent().attr('id') != 'TH_Opreview')
{
el.empty();
el.remove();
}
$('#TH_Opreview .PNB10').empty();
}
function previewEdit(r)
{
$('#TH_Opreview .PNB10').empty().append(p4.edit.T_records[r].preview.preview);
empty_preview_edit();
$('#TH_Opreview .PNB10').append(p4.edit.T_records[r].preview.preview);
var data = p4.edit.T_records[r].preview;
@@ -1964,7 +1977,7 @@ function previewEdit(r)
}
else
{
flowplayer("FLASHPREVIEW", '/include/flowplayer/flowplayer-3.2.2.swf',{
flowplayer("rolloverpreview", '/include/flowplayer/flowplayer-3.2.6.swf',{
clip: {
autoPlay: true,
autoBuffering:true,
@@ -1978,7 +1991,7 @@ function previewEdit(r)
},
plugins: {
h264streaming: {
url: '/include/flowplayer/flowplayer.pseudostreaming-3.2.2.swf'
url: '/include/flowplayer/flowplayer.pseudostreaming-3.2.6.swf'
}
}
});
@@ -2000,7 +2013,22 @@ function startThisEditing(sbas_id,what,regbasprid,ssel)
p4.edit.regbasprid = regbasprid;
p4.edit.ssel = ssel;
$('#EDIT_MID_R .tabs').tabs();
$('#EDIT_MID_R .tabs').tabs(
{
select: function(event, ui)
{
var bloc = $('#EDIT_FILM2 .diapo.video_bloc .previewTips');
if($(ui.panel).attr('id') == 'TH_Opreview')
{
bloc.hide();
}
else
{
bloc.show();
}
}
}
);
$('#divS div.edit_field:odd').addClass('odd');
$('#divS div').bind('mouseover',function(){

View File

@@ -61,7 +61,7 @@ if($request->has_post_datas())
try{
$story = new basket();
$story->name = $parm['name'];
$story->desc = $parm['desc'];
$story->desc = strip_tags(str_replace('<br>',"\n",$parm['desc']));
$story->is_grouping = true;
$story->base_id = $parm['coll'];
$story->save();

View File

@@ -114,7 +114,7 @@ $right = false;
switch($type)
{
case 'video':
$embed = '<object width="100%" height="100%" type="application/x-shockwave-flash" data="'.GV_ServerName.'include/flowplayer/flowplayer-3.2.2.swf">'.
$embed = '<object width="100%" height="100%" type="application/x-shockwave-flash" data="'.GV_ServerName.'include/flowplayer/flowplayer-3.2.6.swf">'.
'<param value="true" name="allowfullscreen">'.
'<param value="always" name="allowscriptaccess">'.
'<param value="high" name="quality">'.

View File

@@ -184,12 +184,13 @@ function T_filter_delayed2(f, delay, mode)
var zurl = "/xmlhttp/search_th_term_prod.j.php"
+ "?sbid=" + sbas[i].sbid
+ "&t=" + encodeURIComponent(f);
sbas[i].seeker = $.get(
zurl,
[],
function(j, status)
{
if(status == 'success')
sbas[i].seeker = $.ajax({
url: zurl,
type:'POST',
data: [],
dataType:'json',
success: function(j)
{
var z = '#TX_P\\.' + j.parm['sbid'] + '\\.T';
@@ -200,10 +201,17 @@ function T_filter_delayed2(f, delay, mode)
if(isLast)
$(z).addClass('last');
}
},
"json"
);
error:function(){
},
timeout:function(){
}
});
}
}
else if(mode=='CANDIDATE')
@@ -219,12 +227,12 @@ function T_filter_delayed2(f, delay, mode)
zurl += "&t=" + encodeURIComponent(f)
+ "&field=" + encodeURIComponent(trees.C._selInfos.field);
}
sbas[i].seeker = $.get(
zurl,
[],
function(j, status)
{
if(status == 'success')
sbas[i].seeker = $.ajax({
url: zurl,
type:'POST',
data: [],
dataType:'json',
success: function(j)
{
var z = '#TX_P\\.' + j.parm['sbid'] + '\\.T';
@@ -235,10 +243,15 @@ function T_filter_delayed2(f, delay, mode)
if(isLast)
$(z).addClass('last');
}
},
"json"
);
error:function(){
},
timeout:function(){
}
});
}
}
},
@@ -358,6 +371,8 @@ function T_acceptCandidates_OK(dlgnode)
// $("#THPD_confirm_accept_dlg_msg").dialog("close");
},
error:function(){},
timeout:function(){},
_ret: null // private alchemy
};
@@ -878,40 +893,12 @@ function replaceEditSel(value)
return;
}
function crossBrowser_XMLHttpRequest()
{
var xmlhttp=false;
var e;
try
{
xmlhttp=new XMLHttpRequest();
}
catch(e)
{
try
{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlhttp=false;
}
}
}
return xmlhttp;
}
function ThesauThesaurusSeeker(sbas_id)
{
this.sbas_id = sbas_id;
this._ctimer = null;
this._xmlhttp = new crossBrowser_XMLHttpRequest();
this._xmlhttp = null;
this.tObj = { 'TH_searching':null , 'TH_P':null , 'TH_K':null };
this.search = function(txt) {
if(this._ctimer)
@@ -921,42 +908,75 @@ function ThesauThesaurusSeeker(sbas_id)
} ;
this.search_delayed = function(txt) {
var me = this;
if($this._xmlttp.abort && typeof $this._xmlttp.abort == 'function')
{
this._xmlhttp.abort();
}
var url = "/xmlhttp/openbranches_prod.x.php";
var parms = "bid=" + this.sbas_id + "&lng=<?php echo $lng?>" + "&t=" + encodeURIComponent(txt);
parms += "&mod=TREE";
this._xmlhttp.open("POST", url, true); // yes, BEFORE setting callback
this._xmlhttp.onreadystatechange = function() { me.xmlhttpstatechanged(); } ;
this._xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
this._xmlhttp.send(parms);
var parms = {
bid : this.sbas_id,
lng : "<?php echo $lng?>",
t : txt,
mod : "TREE"
};
this._xmlhttp = $.ajax({
url: url,
type:'POST',
data: parms,
success: function(ret)
{
me.xmlhttpstatechanged(ret);
},
error:function(){
},
timeout:function(){
}
});
this._ctimer = null;
} ;
this.openBranch = function(id, thid) {
var me = this;
this._xmlhttp.abort();
var url = "/xmlhttp/getterm_prod.x.php";
var parms = "bid=" + sbas_id;
parms += "&lng=<?php echo $lng?>";
parms += "&sortsy=1";
parms += "&id=" + thid;
parms += "&typ=TH";
this._xmlhttp.open("POST", url, true); // yes, BEFORE setting callback
this._xmlhttp.onreadystatechange = function() { me.xmlhttpstatechanged(id); } ;
this._xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
this._xmlhttp.send(parms);
};
this.xmlhttpstatechanged = function(id) {
try
if($this._xmlttp.abort && typeof $this._xmlttp.abort == 'function')
{
if (this._xmlhttp.readyState==4)
this._xmlhttp.abort();
}
var url = "/xmlhttp/getterm_prod.x.php";
var parms = {
bid : this.sbas_id,
lng : "<?php echo $lng?>",
sortsy : 1,
id : thid,
typ : "TH"
}
this._xmlhttp = $.ajax({
url: url,
type:'POST',
data: parms,
success: function(ret)
{
me.xmlhttpstatechanged(ret, id);
},
error:function(){
},
timeout:function(){
}
});
};
this.xmlhttpstatechanged = function(ret, id) {
try
{
if(!this.tObj["TH_searching"])
this.tObj["TH_searching"] = document.getElementById("TH_searching");
this.tObj["TH_searching"].src = "/skins/icons/ftp-loader-blank.gif";
if (this._xmlhttp.status==200)
{
var ret = this._xmlhttp.responseXML;
if(ret) // && (typeof(ret.parsed)=="undefined" || ret.parsed))
{
var htmlnodes = ret.getElementsByTagName("html");
@@ -983,8 +1003,6 @@ function ThesauThesaurusSeeker(sbas_id)
}
}
}
}
}
catch(err)
{
;