From af947e97cfa164850db87f0565d7a26ee77e459b Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 8 Dec 2011 20:10:07 +0100 Subject: [PATCH 01/17] version 3.5.0.0 --- lib/version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/version.inc b/lib/version.inc index 9297194a5c..961cdd56b5 100644 --- a/lib/version.inc +++ b/lib/version.inc @@ -15,5 +15,5 @@ * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link www.phraseanet.com */ -define('GV_version', '3.5.0.0RC1'); +define('GV_version', '3.5.0.0'); define('GV_version_name', 'Archaeopteryx'); From 981f60e14ca3378cb824a4caad40149b8b9c2873 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 8 Dec 2011 20:22:41 +0100 Subject: [PATCH 02/17] Add some usefull infos --- README.md | 74 ++++++++++++++++++++++--------------------------------- 1 file changed, 30 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 3c9f74f8e2..99d1b6e858 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,33 @@ -Phraseanet - Digital Asset Management application +Phraseanet 3.5 - Digital Asset Management application ================================================= -#Installation +#Features : -**Nginx** +Metadatas Management (include Thesaurus and DublinCore Mapping) +Search Engine (Sphinx Search Integration) +RestFull APIS (See Developer Documentation http://docs.phraseanet.com/Devel) +Bridge to Youtube/Dailymotion/Flickr +#Documentation : + +http://docs.phraseanet.com + +#Easy Installation + +**Fetch Sources** + +
+
+git clone git://github.com/alchemy-fr/Phraseanet.git Phraseanet
+cd Phraseanet
+./vendors.php
+
+
+ + +**Setup your webserver** + +***Nginx***
 server {
   listen       80;
@@ -15,58 +38,21 @@ server {
 
 
   location /web {
-    alias /home/grosroro/workspace/Phraseanet-Trunk/datas/web;
+    alias /path/to/Phraseanet/datas/web;
   }
   location /download {
     internal;
-    alias /home/grosroro/workspace/Phraseanet-Trunk/tmp/download;
+    alias /path/to/Phraseanet/tmp/download;
   }
   location /lazaret {
     internal;
-    alias /home/grosroro/workspace/Phraseanet-Trunk/tmp/lazaret;
+    alias /path/to/Phraseanet/tmp/lazaret;
   }
 }
 
-#Pimp my install -**xsendfile** -
-  location /protected {
-    internal;
-    alias /home/grosroro/workspace/Phraseanet-Trunk/datas/noweb/;
-  }
-
- -**MP4 pseudo stream** -
-  location /mp4_video {
-    internal;
-    mp4;
-    alias /home/grosroro/workspace/Phraseanet-Trunk/datas/noweb/;
-  }
-
-  location /mp4_videos {
-    secure_download on;
-    secure_download_secret S3cre3t;
-    secure_download_path_mode file;
-
-    if ($secure_download = "-1") {
-      return 403;
-    }
-    if ($secure_download = "-2") {
-      return 403;
-    }
-    if ($secure_download = "-3") {
-      return 500;
-    }
-    rewrite ^/mp4_videos(.*)/[0-9a-zA-Z]*/[0-9a-zA-Z]*$ /mp4_video$1 last;
-  }
-
- -#RESTFULL APIs - -See the [online developer reference] [1] +Let's go ! #License From 5be219823bdbed39a68be59eb942e3f91bacc44f Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Fri, 9 Dec 2011 10:49:02 +0100 Subject: [PATCH 03/17] Added gitignore --- tmp/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 tmp/.gitignore diff --git a/tmp/.gitignore b/tmp/.gitignore new file mode 100644 index 0000000000..d6b7ef32c8 --- /dev/null +++ b/tmp/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore From 7a4fd5ce166255229f22afd87a937645f58fe594 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Fri, 9 Dec 2011 12:09:46 +0100 Subject: [PATCH 04/17] Upgrade phrasea dependency version --- lib/classes/setup.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/classes/setup.class.php b/lib/classes/setup.class.php index 2ff85bfdcc..f906ed0f67 100644 --- a/lib/classes/setup.class.php +++ b/lib/classes/setup.class.php @@ -436,7 +436,7 @@ class setup $message = 'Directory MUST be writable'; break; case 'version': - $result = version_compare($value, '1.17.0.2', '>='); + $result = version_compare($value, '1.18.0.3', '>='); if ($result) $message = sprintf ('Phrasea version %s is ok', $value); else From db99657c26b7d91265f94a3e1ef7e61796fe400b Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Mon, 12 Dec 2011 16:30:37 +0100 Subject: [PATCH 05/17] Add empty repositories --- config/stamp/.gitignore | 2 ++ config/topics/.gitignore | 2 ++ config/wm/.gitignore | 2 ++ 3 files changed, 6 insertions(+) create mode 100644 config/stamp/.gitignore create mode 100644 config/topics/.gitignore create mode 100644 config/wm/.gitignore diff --git a/config/stamp/.gitignore b/config/stamp/.gitignore new file mode 100644 index 0000000000..d6b7ef32c8 --- /dev/null +++ b/config/stamp/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/config/topics/.gitignore b/config/topics/.gitignore new file mode 100644 index 0000000000..d6b7ef32c8 --- /dev/null +++ b/config/topics/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/config/wm/.gitignore b/config/wm/.gitignore new file mode 100644 index 0000000000..d6b7ef32c8 --- /dev/null +++ b/config/wm/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore From c94c4279ac6c1685f4a97067e58d369c47e3f91c Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 12:31:58 +0100 Subject: [PATCH 06/17] Enhanced error messages --- www/admin/databases.php | 77 +++++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/www/admin/databases.php b/www/admin/databases.php index 2b647675e2..689562885c 100644 --- a/www/admin/databases.php +++ b/www/admin/databases.php @@ -63,7 +63,6 @@ phrasea::headers(); $code = _('Propositions de modifications des tables') . '
' . $code . '
'; - ?>
             
@@ -87,10 +86,11 @@ phrasea::headers();
       {
         if (!$parm['new_settings'] && $parm['new_dbname'] && $parm['new_data_template'])
         {
-
           if (p4string::hasAccent($parm['new_dbname']))
-            $error['new_dbname'] = 'No special chars in dbname';
-
+          {
+            $error[] = _('Database name can not contains special characters');
+          }
+          
           if (count($error) === 0)
           {
             try
@@ -99,23 +99,34 @@ phrasea::headers();
               $data_template = new system_file($registry->get('GV_RootPath') . 'lib/conf.d/data_templates/' . $parm['new_data_template'] . '.xml');
 
               $connbas = new connection_pdo('databox_creation', $hostname, $port, $user, $password, $parm['new_dbname']);
-              $base = databox::create($appbox, $connbas, $data_template, $registry);
-              $base->registerAdmin($user_obj);
-              $createBase = $sbas_id = $base->get_sbas_id();
+
+              try
+              {
+                $base = databox::create($appbox, $connbas, $data_template, $registry);
+                $base->registerAdmin($user_obj);
+                $createBase = $sbas_id = $base->get_sbas_id();
+              }
+              catch (Exception $e)
+              {
+                $error[] = $e->getMessage();
+              }
             }
             catch (Exception $e)
             {
-              $errors = $e->getMessage();
+              $error[] = _('Database does not exists or can not be accessed');
             }
           }
         }
-        elseif ($parm['new_settings'] && $parm['new_hostname'] && $parm['new_port'] && $parm['new_user'] && $parm['new_password']
+        elseif ($parm['new_settings'] && $parm['new_hostname'] && $parm['new_port'] 
+                && $parm['new_user'] && $parm['new_password']
                 && $parm['new_dbname'] && $parm['new_data_template'])
         {
 
           if (p4string::hasAccent($parm['new_dbname']))
-            $error['new_dbname'] = 'No special chars in dbname';
-
+          {
+            $error[] = _('Database name can not contains special characters');
+          }
+          
           if (count($error) === 0)
           {
 
@@ -129,7 +140,7 @@ phrasea::headers();
             }
             catch (Exception $e)
             {
-              $errors = $e->getMessage();
+              $error[] = $e->getMessage();
             }
           }
         }
@@ -140,7 +151,7 @@ phrasea::headers();
         {
 
           if (p4string::hasAccent($parm['new_dbname']))
-            $error['new_dbname'] = 'No special chars in dbname';
+            $error[] = _('Database name can not contains special characters');
 
           if (count($error) === 0)
           {
@@ -156,7 +167,7 @@ phrasea::headers();
             catch (Exception $e)
             {
               $appbox->get_connection()->rollBack();
-              $errors = $e->getMessage();
+              $error[] = $e->getMessage();
             }
           }
         }
@@ -165,7 +176,7 @@ phrasea::headers();
         {
 
           if (p4string::hasAccent($parm['new_dbname']))
-            $error['new_dbname'] = 'No special chars in dbname';
+            $error[] = 'No special chars in dbname';
 
           if (count($error) === 0)
           {
@@ -174,13 +185,12 @@ phrasea::headers();
               $appbox->get_connection()->beginTransaction();
               $base = databox::mount($appbox, $parm['new_hostname'], $parm['new_port'], $parm['new_user'], $parm['new_password'], $parm['new_dbname'], $registry);
               $base->registerAdmin($user_obj);
-//              $createBase = $sbas_id = $base->get_sbas_id();
               $appbox->get_connection()->commit();
             }
             catch (Exception $e)
             {
               $appbox->get_connection()->rollBack();
-              $errors = $e->getMessage();
+              $error[] = $e->getMessage() . '@' . $e->getFile() . $e->getLine();
             }
           }
         }
@@ -216,7 +226,7 @@ phrasea::headers();
       }
       catch (Exception $e)
       {
-
+        
       }
     }
     ?>
@@ -227,7 +237,7 @@ if ($createBase || $mountBase)
   $user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
   $user->ACL()->delete_data_from_cache();
   ?>
-          parent.reloadTree('bases:bases');
+      parent.reloadTree('bases:bases');
   
 
     
+    
+    
+      
     

Bases actuelles :

    @@ -306,20 +325,20 @@ if ($createBase || $mountBase)
- +
@@ -358,20 +377,20 @@ if ($createBase || $mountBase)
- +
From 86329b95073e57ae9ba840726c9ff3ee05e8c4a5 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 12:32:32 +0100 Subject: [PATCH 07/17] Add descriptor type in interface --- www/admin/description.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/www/admin/description.php b/www/admin/description.php index 111ec47503..0900b4d7fe 100644 --- a/www/admin/description.php +++ b/www/admin/description.php @@ -21,7 +21,7 @@ $session = $appbox->get_session(); $request = http_request::getInstance(); $parm = $request->get_parms("srt", "ord", "act", "p0", // base_id - "str" // si act=CHGSTRUCTURE, structure en xml + "str" // si act=CHGSTRUCTURE, structure en xml ); @@ -61,7 +61,16 @@ if (!empty($_POST)) try { $local_parms = $httpRequest->get_parms( - 'name_' . $id, 'thumbtitle_' . $id, 'src_' . $id, 'multi_' . $id, 'indexable_' . $id, 'readonly_' . $id, 'tbranch_' . $id, 'report_' . $id, 'dces_' . $id + 'name_' . $id + , 'thumbtitle_' . $id + , 'src_' . $id + , 'multi_' . $id + , 'indexable_' . $id + , 'readonly_' . $id + , 'type_' . $id + , 'tbranch_' . $id + , 'report_' . $id + , 'dces_' . $id ); $field = databox_field::get_instance($databox, $id); @@ -71,6 +80,7 @@ if (!empty($_POST)) $field->set_multi($local_parms['multi_' . $id]); $field->set_indexable($local_parms['indexable_' . $id]); $field->set_readonly($local_parms['readonly_' . $id]); + $field->set_type($local_parms['type_' . $id]); $field->set_tbranch($local_parms['tbranch_' . $id]); $field->set_report($local_parms['report_' . $id]); @@ -107,7 +117,7 @@ if (!empty($_POST)) $parms = $httpRequest->get_parms('newfield'); - if($parms['newfield']) + if ($parms['newfield']) { databox_field::create($databox, $parms['newfield']); } @@ -124,7 +134,7 @@ if (!empty($_POST)) } catch (Exception $e) { - + } } } From eeb9fa0d47278dd551b85f0e006a03f2a87f8261 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 12:45:16 +0100 Subject: [PATCH 08/17] Adding uncommited fixes --- lib/classes/Feed/Entry/Adapter.class.php | 10 ++++++++++ lib/classes/Session/Handler.class.php | 5 +++-- lib/classes/User/Adapter.class.php | 19 +++++++++++++++---- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/classes/Feed/Entry/Adapter.class.php b/lib/classes/Feed/Entry/Adapter.class.php index 58776f3f3e..ef7c035543 100644 --- a/lib/classes/Feed/Entry/Adapter.class.php +++ b/lib/classes/Feed/Entry/Adapter.class.php @@ -357,6 +357,16 @@ class Feed_Entry_Adapter implements Feed_Entry_Interface, cache_cacheableInterfa return $this->publisher; } + + /** + * + * @param User_adapter $user + * @return boolean + */ + public function is_publisher(User_adapter $user) + { + return $user->get_id() === $this->get_publisher()->get_user()->get_id(); + } /** * diff --git a/lib/classes/Session/Handler.class.php b/lib/classes/Session/Handler.class.php index 100d09abb4..2834457b1e 100644 --- a/lib/classes/Session/Handler.class.php +++ b/lib/classes/Session/Handler.class.php @@ -576,7 +576,7 @@ class Session_Handler $sql = 'SELECT v.id as validate_id, v.usr_id, v.ssel_id , s.usr_id as owner, t.value FROM (validate v, ssel s) - LEFT JOIN tokens t + INNER JOIN tokens t ON (t.datas = s.ssel_id AND v.usr_id=t.usr_id AND t.type="validate") WHERE expires_on < :expires_on @@ -594,7 +594,8 @@ class Session_Handler 'ssel_id' => $row['ssel_id'], 'from' => $row['owner'], 'validate_id' => $row['validate_id'], - 'url' => $registry->get('GV_ServerName') . 'lightbox/validate/'.$row['ssel_id'].'/?LOG=' . $row['value'] + 'url' => $registry->get('GV_ServerName') + . 'lightbox/validate/'.$row['ssel_id'].'/?LOG=' . $row['value'] ); $events_mngr->trigger('__VALIDATION_REMINDER__', $params); diff --git a/lib/classes/User/Adapter.class.php b/lib/classes/User/Adapter.class.php index 3cb03cda7e..98a374e720 100644 --- a/lib/classes/User/Adapter.class.php +++ b/lib/classes/User/Adapter.class.php @@ -399,7 +399,14 @@ class User_Adapter implements User_Interface, cache_cacheableInterface { if (!trim($email)) $email = null; + + $test_user = User_Adapter::get_usr_id_from_email($email); + if($test_user && $test_user != $this->get_id()) + { + throw new Exception_InvalidArgument (sprintf(_('A user already exists with email addres %s'), $email)); + } + $sql = 'UPDATE usr SET usr_mail = :new_email WHERE usr_id = :usr_id'; $stmt = $this->appbox->get_connection()->prepare($sql); $stmt->execute(array(':new_email' => $email, ':usr_id' => $this->get_id())); @@ -1231,6 +1238,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface protected function load_preferences() { if ($this->_prefs) + return $this; $sql = 'SELECT prop, value FROM usr_settings WHERE usr_id= :id'; $stmt = $this->appbox->get_connection()->prepare($sql); @@ -1324,7 +1332,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface } catch (Exception $e) { - + } return $this; @@ -1556,6 +1564,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface $appbox = appbox::get_instance(); $session = $appbox->get_session(); if (!$session->is_authenticated()) + return; $ses_id = $session->get_ses_id(); @@ -1614,7 +1623,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface } catch (Exception $e) { - + } } } @@ -1678,7 +1687,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface } catch (Exception $e) { - + } return false; @@ -1765,7 +1774,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface } catch (Exception $e) { - + } return $locale; @@ -1831,6 +1840,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface public function get_nonce() { if ($this->nonce) + return $this->nonce; $nonce = false; @@ -1848,6 +1858,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface return $this->nonce; } + public function __sleep() { $vars = array(); From 62deb6f4bfa46809f050b8f5284872341fc17eb1 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 12:45:59 +0100 Subject: [PATCH 09/17] Adding uncommited fixes --- lib/classes/mail.class.php | 3 +- lib/classes/module/prod.class.php | 17 ++++-- .../adapter/phrasea/engine.class.php | 59 ++++++++++--------- 3 files changed, 45 insertions(+), 34 deletions(-) diff --git a/lib/classes/mail.class.php b/lib/classes/mail.class.php index 59bd8d00c0..ab04900fad 100644 --- a/lib/classes/mail.class.php +++ b/lib/classes/mail.class.php @@ -255,8 +255,7 @@ class mail $mail->ConfirmReadingTo = $reading_confirm_to; } - $mail->MsgHTML(strip_tags($body)); -// $mail->MsgHTML(p4string::cleanTags($body)); + $mail->MsgHTML(strip_tags($body, '

')); foreach ($files as $f) { diff --git a/lib/classes/module/prod.class.php b/lib/classes/module/prod.class.php index ac3d52fed7..4c6757d98a 100644 --- a/lib/classes/module/prod.class.php +++ b/lib/classes/module/prod.class.php @@ -49,7 +49,7 @@ class module_prod 'sbas_id' => $sbas_id ); - foreach($user->ACL()->get_granted_base(array(), array($databox->get_sbas_id())) as $coll) + foreach ($user->ACL()->get_granted_base(array(), array($databox->get_sbas_id())) as $coll) { $selected = ($searchSet && isset($searchSet->bases) && @@ -75,12 +75,19 @@ class module_prod else $dates[$id] = array('sbas' => array($sbas_id), 'fieldname' => $name); } + + if (isset($fields[$name])) + { + $fields[$name]['sbas'][] = $sbas_id; + } else { - if (isset($fields[$name])) - $fields[$name]['sbas'][] = $sbas_id; - else - $fields[$name] = array('sbas' => array($sbas_id), 'fieldname' => $name, 'id' => $id); + $fields[$name] = array( + 'sbas' => array($sbas_id) + , 'fieldname' => $name + , 'type' => $meta->get_type() + , 'id' => $id + ); } } diff --git a/lib/classes/searchEngine/adapter/phrasea/engine.class.php b/lib/classes/searchEngine/adapter/phrasea/engine.class.php index 4123f26a1b..965eb33c4a 100644 --- a/lib/classes/searchEngine/adapter/phrasea/engine.class.php +++ b/lib/classes/searchEngine/adapter/phrasea/engine.class.php @@ -56,7 +56,7 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract /** * - * @var boolean + * @var searchEngine_options */ protected $options = false; @@ -142,6 +142,8 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract */ public function set_options(searchEngine_options $options) { + $this->options = $options; + $this->opt_search_type = (int) $options->get_search_type(); $this->opt_bases = $options->get_bases(); $this->opt_fields = $options->get_fields(); @@ -394,34 +396,37 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract $total_time = 0; + $sort = ''; + + if($this->options->get_sortby()) + { + switch($this->options->get_sortord()) + { + case searchEngine_options::SORT_MODE_ASC: + $sort = '+'; + break; + case searchEngine_options::SORT_MODE_DESC: + default: + $sort = '-'; + break; + } + $sort .= '0' . $this->options->get_sortby(); + } + foreach ($this->queries as $sbas_id => $qry) { - if ($this->opt_search_type == 1) - { - $this->results[$sbas_id] = phrasea_query2( - $session->get_ses_id() - , $sbas_id - , $this->colls[$sbas_id] - , $this->arrayq[$sbas_id] - , $registry->get('GV_sit') - , (string) $session->get_usr_id() - , false - , PHRASEA_MULTIDOC_REGONLY - ); - } - else - { - $this->results[$sbas_id] = phrasea_query2( - $session->get_ses_id() - , $sbas_id - , $this->colls[$sbas_id] - , $this->arrayq[$sbas_id] - , $registry->get('GV_sit') - , (string) $session->get_usr_id() - , false - , PHRASEA_MULTIDOC_DOCONLY - ); - } + $this->results[$sbas_id] = phrasea_query2( + $session->get_ses_id() + , $sbas_id + , $this->colls[$sbas_id] + , $this->arrayq[$sbas_id] + , $registry->get('GV_sit') + , (string) $session->get_usr_id() + , false + , $this->opt_search_type == 1 ? PHRASEA_MULTIDOC_REGONLY : PHRASEA_MULTIDOC_DOCONLY + , $sort + ); + $total_time += $this->results[$sbas_id]['time_all']; if ($this->results[$sbas_id]) From 23fd31a720535c48827497e2b643e680604600e1 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 12:46:32 +0100 Subject: [PATCH 10/17] Adding uncommited fixes --- lib/classes/random.class.php | 4 ++-- lib/classes/supertwig.class.php | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/classes/random.class.php b/lib/classes/random.class.php index a3b03f91fa..04a8d16b3f 100644 --- a/lib/classes/random.class.php +++ b/lib/classes/random.class.php @@ -56,7 +56,7 @@ class random } } - $sql = 'DELETE FROM tokens WHERE expire_on < :date'; + $sql = 'DELETE FROM tokens WHERE expire_on < :date and type="download"'; $stmt = $conn->prepare($sql); $stmt->execute(array(':date' => $date)); $stmt->closeCursor(); @@ -201,7 +201,7 @@ class random self::cleanTokens(); $conn = connection::getPDOConnection(); - $sql = 'SELECT * FROM tokens WHERE value = :token '; + $sql = 'SELECT * FROM tokens WHERE value = :token AND expire_on > NOW()'; $stmt = $conn->prepare($sql); $stmt->execute(array(':token' => $token)); $row = $stmt->fetch(PDO::FETCH_ASSOC); diff --git a/lib/classes/supertwig.class.php b/lib/classes/supertwig.class.php index 42098a0c75..3f127dacfd 100644 --- a/lib/classes/supertwig.class.php +++ b/lib/classes/supertwig.class.php @@ -100,11 +100,10 @@ class supertwig $options = array_merge($default_options, $options); $extensions = array_merge($default_extensions, $extensions); - $this->init_twig(); - try { $this->set_options($options); + $this->init_twig(); $this->set_extensions($extensions); $this->addFilter(array('round' => 'round')); } From a0103c4f8ad77181c82843a3b0015a59430cf5c3 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 12:48:42 +0100 Subject: [PATCH 11/17] Adding uncommited fixes --- .../web/admin/databox/doc_structure.twig | 109 ++++++++++-------- templates/web/admin/editusers.twig | 2 +- templates/web/admin/publications/list.html | 4 +- templates/web/common/index.twig | 2 +- 4 files changed, 64 insertions(+), 53 deletions(-) diff --git a/templates/web/admin/databox/doc_structure.twig b/templates/web/admin/databox/doc_structure.twig index 0487d8168f..c327079b2a 100644 --- a/templates/web/admin/databox/doc_structure.twig +++ b/templates/web/admin/databox/doc_structure.twig @@ -227,55 +227,58 @@
-
-
- - - - - - - - - - - - - - - - - - - - + {% trans 'boutton::ajouter' %} + + + + +
- - {% trans 'Nom' %} - - {% trans 'Source' %}Source - - DCES - - {% trans 'Multivalue' %} - - {% trans 'Indexable' %} - - {% trans 'Lecture seule' %} - - {% trans 'Branche Thesaurus' %} - - {% trans 'Affiche dans report' %} - - Regdate - - Regname - - Regdesc - - {% trans 'Afficher en titre' %} -
+ + + + + + + + + + + + + + + + + + + {% for field in fields %} {% set disabled = '' %} {% if field.is_on_error() %} @@ -309,6 +312,14 @@ + diff --git a/templates/web/admin/editusers.twig b/templates/web/admin/editusers.twig index e165e40072..8e7a18f87e 100644 --- a/templates/web/admin/editusers.twig +++ b/templates/web/admin/editusers.twig @@ -15,7 +15,7 @@ {% set display = 'block' %} - {% if right[name] != users|length and name != 'access' and right['access'] != users|length %} + {% if right[name] != users|length and name != 'access' and right['access'] != users|length and type != 'sbas' %} {% set display = 'none' %} {% endif %} diff --git a/templates/web/admin/publications/list.html b/templates/web/admin/publications/list.html index 2666a37bcf..7cb557186a 100644 --- a/templates/web/admin/publications/list.html +++ b/templates/web/admin/publications/list.html @@ -48,7 +48,7 @@ - + @@ -72,7 +72,7 @@
+ + {% trans 'Nom' %} + + {% trans 'Source' %}Source + + DCES + + {% trans 'Multivalue' %} + + {% trans 'Indexable' %} + + {% trans 'Lecture seule' %} + + {% trans 'Type' %} + + {% trans 'Branche Thesaurus' %} + + {% trans 'Affiche dans report' %} + + Regdate + + Regname + + Regdesc + + {% trans 'Afficher en titre' %} +
+ + {% trans 'Titre' %} {% trans 'Date Creation' %} {% trans 'Restriction' %}{% trans 'Visible sur la homepage' %}{% trans 'Public' %}
{% if feed.is_public() %} - + {% endif %} diff --git a/templates/web/common/index.twig b/templates/web/common/index.twig index 5e3765f273..12b66755c3 100644 --- a/templates/web/common/index.twig +++ b/templates/web/common/index.twig @@ -14,7 +14,7 @@
{% include 'common/menubar.twig' %}
-
+
{% block content %}{% endblock %}
From a676a8c38f3ad19a9a02287f7988404675ee3836 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 12:50:45 +0100 Subject: [PATCH 12/17] Adding uncommited fixes --- .../web/prod/actions/publish/publish.html | 3 ++ templates/web/prod/feeds/entry_macro.html | 6 +-- templates/web/prod/index.html | 39 +++++++++++++------ templates/web/prod/results/record.html | 4 +- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/templates/web/prod/actions/publish/publish.html b/templates/web/prod/actions/publish/publish.html index 623da38a2a..9b3c0847e4 100644 --- a/templates/web/prod/actions/publish/publish.html +++ b/templates/web/prod/actions/publish/publish.html @@ -55,6 +55,9 @@ {% if feed.is_publisher(user) %}
{{ feed.get_title() }} + {% if feed.is_public() %} + + {% endif %}
{% endif %} diff --git a/templates/web/prod/feeds/entry_macro.html b/templates/web/prod/feeds/entry_macro.html index 5d3d1fbf83..167a120188 100644 --- a/templates/web/prod/feeds/entry_macro.html +++ b/templates/web/prod/feeds/entry_macro.html @@ -15,7 +15,7 @@
- {% if entry.get_feed().is_owner(user) %} + {% if entry.get_feed().is_owner(user) or entry.is_publisher(user) %} @@ -55,8 +55,8 @@
{% for item in entry.get_content() %} {% set record = item.get_record() %} - {% set prefix = 'PUBLI' %} - {{record_format.block(record, user, session, false, null, prefix, entry.get_id(), item.get_id())}} + {% set prefix = 'PUBLI_' ~ item.get_id() %} + {{record_format.block(record, user, session, false, null, prefix, entry.get_id())}} {% endfor %}
diff --git a/templates/web/prod/index.html b/templates/web/prod/index.html index ec0653af24..d6c4d0d7d6 100644 --- a/templates/web/prod/index.html +++ b/templates/web/prod/index.html @@ -372,18 +372,31 @@
{% if registry.get('GV_sphinx') %} {% trans 'Trier par ' %} - - - {% trans 'rechercher par stemme' %} + + + {% trans 'rechercher par stemme' %} {% else %} - + {% trans 'Trier par ' %} + + + {% endif %}
@@ -392,7 +405,9 @@
diff --git a/templates/web/prod/results/record.html b/templates/web/prod/results/record.html index 4ba407d89d..14ed145861 100644 --- a/templates/web/prod/results/record.html +++ b/templates/web/prod/results/record.html @@ -1,4 +1,4 @@ -{% macro block(record, user, session, highlight, searchEngine, prefix, entry_id, suffix)%} +{% macro block(record, user, session, highlight, searchEngine, prefix, entry_id)%} {% import 'common/thumbnail.html' as thumbnail %} {% import 'common/doctype_icons.html' as doctype_icons %} {% import 'common/drop_down_options.html' as drop_down %} @@ -6,7 +6,7 @@ {% set sbas_id = record.get_base_id|sbasFromBas %} {% if entry_id %}
{% elseif record.is_grouping() %} From 852616ac4aa3b625ad950910001bc30d0e2525dd Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 12:52:30 +0100 Subject: [PATCH 13/17] Adding uncommited fixes --- www/skins/lng/inclin-de.gif | Bin 7306 -> 3523 bytes www/skins/lng/inclin-en.gif | Bin 7306 -> 3508 bytes www/skins/lng/inclin-fr.gif | Bin 6815 -> 3352 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/www/skins/lng/inclin-de.gif b/www/skins/lng/inclin-de.gif index 8ad6e70d9a00653af1f7a3e1a05eaaea22043e40..229f594a87ce9a9a72ef7d0828bf2f89b5723247 100644 GIT binary patch literal 3523 zcmV;!4LtHkNk%w1VY&iC0FeLy00030|Nj^m82|tOA^8LW00093EC2ui0J;K000092 zoR6u??JpjbE>dQ%${O)*e4yBont7q%%C_$I#`1i=YUSQjtK(~rp$SX2V$R4zvVg&( za|n$-rPQh~xt#vAqb$~1WiG@pF4NQ_C)6J0mJ5!D<#a3iaK8`qdwA{bRX4;(=!Qpu zwx?3)mtsgH7&$0ODZ>benR&SL1sPcR_}8h~SK5GPA&}UJ80yFh8ha{B`#LI0io3SC zJJy=}TMHcgnX4Kyi;+QcxpC7xEWsyCHyxsS9B17Hn_SFYhLV`w1RhQ8+kN%zsqD>; zOkQ@|evTfyZJLdJ&5X^jDAm4xV4&%$XKoF^c?z$ULwNAsI(zSc=|FW%9xr(RiX1Ye z_z#L)EfkSJ8`z7b>W& zD#^lt`!8!&DbRrES(MbR+{9@Ab!%X%g8)wj~6 z(UyIEu{>=sb!5_r-_~|L7wycTD09oI4E8JNxN%c2Obm0kL*qNonsr`U(CL8W09xk< z`uNG4unozsC=`2H?sV%m$9vJXZ(6`d2Pe+VU1-HO=QHL$9Qb zb_8MtlsJzuWs!0=O=n3{4wBZ=2jdWT--2}E$KYKamG>Ngl|U%sdk58b)M2N5SCnk= zsrO-qvth`YTrA$xUWh!&qZ5r*>E;iL2NE<_dy_$?V~Nr!IbtZ^S?I?;MSk|;PIk4G zQ)V;PlH-IXLfK-CGGJ5v8mefI%M!cokQq}uG{Q1d_b$EjR%5NU8vd*_ z#qoyh;>F68Dj}a;(maFBC9g|y##tg<@VL={43o|kJNWJ+nC?LOUtpf#MyovCuTJg zD*C8_$-A`MjvFp`gwUl9H*eT6diAJzZx$-4l^aL9$|(jRZL}5jMmC&sM_ygnASc?~ z>}V34G;LG!%X;fgAFHn2k}b64To)$*c3+DYE!X6o5d^mTOpug`U}7H0S= zDQr02uvCqG;MQNiy7Fi*FUy$Rhk7>^A*l~NfLq>ujHNHYtZFQ?d)fN{xVNZ5On<=kX#ev;pY04LIM?# zd1D)4*|3x({5cJV#hV!lNx?#(5e-=B>zR1I2fhIRhD}C)+K>jHm$_S*kVH}h+rPeO zyC&+*fG)9M@@5E`EB4KQPlO_WEQmch&e3zccw-j@_`}UPFl|B`B9cINmmTiWO~*r@ zfe>gVq1ms2UxXVQ>GY%inX!)V$zg^z_AF)zr*!zT4%=dsJB9oWhhZ$v^M=Bp*d@?` z7i{GGxQMHh&5wf~^xh(a*Azo)afzIij3@oUJ-|(GnCMFm8*dmerKQr9?CRD>8h5xs z-Vp-sW120Ac1-Y?&?X16kQ*1aHEb%gdc_2q8vU3@^1yLSM4W&TEk?cgt?X(^!%yPe zg~v(pN_C600|s?iLwH=LoXR{{AYq5NWiqV)ot@O94%Ilxe1?gai%DolQ5hv@W`?7m zJ6|cig(y+FC4_McBKz7n&u>i&ncLLN?^ux?jS`chNt`K+?g^irzLcb@Y#YF)Im=1{ zkEIeHK44#?CcFf*^|qm1CxsuoxXyC7xTZCeb8E`g>H)Qk*Ugzc!KuMT2)CK- z?bd)fwoea_H<9&vTUWU$F~kN(#Uu9SFmq(l8orBoo(u9!={ndCfAq+kEHOgm7^DsR zKyB|>pl0_*QX;qJ8!wS+a0z0?71xcq<&ZEMnHdGa7)B>!7fuj~+`XxnM;q7?Q|iLVyRxceYv(q*l|HeaE~e9*WWHuP z#;sD0niicZ{Mzu<)KPY@J6+vV*O#Dpov#m#%bLkKCbN^3GREH7J|VjBpW$d5i1Qm$ zhat$>qFKma8H*cF{}!NTKJl8gwgWRuo1qZob=vg3oqpyPc*cFBwzZ6A!N&Q?yK~{e zHS1?y$NRO(E!g4QN$7dhnbTH`>!69f9Ma~Sn6}+Ff+NfBsirpD+O~EnGud%+e>`Ws zMRErx-5CZqYs?*P5~EZ9zE0sKsy0K$>ON%|;2gXBj;Knnn@t`#lg8(+JT4wQ>04WV zau%O}CAIF5ZIsm>G16r|8ogQ`?sN;mtAaxMqQ+xu95z^@Jnwn3)w}MPGaKrWdpcS6 zPD8(--QH8YS8?@yb&bJ$=5EaM&BKdwVFSC&hF%Vyd)Yl&CJ^$F-)=I`TIYVZ)yYl= z??=y>y|T_d=d&eezSeOxYM(Tlv_*Tf!T7fiSGu=T)Hu#JFY~)$yM-Pvba%zfWK-Vq z_k3sZ){C?8GY5&-YHoasQ#H;xOB&>FmKx9-Z8}rerN^8TZ_&3b)9=T<1C ze`ERi&DWFL7s_h?L2F#xtBgPQbGm#t!W6P6WY6SwsMai=7itNoZb21Wz1M57HY2Sj zaSK;>;wMr}mUaP1ai>-#0JuIN(rVCSf4izjtp&j5HYaY}8Nh*(B8 z%GXV#xNOD8iS%S*wsn8#6oi8mUz?U)4z_7PXMv7Jcco~APw0y#$bf5Sh>ti}Lga2D zIDtmSEYX)?qC>3EFLXkx)Pi7#b$F(XbMqjQz>gYtE5 zO(l^dBtPgRjJrmDK*TfAcxEY>i>jzkz_o2eg*)Pwezek#HWY0eIb-~Dh4u(t5IH@% z@+7AJrbM2XiVT5>69!}CI6S5}I+-|ezP5-86%Xe`kbk6F6EPUk2reMWjVPv-V6l5N zLsJ-dX)?HgM>jkqSrbD9c1L1;Ll#XD*>F$DdO_)tiDO?k*fpI*Dtz^B?A9YJ8Hyit zhbTF7)Af2p378luYC=V4OsR4M)tP>`WV)D)U?+ufbd!PAcc9rug4j};2wjSam6u6P z4LOaY6Hr&SW{r4;W=Ds-H)Zu>iLbeYYe+xb0xs-DoS&CQ00(@cwuM&+nH|`bpY=V!YA^8LW000jFEC2ui0J;K0000F4@X1N5y*O*FlG<7Kft5&J z<~gP6!>Vr^dNLNDH=Y!A4*Inqj3z7^k3!(4!;>+CPv|b#6jobTClSeQDLLEWs2A3a z#pE;hYnH0f+Bb>aHPY+&JXk(2_xVeHZDd(Pg@K1Zf_i#)7LF^6ihwheHj3bAsktt%6uZ8vq_car#$Lg~w@AFp&V!w` z(bLGpzsb4H&!We0)X?7HYsuWw-+$fP=0OAP4(jl{z}C9t_4K{?`Rn5FMe^hT(wleg zh&E;X`b|pb51o+&30KnOS0NVr>T*%Pjg9Zry8i4aytsyge`x1^Mxsqd@gZDbJ zoJrFpr-u^)ERXcLFde>bBKPXVQ@X*4VO<-LAJDM@aTmlGKM<8_%SoeSf3lLzyPcLm( zK_UpbcbXJJAE1V9mr1(3(U0mI36)`|FW zSK^8)zGt36vYDx7nliqLW?T6spl4uCB_=>c4NP=Eg9#WArIG(V7}1|h)^&h~fil2n zY*hNOfCB&o@MM-}&S+nzLNVz@S#j$=;oKvT3J_p0)`qeB)?Yscp8hx~8sj z(FfiF2Ik*R~nJ0ah~bA*U2HAe5-|u6if6+_p<UZ$eCTzBpD*IIQr=m-~RHt0`J}dwioce^zaw|V*%K?-W6^DoV_UN zZ{tf-1H>1-m4)djzoE$XN|Y&{aBp5Y5RH|(1ikr9DR$@Upa?030MGd@WVVZ60{iE| zglQ*o=h)z4NXNn&qOWsOk_ZL`K|0|a1zNYMfa)3-BT;eh0ExlU4TktA z6JS7J7??$78F6030#)}K#6AL&XM2qSqZu1=#WCV(NknWF>zegO2^c_mZhSxqF-gTf zR+5Y=WMpS@RhqX^1OX)aGrY5w#q~UP_&r@BhGHEi5HH&*26F{B2^gvK#Lh zKzY1`6l!L3oXJ@rx`MLBR>qP50stZ@E0D{b?Ch2gM1VjkA}aQ^>Rs^yr0c@87&5J? zfOGt$Gjj*Z_0W_5dJSZOlr&fvjNH*0cZm{4GdW3oHDQ&qgXTN^fyR*t695ZLk}Tah zPQvMBC(K$0~H|PBnfdhuo%V?P)I*?sVAtK<_+SBxJnn?C4XdLG*yxBfy`O3Obl>+r zSOS^b9NX;KIpspvPIc_;7BXvH^r;SRcca)bp@W_9_#il%kw`Sv_7MSic%@Tg%8r6% z9WcI=K1nHn<^(VWih)Eb5Rs6J{XpOUZVZ?h0G4F|B_dTg*#cJL(P3O0nh(>-R9A;`~07DWU~{QQR)WQ(w75N`y#Ke*OxnU%f!hJX=*w4tTyX{J95T#Aua! zLFf30a`Z04qRVhvsQw$MDL*Bp2r!Nq4^=+DgRkN}yAQ8(^U(=YOIt z0YV|{GKKlKkW)OzpbphLR2}c0v0INO9BIv`{K{JAR4t&|_n?L)fxC?rVz%tcSKx-p zA?~~FZ-5TzBf2u`Ws3I{_v}PNxUTMg#Gf6%w4?*)0Ufqva!^|Z5G;;2 zEoGo;sN;bSxP*)cD0$WvaRXz7frBxyd@M3v(Arxf-08Qmz{)aAx;%F1F0BW{= zH!yCD@iyD#2mjSM6?TC(5`XD2Xbxpnbwy&CVE{_kK~{2x;j}&6#Dq5!WTcTi8pB@Z zXE@o#ByzGnEe99`Wn(Ki0Rd)xKzJdPc6Q<;d^AFEA~A>`=!RmJA(%4%ct;g5d{Z8Y zwrDxPHx@L0Uo-$0vvojW8S0WR2&IM66?6?lh=$}8uog|SbcJZ>cDIm$cJgg~MrLZa zXPeiFf?$Z)a)r?rhBtwOK!;D%X9*~FUL(LGc|kfQb~94;guRC@VJIA8=ZSIW6R`Mo zoo4~YCmwqdbT}9znxi`9mWe`?I_2?vrSTl#Hd#DT6%Vo)g@z|eMQT+=d3)Cl7$sQN zSO&;)H0@Y@Fhhr-b8~k020`_HEt6^gCp8jR8Uc4<;87R`wK9&VDCS`r^%93fFhuy~ z7!SB=9{2*=(}0jDWMsyE(nb`pH;)%0A}j_QaRgHgkZ^JWNv*g4k3CmSk8x^41c1Vn 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 literal 7306 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%0A}j_QaRgHgkZ^JWNv*g4k3CmSk8x^41c1Vn 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 i>72_sn#q}+%4wVXSVzzqowLcC}+`Ka=6 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 NvRgMDcgG_D06UUtKNA1| From 522980ef9da35613ffc3393877bf59de8d011b6a Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 13:41:19 +0100 Subject: [PATCH 14/17] Fix broken hellotoken method --- lib/classes/random.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/classes/random.class.php b/lib/classes/random.class.php index 04a8d16b3f..21f692c70d 100644 --- a/lib/classes/random.class.php +++ b/lib/classes/random.class.php @@ -201,7 +201,9 @@ class random self::cleanTokens(); $conn = connection::getPDOConnection(); - $sql = 'SELECT * FROM tokens WHERE value = :token AND expire_on > NOW()'; + $sql = 'SELECT * FROM tokens + WHERE value = :token + AND (expire_on > NOW() OR expire_on IS NULL)'; $stmt = $conn->prepare($sql); $stmt->execute(array(':token' => $token)); $row = $stmt->fetch(PDO::FETCH_ASSOC); From 9e87701623a7d9ea2aaacb5918b6f88ee031f478 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 13:41:46 +0100 Subject: [PATCH 15/17] Add path to Symfony\BrowserKit component for unit tests --- lib/classes/bootstrap.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/classes/bootstrap.class.php b/lib/classes/bootstrap.class.php index 9459406188..57febb4c58 100644 --- a/lib/classes/bootstrap.class.php +++ b/lib/classes/bootstrap.class.php @@ -162,6 +162,7 @@ class bootstrap $loader->registerNamespaces(array( 'Symfony\\Component\\Yaml' => __LIBDIR__ . '/vendor/symfony/src', 'Symfony\\Component\\Console' => __LIBDIR__ . '/vendor/symfony/src', + 'Symfony\\Component\\BrowserKit' => __LIBDIR__ . '/vendor/symfony/src', )); $loader->register(); From 6d2daacd9b8362e6da2b85c1e2c5319a5aba447c Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 14:04:00 +0100 Subject: [PATCH 16/17] Fix bug : API throws 500 error when session is not re-openened --- lib/classes/module/api/V1.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/classes/module/api/V1.php b/lib/classes/module/api/V1.php index 1e9398f30c..eec372c476 100644 --- a/lib/classes/module/api/V1.php +++ b/lib/classes/module/api/V1.php @@ -148,9 +148,9 @@ $app->before(function($request) use ($app) return; } - catch (Exception $e) + catch (\Exception $e) { - + } } $auth = new Session_Authentication_None($app['p4user']); From 7d4e1ae19edc4713b757968aa411b58cb1cddc6f Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 15 Dec 2011 14:04:54 +0100 Subject: [PATCH 17/17] Version 3.5.1 --- lib/version.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/version.inc b/lib/version.inc index 961cdd56b5..24cce728cf 100644 --- a/lib/version.inc +++ b/lib/version.inc @@ -15,5 +15,5 @@ * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link www.phraseanet.com */ -define('GV_version', '3.5.0.0'); -define('GV_version_name', 'Archaeopteryx'); +define('GV_version', '3.5.1.0'); +define('GV_version_name', 'Baobab');