18 public static function create($role, $stamp, $local_roles, $limit, $limit_date, $reg_type, $ext_type)
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);
40 'code_id' => array(
'integer',
$id),
41 'code' => array(
'text',
$code),
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)
58 $map =
"23456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
61 $max = strlen($map)-1;
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'];
98 return array(
"cnt" => $cnt,
"set" =>
$result);
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;
215 return (
bool)
$ilDB->update(self::DB_TABLE, array(
"used"=>array(
"timestamp", time())), array(
"code"=>array(
"text",
$code)));
222 $set =
$ilDB->query(
"SELECT role FROM " . self::DB_TABLE .
" WHERE code = " .
$ilDB->quote(
$code,
"text"));
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"));
An exception for terminatinating execution or to throw for unit testing.
Class ilRegistrationCode.
static filterToSQL($filter_code, $filter_role, $filter_generated, $filter_access_limitation)
static deleteCodes(array $ids)
static getCodeRole($code)
static isValidRegistrationCode($a_code)
Check if given code is a valid registration code.
static generateRandomCode()
static getCodesForExport($filter_code, $filter_role, $filter_generated, $filter_access_limitation)
static getCodeData($code)
static create($role, $stamp, $local_roles, $limit, $limit_date, $reg_type, $ext_type)
static isUnusedCode($code)
Check if code has been used already @global type $ilDB.
static getGenerationDates()
static getCodesData($order_field, $order_direction, $offset, $limit, $filter_code, $filter_role, $filter_generated, $filter_access_limitation)
static loadCodesByIds(array $ids)
if(!array_key_exists('StateId', $_REQUEST)) $id
foreach($_POST as $key=> $value) $res