auth->isSuperAdmin()) { return null; } $core->blog->settings->addNamespace('tweakStores'); if (!$core->blog->settings->tweakStores->active) { return null; } # Admin behaviors if ($core->blog->settings->tweakStores->packman) { $core->addBehavior('packmanBeforeCreatePackage', ['tweakStoresBehaviors', 'packmanBeforeCreatePackage']); } $core->addBehavior('pluginsToolsTabs', ['tweakStoresBehaviors', 'pluginsToolsTabs']); class tweakStoresBehaviors { public static function packmanBeforeCreatePackage(dcCore $core, $module) { tweakStores::writeXML($module['id'], $module, $core->blog->settings->tweakStores->file_pattern); } public static function pluginsToolsTabs(dcCore $core) { $file_pattern = $core->blog->settings->tweakStores->file_pattern; $distributed_modules = explode(',', DC_DISTRIB_PLUGINS); $plugins = [ __('Select a plugin') => '0']; $modules = $core->plugins->getModules(); foreach ($modules as $id => $module) { if (is_array($distributed_modules) && in_array($id, $distributed_modules)) { unset($modules[$id]); continue; } $plugins[$module['name'] . ' '. $module['version']] = $id; } if (!empty($_POST['build_xml']) && !empty($_POST['buildxml_id']) && in_array($_POST['buildxml_id'], $plugins)) { $xml_content = tweakStores::generateXML($_POST['buildxml_id'], $modules[$_POST['buildxml_id']], $file_pattern); } echo '
' . '

' . __('Tweak third-party repositories') . '

' . '
' . '

' . __('Update an existing plugin') . '

' . '

' . __('Put URL to a dcstore.xml file for selected plugin to update it.') . '

' . '

' . form::combo('xml_id', $plugins) . '

' . '

' . form::field('xml_url', 40, 255, [ 'extra_html' => 'required placeholder="' . __('URL') . '"' ]) . '

' . '

' . form::password(['your_pwd', 'your_pwd1'], 20, 255, [ 'extra_html' => 'required placeholder="' . __('Password') . '"', 'autocomplete' => 'current-password' ] ) . '

' . '

' . $core->formNonce() . '

' . '
' . '
' . '

' . __('Generate xml code') . '

' . '

' . __('This help to generate content of dcstore.xml for seleted plugin.') . '

' . '

' . form::combo('buildxml_id', $plugins, empty($_POST['buildxml_id']) ? '-' : html::escapeHTML($_POST['buildxml_id'])) . '

' . '

' . $core->formNonce() . '

'; if (!empty($_POST['buildxml_id'])) { echo '
' . sprintf(__('Generated code for module : %s'), html::escapeHTML($_POST['buildxml_id'])) . '
'; if (!empty(tweakStores::$failed)) { echo sprintf('
' . __('Failed to parse XML code : %s') . '
', implode(', ', tweakStores::$failed)); } if (!empty(tweakStores::$notice)) { echo sprintf('
' . __('Code is not fully filled : %s') . '
', implode(', ', tweakStores::$notice)); } if (!empty($xml_content)) { if (empty(tweakStores::$failed) && empty(tweakStores::$notice)) { echo '
' . __('Code is complete') . '
'; } echo '
' . form::textArea('gen_xml', 165, 14, html::escapeHTML($xml_content), 'maximal') . '
'; if (!empty($file_pattern) && $modules[$_POST['buildxml_id']]['root_writable'] && $core->auth->isSuperAdmin()) { echo '

' . form::password(['your_pwd', 'your_pwd2'], 20, 255, [ 'extra_html' => 'required placeholder="' . __('Password') . '"', 'autocomplete' => 'current-password' ] ) . '

' . '

'; } } } if (empty($file_pattern)) { echo '

' . __('You must configure zip file pattern to complete xml code automaticaly.') . '

'; } echo '
' . '
'; } }