aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'php/lib/mirror.php')
-rw-r--r--php/lib/mirror.php531
1 files changed, 531 insertions, 0 deletions
diff --git a/php/lib/mirror.php b/php/lib/mirror.php
new file mode 100644
index 0000000..a618a86
--- /dev/null
+++ b/php/lib/mirror.php
@@ -0,0 +1,531 @@
+<?php
+/**
+ * Application functions. Dependent on lib/db.php!
+ * @package mirror
+ * @subpackage lib
+ * @todo add transactions once innodb table types are in place
+ */
+
+/**
+ * Get an alpha-list of regions for select list.
+ * @return array $regions
+ */
+function mirror_get_regions_select()
+{
+ $regions = db_get("SELECT region_id,region_name FROM mirror_regions ORDER BY region_name ASC",MYSQL_ASSOC);
+ foreach ($regions as $region) {
+ $retval[$region['region_id']]=$region['region_name'];
+ }
+ return $retval;
+}
+
+/**
+ * Get an priority-list of regions for select list.
+ * @return array $regions
+ */
+function mirror_get_regions_select_priority()
+{
+ $regions = db_get("SELECT region_id,region_name FROM mirror_regions ORDER BY region_priority ASC",MYSQL_ASSOC);
+ foreach ($regions as $region) {
+ $retval[$region['region_id']]=$region['region_name'];
+ }
+ return $retval;
+}
+
+/**
+ * Insert region.
+ * @param string $name
+ * @param int $priority
+ * @return bool
+ */
+function mirror_insert_region($name,$priority)
+{
+ return db_query("INSERT INTO mirror_regions(region_name,region_priority) VALUES('{$name}',{$priority})");
+}
+
+/**
+ * Update region.
+ * @param int $id
+ * @param string $name
+ * @param int $priority
+ * @return bool
+ */
+function mirror_update_region($id,$name,$priority)
+{
+ return db_query("UPDATE mirror_regions SET region_name='{$name}',region_priority={$priority} WHERE region_id={$id}");
+}
+
+/**
+ * Get one region.
+ * @param int $id
+ * @return array
+ */
+function mirror_get_one_region($id)
+{
+ return db_get_one("SELECT * FROM mirror_regions WHERE region_id = {$id}");
+}
+
+/**
+ * Delete a region.
+ * @param int $id
+ * @return bool
+ */
+function mirror_delete_region($id)
+{
+ return db_query("DELETE FROM mirror_regions WHERE region_id={$id}");
+}
+
+/**
+ * Get an alpha-list of mirrors for select list.
+ * @return array $mirrors
+ */
+function mirror_get_mirrors_select()
+{
+ $mirrors = db_get("SELECT mirror_id,mirror_name FROM mirror_mirrors ORDER BY mirror_name ASC",MYSQL_ASSOC);
+ foreach ($mirrors as $mirror) {
+ $retval[$mirror['mirror_id']]=$mirror['mirror_name'];
+ }
+ return $retval;
+}
+
+/**
+ * Get regions.
+ * @return array
+ */
+function mirror_get_regions()
+{
+ return db_get("
+ SELECT
+ mirror_regions.*,
+ COUNT(mirror_id) as mirrors
+ FROM
+ mirror_regions
+ LEFT JOIN
+ mirror_mirror_region_map
+ ON
+ mirror_regions.region_id = mirror_mirror_region_map.region_id
+ GROUP BY
+ mirror_regions.region_id
+ ",MYSQL_ASSOC);
+}
+
+/**
+ * Insert mirror.
+ * @param string $name
+ * @param int $region_id
+ * @param string $baseurl
+ * @param int $rating
+ * @return bool
+ */
+function mirror_insert_mirror($name,$region_id,$baseurl,$rating)
+{
+ return (db_query("INSERT INTO mirror_mirrors(mirror_name,mirror_baseurl,mirror_rating) VALUES('{$name}','{$baseurl}','{$rating}')") && db_query("INSERT INTO mirror_mirror_region_map(mirror_id,region_id) VALUES('".db_insert_id()."','$region_id')"))?true:false;
+}
+
+/**
+ * Update mirror.
+ * @param string $name
+ * @param int $region_id
+ * @param string $baseurl
+ * @param int $rating
+ * @return bool
+ */
+function mirror_update_mirror($id,$name,$region_id,$baseurl,$rating)
+{
+ return (db_query("UPDATE mirror_mirrors SET mirror_name='{$name}',mirror_baseurl='{$baseurl}',mirror_rating='{$rating}' WHERE mirror_id={$id}") && db_query("UPDATE mirror_mirror_region_map SET region_id={$region_id} WHERE mirror_id={$id}"))?true:false;
+}
+
+/**
+ * Delete mirror.
+ * @return bool
+ */
+function mirror_delete_mirror($mirror_id)
+{
+ return (db_query("DELETE FROM mirror_mirrors WHERE mirror_id={$mirror_id}")&&db_query("DELETE FROM mirror_mirror_region_map WHERE mirror_id={$mirror_id}"))?true:false;
+}
+
+/**
+ * Get one mirror record.
+ * @param int $mirror_id
+ * @return array mirror information
+ */
+function mirror_get_one_mirror($mirror_id)
+{
+ return db_get_one("SELECT mirror_mirrors.*,region_id FROM mirror_mirrors,mirror_mirror_region_map WHERE mirror_mirrors.mirror_id={$mirror_id} AND mirror_mirrors.mirror_id=mirror_mirror_region_map.mirror_id");
+}
+
+/**
+ * Get list of mirrors.
+ * @return array
+ */
+function mirror_get_mirrors()
+{
+ return db_get("
+ SELECT
+ mirror_mirrors.*,
+ IF(mirror_mirrors.mirror_active='0','DISABLED','ok') as mirror_active,
+ region_name
+ FROM
+ mirror_mirrors,
+ mirror_regions,
+ mirror_mirror_region_map
+ WHERE
+ mirror_regions.region_id = mirror_mirror_region_map.region_id AND
+ mirror_mirrors.mirror_id = mirror_mirror_region_map.mirror_id
+ ",MYSQL_ASSOC);
+}
+
+/**
+ * Insert product.
+ * @param string $name
+ * @param int $priority
+ * @return bool
+ */
+function mirror_insert_product($name,$priority)
+{
+ return db_query("INSERT INTO mirror_products(product_name,product_priority) VALUES('{$name}',{$priority})");
+}
+
+/**
+ * Update product.
+ * @param int $id
+ * @param string $name
+ * @param int $priority
+ * @return bool
+ */
+function mirror_update_product($id,$name,$priority)
+{
+ return db_query("UPDATE mirror_products SET product_name='{$name}',product_priority={$priority} WHERE product_id={$id}");
+}
+
+/**
+ * Get one product.
+ * @param int $id
+ * @return array
+ */
+function mirror_get_one_product($id)
+{
+ return db_get_one("SELECT * FROM mirror_products WHERE product_id = {$id}");
+}
+
+/**
+ * Delete a product.
+ * @param int $id
+ * @return bool
+ */
+function mirror_delete_product($id)
+{
+ return db_query("DELETE FROM mirror_products WHERE product_id={$id}");
+}
+
+/**
+ * Get products.
+ * @return array
+ */
+function mirror_get_products()
+{
+ return db_get("
+ SELECT
+ *
+ FROM
+ mirror_products
+ ",MYSQL_ASSOC);
+}
+
+/**
+ * Insert os.
+ * @param string $name
+ * @param int $priority
+ * @return bool
+ */
+function mirror_insert_os($name,$priority)
+{
+ return db_query("INSERT INTO mirror_os(os_name,os_priority) VALUES('{$name}',{$priority})");
+}
+
+/**
+ * Update os.
+ * @param int $id
+ * @param string $name
+ * @param int $priority
+ * @return bool
+ */
+function mirror_update_os($id,$name,$priority)
+{
+ return db_query("UPDATE mirror_os SET os_name='{$name}',os_priority={$priority} WHERE os_id={$id}");
+}
+
+/**
+ * Get one os.
+ * @param int $id
+ * @return array
+ */
+function mirror_get_one_os($id)
+{
+ return db_get_one("SELECT * FROM mirror_os WHERE os_id = {$id}");
+}
+
+/**
+ * Delete a os.
+ * @param int $id
+ * @return bool
+ */
+function mirror_delete_os($id)
+{
+ return db_query("DELETE FROM mirror_os WHERE os_id={$id}");
+}
+
+/**
+ * Get operating systems.
+ * @return array
+ */
+function mirror_get_oss()
+{
+ return db_get("
+ SELECT
+ *
+ FROM
+ mirror_os
+ ",MYSQL_ASSOC);
+}
+
+/**
+ * Get an alpha-list of operating systems for select list.
+ * @return array $oss
+ */
+function mirror_get_oss_select()
+{
+ $oss = db_get("SELECT os_id,os_name FROM mirror_os ORDER BY os_name ASC",MYSQL_ASSOC);
+ foreach ($oss as $os) {
+ $retval[$os['os_id']]=$os['os_name'];
+ }
+ return $retval;
+}
+
+/**
+ * Get an priority-list of operating systems for select list.
+ * @return array $oss
+ */
+function mirror_get_oss_select_priority()
+{
+ $oss = db_get("SELECT os_id,os_name FROM mirror_os ORDER BY os_priority ASC",MYSQL_ASSOC);
+ foreach ($oss as $os) {
+ $retval[$os['os_id']]=$os['os_name'];
+ }
+ return $retval;
+}
+
+/**
+ * Get an alpha-list of products for select list.
+ * @return array $products
+ */
+function mirror_get_products_select()
+{
+ $products = db_get("SELECT product_id,product_name FROM mirror_products ORDER BY product_name ASC",MYSQL_ASSOC);
+ foreach ($products as $product) {
+ $retval[$product['product_id']]=$product['product_name'];
+ }
+ return $retval;
+}
+
+/**
+ * Get an priority-list of operating systems for select list.
+ * @return array $oss
+ */
+function mirror_get_products_select_priority()
+{
+ $products = db_get("SELECT product_id,product_name FROM mirror_products ORDER BY product_priority ASC",MYSQL_ASSOC);
+ foreach ($products as $product) {
+ $retval[$product['product_id']]=$product['product_name'];
+ }
+ return $retval;
+}
+
+/**
+ * Insert a new location.
+ * @param int $product
+ * @param int $os
+ * @param string $path
+ * @return bool
+ */
+function mirror_insert_location($product,$os,$path)
+{
+ return db_query("INSERT INTO mirror_locations(product_id,os_id,location_path) VALUES({$product},{$os},'{$path}')");
+}
+
+/**
+ * Update a location.
+ * @param int $location
+ * @param int $product
+ * @param int $os
+ * @param string $path
+ * @return bool
+ */
+function mirror_update_location($location,$product,$os,$path)
+{
+ return db_query("UPDATE mirror_locations SET product_id={$product},os_id={$os},location_path='{$path}' WHERE location_id={$location}");
+}
+
+/**
+ * Delete a location.
+ * @param int $id
+ * @return bool
+ */
+function mirror_delete_location($id)
+{
+ return db_query("DELETE FROM mirror_locations WHERE location_id={$id}");
+}
+
+/**
+ * Get locations.
+ * @return array $locations array containing all location information.
+ */
+function mirror_get_locations()
+{
+ return db_get("
+ SELECT
+ location_id,
+ product_name,
+ os_name,
+ location_path
+ FROM
+ mirror_locations,
+ mirror_products,
+ mirror_os
+ WHERE
+ mirror_locations.product_id = mirror_products.product_id AND
+ mirror_locations.os_id = mirror_os.os_id
+ ");
+}
+
+/**
+ * Get one location.
+ * @param int $id
+ * @return array
+ */
+function mirror_get_one_location($id)
+{
+ return db_get_one("SELECT * FROM mirror_locations WHERE location_id = {$id}");
+}
+
+/**
+ * Insert a new user.
+ * @param string $username
+ * @param string $password
+ * @param string $rpassword (re-entered password)
+ * @param string $firstname
+ * @param string $lastname
+ * @param string $email
+ * @return bool
+ */
+function mirror_insert_user($username,$password,$rpassword,$firstname,$lastname,$email)
+{
+ if ($password==$rpassword) {
+ return db_query("INSERT INTO mirror_users(username,password,user_firstname,user_lastname,user_email) VALUES('{$username}',MD5('{$password}'),'{$firstname}','{$lastname}','{$email}')");
+ } else {
+ set_error('User could not be added because passwords did not match.');
+ }
+}
+
+/**
+ * Update a user.
+ * @param int $user
+ * @param string $username
+ * @param string $password
+ * @param string $rpassword (re-entered password)
+ * @param string $firstname
+ * @param string $lastname
+ * @param string $email
+ * @return bool
+ */
+function mirror_update_user($user,$username,$password,$rpassword,$firstname,$lastname,$email)
+{
+ $query = ($password==$rpassword&&!empty($password))?"UPDATE mirror_users SET username='{$username}',password=MD5('{$password}'),user_firstname='{$firstname}',user_lastname='{$lastname}',user_email='{$email}' WHERE user_id={$user}":"UPDATE mirror_users SET username='{$username}',user_firstname='{$firstname}',user_lastname='{$lastname}',user_email='{$email}' WHERE user_id={$user}";
+ return db_query($query);
+}
+
+/**
+ * Delete a user.
+ * @param int $id
+ * @return bool
+ */
+function mirror_delete_user($id)
+{
+ return db_query("DELETE FROM mirror_users WHERE user_id={$id}");
+}
+
+/**
+ * Get users.
+ * @return array $users array containing all user information.
+ */
+function mirror_get_users()
+{
+ return db_get("SELECT * FROM mirror_users");
+}
+
+/**
+ * Get one user.
+ * @param int $id
+ * @return array
+ */
+function mirror_get_one_user($id)
+{
+ return db_get_one("SELECT * FROM mirror_users WHERE user_id = {$id}");
+}
+
+/**
+ * Enable or disable a mirror.
+ * @param int $mirror
+ * @return bool
+ */
+function mirror_toggle($mirror)
+{
+ return (db_toggle_bool('mirror_mirrors','mirror_id','mirror_active',$mirror))?true:false;
+}
+
+/**
+ * Get mirror statistics.
+ * @return array $stats
+ */
+function mirror_get_mirror_stats()
+{
+ return db_get("
+ SELECT
+ *,
+ COUNT(mirror_log.mirror_id) as count
+ FROM
+ mirror_mirrors,
+ mirror_log,
+ mirror_regions,
+ mirror_mirror_region_map
+ WHERE
+ mirror_log.mirror_id = mirror_mirrors.mirror_id AND
+ mirror_mirrors.mirror_id = mirror_mirror_region_map.mirror_id AND
+ mirror_regions.region_id = mirror_mirror_region_map.region_id
+ GROUP BY
+ mirror_log.mirror_id
+ ");
+}
+
+/**
+ * Get product statistics.
+ * @return array $stats
+ */
+function mirror_get_product_stats()
+{
+ return db_get("
+ SELECT
+ *,
+ COUNT(mirror_locations.product_id) as count
+ FROM
+ mirror_log,
+ mirror_locations,
+ mirror_products
+ WHERE
+ mirror_log.location_id = mirror_locations.location_id AND
+ mirror_locations.product_id = mirror_products.product_id
+ GROUP BY
+ mirror_locations.product_id
+ ");
+}
+?>