/**
  * check if user already exists
  * @param string $name name of user
  * @return bool indicates if user already exists
  */
 function exists($name)
 {
     # create encoded_key_string
     $encoded_key_string = parent::_encode_key_string(USER_NAME_FIELD_NAME . "='" . $name . "'");
     $record = parent::select_record($encoded_key_string);
     if (count($record) > 0) {
         $this->_log->debug("user already exists (name=" . $name . ")");
         return TRUE;
     } else {
         if (strlen($this->get_error_message_str()) == 0) {
             $this->_log->debug("user does not exist (name=" . $name . ")");
             return FALSE;
         } else {
             return FALSE;
         }
     }
 }
 /**
  * add new ListTableDescription object to database
  * @param array $name_values_array values of new ListTableDescription
  * @return bool indicates if ListTableDescription has been added
  */
 function insert($name_values_array)
 {
     $title = $name_values_array[LISTTABLEDESCRIPTION_TITLE_FIELD_NAME];
     $this->_log->trace("inserting ListTableDescription (title=" . $title . ")");
     $record = parent::select_record(LISTTABLEDESCRIPTION_TITLE_FIELD_NAME . "='" . $title . "'");
     if (count($record) > 0) {
         $this->_handle_error("this is a duplicate list", "ERROR_DUPLICATE_LIST_NAME");
         return FALSE;
     }
     # convert value
     if (array_key_exists(LISTTABLEDESCRIPTION_DEFINITION_FIELD_NAME, $name_values_array) == TRUE) {
         $name_values_array[LISTTABLEDESCRIPTION_DEFINITION_FIELD_NAME] = $this->_json->encode($name_values_array[LISTTABLEDESCRIPTION_DEFINITION_FIELD_NAME]);
     }
     if (parent::insert($name_values_array) == 0) {
         return FALSE;
     }
     if ($this->_user_list_permissions->insert_list_permissions_new_list($title) == FALSE) {
         # copy error strings from user_list_permissions
         $this->error_message_str = $this->_user_list_permissions->get_error_message_str();
         $this->error_log_str = $this->_user_list_permissions->get_error_log_str();
         $this->error_str = $this->_user_list_permissions->get_error_str();
         return FALSE;
     }
     $this->_log->trace("inserted ListTableDescription (title=" . $title . ")");
     return TRUE;
 }
 /**
  * select exactly one record from database
  * @param $encoded_key_string string unique identifier of requested ListTableItem
  * @return array array containing exactly one ListTableItem (which is an array)
  */
 function select_record($encoded_key_string)
 {
     $this->_log->trace("selecting record form ListTable (encoded_key_string=" . $encoded_key_string . ")");
     # call parent select_record()
     $record = parent::select_record($encoded_key_string, $this->db_field_names);
     if (count($record) != 0) {
         # get notes
         foreach ($this->db_field_names as $db_field_name) {
             if ($this->fields[$db_field_name][1] == FIELD_TYPE_DEFINITION_NOTES_FIELD) {
                 if ($record[$db_field_name] > 0) {
                     $result = $this->_list_table_note->select($record[DB_ID_FIELD_NAME], $db_field_name);
                     if (count($result) == 0 || count($result) != $record[$db_field_name]) {
                         $this->_log->warn("unexpected number of notes found (expected=" . $record[$db_field_name] . ", found=" . count($result) . ")");
                         $record[$db_field_name] = $result;
                     } else {
                         $record[$db_field_name] = $result;
                     }
                 } else {
                     $record[$db_field_name] = array();
                 }
             }
             if ($this->fields[$db_field_name][1] == FIELD_TYPE_DEFINITION_ATTACHMENTS) {
                 if ($record[$db_field_name] > 0) {
                     $result = $this->_list_table_attachment->select($record[DB_ID_FIELD_NAME]);
                     if (count($result) == 0 || count($result) != $record[$db_field_name]) {
                         $this->_log->warn("unexpected number of attachments found (expected=" . $record[$db_field_name] . ", found=" . count($result) . ")");
                         $record[$db_field_name] = $result;
                     } else {
                         $record[$db_field_name] = $result;
                     }
                 } else {
                     $record[$db_field_name] = array();
                 }
             }
         }
         $this->_log->trace("selected record form ListTable record");
         return $record;
     } else {
         return $record;
     }
 }