'null']
);
$sortby_combo = [
__('Update date') => 'link_upddt',
__('My rating') => 'link_note',
__('Title') => 'link_title',
__('Random') => 'RANDOM',
__('Number of views') => 'COUNTER',
];
$order_combo = [
__('Ascending') => 'asc',
__('Descending') => 'desc',
];
$w
->create(
self::WIDGET_ID_LINKS,
__('My cinecturlink'),
self::parseLinks(...),
null,
__('Show selection of cinecturlinks')
)
->addTitle(
__('My cinecturlink'),
)
->setting(
'category',
__('Category:'),
'',
'combo',
$categories_combo
)
->setting(
'sortby',
__('Order by:'),
'link_upddt',
'combo',
$sortby_combo
)
->setting(
'sort',
__('Sort: (only for date, note and title)'),
'desc',
'combo',
$order_combo
)
->setting(
'limit',
__('Limit:'),
10,
'text'
)
->setting(
'withlink',
__('Enable link'),
1,
'check'
)
->setting(
'showauthor',
__('Show author'),
1,
'check'
)
->setting(
'shownote',
__('Show my rating'),
0,
'check'
)
->setting(
'showdesc',
__('Show description'),
0,
'check'
)
->setting(
'showpagelink',
__('Show a link to cinecturlink page'),
0,
'check'
)
->addHomeOnly()
->addContentOnly()
->addClass()
->addOffline();
$w
->create(
self::WIDGET_ID_CATS,
__('List of categories of cinecturlink'),
self::parseCats(...),
null,
__('List of categories of cinecturlink')
)
->addTitle(
__('My cinecturlink by categories')
)
->setting(
'title',
__('Title:'),
__('My cinecturlink by categories'),
'text'
)
->setting(
'shownumlink',
__('Show number of links'),
0,
'check'
)
->addHomeOnly()
->addContentOnly()
->addClass()
->addOffline();
}
public static function parseLinks(WidgetsElement $widget): string
{
if (!My::settings()->get('active')
|| !$widget->checkHomeOnly(App::url()->type)
) {
return '';
}
$wdesc = new WidgetLinksDescriptor($widget);
$utils = new Utils();
$params = [];
if ($wdesc->category) {
if ($wdesc->category == 'null') {
$params['sql'] = ' AND L.cat_id IS NULL ';
} elseif (is_numeric($wdesc->category)) {
$params['cat_id'] = (int) $wdesc->category;
}
}
// Tirage aléatoire: Consomme beaucoup de ressources!
if ($wdesc->sortby == 'RANDOM') {
$big_rs = $utils->getLinks($params);
if ($big_rs->isEmpty()) {
return '';
}
$ids = [];
while ($big_rs->fetch()) {
$ids[] = $big_rs->link_id;
}
shuffle($ids);
$ids = array_slice($ids, 0, $wdesc->limit);
$params['link_id'] = [];
foreach ($ids as $id) {
$params['link_id'][] = $id;
}
} elseif ($wdesc->sortby == 'COUNTER') {
$params['order'] = 'link_count asc';
$params['limit'] = $wdesc->limit;
} else {
$params['order'] = $wdesc->sortby . ' ' . $wdesc->sort;
$params['limit'] = $wdesc->limit;
}
$rs = $utils->getLinks($params);
if ($rs->isEmpty()) {
return '';
}
$widthmax = (int) My::settings()->get('widthmax');
$style = $widthmax ? ' style="width:' . $widthmax . 'px;"' : '';
$entries = [];
while ($rs->fetch()) {
$row = new RecordLinksRow($rs);
# --BEHAVIOR-- cinecturlink2WidgetLinks
$bhv = App::behavior()->callBehavior('cinecturlink2WidgetLinks', $row->link_id);
$tmp = '';
if ($wdesc->withlink && !empty($row->link_url)) {
$tmp .= 'link_lang ? ' hreflang="' . $row->link_lang . '"' : '') . ' title="' . Html::escapeHTML($row->cat_title) . '">';
}
$tmp .= '' . Html::escapeHTML($row->link_title) . '' . ($wdesc->shownote ? ' (' . $row->link_note . '/20)' : '') . '
';
if ($wdesc->showauthor) {
$tmp .= Html::escapeHTML($row->link_author) . '
';
}
$tmp .= '
';
if ($wdesc->showdesc) {
$tmp .= '
' . Html::escapeHTML($row->link_desc) . '';
}
if ($wdesc->withlink && !empty($row->link_url)) {
$tmp .= '';
}
$entries[] = '
' . $tmp . '
' . $bhv; try { $cur = App::con()->openCursor($utils->table); $cur->setField('link_count', ($row->link_count + 1)); $utils->updLink($row->link_id, $cur, false); } catch (Exception) { } } # Tirage aléatoire if (in_array($wdesc->sortby, ['RANDOM', 'COUNTER'])) { shuffle($entries); if (My::settings()->get('triggeronrandom')) { App::blog()->triggerBlog(); } } return $widget->renderDiv( $wdesc->content_only, $widget->id() . ' ' . $wdesc->class, '', ($wdesc->title ? $widget->renderTitle(Html::escapeHTML($wdesc->title)) : '') . implode(' ', $entries) . ( $wdesc->showpagelink && My::settings()->get('public_active') ? '' : '' ) ); } public static function parseCats(WidgetsElement $widget): string { if (!My::settings()->get('active') || !My::settings()->get('public_active') || !$widget->checkHomeOnly(App::url()->type) ) { return ''; } $wdesc = new WidgetCatsDescriptor($widget); $utils = new Utils(); $rs = $utils->getCategories([]); if ($rs->isEmpty()) { return ''; } $res = []; $res[] = '