blog->settings->addNamespace('zoneclearFeedServer'); require_once dirname(__FILE__) . '/_widgets.php'; $_menu['Plugins']->addItem( __('Feeds server'), $core->adminurl->get('admin.plugin.zoneclearFeedServer'), dcPage::getPF('zoneclearFeedServer/icon.png'), preg_match( '/' . preg_quote($core->adminurl->get('admin.plugin.zoneclearFeedServer')) . '(&.*)?$/', $_SERVER['REQUEST_URI'] ), $core->auth->check('admin', $core->blog->id) ); # Delete related info about feed post in meta table $core->addBehavior('adminBeforePostDelete',['zcfsAdminBehaviors', 'adminBeforePostDelete']); if ($core->auth->check('admin', $core->blog->id)) { # Dashboard icon $core->addBehavior('adminDashboardFavorites', ['zcfsAdminBehaviors', 'adminDashboardFavorites']); # Add info about feed on post page sidebar $core->addBehavior('adminPostHeaders', ['zcfsAdminBehaviors', 'adminPostHeaders']); $core->addBehavior('adminPostFormItems', ['zcfsAdminBehaviors', 'adminPostFormItems']); } # Take care about tweakurls (thanks Mathieu M.) if (version_compare($core->plugins->moduleInfo('tweakurls', 'version'), '0.8', '>=')) { $core->addbehavior('zcfsAfterPostCreate', ['zoneclearFeedServer', 'tweakurlsAfterPostCreate']); } /** * @ingroup DC_PLUGIN_ZONECLEARFEEDSERVER * @brief Mix your blog with a feeds planet - admin methods. * @since 2.6 */ class zcfsAdminBehaviors { /** * Favorites. * * @param dcCore $core dcCore instance * @param arrayObject $favs Array of favorites */ public static function adminDashboardFavorites(dcCore $core, dcFavorites $favs) { $favs->register('zcfs', array( 'title' => __('Feeds server'), 'url' => $core->adminurl->get('admin.plugin.zoneclearFeedServer'), 'small-icon' => dcPage::getPF('zoneclearFeedServer/icon.png'), 'large-icon' => dcPage::getPF('zoneclearFeedServer/icon-big.png'), 'permissions' => 'usage,contentadmin', 'active_cb' => ['zcfsAdminBehaviors', 'adminDashboardFavoritesActive'], 'dashboard_cb' => ['zcfsAdminBehaviors', 'adminDashboardFavoritesCallback'] )); } /** * Favorites selection. * * @param string $request Requested page * @param array $params Requested parameters */ public static function adminDashboardFavoritesActive($request, $params) { return $request == 'plugin.php' && isset($params['p']) && $params['p'] == 'zoneclearFeedServer'; } /** * Favorites hack. * * @param dcCore $core dcCore instance * @param arrayObject $fav Fav attributes */ public static function adminDashboardFavoritesCallback(dcCore $core, $fav) { $zcfs = new zoneclearFeedServer($core); $count = $zcfs->getFeeds(['feed_status' => '0'], true)->f(0); if (!$count) { return null; } $fav['title'] .= '
'.sprintf(__('%s feed disabled', '%s feeds disabled', $count), $count); $fav['large-icon'] = dcPage::getPF('zoneclearFeedServer/icon-big-update.png'); $fav['url'] = $core->adminurl->get( 'admin.plugin.zoneclearFeedServer', ['part' => 'feeds', 'sortby' => 'feed_status', 'order' => 'asc'] ); } /** * Add javascript for toggle to post edition page header. * * @return string Page header */ public static function adminPostHeaders() { return dcPage::jsLoad(dcPage::getPF('zoneclearFeedServer/js/post.js')); } /** * Add form to post sidebar. * * @param ArrayObject $main_items Main items * @param ArrayObject $sidebar_items Sidebar items * @param record $post Post record or null */ public static function adminPostFormItems(ArrayObject $main_items, ArrayObject $sidebar_items, $post) { if ($post === null || $post->post_type != 'post') { return null; } global $core; $url = $core->meta->getMetadata([ 'post_id' => $post->post_id, 'meta_type' => 'zoneclearfeed_url', 'limit' => 1 ]); $url = $url->isEmpty() ? '' : $url->meta_id; if (!$url) { return null; } $author = $core->meta->getMetadata([ 'post_id' => $post->post_id, 'meta_type' => 'zoneclearfeed_author', 'limit' => 1 ]); $author = $author->isEmpty() ? '' : $author->meta_id; $site = $core->meta->getMetadata([ 'post_id' => $post->post_id, 'meta_type' => 'zoneclearfeed_site', 'limit' => 1 ]); $site = $site->isEmpty() ? '' : $site->meta_id; $sitename = $core->meta->getMetadata([ 'post_id' => $post->post_id, 'meta_type' => 'zoneclearfeed_sitename', 'limit' => 1 ]); $sitename = $sitename->isEmpty() ? '' : $sitename->meta_id; $edit = ''; if ($core->auth->check('admin', $core->blog->id)) { $fid = $core->meta->getMetadata([ 'post_id' => $post->post_id, 'meta_type' => 'zoneclearfeed_id', 'limit' => 1 ]); if (!$fid->isEmpty()) { $edit = sprintf( '

%s

', $core->adminurl->get( 'admin.plugin.zoneclearFeedServer', ['part' => 'feed', 'feed' => $fid->meta_id] ), __('Edit this feed') ); } } $sidebar_items['options-box']['items']['zcfs'] = '
'. '
' . __('Feed source') . '
' . '

' . '' . __('feed URL') . ' - ' . '' . __('site URL') . '' . '

' . $edit . '
'; } /** * Delete related info about feed post in meta table. * * @param integer $post_id Post id */ public static function adminBeforePostDelete($post_id) { global $core; $core->con->execute( 'DELETE FROM ' . $core->prefix . 'meta ' . 'WHERE post_id = ' . ((integer) $post_id) . ' ' . 'AND meta_type ' . $core->con->in([ 'zoneclearfeed_url', 'zoneclearfeed_author', 'zoneclearfeed_site', 'zoneclearfeed_sitename', 'zoneclearfeed_id' ]).' ' ); } }