/**
 * set the html for user settings page
 * this function is registered in xajax
 * @return xajaxResponse every xajax registered function needs to return this object
 */
function action_get_user_settings_page()
{
    global $logging;
    global $user;
    global $user_settings_table_configuration;
    global $firstthingsfirst_portal_title;
    global $user_start_time_array;
    $logging->info("USER_ACTION " . __METHOD__ . " (user="******")");
    # store start time
    $user_start_time_array[__METHOD__] = microtime(TRUE);
    # create necessary objects
    $result = new Result();
    $response = new xajaxResponse();
    $html_database_table = new HtmlDatabaseTable($user_settings_table_configuration);
    # create an array with selection of fields that user may change
    $db_fields_array = array(DB_ID_FIELD_NAME, USER_NAME_FIELD_NAME, USER_PW_FIELD_NAME, USER_LANG_FIELD_NAME, USER_DATE_FORMAT_FIELD_NAME, USER_DECIMAL_MARK_FIELD_NAME, USER_LINES_PER_PAGE_FIELD_NAME, USER_THEME_FIELD_NAME);
    $user_record_key_string = DatabaseTable::_get_encoded_key_string(array(DB_ID_FIELD_NAME => $user->get_id()));
    # set page, title, explanation and navigation
    $response->assign("page_title", "innerHTML", translate("LABEL_USER_SETTINGS_TITLE"));
    $response->assign("navigation_container", "innerHTML", get_page_navigation(PAGE_TYPE_USER_SETTINGS));
    $html_database_table->get_page(translate("LABEL_USER_SETTINGS_TITLE"), $result);
    $response->assign("main_body", "innerHTML", $result->get_result_str());
    # get action pane for current user
    $html_database_table->get_record($user, USER_TABLE_NAME, $user_record_key_string, $db_fields_array, $result);
    $response->custom_response->assign_with_effect("action_pane", $result->get_result_str());
    # set footer
    $response->assign("footer_text", "innerHTML", " ");
    # check post conditions
    if (check_postconditions($result, $response) == FALSE) {
        return $response;
    }
    # log total time for this function
    $logging->info(get_function_time_str(__METHOD__));
    return $response;
}
Beispiel #2
0
 function __construct($primaryID = 0)
 {
     parent::__construct($primaryID);
     // Force "Enable fixtures" for tournaments
     if ($this->getCompetitionType() == 'Tournament') {
         $this->setFieldDB('FixturesEnable', TRUE);
     }
 }
Beispiel #3
0
 /**
  * Connects to the sql database and runs a sql query.
  *
  * @param  sql_query $sql   mysql query to be performed on the database.
  * @return object|boolean   returns a mysqli_result object if data is retrieved from the database
  *                          or boolean value if there is no data(true on success/false on failure).
  */
 protected static final function query($sql)
 {
     if (self::$conn == null) {
         self::$conn = new mysqli(self::$servername, self::$username, self::$password, self::$dbname);
         if (self::$conn->connect_error) {
             die("Connection failed: " . self::$conn->connect_error);
         }
     }
     return self::$conn->query($sql);
 }
Beispiel #4
0
 /**
  * Constructor
  * Use $db->createResult( $parent, $name ) instead
  *
  * @param Database|DatabaseTable $parent
  * @param string $name
  *
  * @since 1.0.0
  */
 public function __construct($parent, $name)
 {
     if ($parent instanceof Database) {
         // basic result
         $this->db = $parent;
         $this->table = $this->db->schema()->getAlias($name);
         $this->query = DatabaseQuery::getInstance()->from($this->table);
     } else {
         // result referenced to parent
         $this->parent = $parent;
         $this->db = $parent->getDatabase();
         $this->query = $parent->getDatabaseQuery();
         // determine type of reference based on conventions and user hints
         $this->table = $this->db->schema()->isAlias($name) ? $this->db->schema()->getTable($name) : $name;
         if ($parent->getTable() == $this->table) {
             $this->key = $this->db->schema()->getPrimary($this->getTable());
             $this->parentKey = $this->db->schema()->getReference($parent->getTable(), $name);
         } else {
             $this->key = $this->db->schema()->getBackReference($parent->getTable(), $name);
             $this->parentKey = $this->db->schema()->getPrimary($parent->getTable());
         }
     }
 }
Beispiel #5
0
 /**
  * Update the base quantity value for a give item.
  *
  * @param  int  $item_id    id of the item of which the quantity will be updated.
  * @param  int  $quantity   new quantity value to be updated.
  * @return boolean          returns true on successful query or false if it fails.
  */
 public static function update_base_quantity($item_id, $quantity)
 {
     $sql = "INSERT INTO BaseQuantity (item_id, quantity)\n                VALUES ('{$item_id}', '{$quantity}')\n                ON DUPLICATE KEY UPDATE item_id = VALUES(item_id), quantity = VALUES(quantity)";
     return parent::query($sql);
 }
Beispiel #6
0
 /**
  * Get all messages for a given conversation.
  *
  * @param  int   $conversation_id    Id of the conversation to get messages of.
  * @return object|false              Returns mysqli_result object on query success or false if query fails.
  */
 public static function get_messages($conversation_id)
 {
     $sql = "SELECT * FROM Message\n                INNER JOIN (SELECT first_name, last_name, username FROM User) as nameTable\n                ON nameTable.username = Message.sender\n                WHERE conversation_id = '{$conversation_id}'\n                ORDER BY `timestamp` ASC";
     return parent::query($sql);
 }
Beispiel #7
0
 /**
  * Set variables for a session for a given user.
  *
  * @param string $user_name     Name of user to set variables for.
  * @return boolean              Returns true on query success and false if it fails.
  */
 public static function set_session_variables($user_name)
 {
     $sql = "SELECT * FROM User\n                INNER JOIN UserRole ON User.userrole_id = UserRole.id\n                WHERE username='******'";
     if (!($result = parent::query($sql))) {
         return false;
     }
     $row = $result->fetch_assoc();
     $_SESSION["username"] = $user_name;
     $_SESSION["userrole"] = $row["role"];
     if (!empty($row["time_zone"])) {
         $_SESSION["timezone"] = $row["time_zone"];
     } else {
         $_SESSION["timezone"] = date_default_timezone_get();
     }
     $_SESSION["date"] = date_format(date_create(NULL, timezone_open($_SESSION["timezone"])), "Y-m-d");
     $_SESSION["time_out"] = $row["time_out"];
     return true;
 }
Beispiel #8
0
 /**
  * Update factor for given table id.
  *
  * @param  int $timeslot_inventory_id    Id of table row to update.
  * @param  int $factor                   New factor value.
  * @return boolean               Returns true on query success and false if item already exists.
  */
 public static function update_timeslot_factor($timeslot_inventory_id, $factor)
 {
     $sql = "UPDATE TimeSlotItem\n                SET factor = '{$factor}'\n                WHERE id = '{$timeslot_inventory_id}'";
     return parent::query($sql);
 }
 /**
  * Execute a WHERE query in linear fashion.
  * @global DatabaseConnector $dbConn
  * @param string $where where conditions
  * @param array $params parameters to be bound
  * @return boolean success
  */
 public static function StartLinearWhere($where, $params = array())
 {
     global $dbConn;
     $class = get_called_class();
     $tmp = new $class();
     $db_column_elements = $tmp->getColumnElements();
     $column_names = array();
     foreach ($db_column_elements as $column) {
         $column_names[] = $column->getColumnName();
     }
     $cols = implode(", ", $column_names);
     return DatabaseTable::StartCustomLinearQuery("\n            SELECT {$cols}\n            FROM {$tmp->getTableName()}\n            WHERE {$where}\n            ", $params, $class);
 }
Beispiel #10
0
 /**
  * Update order value for given timeslot.
  *
  * @param  string   $timeslot_name  Name of timeslot to update.
  * @param  int      $order_id       New order value.
  * @return boolean                  Returns true on query success and false if item already exists.
  */
 public static function update_timeslot_order($timeslot_name, $order_id)
 {
     $sql = "UPDATE TimeSlots\n                SET order_id = '{$order_id}'\n                WHERE name = '{$timeslot_name}'";
     return parent::query($sql);
 }
Beispiel #11
0
 protected function __construct($tableName, $id)
 {
     $this->table = DatabaseTable::getTableWithName($tableName);
     $this->id = $id;
 }
Beispiel #12
0
 /**
  * Update base sales with given value.
  *
  * @param  int $base_sales   New value for base sales.
  * @return boolean           Return true on query success and false if it fails.
  */
 public static function update_base_sales($base_sales)
 {
     $sql = "INSERT INTO Variables (name, value)\n                VALUES ('BaseSales', '{$base_sales}')\n                ON DUPLICATE KEY UPDATE name = VALUES(name), value = VALUES(value)";
     return parent::query($sql);
 }
/**
 * update a record
 * this function is registered in xajax
 * @param string $title title of page
 * @param string $key_string comma separated name value pairs
 * @param array $form_values values of new record (array of name value pairs)
 * @return xajaxResponse every xajax registered function needs to return this object
 */
function action_update_user_admin_record($title, $key_string, $form_values)
{
    global $logging;
    global $user;
    global $user_admin_table_configuration;
    global $firstthingsfirst_field_descriptions;
    global $user_start_time_array;
    # WARNING: this function is almost identical to function UserSettings::action_update_user_setting_record
    # changes in this function should also lead to changes in that function
    $logging->info("USER_ACTION " . __METHOD__ . " (user="******", title={$title}, key_string={$key_string})");
    # store start time
    $user_start_time_array[__METHOD__] = microtime(TRUE);
    $html_str = "";
    $name_keys = array_keys($form_values);
    $new_form_values = array();
    $fields = $user->get_fields();
    $field_keys = array_keys($fields);
    # create the key_string for user admin (who always has id=1)
    $key_string_admin_user = DatabaseTable::_get_encoded_key_string(array(DB_ID_FIELD_NAME => "1"));
    # create necessary objects
    $result = new Result();
    $response = new xajaxResponse();
    $html_database_table = new HtmlDatabaseTable($user_admin_table_configuration);
    foreach ($name_keys as $name_key) {
        $value_array = explode(GENERAL_SEPARATOR, $name_key);
        $db_field_name = $value_array[0];
        $field_type = $value_array[1];
        $field_number = $value_array[2];
        $check_functions = explode(" ", $firstthingsfirst_field_descriptions[$field_type][FIELD_DESCRIPTION_FIELD_INPUT_CHECKS]);
        $result->reset();
        $logging->debug("field (name=" . $db_field_name . ", type=" . $field_type . ", number=" . $field_number . ")");
        # check field values (check password field only when new password has been set)
        if ($db_field_name != USER_PW_FIELD_NAME || $db_field_name == USER_PW_FIELD_NAME && strlen($form_values[$name_key]) > 0) {
            check_field($check_functions, $db_field_name, $form_values[$name_key], $user->get_date_format(), $result);
            if (strlen($result->get_error_message_str()) > 0) {
                set_error_message($name_key, "right", $result->get_error_message_str(), "", "", $response);
                return $response;
            }
        }
        # set new value
        $new_form_values[$db_field_name] = $result->get_result_str();
        $logging->debug("setting new form value (db_field_name=" . $db_field_name . ", result=" . $result->get_result_str() . ")");
    }
    # check if all booleans have been set
    foreach ($field_keys as $db_field_name) {
        if ($fields[$db_field_name][1] == FIELD_TYPE_DEFINITION_BOOL) {
            if (!isset($new_form_values[$db_field_name])) {
                $logging->debug("found an unset bool field");
                $new_form_values[$db_field_name] = "0";
            }
        }
    }
    # check if someone tries to change user admin
    if ($key_string_admin_user == $key_string) {
        # check if the name of user admin is changed
        if ($new_form_values[USER_NAME_FIELD_NAME] != "admin") {
            set_error_message("record_contents_buttons", "right", "ERROR_CANNOT_UPDATE_NAME_USER_ADMIN", "", "", $response);
            return $response;
        }
        # check if the permissions of user admin is changed
        if ($new_form_values[USER_CAN_CREATE_LIST_FIELD_NAME] != "1" || $new_form_values[USER_IS_ADMIN_FIELD_NAME] != "1") {
            set_error_message("record_contents_buttons", "right", "ERROR_CANNOT_UPDATE_PERMISSIONS_USER_ADMIN", "", "", $response);
            return $response;
        }
    }
    # display error when insertion returns false
    if (!$user->update($key_string, $new_form_values)) {
        $logging->warn("update user admin record returns false");
        $error_message_str = $user->get_error_message_str();
        $error_log_str = $user->get_error_log_str();
        $error_str = $user->get_error_str();
        set_error_message("record_contents_buttons", "right", $error_message_str, $error_log_str, $error_str, $response);
        return $response;
    }
    # set content
    $result->reset();
    $html_database_table->get_content($user, $title, "", DATABASETABLE_UNKWOWN_PAGE, $result);
    $response->custom_response->assign_with_effect(USER_ADMIN_CSS_NAME_PREFIX . "content_pane", $result->get_result_str());
    # set action pane
    $html_str = $html_database_table->get_action_bar($title, "");
    $response->custom_response->assign_with_effect("action_pane", $html_str);
    # check post conditions
    if (check_postconditions($result, $response) == FALSE) {
        return $response;
    }
    # log total time for this function
    $logging->info(get_function_time_str(__METHOD__));
    return $response;
}
 /**
  * delete all existing notes from database for given field name
  * @param $field_name string field name
  * @return bool indicates if ListTableNote has been deleted
  */
 function delete_field_notes($field_name)
 {
     $this->_log->trace("deleting ListTableNotes (field_name={$field_name})");
     # create encoded_key_string
     $encoded_key_string = parent::_encode_key_string(LISTTABLENOTE_FIELD_NAME_FIELD_NAME . "='{$field_name}'");
     if (parent::delete($encoded_key_string) == FALSE) {
         return FALSE;
     }
     $this->_log->trace("deleted ListTableNotes");
     return TRUE;
 }
Beispiel #15
0
 /**
  * Get recipes from the database.
  *
  * @param  string   $date       Date till which categories will be retrieved.
  * @return object|false         Returns mysqli_result object if data is retrieved or false if query fails.
  */
 public static function get_recipes($date)
 {
     $sql = "SELECT * FROM Recipe\n                WHERE creation_date <= '{$date}' AND (deletion_date > '{$date}' OR deletion_date IS NULL)\n                ORDER BY order_id ASC";
     return parent::query($sql);
 }
Beispiel #16
0
 /**
  * Count unread conversations for a given user.
  *
  * @param  string $user Name of user whos conversations will be counted.
  * @return int          Returns count value on query success.
  * @throws exception    If query fails.
  */
 public static function count_unread_conversations($user)
 {
     $sql = "SELECT COUNT(id) AS unreadConversations FROM Conversation\n                WHERE (sender = '{$user}' AND sender_conversationStatusId = (SELECT id FROM ConversationStatus WHERE status = 'unread'))\n                OR (receiver = '{$user}' AND receiver_conversationStatusId = (SELECT id FROM ConversationStatus WHERE status = 'unread'))";
     if ($result = parent::query($sql)) {
         return $result->fetch_assoc()['unreadConversations'];
     } else {
         throw new Exception("count_unread_conversations query failed");
     }
 }
 /**
  * delete all existing attachments from database for given record id
  * @param $record_id int unique identifier of a ListTable object
  * @return bool indicates if ListTableAttachment has been deleted
  */
 function delete_record_attachments($record_id)
 {
     $this->_log->trace("deleting ListTableAttachments (record_id={$record_id})");
     # create encoded_key_string
     $encoded_key_string = parent::_encode_key_string(LISTTABLEATTACHMENT_RECORD_ID_FIELD_NAME . "='{$record_id}'");
     if (parent::delete($encoded_key_string) == FALSE) {
         return FALSE;
     }
     $this->_log->trace("deleted ListTableAttachments");
     return TRUE;
 }
Beispiel #18
0
 /**
  * Updates role for given user.
  *
  * @param  string $user_name Name of user to update role of.
  * @param  string $role      Name of the new role.
  * @return boolean           Returns true on query success or false if it fails.
  */
 public static function update_user_role($user_name, $role)
 {
     $sql = "UPDATE User\n                SET userrole_id= (SELECT id FROM UserRole WHERE role='{$role}')\n                WHERE username='******'";
     return parent::query($sql);
 }
            }
        }
    }
    $count = $count + 1;
    #echo "\n";
}
#var_dump($field_is_reqd);
# need to issue a query against the desired table to get the metadata
$query = "SELECT * FROM {$tablename}";
# on success this returns an MDB2_Result handle
# TODO - deal with the failure condition here
#$result = $mdb->query($query, true, true, 'MDB2_BufferedIterator');
$result =& $mdb->query($query, true, true);
# now that we have a result set, we can get the field types
# as an array:
$dt = new DatabaseTable();
$dt->set_raw_table_name($tablename);
$dt->set_tablename_prefix($tablename_prefix);
$dt->set_raw_field_names($table_field_names);
$dt->set_db_field_types($result->types);
$dt->set_field_is_reqd($field_is_reqd);
# this is needed, esp. for the play_field_types
# assign all the smarty variables we support
$smarty->assign('classname', $dt->get_camelcase_table_name());
$smarty->assign('objectname', $dt->get_java_object_name());
$smarty->assign('tablename', $tablename);
$smarty->assign('tablename_clean', $dt->get_clean_table_name());
$smarty->assign('tablename_clean_singular', $dt->get_clean_table_name_singular());
$smarty->assign('fields', $table_field_names);
# NEW
$smarty->assign('field_is_reqd', $dt->get_field_is_reqd());
Beispiel #20
0
 /**
  * Update inventory entry if exists or create a new one.
  *
  * @param  string   $date        Date value to update or add.
  * @param  int      $item_id     Id of item to add if id doesn't exist.
  * @param  int      $quantity    Quantity value to update or add.
  * @param  string   $item_note   Note value to update or add.
  * @return boolean               Returns true on query success or false if it fails.
  */
 public static function update_inventory($date, $item_id, $quantity, $item_note)
 {
     $sql = "INSERT INTO Inventory (`date`, item_id, quantity, notes)\n                VALUES ('{$date}', '{$item_id}', '{$quantity}', '{$item_note}')\n                ON DUPLICATE KEY UPDATE\n                `date`= VALUES(`date`), item_id = VALUES(item_id), quantity = VALUES(quantity), notes = VALUES(notes)";
     return parent::query($sql);
 }
Beispiel #21
0
 /**
  * Get data for print preview table for a given timeslot
  *
  * @param  string $date          Date till which data should be retrieved.
  * @param  string $timeslot_name Name of timeslot to get data for.
  * @return object|false          Returns mysqli_result object if data is retrieved or false if query fails.
  */
 public static function get_print_preview_timeslots($date, $timeslot_name)
 {
     $sql = "SELECT  Category.name as category_name, Item.name as item_name, Item.id as item_id,\n                        IFNULL(unit, '-') as unit, IFNULL(quantity, '-') as quantity, Inv.notes as notes,\n                        Category.order_id as Cat_order, Item.order_id as Item_order, TimeSlotItem.factor,\n                        Item.rounding_option, Item.rounding_factor\n                FROM Category\n                INNER JOIN Item ON Item.category_id = Category.id\n                INNER JOIN TimeSlotItem ON Item.id = TimeSlotItem.item_id\n                LEFT OUTER JOIN (SELECT * FROM Inventory WHERE date='{$date}') AS Inv ON Inv.item_id = Item.id\n                WHERE (Category.creation_date <= '{$date}' AND (Category.deletion_date > '{$date}' OR Category.deletion_date IS NULL))\n                AND (Item.creation_date <= '{$date}' AND (Item.deletion_date > '{$date}' OR Item.deletion_date IS NULL))\n                AND TimeSlotItem.timeslot_id = (SELECT id from TimeSlots WHERE name = '{$timeslot_name}')\n                ORDER BY Cat_order, Item_order";
     return parent::query($sql);
 }
 /**
  * activate an existing record in database
  * @param $encoded_key_string string unique identifier of record to be archived
  * @return bool indicates if record has been archived
  */
 function activate($encoded_key_string)
 {
     $this->_log->trace("activating record from UserDatabaseTable (encoded_key_string=" . $encoded_key_string . ")");
     # call parent archive()
     if (parent::activate($encoded_key_string, $this->_user->get_name()) == FALSE) {
         return FALSE;
     }
     $this->_log->trace("activated record from UserDatabaseTable");
     return TRUE;
 }
Beispiel #23
0
# need the Manager module to do our magic
# @see http://pear.php.net/package/MDB2/docs/latest/MDB2/MDB2_Driver_Manager_Common.html
$mdb->loadModule('Manager');
// Extended, Datatype, Manager, Reverse, Native, Function
# get all the field names
$table_field_names = $mdb->listTableFields($table_name);
$nfields = count($table_field_names);
# need to issue a query against the desired table to get the metadata
$query = "SELECT * FROM {$table_name}";
# on success this returns an MDB2_Result handle
# TODO - deal with the failure condition here
#$result = $mdb->query($query, true, true, 'MDB2_BufferedIterator');
$result =& $mdb->query($query, true, true);
# now that we have a result set, we can get the field types
# as an array:
$dt = new DatabaseTable();
$dt->set_raw_table_name($table_name);
$dt->set_raw_field_names($table_field_names);
$dt->set_db_field_types($result->types);
# assign all the smarty variables
$smarty->assign('classname', $dt->get_camelcase_table_name());
$smarty->assign('objectname', $dt->get_java_object_name());
$smarty->assign('tablename', $table_name);
$smarty->assign('fields', $dt->get_camelcase_field_names());
$smarty->assign('fields_as_insert_csv_string', $dt->get_fields_as_insert_stmt_csv_list());
$smarty->assign('prep_stmt_as_insert_csv_string', $dt->get_prep_stmt_insert_csv_string());
$smarty->assign('prep_stmt_as_update_csv_string', $dt->get_fields_as_update_stmt_csv_list());
$smarty->assign('types', $dt->get_java_field_types());
$smarty->assign('dt', $dt);
# TODO - this is hard-coded
$out = $smarty->fetch("{$template}.tpl");
Beispiel #24
0
 /**
  * Update quantity for given recipe table item.
  *
  * @param  int $quantity                Value of quantity to update.
  * @param  int $recipe_inventory_id     Id of table row to update.
  * @return boolean                      Returns true on query success and false if item already exists.
  */
 public static function update_recipe_inventory_quantity($quantity, $recipe_inventory_id)
 {
     $sql = "UPDATE RecipeItems\n                SET quantity = '{$quantity}'\n                WHERE id = '{$recipe_inventory_id}'";
     return parent::query($sql);
 }
Beispiel #25
0
 /**
  * Update a given items rounding factor.
  *
  * @param  int $rounding_factor     New rounding factor value.
  * @param  int $item_id             Id of item to update
  * @return boolean                  Returns true on query success and false if it fails.
  */
 public static function update_rounding_factor($rounding_factor, $item_id)
 {
     $sql = "UPDATE Item\n                SET rounding_factor = '{$rounding_factor}'\n                WHERE id = '{$item_id}'";
     return parent::query($sql);
 }