auth->getInfo('user_lang'); $linkimage = $_POST['linkimage'] ?? ''; $linknote = $_POST['linknote'] ?? ''; $catid = $_REQUEST['catid'] ?? ''; $cattitle = $_POST['cattitle'] ?? ''; $catdesc = $_POST['catdesc'] ?? ''; $redir = $_REQUEST['redir'] ?? ''; $part = $_REQUEST['part'] ?? 'links'; $entries = $_POST['entries'] ?? []; $headers = ''; $breadcrumb = [ __('Plugins') => '', __('My cinecturlink') => $core->adminurl->get('admin.plugin.cinecturlink2', ['part' => 'links']) ]; if (!in_array($part, ['links', 'link', 'cats', 'cat', 'dellinks', 'updlinksnote', 'updlinkscat'])) { $part = 'links'; } if (!is_array($entries)) { $entries == []; } try { $C2 = new cinecturlink2($core); $categories = $C2->getCategories(); $categories_combo = ['-' => '']; while($categories->fetch()) { $cat_title = html::escapeHTML($categories->cat_title); $categories_combo[$cat_title] = $categories->cat_id; } } catch (Exception $e) { $core->error->add($e->getMessage()); } if ($part == 'dellinks') { try { // delete group of links if (!empty($entries)) { foreach ($entries as $id) { $C2->delLink($id); } dcPage::addSuccessNotice( __('Links successfully deleted.') ); $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'links']); } } catch (Exception $e) { $core->error->add($e->getMessage()); } $breadcrumb[__('Delete links')] = ''; } // get list of secleted links if (in_array($part, ['updlinksnote', 'updlinkscat'])) { try { $links = $C2->getLinks(['link_id' => $entries]); } catch (Exception $e) { $core->error->add($e->getMessage()); } } if ($part == 'updlinksnote') { try { // update group of links note if (!empty($entries) && isset($_POST['newlinknote'])) { while($links->fetch()) { if (in_array($links->link_id, $entries)) { $cur = $core->con->openCursor($C2->table); $cur->link_note = (integer) $_POST['newlinknote']; $C2->updLink($links->link_id, $cur); } } dcPage::addSuccessNotice( __('Links successfully updated.') ); if (!empty($_POST['redir'])) { http::redirect($redir); } else { $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'links']); } } } catch (Exception $e) { $core->error->add($e->getMessage()); } $breadcrumb[__('Update links rating')] = ''; } if ($part == 'updlinkscat') { try { // update group of links category if (!empty($entries) && !empty($_POST['newcatid'])) { while($links->fetch()) { if (in_array($links->link_id, $entries)) { $cur = $core->con->openCursor($C2->table); $cur->cat_id = (integer) $_POST['newcatid']; $C2->updLink($links->link_id, $cur); } } dcPage::addSuccessNotice( __('Links successfully updated.') ); if (!empty($_POST['redir'])) { http::redirect($redir); } else { $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'links']); } } } catch (Exception $e) { $core->error->add($e->getMessage()); } $breadcrumb[__('Update links category')] = ''; } if ($part == 'links') { $action_combo = [ __('Delete') => 'dellinks', __('Change category') => 'updlinkscat', __('Change rating') => 'updlinksnote' ]; $c2link_filter = new adminGenericFilter($core, 'c2link'); $c2link_filter->add('part', 'links'); $c2link_filter->add(dcAdminFilters::getPageFilter()); $c2link_filter->add(dcAdminFilters::getSelectFilter( 'catid', __('Category:'), $categories_combo, 'cat_id' )); $params = $c2link_filter->params(); $params['link_type'] = 'cinecturlink'; $params['no_content'] = true; $links_list = null; try { $links = $C2->getLinks($params); $links_counter = $C2->getLinks($params,true)->f(0); $links_list = new adminlistCinecturlink2($core, $links, $links_counter); } catch (Exception $e) { $core->error->add($e->getMessage()); } $breadcrumb[__('My cinecturlink')] = ''; $headers .= dcPage::jsVars(['dotclear.filter_reset_url' => $core->adminurl->get('admin.plugin.cinecturlink2', ['part' => 'links'])]) . dcPage::jsFilterControl($c2link_filter->show()) . dcPage::jsLoad(dcPage::getPF('cinecturlink2/js/c2links.js')); } if ($part == 'link') { $langs_combo = l10n::getISOcodes(true); $notes_combo = range(0, 20); $media_combo = $tmp_media_combo = $dir = null; try { $allowed_media = ['png', 'jpg', 'gif', 'bmp', 'jpeg']; $core->media = new dcMedia($core); $core->media->chdir($core->blog->settings->cinecturlink2->cinecturlink2_folder); $core->media->getDir(); $dir =& $core->media->dir; foreach($dir['files'] as $file) { if (!in_array(files::getExtension($file->relname), $allowed_media)) { continue; } $tmp_media_combo[$file->media_title] = $file->file_url; } if (!empty($tmp_media_combo)) { $media_combo = array_merge(['-' => ''], $tmp_media_combo); } } catch (Exception $e) { //$core->error->add($e->getMessage()); } if (!empty($_POST['save'])) { try { cinecturlink2::test_folder( DC_ROOT . '/' .$core->blog->settings->system->public_path, $core->blog->settings->cinecturlink2->cinecturlink2_folder ); if (empty($linktitle)) { throw new Exception(__('You must provide a title.')); } if (empty($linkauthor)) { throw new Exception(__('You must provide an author.')); } if (!preg_match('/https?:\/\/.+/', $linkimage)) { throw new Exception(__('You must provide a link to an image.')); } $cur = $core->con->openCursor($C2->table); $cur->link_title = $linktitle; $cur->link_desc = $linkdesc; $cur->link_author = $linkauthor; $cur->link_url = $linkurl; $cur->cat_id = $linkcat == '' ? null : $linkcat; $cur->link_lang = $linklang; $cur->link_img = $linkimage; $cur->link_note = $linknote; // create a link if (empty($linkid)) { $exists = $C2->getLinks(['link_title' => $linktitle], true)->f(0); if ($exists) { throw new Exception(__('Link with same name already exists.')); } $linkid = $C2->addLink($cur); dcPage::addSuccessNotice( __('Link successfully created.') ); // update a link } else { $exists = $C2->getLinks(['link_id' => $linkid], true)->f(0); if (!$exists) { throw new Exception(__('Unknown link.')); } $C2->updLink($linkid, $cur); dcPage::addSuccessNotice( __('Link successfully updated.') ); } $core->adminurl->redirect('admin.plugin.cinecturlink2', [ 'part' => 'link', 'linkid' => $linkid, 'redir' => $redir ] ); } catch (Exception $e) { $core->error->add($e->getMessage()); } } if (!empty($_POST['delete']) && !empty($linkid)) { try { $C2->delLink($linkid); dcPage::addSuccessNotice( __('Link successfully deleted.') ); if (!empty($_POST['redir'])) { http::redirect($redir); } else { $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'links']); } } catch (Exception $e) { $core->error->add($e->getMessage()); } } if (!empty($linkid)) { $link = $C2->getLinks(['link_id' => $linkid]); if (!$link->isEmpty()) { $linktitle = $link->link_title; $linkdesc = $link->link_desc; $linkauthor = $link->link_author; $linkurl = $link->link_url; $linkcat = $link->cat_id; $linklang = $link->link_lang; $linkimage = $link->link_img; $linknote = $link->link_note; } } $breadcrumb[(empty($linkid) ? __('New link') : __('Edit link'))] = ''; $headers .= dcPage::jsVars(['dotclear.c2_lang' => $core->auth->getInfo('user_lang')]) . dcPage::jsLoad(dcPage::getPF('cinecturlink2/js/c2link.js')); } if ($part == 'cats') { try { // reorder categories if (!empty($_POST['save'])) { $catorder = []; if (empty($_POST['im_order']) && !empty($_POST['order'])) { $catorder = $_POST['order']; asort($catorder); $catorder = array_keys($catorder); } elseif (!empty($_POST['im_order'])) { $catorder = $_POST['im_order']; if (substr($catorder, -1) == ',') { $catorder = substr($catorder, 0, strlen($catorder) - 1); } $catorder = explode(',', $catorder); } $i = 0; foreach($catorder as $id) { $i++; $cur = $core->con->openCursor($C2->table . '_cat'); $cur->cat_pos = $i; $C2->updCategory($id, $cur); } dcPage::addSuccessNotice( __('Categories successfully reordered.') ); $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'cats']); } // delete categories if (!empty($_POST['delete']) && !empty($_POST['items_selected'])) { foreach ($_POST['items_selected'] as $id) { $C2->delCategory($id); } dcPage::addSuccessNotice( __('Categories successfully deleted.') ); $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'cats']); } } catch (Exception $e) { $core->error->add($e->getMessage()); } $breadcrumb[__('Categories')] = ''; $core->auth->user_prefs->addWorkspace('accessibility'); if (!$core->auth->user_prefs->accessibility->nodragdrop) { $headers .= dcPage::jsLoad('js/jquery/jquery-ui.custom.js') . dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js') . dcPage::jsLoad(dcPage::getPF('cinecturlink2/js/c2cats.js')); } } if ($part == 'cat') { try { // create category if (!empty($_POST['save']) && empty($catid) && !empty($cattitle) && !empty($catdesc)) { $exists = $C2->getCategories(['cat_title' => $cattitle], true)->f(0); if ($exists) { throw new Exception(__('Category with same name already exists.')); } $cur = $core->con->openCursor($C2->table . '_cat'); $cur->cat_title = $cattitle; $cur->cat_desc = $catdesc; $catid = $C2->addCategory($cur); dcPage::addSuccessNotice( __('Category successfully created.') ); $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'cats']); } // update category if (!empty($_POST['save']) && !empty($catid) && !empty($cattitle) && !empty($catdesc)) { $exists = $C2->getCategories(['cat_title' => $cattitle, 'exclude_cat_id' => $catid], true)->f(0); if ($exists) { throw new Exception(__('Category with same name already exists.')); } $cur = $core->con->openCursor($C2->table . '_cat'); $cur->cat_title = $cattitle; $cur->cat_desc = $catdesc; $C2->updCategory($catid, $cur); dcPage::addSuccessNotice( __('Category successfully updated.') ); $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'cats']); } // delete category if (!empty($_POST['delete']) && !empty($catid)) { $C2->delCategory($catid); dcPage::addSuccessNotice( __('Category successfully deleted.') ); $core->adminurl->redirect('admin.plugin.cinecturlink2', ['part' => 'cats']); } } catch (Exception $e) { $core->error->add($e->getMessage()); } $breadcrumb[__('Categories')] = $core->adminurl->get('admin.plugin.cinecturlink2', ['part' => 'cats']); $breadcrumb[(empty($catid) ? __('New category') : __('Edit category'))] = ''; } echo ''.__('Cinecturlink 2').'' . $headers . ''. dcPage::breadcrumb($breadcrumb) . dcPage::notices(); if (!empty($redir)) { echo '

' . __('Back') .'

'; } if (!empty($title)) { echo '

' . $title . '

'; } if ($part == 'updlinksnote') { if ($links->isEmpty()) { echo '

'.__('There is no link').'

'; } else { echo '

' . __('Links') . '

'; echo '

' . __('Rating') . '

' . '

' . form::number('newlinknote', [ 'min' => 0, 'max' => 20, 'default' => 10 ]) . '/20' . '

' . '

' . ' ' . '' . __('Cancel') . ' (c) '; foreach($entries as $id) { echo form::hidden(['entries[]'], $id); } echo form::hidden('part', 'updlinksnote') . form::hidden('redir', $redir) . $core->formNonce() . '

' . '
'; } } if ($part == 'updlinkscat') { if ($links->isEmpty()) { echo '

'.__('There is no link').'

'; } else { echo '

' . __('Links') . '

'; echo '

' . __('Category') . '

' . '

' . form::combo('newcatid', $categories_combo, $catid) . '

' . ' ' . '' . __('Cancel') . ' (c) '; foreach($entries as $id) { echo form::hidden(['entries[]'], $id); } echo form::hidden('part', 'updlinkscat') . form::hidden('redir', $redir) . $core->formNonce() . '

' . '
'; } } if ($part == "links") { $links_redir = $core->adminurl->get('admin.plugin.cinecturlink2', $c2link_filter->values()); echo '

' . '' . __('Edit categories') .' ' . '

' . '

' . __('New Link') .' ' . __('New Category') .'

'; if ($links->isEmpty() && !$c2link_filter->show()) { echo '

'.__('There is no link').'

'; } else { $c2link_filter->display('admin.plugin.cinecturlink2', form::hidden('p', 'cinecturlink2') . form::hidden('part', 'links') ); $links_list->display($c2link_filter->page, $c2link_filter->nb, '
' . '%s' . '
' . '

' . '

' . form::combo('part', $action_combo) . '

' . $core->adminurl->getHiddenFormFields('admin.plugin.cinecturlink2', array_diff_key($c2link_filter->values(true), ['part' => ''])) . form::hidden(['redir'], $links_redir) . $core->formNonce() . '
' . '
', $c2link_filter->show(), $links_redir ); } } if ($part == "link") { echo '

' . '' . __('Search with Google') . '' . '

' . '' . __('Search with Amazon') . '' . '

'; if (empty($media_combo)) { echo '

' . __('There is no image in cinecturlink media path.') . '

'; } else { echo '

' . '

' . __('Go to media manager to add image to cinecturlink path.') . '

'; } echo '

' . form::combo('linkcat', $categories_combo, $linkcat) . '

' . form::combo('linklang', $langs_combo, $linklang) . '

' . form::number('linknote', [ 'min' => 0, 'max' => 20, 'default' => $linknote ]) . '/20' . '

' . ' ' . '' . __('Cancel') . ' (c) '. '' . form::hidden('linkid', $linkid) . form::hidden('part', 'link') . form::hidden('redir', $redir) . $core->formNonce() . '

'; } if ($part == "cats") { echo '

' . __('New Category') .'

'; if ($categories->isEmpty()) { echo '

'.__('There is no category').'

'; } else { echo '
'; $i = 0; while($categories->fetch()) { $id = $categories->cat_id; echo '' . ''; $i++; } echo '
' . __('Categories list') . '
'.__('name').' '.__('description').'
' . form::number(['order[' . $id . ']'], [ 'min' => 1, 'max' => $categories->count(), 'default' => $i +1, 'class' => 'position', 'extra_html' => 'title="' . sprintf(__('position of %s'), html::escapeHTML($categories->cat_title)) . '"' ]) . form::hidden(['dynorder[]', 'dynorder-' . $i], $id) . ' ' . form::checkbox(['items_selected[]', 'ims-' . $i], $id) . ' ' . html::escapeHTML($categories->cat_title) . ' ' . html::escapeHTML($categories->cat_desc) . '

'.__('Check to delete').'

' . ' ' . '' . __('Cancel') . ' (c) '. '' . form::hidden('im_order', '') . form::hidden('part', 'cats') . $core->formNonce() . '

' . '
'; } } if ($part == 'cat') { if (!empty($catid)) { $category = $C2->getCategories(['cat_id' => $catid]); if (!$category->isEmpty()) { $cattitle = $category->cat_title; $catdesc = $category->cat_desc; } } if ($catid) { $links = $C2->getLinks(['cat_id' => $catid], true)->f(0); echo '

' . (empty($links) ? __('No link uses this category.') : sprintf(__('A link uses this category.', '%s links use this category.', $links), $links) ) . '

'; } echo '

' . ' ' . '' . __('Cancel') . ' (c) '. (!empty($catid) ? ' ' : '') . form::hidden('catid', $catid) . form::hidden('part', 'cat') . $core->formNonce() . '

' . '
'; } dcPage::helpBlock('cinecturlink2'); echo '';