예제 #1
0
 public function executeEdit()
 {
     /** @var \myUser $sfUser */
     $sfUser = sfContext::getInstance()->getUser();
     $userId = $sfUser->getSubscriberId();
     $schemaObj = $this->getCurrentSchema();
     $CurrentCulture = $sfUser->getCulture();
     //FIXME: If the user is an admin, set the available languages to all of the schema languages
     //FIXME: if the user has no languages set, silently set their language to the default (?)
     if ($userId) {
         $c = new Criteria();
         $c->add(SchemaHasUserPeer::USER_ID, $userId);
         $c->add(SchemaHasUserPeer::SCHEMA_ID, $schemaObj->getId());
         $schemaUser = SchemaHasUserPeer::doSelectOne($c);
         if ($sfUser->hasObjectCredential($schemaObj->getId(), 'schema', array(0 => array(0 => 'administrator', 2 => 'schemaadmin')))) {
             $UserLanguages = $schemaObj->getLanguages();
             $DefaultLanguage = $schemaObj->getLanguage();
         } else {
             if ($schemaUser) {
                 $UserLanguages = $schemaUser->getLanguages();
                 $DefaultLanguage = $schemaUser->getDefaultLanguage();
             } else {
                 //set the languages from the schema
                 $UserLanguages = $schemaObj->getLanguages();
                 $DefaultLanguage = $schemaObj->getLanguage();
             }
         }
         if (is_array($UserLanguages) && !in_array($CurrentCulture, $UserLanguages)) {
             //save the current culture
             $UserCulture = $sfUser->getCulture();
             $this->getUser()->setAttribute("UserCulture", $UserCulture);
             //reset the current culture for edit
             $sfUser->setCulture($DefaultLanguage);
             $this->getUser()->setAttribute("CurrentLanguage", $DefaultLanguage);
             $culture = new sfCultureInfo($this->getUser()->getCulture());
             $this->setFlash('notice', 'Current language is not available for edit! Current editing language has been reset to: ' . $culture->getNativeName());
         }
         $this->getUser()->setAttribute("languages", $UserLanguages);
     }
     parent::executeEdit();
     /** @var $schemaProperty SchemaProperty */
     $schemaProperty = $this->schema_property;
     if ($schemaProperty) {
         $schemaObj = $this->getCurrentSchema();
         $schemaProperty->setSchemaUri($schemaObj->getNamespace());
         $lexUri = $schemaProperty->getLexicalAlias();
         if (empty($lexUri)) {
             $newURI = $schemaObj->getNamespace();
             $this->setDefaultLexicalAlias($schemaProperty, $newURI);
         }
     }
 }
 /**
  * @return SchemaHasUser
  */
 public function getSchemaForUser()
 {
     $schemaId = $this->getSchemaId();
     $userId = sfContext::getInstance()->getUser()->getSubscriberId();
     $c = new Criteria();
     $c->add(SchemaHasUserPeer::SCHEMA_ID, $schemaId);
     $c->add(SchemaHasUserPeer::USER_ID, $userId);
     return SchemaHasUserPeer::doSelectOne($c);
 }