18 public static function create($role, $stamp, $local_roles, $limit, $limit_date, $reg_type, $ext_type)
22 $id = $ilDB->nextId(self::DB_TABLE);
27 $code = self::generateRandomCode();
28 $chk = $ilDB->queryF(
"SELECT code_id FROM " . self::DB_TABLE .
" WHERE code = %s",
array(
"text"),
array(
$code));
29 $found = (bool) $ilDB->numRows($chk);
32 if (is_array($local_roles)) {
33 $local_roles = implode(
";", $local_roles);
35 if ($limit ==
"relative" && is_array($limit_date)) {
36 $limit_date = serialize($limit_date);
42 'generated_on' =>
array(
'integer', $stamp),
43 'role' =>
array(
'integer', $role),
44 'role_local' =>
array(
'text', $local_roles),
45 'alimit' =>
array(
'text', $limit),
46 'alimitdt' =>
array(
'text', $limit_date),
47 'reg_enabled' =>
array(
'integer',$reg_type),
48 'ext_enabled' =>
array(
'integer',$ext_type)
51 $ilDB->insert(self::DB_TABLE,
$data);
58 $map =
"23456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
61 $max = strlen($map)-1;
62 for ($loop = 1; $loop <= self::CODE_LENGTH; $loop++) {
63 $code .= $map[mt_rand(0, $max)];
68 public static function getCodesData($order_field, $order_direction, $offset, $limit, $filter_code, $filter_role, $filter_generated, $filter_access_limitation)
73 $where = self::filterToSQL($filter_code, $filter_role, $filter_generated, $filter_access_limitation);
76 $set = $ilDB->query(
"SELECT COUNT(*) AS cnt FROM " . self::DB_TABLE . $where);
78 if ($rec = $ilDB->fetchAssoc($set)) {
82 $sql =
"SELECT * FROM " . self::DB_TABLE . $where;
84 if ($order_field ==
'generated') {
85 $order_field =
'generated_on';
87 $sql .=
" ORDER BY " . $order_field .
" " . $order_direction;
91 $ilDB->setLimit((
int) $limit, (
int) $offset);
92 $set = $ilDB->query($sql);
94 while ($rec = $ilDB->fetchAssoc($set)) {
95 $rec[
'generated'] = $rec[
'generated_on'];
105 $set = $ilDB->query(
"SELECT * FROM " . self::DB_TABLE .
" WHERE " . $ilDB->in(
"code_id", $ids,
false,
"integer"));
107 while ($rec = $ilDB->fetchAssoc($set)) {
118 return $ilDB->manipulate(
"DELETE FROM " . self::DB_TABLE .
" WHERE " . $ilDB->in(
"code_id", $ids,
false,
"integer"));
127 $set = $ilDB->query(
"SELECT DISTINCT(generated_on) genr FROM " . self::DB_TABLE .
" ORDER BY genr");
129 while ($rec = $ilDB->fetchAssoc($set)) {
135 protected static function filterToSQL($filter_code, $filter_role, $filter_generated, $filter_access_limitation)
141 $where[] = $ilDB->like(
"code",
"text",
"%" . $filter_code .
"%");
144 $where[] =
"role = " . $ilDB->quote($filter_role,
"integer");
146 if ($filter_generated) {
147 $where[] =
"generated_on = " . $ilDB->quote($filter_generated,
"text");
149 if ($filter_access_limitation) {
150 $where[] =
"alimit = " . $ilDB->quote($filter_access_limitation,
"text");
152 if (
sizeof($where)) {
153 return " WHERE " . implode(
" AND ", $where);
159 public static function getCodesForExport($filter_code, $filter_role, $filter_generated, $filter_access_limitation)
164 $where = self::filterToSQL($filter_code, $filter_role, $filter_generated, $filter_access_limitation);
167 $set = $ilDB->query(
"SELECT code FROM " . self::DB_TABLE . $where .
" ORDER BY code_id");
169 while ($rec = $ilDB->fetchAssoc($set)) {
185 $set = $ilDB->query(
"SELECT used FROM " . self::DB_TABLE .
" WHERE code = " . $ilDB->quote(
$code,
"text"));
186 $set = $ilDB->fetchAssoc($set);
187 if ($set && !$set[
"used"]) {
202 $query =
'SELECT code_id FROM reg_registration_codes ' .
203 'WHERE used = ' . $ilDB->quote(0,
'integer') .
' ' .
204 'AND reg_enabled = ' . $ilDB->quote(1,
'integer') .
' ' .
205 'AND code = ' . $ilDB->quote($a_code,
'text');
208 return $res->numRows() ? true :
false;
222 $set = $ilDB->query(
"SELECT role FROM " . self::DB_TABLE .
" WHERE code = " . $ilDB->quote(
$code,
"text"));
223 $row = $ilDB->fetchAssoc($set);
224 if (isset(
$row[
"role"])) {
233 $set = $ilDB->query(
"SELECT role, role_local, alimit, alimitdt, reg_enabled, ext_enabled" .
234 " FROM " . self::DB_TABLE .
235 " WHERE code = " . $ilDB->quote(
$code,
"text"));
236 $row = $ilDB->fetchAssoc($set);
static getCodeData($code)
static getCodesData($order_field, $order_direction, $offset, $limit, $filter_code, $filter_role, $filter_generated, $filter_access_limitation)
static deleteCodes(array $ids)
static getGenerationDates()
if(!array_key_exists('StateId', $_REQUEST)) $id
static filterToSQL($filter_code, $filter_role, $filter_generated, $filter_access_limitation)
static create($role, $stamp, $local_roles, $limit, $limit_date, $reg_type, $ext_type)
static getCodeRole($code)
foreach($_POST as $key=> $value) $res
static isValidRegistrationCode($a_code)
Check if given code is a valid registration code.
static loadCodesByIds(array $ids)
Class ilRegistrationCode.
Create styles array
The data for the language used.
static generateRandomCode()
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
static getCodesForExport($filter_code, $filter_role, $filter_generated, $filter_access_limitation)
static isUnusedCode($code)
Check if code has been used already type $ilDB.