Author: david
Date: 2008-11-06 12:11:41 -0800 (Thu, 06 Nov 2008)
New Revision: 1529

Modified:
   trunk/qubit/apps/qubit/modules/actor/actions/updateAction.class.php
   trunk/qubit/apps/qubit/modules/actor/templates/showIsaarSuccess.php
   
trunk/qubit/apps/qubit/modules/informationobject/actions/updateAction.class.php
   
trunk/qubit/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
   
trunk/qubit/apps/qubit/modules/informationobject/templates/showIsadSuccess.php
   trunk/qubit/lib/model/QubitActor.php
   trunk/qubit/lib/model/QubitInformationObject.php
   trunk/qubit/lib/model/QubitProperty.php
Log:
Update informationobject and actor pages to work with new QubitPropertiesI18n 
table for language of materials and script fields. Refactor addProperty() and 
isPropertyExistent() methods into QubitProperty model instead of having 
duplicate code in the Info Object and Actor models.

Modified: trunk/qubit/apps/qubit/modules/actor/actions/updateAction.class.php
===================================================================
--- trunk/qubit/apps/qubit/modules/actor/actions/updateAction.class.php 
2008-11-06 19:13:12 UTC (rev 1528)
+++ trunk/qubit/apps/qubit/modules/actor/actions/updateAction.class.php 
2008-11-06 20:11:41 UTC (rev 1529)
@@ -178,7 +178,7 @@
       {
         if (strlen($language_code))
         {
-          $actor->addProperty('language_of_actor_description', $language_code, 
$scope = 'languages');
+          $actor->addProperty('language_of_actor_description', $language_code, 
array('source_culture'=>true, 'scope' => 'languages'));
           $this->foreignKeyUpdate = true;
         }
       }
@@ -194,7 +194,7 @@
       {
         if (strlen($script_code))
         {
-          $actor->addProperty($name = 'script_of_actor_description', 
$script_code, $scope = 'scripts');
+          $actor->addProperty($name = 'script_of_actor_description', 
$script_code, array('source_culture'=>true, 'scope' => 'scripts'));
           $this->foreignKeyUpdate = true;
         }
       }

Modified: trunk/qubit/apps/qubit/modules/actor/templates/showIsaarSuccess.php
===================================================================
--- trunk/qubit/apps/qubit/modules/actor/templates/showIsaarSuccess.php 
2008-11-06 19:13:12 UTC (rev 1528)
+++ trunk/qubit/apps/qubit/modules/actor/templates/showIsaarSuccess.php 
2008-11-06 20:11:41 UTC (rev 1529)
@@ -125,7 +125,7 @@
 <?php if (count($languageCodes) > 0): ?>
   <tr><th><?php echo __('language of authority record')?></th><td>
   <?php foreach ($languageCodes as $languageCode): ?>
-    <?php echo format_language($languageCode->getValue()) ?><br />
+    <?php echo 
format_language($languageCode->getValue(array('sourceCulture'=>true))) ?><br />
   <?php endforeach; ?>
   </td></tr>
 <?php endif; ?>
@@ -133,7 +133,7 @@
 <?php if (count($scriptCodes) > 0): ?>
   <tr><th><?php echo __('script of authority record')?></th><td>
   <?php foreach ($scriptCodes as $scriptCode): ?>
-    <?php echo format_script($scriptCode->getValue()) ?><br />
+    <?php echo 
format_script($scriptCode->getValue(array('sourceCulture'=>true))) ?><br />
   <?php endforeach; ?>
   </td></tr>
 <?php endif; ?>

Modified: 
trunk/qubit/apps/qubit/modules/informationobject/actions/updateAction.class.php
===================================================================
--- 
trunk/qubit/apps/qubit/modules/informationobject/actions/updateAction.class.php 
    2008-11-06 19:13:12 UTC (rev 1528)
+++ 
trunk/qubit/apps/qubit/modules/informationobject/actions/updateAction.class.php 
    2008-11-06 20:11:41 UTC (rev 1529)
@@ -285,7 +285,7 @@
       {
         if (strlen($language_code))
         {
-          $informationObject->addProperty($name = 
'information_object_language', $language_code, $scope = 'languages');
+          $informationObject->addProperty($name = 
'information_object_language', $language_code, array('scope'=>'languages', 
'sourceCulture'=>true));
           $this->foreignKeyUpdate = true;
         }
       }
@@ -301,7 +301,7 @@
       {
         if (strlen($script_code))
         {
-          $informationObject->addProperty($name = 'information_object_script', 
$script_code, $scope = 'scripts');
+          $informationObject->addProperty($name = 'information_object_script', 
$script_code, array('scope'=>'scripts', 'sourceCulture'=>true));
           $this->foreignKeyUpdate = true;
         }
       }
@@ -317,7 +317,7 @@
       {
         if (strlen($language_code))
         {
-          $informationObject->addProperty($name = 
'language_of_information_object_description', $language_code, $scope = 
'languages');
+          $informationObject->addProperty($name = 
'language_of_information_object_description', $language_code, 
array('scope'=>'languages', 'sourceCulture'=>true));
           $this->foreignKeyUpdate = true;
         }
       }
@@ -333,7 +333,7 @@
       {
         if (strlen($script_code))
         {
-          $informationObject->addProperty($name = 
'script_of_information_object_description', $script_code, $scope = 'scripts');
+          $informationObject->addProperty($name = 
'script_of_information_object_description', $script_code, 
array('scope'=>'scripts', 'sourceCulture'=>true));
           $this->foreignKeyUpdate = true;
         }
       }

Modified: 
trunk/qubit/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
===================================================================
--- 
trunk/qubit/apps/qubit/modules/informationobject/templates/editIsadSuccess.php  
    2008-11-06 19:13:12 UTC (rev 1528)
+++ 
trunk/qubit/apps/qubit/modules/informationobject/templates/editIsadSuccess.php  
    2008-11-06 20:11:41 UTC (rev 1529)
@@ -234,7 +234,7 @@
       <?php if ($languageCodes): ?>
         <?php foreach ($languageCodes as $languageCode): ?>
           <div style="margin-top: 5px; margin-bottom: 5px;">
-          <?php echo format_language($languageCode->getValue()) ?>&nbsp;<?php 
echo link_to(image_tag('delete', 'align=top'), 
'informationobject/deleteProperty?Id='.$languageCode->getId().'&returnTemplate=editIsad')
 ?><br/>
+          <?php echo 
format_language($languageCode->getValue(array('sourceCulture'=>true))) 
?>&nbsp;<?php echo link_to(image_tag('delete', 'align=top'), 
'informationobject/deleteProperty?Id='.$languageCode->getId().'&returnTemplate=editIsad')
 ?><br/>
           </div>
         <?php endforeach; ?>
       <?php endif; ?>
@@ -246,7 +246,7 @@
       <?php if ($scriptCodes): ?>
         <?php foreach ($scriptCodes as $scriptCode): ?>
           <div style="margin-top: 5px; margin-bottom: 5px;">
-          <?php echo format_script($scriptCode->getValue()) ?>&nbsp;<?php echo 
link_to(image_tag('delete', 'align=top'), 
'informationobject/deleteProperty?Id='.$scriptCode->getId().'&returnTemplate=editIsad')
 ?><br/>
+          <?php echo 
format_script($scriptCode->getValue(array('sourceCulture'=>true))) 
?>&nbsp;<?php echo link_to(image_tag('delete', 'align=top'), 
'informationobject/deleteProperty?Id='.$scriptCode->getId().'&returnTemplate=editIsad')
 ?><br/>
           </div>
         <?php endforeach; ?>
       <?php endif; ?>
@@ -423,7 +423,7 @@
       <?php if ($descriptionLanguageCodes): ?>
         <?php foreach ($descriptionLanguageCodes as $languageCode): ?>
           <div style="margin-top: 5px; margin-bottom: 5px;">
-          <?php echo format_language($languageCode->getValue()) ?>&nbsp;<?php 
echo link_to(image_tag('delete', 'align=top'), 
'informationobject/deleteProperty?Id='.$languageCode->getId().'&returnTemplate=editIsad')
 ?><br/>
+          <?php echo 
format_language($languageCode->getValue(array('sourceCulture'=>true))) 
?>&nbsp;<?php echo link_to(image_tag('delete', 'align=top'), 
'informationobject/deleteProperty?Id='.$languageCode->getId().'&returnTemplate=editIsad')
 ?><br/>
           </div>
         <?php endforeach; ?>
       <?php endif; ?>
@@ -435,7 +435,7 @@
       <?php if ($descriptionScriptCodes): ?>
         <?php foreach ($descriptionScriptCodes as $scriptCode): ?>
           <div style="margin-top: 5px; margin-bottom: 5px;">
-          <?php echo format_script($scriptCode->getValue()) ?>&nbsp;<?php echo 
link_to(image_tag('delete', 'align=top'), 
'informationobject/deleteProperty?Id='.$scriptCode->getId().'&returnTemplate=editIsad')
 ?><br/>
+          <?php echo 
format_script($scriptCode->getValue(array('sourceCulture'=>true))) 
?>&nbsp;<?php echo link_to(image_tag('delete', 'align=top'), 
'informationobject/deleteProperty?Id='.$scriptCode->getId().'&returnTemplate=editIsad')
 ?><br/>
           </div>
         <?php endforeach; ?>
       <?php endif; ?>

Modified: 
trunk/qubit/apps/qubit/modules/informationobject/templates/showIsadSuccess.php
===================================================================
--- 
trunk/qubit/apps/qubit/modules/informationobject/templates/showIsadSuccess.php  
    2008-11-06 19:13:12 UTC (rev 1528)
+++ 
trunk/qubit/apps/qubit/modules/informationobject/templates/showIsadSuccess.php  
    2008-11-06 20:11:41 UTC (rev 1529)
@@ -136,7 +136,7 @@
 <th><?php echo __('language of material'); ?></th>
 <td>
       <?php foreach ($languageCodes as $languageCode): ?>
-    <?php echo format_language($languageCode->getValue()); ?><br />
+    <?php echo 
format_language($languageCode->getValue(array('sourceCulture'=>true))); ?><br />
   <?php endforeach; ?>
 </td></tr>
 <?php endif; ?>
@@ -146,7 +146,7 @@
 <th><?php echo __('script of material'); ?></th>
 <td>
       <?php foreach ($scriptCodes as $scriptCode): ?>
-    <?php echo format_script($scriptCode->getValue()); ?><br />
+    <?php echo 
format_script($scriptCode->getValue(array('sourceCulture'=>true))); ?><br />
   <?php endforeach; ?>
 </td></tr>
 <?php endif; ?>
@@ -265,7 +265,7 @@
 <?php if (count($descriptionLanguageCodes) > 0): ?>
   <tr><th><?php echo __('language of description')?></th><td>
   <?php foreach ($descriptionLanguageCodes as $languageCode): ?>
-    <?php echo format_language($languageCode->getValue()) ?><br />
+    <?php echo 
format_language($languageCode->getValue(array('sourceCulture'=>true))) ?><br />
   <?php endforeach; ?>
   </td></tr>
 <?php endif; ?>
@@ -273,7 +273,7 @@
 <?php if (count($descriptionScriptCodes) > 0): ?>
   <tr><th><?php echo __('script of description')?></th><td>
   <?php foreach ($descriptionScriptCodes as $scriptCode): ?>
-    <?php echo format_script($scriptCode->getValue()) ?><br />
+    <?php echo 
format_script($scriptCode->getValue(array('sourceCulture'=>true))) ?><br />
   <?php endforeach; ?>
   </td></tr>
 <?php endif; ?>

Modified: trunk/qubit/lib/model/QubitActor.php
===================================================================
--- trunk/qubit/lib/model/QubitActor.php        2008-11-06 19:13:12 UTC (rev 
1528)
+++ trunk/qubit/lib/model/QubitActor.php        2008-11-06 20:11:41 UTC (rev 
1529)
@@ -49,7 +49,7 @@
 
     return self::get($criteria);
   }
-  
+
   /**
    * Get a paginated hitlist of actors
    *
@@ -60,25 +60,25 @@
    */
   public static function getList($culture, $options=array())
   {
-       $criteria = new Criteria;
-       
+    $criteria = new Criteria;
+
     $cultureFallback = (isset($options['cultureFallback'])) ? 
$options['cultureFallback'] : false;
     $sort = (isset($options['sort'])) ? $options['sort'] : null;
     $page = (isset($options['page'])) ? $options['page'] : 1;
-    
+
     if (isset($options['repositoryId']))
     {
       $criteria->add(QubitInformationObject::REPOSITORY_ID,  
$options['repositoryId']);
     }
-    
+
     if (isset($options['collectionType']))
     {
       $criteria->add(QubitInformationObject::COLLECTION_TYPE_ID, 
$options['collectionType']);
     }
-    
+
     // Add criteria to exclude actors that are users or repository objects
     $criteria = QubitActor::addGetOnlyActorsCriteria($criteria);
-    
+
     // Add sort criteria
     switch($sort)
     {
@@ -101,7 +101,7 @@
         $fallbackTable = 'QubitActor';
         $criteria->addAscendingOrderByColumn('authorized_form_of_name');
     }
-      
+
     // Do source culture fallback
     if ($cultureFallback === true)
     {
@@ -117,16 +117,16 @@
       $criteria->add(QubitActorI18n::CULTURE, $culture);
       $criteria->add(QubitTermI18n::CULTURE, $culture);
     }
-    
+
     // Page results
     $pager = new QubitPager('QubitActor');
     $pager->setCriteria($criteria);
     $pager->setPage($page);
     $pager->init();
-    
+
     return $pager;
   }
-  
+
   /**
    * Append criteria to get only Actor objects that are NOT
    * a users or repository.
@@ -137,13 +137,13 @@
   public static function addGetOnlyActorsCriteria($criteria)
   {
     $criteria->addJoin(QubitActor::ID, QubitUser::ID, Criteria::LEFT_JOIN);
-    $criteria->add(QubitUser::ID, NULL);
+    $criteria->add(QubitUser::ID, null);
     $criteria->addJoin(QubitActor::ID, QubitRepository::ID, 
Criteria::LEFT_JOIN);
-    $criteria->add(QubitRepository::ID, NULL);
-    
+    $criteria->add(QubitRepository::ID, null);
+
     return $criteria;
   }
-  
+
   /**
    * Returns only Actor objects, excluding those
    * that are an instance of the User or Repository class
@@ -156,9 +156,9 @@
     {
       $criteria = new Criteria;
     }
-    
-    $criteria = $this->addGetOnlyActorsCriteria($criteria);
-    
+
+    $criteria = QubitActor::addGetOnlyActorsCriteria($criteria);
+
     return self::get($criteria);
   }
 
@@ -174,16 +174,16 @@
         //use 'Family name, first name' format if available
         /*
         if ($actor->getEntityTypeId() == QubitTerm::PERSON_ID)
-          {
-            foreach ($actor->getOtherNames() as $name)
-              {
-                if ($name->getTypeId() == QubitTerm::FAMILY_NAME_FIRST_NAME_ID)
-                  {
-                    $actorName = $name;
-                    break;
-                  }
-              }
-          }
+        {
+        foreach ($actor->getOtherNames() as $name)
+        {
+        if ($name->getTypeId() == QubitTerm::FAMILY_NAME_FIRST_NAME_ID)
+        {
+        $actorName = $name;
+        break;
+        }
+        }
+        }
         */
         $selectList[$actor->getId()] = $actorName;
       }
@@ -229,48 +229,21 @@
     $newName->setNote($nameNote);
     $newName->save();
   }
-  
+
   /**
    * Add a related property to this actor.
-   * 
+   *
    * @param string $name  name of property
    * @param string $value value of property
-   * @param string $scope scope note (optional)
+   * @param string $options array of optional parameters
    * @return QubitActor this object
    */
-  public function addProperty($name, $value, $scope = null)
+  public function addProperty($name, $value, $options = array())
   {
-    if ($this->getProperty($name, $value, $scope) === null)
-    {
-      $newCode = new QubitProperty;
-           $newCode->setObjectId($this->getId());
-           $newCode->setScope($scope);
-           $newCode->setName($name);
-           $newCode->setValue($value);
-           $newCode->save();
-    }
-    
+    $property = QubitProperty::addProperty($this->getId(), $name, $value, 
$options);
+
     return $this;
   }
-  
-  /**
-   * Get an existing property related to this actor.
-   *
-   * @param string $name  name of property
-   * @param string $value value of property
-   * @param string $scope scope note (default: null)
-   * @return mixed QubitProperty if match found, null if no match
-   */
-  public function getProperty($name, $value, $scope = null)
-  {
-    $criteria = new Criteria;
-    $criteria->add(QubitProperty::OBJECT_ID, $this->getId());
-    $criteria->add(QubitProperty::NAME, $name);
-    $criteria->add(QubitProperty::VALUE, $value);
-    $criteria->add(QubitProperty::SCOPE, $scope);
-    
-    return QubitProperty::getOne($criteria);
-  }
 
   public function getProperties($name = null, $scope = null)
   {
@@ -316,7 +289,7 @@
     $criteria->add(QubitContactInformation::ACTOR_ID, $this->getId());
     
$criteria->addDescendingOrderByColumn(QubitContactInformation::PRIMARY_CONTACT);
     $contactInformation = QubitContactInformation::get($criteria);
-  
+
     return $contactInformation;
   }
 
@@ -326,7 +299,7 @@
     $criteria->add(QubitContactInformation::ACTOR_ID, $this->getId());
     $criteria->add(QubitContactInformation::PRIMARY_CONTACT, true);
     $primaryContact = QubitContactInformation::getOne($criteria);
-  
+
     if ($primaryContact)
     {
       return $primaryContact;
@@ -335,7 +308,7 @@
     {
       $criteria = new Criteria;
       $criteria->add(QubitContactInformation::ACTOR_ID, $this->getId());
-  
+
       return QubitContactInformation::getOne($criteria);
     }
   }
@@ -358,7 +331,7 @@
   {
     $newTermRelation = new QubitObjectTermRelation;
     $newTermRelation->setTermId($termId);
-    
+
     //TODO: move to QubitNote
     //  $newTermRelation->setRelationNote($relationNote);
     $newTermRelation->setObjectId($this->getId());
@@ -369,13 +342,13 @@
   {
     $criteria = new Criteria;
     $criteria->add(QubitObjectTermRelation::OBJECT_ID, $this->getId());
-  
+
     if ($taxonomyId != 'all')
     {
       $criteria->addJoin(QubitObjectTermRelation::TERM_ID, QubitTERM::ID);
       $criteria->add(QubitTerm::TAXONOMY_ID, $taxonomyId);
     }
-  
+
     return QubitObjectTermRelation::get($criteria);
   }
 
@@ -385,7 +358,7 @@
     $criteria->add(QubitEvent::ACTOR_ID, $this->getId());
     $criteria->add(QubitEvent::TYPE_ID, QubitTerm::EXISTENCE_ID);
     $event = QubitEvent::getOne($criteria);
-  
+
     return $event;
   }
 
@@ -409,7 +382,7 @@
     $criteria->add(QubitEvent::ACTOR_ID, $this->getId());
     $criteria->addJoin(QubitEvent::INFORMATION_OBJECT_ID, 
QubitInformationObject::ID);
     $criteria->addGroupByColumn(QubitEvent::INFORMATION_OBJECT_ID);
-  
+
     return QubitEvent::get($criteria);
   }
 }

Modified: trunk/qubit/lib/model/QubitInformationObject.php
===================================================================
--- trunk/qubit/lib/model/QubitInformationObject.php    2008-11-06 19:13:12 UTC 
(rev 1528)
+++ trunk/qubit/lib/model/QubitInformationObject.php    2008-11-06 20:11:41 UTC 
(rev 1529)
@@ -22,7 +22,7 @@
  * Extended methods for Information object model
  *
  * @package qubit
- * @subpackage datamodel
+ * @subpackage model
  * @author Jack Bates
  * @author Peter Van Garderen
  * @author David Juhasz <[EMAIL PROTECTED]>
@@ -433,45 +433,17 @@
    * 
    * @param string $name  Name of property
    * @param string $value Value of property
-   * @param string $scope Add scope note (optional)
+   * @param string $options array of optional parameters
    * @return QubitInformationObject this information object
    */
-  public function addProperty($name, $value, $scope = null)
+  public function addProperty($name, $value, $options = array())
   {
-    // Only add this property if an identical one does NOT exist already
-    if ($this->getProperty($name, $value, $scope) === null)
-    {
-      $newCode = new QubitProperty;
-      $newCode->setObjectId($this->getId());
-      $newCode->setName($name);
-      $newCode->setValue($value);
-      $newCode->setScope($scope);
-      $newCode->save();
-    }
+    $property = QubitProperty::addProperty($this->getId(), $name, $value, 
$options);
 
     return $this;
   }
 
   /**
-   * Get an existing property related to this information object.
-   * 
-   * @param string $name  name of property
-   * @param string $value value of property
-   * @param string $scope scope note (default: null)
-   * @return mixed QubitProperty if match found, null if no match
-   */
-  public function getProperty($name, $value, $scope = null)
-  {
-    $criteria = new Criteria;
-    $criteria->add(QubitProperty::OBJECT_ID, $this->getId());
-    $criteria->add(QubitProperty::NAME, $name);
-    $criteria->add(QubitProperty::VALUE, $value);
-    $criteria->add(QubitProperty::SCOPE, $scope);
-
-    return QubitProperty::getOne($criteria);
-  }
-
-  /**
    * Return all properties related to this information object,
    * with option of filtering by name and/or scope
    * 

Modified: trunk/qubit/lib/model/QubitProperty.php
===================================================================
--- trunk/qubit/lib/model/QubitProperty.php     2008-11-06 19:13:12 UTC (rev 
1528)
+++ trunk/qubit/lib/model/QubitProperty.php     2008-11-06 20:11:41 UTC (rev 
1529)
@@ -48,4 +48,84 @@
       SearchIndex::updateTranslatedLanguages($this->getObject());
     }
   }
+
+  /**
+   * Add a property related to this information object
+   *
+   * @param integer $objectId foreign key to QubitObject::ID
+   * @param string $name  Name of property
+   * @param string $value Value of property
+   * @param string $options array of optional parameters
+   * @return QubitInformationObject this information object
+   */
+  public static function addProperty($objectId, $name, $value, $options = 
array())
+  {
+    // Only add this property if an identical one does NOT exist already
+    if (QubitProperty::isPropertyExistent($objectId, $name, $value, $options))
+    {
+
+      return null;
+    }
+
+    // Save property
+    $newProperty = new QubitProperty;
+    $newProperty->setObjectId($objectId);
+    $newProperty->setName($name);
+    $newProperty->setValue($value, $options);
+
+    if (isset($options['scope']))
+    {
+      $newProperty->setScope($options['scope']);
+    }
+
+    $newProperty->save();
+
+    return $newProperty;
+  }
+
+  /**
+   * Get an existing property related to this information object.
+   *
+   * @param integer $objectId foreign key to QubitObject::ID
+   * @param string $name  name of property
+   * @param string $value value of property
+   * @param string $options array of optional parameters
+   * @return boolean true if QubitProperty exists
+   */
+  public static function isPropertyExistent($objectId, $name, $value, $options 
= array())
+  {
+    $propertyExists = false;
+
+    $criteria = new Criteria;
+    $criteria->addJoin(QubitProperty::ID, QubitPropertyI18n::ID);
+    $criteria->add(QubitProperty::OBJECT_ID, $objectId);
+    $criteria->add(QubitProperty::NAME, $name);
+    $criteria->add(QubitPropertyI18n::VALUE, $value);
+
+    if (isset($options['culture']))
+    {
+      $criteria->add(QubitPropertyI18n::CULTURE, $options['culture']);
+    }
+    else if (isset($options['sourceCulture']))
+    {
+      $criteria->add(QubitPropertyI18n::CULTURE, 
QubitProperty::SOURCE_CULTURE.' = '.QubitPropertyI18n::CULTURE, 
Criteria::CUSTOM);
+    }
+    else
+    {
+      $criteria->add(QubitPropertyI18n::CULTURE, 
sfPropel::getDefaultCulture());
+    }
+
+    if (isset($options['scope']))
+    {
+      $criteria->add(QubitProperty::SCOPE, $options['scope']);
+    }
+
+    // See if search returns a hit.
+    if (($property = QubitProperty::getOne($criteria)) !== null)
+    {
+      $propertyExists = true;
+    }
+
+    return $propertyExists;
+  }
 }


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to