auth->makePermissions([dcAuth::PERMISSION_CONTENT_ADMIN])); include __DIR__ . '/inc/_default_noodles.php'; $s = dcCore::app()->blog->settings->noodles; $__noodles = noodles::decode($s->noodles_object); if ($__noodles->isEmpty()) { $__noodles = $__default_noodles; } else { $default_noodles_array = $__default_noodles->noodles(); foreach ($default_noodles_array as $id => $noodle) { if ($__noodles->exists($id)) { continue; } $__noodles->set($id, $noodle); } } $public_path = path::real(dcCore::app()->blog->public_path); if (!is_dir($public_path) || !is_writable($public_path)) { $public_path = false; } $default_images = files::scandir(__DIR__ . '/default-templates/img/'); if (!is_array($default_images)) { $default_images = []; } $default_image = $s->noodles_image; $combo_api = [ 'gravatar' => 'http://www.gravatar.com/', 'libravatar' => 'http://cdn.libravatar.org/', ]; $combo_place = [ __('Begin') => 'prepend', __('End') => 'append', __('Before') => 'before', __('After') => 'after', ]; $combo_rating = [ 'G' => 'g', 'PG' => 'pg', 'R' => 'r', 'X' => 'x', ]; $combo_size = [ '16px' => 16, '24px' => 24, '32px' => 32, '48px' => 48, '56px' => 56, '64px' => 64, '92px' => 92, '128px' => 128, '256px' => 256, ]; if (!empty($_POST['save'])) { try { $public_file = $public_path . '/noodles-default-image.png'; $s->put('noodles_active', !empty($_POST['noodles_active']), 'boolean'); $s->put('noodles_api', $_POST['noodles_api'], 'string'); // user upload image if ($_POST['noodles_image'] == 'user' && !empty($public_path)) { if (2 == $_FILES['noodlesuserfile']['error']) { throw new Exception(__('Maximum file size exceeded')); } if (0 != $_FILES['noodlesuserfile']['error']) { throw new Exception(__('Something went wrong while download file')); } if (!in_array($_FILES['noodlesuserfile']['type'], ['image/png', 'image/x-png'])) { throw new Exception(__('Image must be in png format')); } if (move_uploaded_file($_FILES['noodlesuserfile']['tmp_name'], $public_file)) { $s->put('noodles_image', 1, 'boolean'); } else { throw new Exception(__('Failed to save image')); } // Default gravatar.com avatar } elseif ($_POST['noodles_image'] == 'gravatar.com') { $s->put('noodles_image', 0, 'boolean'); // existsing noodles image on blog } elseif ($_POST['noodles_image'] == 'existing') { $s->put('noodles_image', 1, 'boolean'); // noodles image } elseif (preg_match('/^gravatar-[0-9]+.png$/', $_POST['noodles_image']) && !empty($public_path)) { $source = dirname(__FILE__) . '/default-templates/img/' . $_POST['noodles_image']; if (!file_exists($source)) { throw new Exception(__('Something went wrong while search file')); } if (files::putContent($public_file, file_get_contents($source))) { $s->put('noodles_image', 1, 'boolean'); } // Default gravatar.com avatar } else { //if ($_POST['noodles_image'] == 'gravatar.com') { $s->put('noodles_image', 0, 'boolean'); } // behaviors foreach ($_POST['noodle'] as $id => $bloc) { $__noodles->get($id) ->set('active', !empty($bloc['active'])) ->set('rating', $bloc['rating'] ?? 'g') ->set('size', $bloc['size'] ?? '16') ->set('css', $bloc['css'] ?? '') ->set('target', $bloc['target'] ?? '') ->set('place', $bloc['place'] ?? 'prepend') ; } $s->put('noodles_object', $__noodles->encode(), 'string'); dcCore::app()->blog->triggerBlog(); dcAdminNotices::addSuccessNotice(__('Configuration successfully updated')); dcCore::app()->adminurl->redirect('admin.plugin.noodles'); } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } } echo '' . __('Noodles') . '' . dcPage::breadcrumb([ html::escapeHTML(dcCore::app()->blog->name) => '', __('Noodles') => '', __('Plugin configuration') => '', ]) . dcPage::notices() . '

' . sprintf(__('Configure "%s"'), __('Noodles')) . '

' . __('Activation') . '

' . form::combo('noodles_api', $combo_api, $s->noodles_api) . '

' . __('Avatar') . '

' . __('Select default avatar to display on unknown users.') . '

'; if (!empty($public_path)) { echo '
'; sort($default_images); $i = 0; foreach ($default_images as $f) { if (!preg_match('/gravatar-[0-9]+.png/', $f)) { continue; } $i++; $sz = getimagesize(dirname(__FILE__) . '/default-templates/img/' . $f); $sz[2] = files::size(filesize(dirname(__FILE__) . '/default-templates/img/' . $f)); echo '

' . form::radio(['noodles_image', 'noodles_image_' . $i], $f) . '

' . $sz[0] . 'x' . $sz[1] . '
' . $sz[2] . '

'; } echo '
'; } echo '
'; if (null !== ($default_image_path = noodlesLibImagePath::getPath('noodles'))) { $sz = getimagesize($default_image_path); $sz[2] = files::size(filesize($default_image_path)); echo '

' . form::radio(['noodles_image', 'public_image'], 'existing', !empty($default_image)) . '

' . $sz[0] . 'x' . $sz[1] . '
' . $sz[2] . '

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

' . form::radio(['noodles_image', 'upload_image'], 'user') . '

' . form::hidden(['MAX_FILE_SIZE'], 30000) . '

' . __('Image must be in "png" format and have a maximum file size of 30Ko') . '

'; } echo '

' . form::radio(['noodles_image', 'com_image'], 'gravatar.com', empty($default_image)) . '

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

' . __('Public directory is not writable, you can not use custom gravatar.') . '

'; } echo '

' . __('Behaviors') . '

'; foreach ($__noodles->noodles() as $noodle) { echo ' '; } echo '
' . __('Search area') . ' ' . __('Size') . ' ' . __('Rating') . ' ' . __('PHP') . ' ' . __('JS') . ' ' . __('Target') . ' ' . __('Place') . ' ' . __('Adjust avatar CSS') . '
' . form::checkbox(['noodle[' . $noodle->id() . '][active]', 'ck_' . $noodle->id()], 1, $noodle->active) . ' ' . form::combo(['noodle[' . $noodle->id() . '][size]'], $combo_size, $noodle->size) . ' ' . form::combo(['noodle[' . $noodle->id() . '][rating]'], $combo_rating, $noodle->rating) . ' ' . ( $noodle->hasPhpCallback() ? 'ok' : 'nok' ) . ' ok ' . form::field(['noodle[' . $noodle->id() . '][target]'], 20, 255, $noodle->target) . ' ' . form::combo(['noodle[' . $noodle->id() . '][place]'], $combo_place, $noodle->place) . ' ' . form::field(['noodle[' . $noodle->id() . '][css]'], 50, 255, $noodle->css) . ' .noodles-' . $noodle->id() . '{}

' . __('Target and Place are for javascript.') . '

' . dcCore::app()->formNonce() . '

';