/** * Define a new User Right * * @param string $right */ public static function define_right($right) { $error = new argent_error(); $db = new argent_database(); if (!is_string($right)) { $error->add('1050', 'Invalid data type: expecting STRING', $right, 'argent_uauth'); } if (self::right_exists($right)) { $error->add('1043', 'Right exists', $right, 'argent_uauth'); } if ($error->has_errors()) { return $error; } $meta = array('object_id' => argent_identifier::object_id('URT')); $meta = argent_meta::add_meta($meta); $sql = "\r\n INSERT INTO\r\n `ua_rights`\r\n VALUES\r\n (\r\n '{$db->escape($meta['meta_guid'])}',\r\n '{$db->escape($meta['object_id'])}',\r\n '{$db->escape($right)}',\r\n '{$db->escape($meta['meta_timestamp'])}',\r\n '{$db->escape($meta['meta_user'])}',\r\n '{$db->escape($meta['meta_ip'])}'\r\n )\r\n "; $db->query($sql); return true; }
/** * Clears the current session from the database, and unsets the * session cookie * * @since 1.0.1 * @return true */ public function end_session() { $db = new argent_database(); $query = "\r\n DELETE FROM \r\n `ua_sessions`\r\n WHERE \r\n `session_id` = '{$db->escape_value($this->id)}'\r\n AND\r\n `session_name` = '{$db->escape_value($this->name)}'"; $db->query($query); if (!headers_sent()) { setcookie($this->name, '', time() - 3600, $this->path, $this->domain, $this->secure); } return true; }
/** * Creates a head view for a given table name, after dropping any * existing head view as part of a transaction * * @since 1.0.1 * @param string $table_name * @return true */ public static function create_head_view($table_name) { $db = new argent_database(); $db->start_transaction(); $sql = "\r\n DROP VIEW IF EXISTS\r\n `{$table_name}_head`\r\n "; $db->query($sql); $sql = "\r\n CREATE VIEW \r\n `{$table_name}_head` \r\n AS \r\n SELECT \r\n `{$table_name}`.* \r\n FROM\r\n `{$table_name}` \r\n WHERE \r\n `{$table_name}`.`meta_guid` \r\n IN\r\n (SELECT max(`{$table_name}`.`meta_guid`) \r\n AS `max(meta_guid)` from `{$table_name}` group by `{$table_name}`.`object_id`)\r\n "; $db->query($sql); $db->end_transaction(); return true; }
/** * Break a defined relationship relationship between two objects * * @param string $primary_object_id * @param string $secondary_object_id * @param string $relationship * @return array|\argent_error */ public static function unrelate($primary_object_id, $secondary_object_id, $relationship, $include_reverse = false) { $error = new argent_error(); $db = new argent_database(); $related = self::related($primary_object_id, $secondary_object_id, $relationship, $include_reverse); if (argent_error::check($related)) { return $related; } if (!$related) { return $related; } $sql = "\r\n DELETE FROM\r\n `ua_relationships`\r\n WHERE\r\n (`primary_object_id` = '{$db->escape_value($primary_object_id)}'\r\n AND\r\n `secondary_object_id` = '{$db->escape_value($secondary_object_id)}' )\r\n "; if ($include_reverse) { $sql .= "\r\n OR\r\n (`primary_object_id` = '{$db->escape_value($secondary_object_id)}'\r\n AND\r\n `secondary_object_id` = '{$db->escape_value($primary_object_id)}' )\r\n "; } $sql .= "\r\n AND\r\n `relationship` = '{$db->escape_value($relationship)}'\r\n "; $db->query($sql); return true; }