コード例 #1
0
ファイル: user_class.inc.php プロジェクト: eguicciardi/ada
 public function toArray()
 {
     $user_dataAr = parent::toArray();
     $user_dataAr['tariffa'] = $this->tariffa;
     $user_dataAr['profilo'] = $this->profilo;
     return $user_dataAr;
 }
コード例 #2
0
ファイル: multiport.inc.php プロジェクト: eguicciardi/ada
 /**
  * Updates an existing user
  *
  * @param  ADAGenericUser $userObj
  * @param  $testers array
  * @return boolean
  */
 public static function setUser(ADALoggableUser $userObj, $new_testers = array(), $update_user_data = FALSE, $extraTableName = false)
 {
     $user_id = $userObj->getId();
     $testers = $userObj->getTesters();
     $testers_to_add = array();
     if (!is_array($testers)) {
         $testers = array();
     }
     if ($user_id == 0) {
         return FALSE;
     }
     $common_dh = AMA_Common_DataHandler::instance();
     $user_dataAr = $userObj->toArray();
     if ($update_user_data) {
         $result = $common_dh->set_user($user_id, $user_dataAr);
         if (AMA_Common_DataHandler::isError($result)) {
             //return ADA_SET_USER_ERROR;
         }
     }
     if ($update_user_data) {
         $idFromPublicTester = 0;
         foreach ($testers as $tester) {
             $tester_dh = AMA_DataHandler::instance(MultiPort::getDSN($tester));
             //
             switch ($userObj->getType()) {
                 case AMA_TYPE_STUDENT:
                     /**
                      * @author giorgio
                      * if it's an extraTable I need set_student to return me the id of the inserted
                      * record in the table on DEFAULT that will be used as an id for all other providers
                      */
                     $result = $tester_dh->set_student($user_id, $user_dataAr, $extraTableName, $userObj, $idFromPublicTester);
                     break;
                 case AMA_TYPE_AUTHOR:
                     $result = $tester_dh->set_author($user_id, $user_dataAr);
                     break;
                 case AMA_TYPE_SUPERTUTOR:
                 case AMA_TYPE_TUTOR:
                     $result = $tester_dh->set_tutor($user_id, $user_dataAr);
                     break;
                 case AMA_TYPE_SWITCHER:
                     $result = $tester_dh->set_user($user_id, $user_dataAr);
                     break;
                 case AMA_TYPE_ADMIN:
                     $result = $tester_dh->set_user($user_id, $user_dataAr);
                     break;
             }
             if (AMA_DataHandler::isError($result)) {
                 if ($result->code == AMA_ERR_NOT_FOUND) {
                     $testers_to_add[] = $tester;
                 }
                 //return ADA_SET_USER_ERROR_TESTER;
             }
         }
     }
     // se sono qui, verifico se in new_testers ci sono dei tester nuovi e li associo all'utente
     $testers_to_add = array_merge($testers_to_add, array_diff($new_testers, $testers));
     $pwd = $common_dh->_get_user_pwd($user_id);
     if (AMA_DataHandler::isError($pwd)) {
         // if there is an error, we MUST insert a fake password in provider DB
         $pwd = sha1($user_id);
     }
     $user_dataAr['password'] = $pwd;
     foreach ($testers_to_add as $tester_to_add) {
         // aggiungi utente nella tabella utente del tester
         $tester_dh = AMA_DataHandler::instance(MultiPort::getDSN($tester_to_add));
         // we have to use different functions for different user types
         switch ($userObj->getType()) {
             case AMA_TYPE_STUDENT:
                 $result = $tester_dh->add_student($user_dataAr);
                 $result = $tester_dh->set_student($user_id, $user_dataAr, $extraTableName, $userObj);
                 if ($userObj->hasExtra()) {
                     if (method_exists('ADAUser', 'getExtraTableName')) {
                         $tableName = ADAUser::getExtraTableName();
                         if (strlen($tableName) > 0) {
                             $tester_dh->set_student($user_id, $user_dataAr, $tableName, $userObj);
                         }
                     }
                     if (method_exists('ADAUser', 'getLinkedTables')) {
                         $linkedTables = ADAUser::getLinkedTables();
                         if (is_array($linkedTables) && count($linkedTables) > 0) {
                             foreach ($linkedTables as $tableName) {
                                 // force the record to be saved in the provider we're adding the user
                                 if (isset($user_dataAr[$tableName]) && is_array($user_dataAr[$tableName])) {
                                     foreach ($user_dataAr[$tableName] as $i => $notused) {
                                         $storedID = $user_dataAr[$tableName][$i][$tableName::getKeyProperty()];
                                         $user_dataAr[$tableName][$i][$tableName::getKeyProperty()] = 0;
                                         $user_dataAr[$tableName][$i]['_isSaved'] = 0;
                                         $result = $tester_dh->set_student($user_id, $user_dataAr, $tableName, $userObj, $storedID);
                                         if (!AMA_DB::isError($result)) {
                                             $user_dataAr[$tableName][$i]['_isSaved'] = 1;
                                         }
                                     }
                                     //$result = $tester_dh->set_student($user_id,$user_dataAr, $tableName, $userObj, $storedID);
                                 }
                             }
                         }
                     }
                 }
                 break;
             case AMA_TYPE_AUTHOR:
                 $result = $tester_dh->add_author($user_dataAr);
                 break;
             case AMA_TYPE_SUPERTUTOR:
             case AMA_TYPE_TUTOR:
                 $result = $tester_dh->add_tutor($user_dataAr);
                 break;
             case AMA_TYPE_SWITCHER:
                 $result = $tester_dh->add_user($user_dataAr);
                 break;
             case AMA_TYPE_ADMIN:
                 $result = $tester_dh->add_user($user_dataAr);
                 break;
         }
         if (AMA_DataHandler::isError($result)) {
             //return ADA_SET_USER_ERROR_TESTER_ASSOCIATION;
         }
     }
     /*
      * If the user has subscribed to at least one tester, add the user
      * to the utente_tester table in common database.
      */
     foreach ($testers_to_add as $tester_to_add) {
         $testerHa = $common_dh->get_tester_info_from_pointer($tester_to_add);
         $tester_id = $testerHa[0];
         $res = $common_dh->add_user_to_tester($user_id, $tester_id);
         if (AMA_DataHandler::isError($res)) {
             if ($res->code != AMA_ERR_ADD and $res->code != AMA_ERR_UNIQUE_KEY) {
                 //return ADA_SET_USER_ERROR_TESTER;
                 return false;
             }
         } else {
             $userObj->addTester($tester_to_add);
         }
     }
     if (isset($result)) {
         return $result;
     }
 }