19 declare(strict_types=1);
32 private static function _insertDefaultValues():
void 37 $ilDB = $DIC->database();
40 [
"icon_smile.gif",
":)\n:-)\n:smile:"],
41 [
"icon_wink.gif",
";)\n;-)\n:wink:"],
42 [
"icon_laugh.gif",
":D\n:-D\n:laugh:\n:grin:\n:biggrin:"],
43 [
"icon_sad.gif",
":(\n:-(\n:sad:"],
44 [
"icon_shocked.gif",
":o\n:-o\n:shocked:"],
45 [
"icon_tongue.gif",
":p\n:-p\n:tongue:"],
46 [
"icon_cool.gif",
":cool:"],
47 [
"icon_eek.gif",
":eek:"],
48 [
"icon_angry.gif",
":||\n:-||\n:angry:"],
49 [
"icon_flush.gif",
":flush:"],
50 [
"icon_idea.gif",
":idea:"],
51 [
"icon_thumbup.gif",
":thumbup:"],
52 [
"icon_thumbdown.gif",
":thumbdown:"],
55 $stmt =
$ilDB->prepareManip(
56 'INSERT INTO chatroom_smilies (smiley_id, smiley_keywords, smiley_path) VALUES (?, ?, ?)',
57 [
'integer',
'text',
'text']
60 foreach ($values as $val) {
62 $ilDB->nextId(
'chatroom_smilies'),
76 public static function _checkSetup():
bool 79 $main_tpl = $DIC->ui()->mainTemplate();
82 $lng = $DIC->language();
84 $path = self::_getSmileyDir();
87 $main_tpl->setOnScreenMessage(
'info',
$lng->txt(
'chatroom_smilies_dir_not_exists'));
91 $main_tpl->setOnScreenMessage(
'failure',
$lng->txt(
'chatroom_smilies_dir_not_available'));
108 "icon_thumbdown.gif",
111 foreach ($smilies as $smiley) {
112 copy(
"templates/default/images/emoticons/$smiley",
$path .
"/$smiley");
115 self::_insertDefaultValues();
116 $main_tpl->setOnScreenMessage(
'success',
$lng->txt(
'chatroom_smilies_initialized'));
119 if (!is_writable(
$path)) {
120 $main_tpl->setOnScreenMessage(
'info',
$lng->txt(
'chatroom_smilies_dir_not_writable'));
134 public static function _getSmilies(): array
139 $ilDB = $DIC->database();
141 $res =
$ilDB->query(
"SELECT smiley_id, smiley_keywords, smiley_path FROM chatroom_smilies");
146 'smiley_id' => (
int) $row[
'smiley_id'],
147 'smiley_keywords' => $row[
'smiley_keywords'],
148 'smiley_path' => $row[
'smiley_path'],
159 public static function _deleteMultipleSmilies(array $ids = []):
void 164 $ilDB = $DIC->database();
166 $smilies = self::_getSmiliesById($ids);
168 if ($smilies === []) {
174 foreach ($smilies as $s) {
175 unlink($s[
'smiley_fullpath']);
176 $sql_parts[] =
'smiley_id = ' .
$ilDB->quote($s[
'smiley_id'],
'integer');
179 $ilDB->manipulate(
'DELETE FROM chatroom_smilies WHERE ' . implode(
' OR ', $sql_parts));
186 public static function _getSmiliesById(array $ids = []): array
191 $ilDB = $DIC->database();
197 $sql =
'SELECT smiley_id, smiley_keywords, smiley_path FROM chatroom_smilies WHERE ';
200 foreach ($ids as
$id) {
201 $sql_parts[] =
"smiley_id = " .
$ilDB->quote($id,
"integer");
204 $sql .= implode(
" OR ", $sql_parts);
210 'smiley_id' => (
int) $row[
'smiley_id'],
211 'smiley_keywords' => $row[
'smiley_keywords'],
212 'smiley_path' => $row[
'smiley_path'],
225 public static function _updateSmiley(array
$data):
void 230 $ilDB = $DIC->database();
233 'UPDATE chatroom_smilies SET smiley_keywords = %s WHERE smiley_id = %s',
235 [$data[
'smiley_keywords'], $data[
'smiley_id']]
238 if (isset($data[
"smiley_path"])) {
239 $sm = self::_getSmiley($data[
"smiley_id"]);
240 unlink($sm[
"smiley_fullpath"]);
242 'UPDATE chatroom_smilies SET smiley_path = %s WHERE smiley_id = %s',
244 [$data[
'smiley_path'], $data[
'smiley_id']]
253 public static function _getSmiley(
int $a_id): array
258 $ilDB = $DIC->database();
261 'SELECT smiley_id, smiley_keywords, smiley_path FROM chatroom_smilies WHERE smiley_id = %s ',
268 'smiley_id' => (
int) $row[
'smiley_id'],
269 'smiley_keywords' => $row[
'smiley_keywords'],
270 'smiley_path' => $row[
'smiley_path'],
280 return 'chatroom/smilies';
283 public static function _deleteSmiley(
int $a_id):
void 288 $ilDB = $DIC->database();
291 $smiley = self::_getSmiley($a_id);
294 if (is_file(
$path)) {
299 'DELETE FROM chatroom_smilies WHERE smiley_id = %s',
312 public static function _storeSmiley(
string $keywords,
string $path):
void 317 $ilDB = $DIC->database();
319 $stmt =
$ilDB->prepareManip(
320 'INSERT INTO chatroom_smilies (smiley_id, smiley_keywords, smiley_path) VALUES (?, ?, ?)',
321 [
'integer',
'text',
'text']
323 $ilDB->execute($stmt, [
324 $ilDB->nextId(
'chatroom_smilies'),
337 return array_filter(array_map(
'trim', explode(
"\n", $words)));
static getWebspaceDir(string $mode="filesystem")
get webspace directory
static makeDirParents(string $a_dir)
Create a new directory and all parent directories.
static _prepareKeywords(string $words)
Trims given keywords and returns them in one array.
static getSmiliesBasePath()
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins