initial commit
authordanix <danix@danix.xyz>
Tue, 10 Jul 2018 14:42:56 +0000 (16:42 +0200)
committerdanix <danix@danix.xyz>
Tue, 10 Jul 2018 14:42:56 +0000 (16:42 +0200)
danixland-site-plugin.php [new file with mode: 0644]

diff --git a/danixland-site-plugin.php b/danixland-site-plugin.php
new file mode 100644 (file)
index 0000000..71af06e
--- /dev/null
@@ -0,0 +1,203 @@
+<?php
+/*
+Plugin Name: Site Plugin for danixland.net
+Description: Site specific code changes for danixland.net
+*/
+
+/**
+ * Disable admin bar sitewide
+ */
+show_admin_bar(__return_false());
+
+/**
+ * Allow Shortcodes inside the html widget
+ */
+add_filter( 'widget_text', 'do_shortcode' );
+
+/**
+ * make sure the links menu in the admin is visible
+ */
+add_filter( 'pre_option_link_manager_enabled', '__return_true' );
+
+/**
+ * The gravatar shortcode
+ *
+ * @param email $email email address used to retrieve the gravatar image
+ * @return string HTML the image tag which will display the gravatar image.
+ *
+ */
+function danix_gravatar( $atts ) {
+    extract(shortcode_atts(array(
+        'email'        => '',
+        'size'         => '200',
+        'default'      => '',
+        'alt'          => ''
+    ), $atts));
+
+    if( empty($email) )
+        return '';
+
+    $output = get_avatar($email, $size, $default, $alt);
+
+    return $output;
+}
+add_shortcode('gravatar', 'danix_gravatar');
+
+/**
+ * The download button shortcode
+ *
+ * @param url $link link address.
+ * @param string $linkname text that will be displayed by the button.
+ * @return string HTML the link tag that will be rendered to the page.
+ *
+ */
+function danix_download_button( $atts ) {
+    extract(shortcode_atts(array(
+        'link'      => '',
+        'linkname'  => ''
+    ), $atts));
+
+    if ( empty($link) )
+        return '';
+
+    $output = sprintf(
+        '<a href="%s" class="download_button">%s</a>',
+        $link,
+        $linkname
+    );
+
+    return $output;
+}
+add_shortcode('download', 'danix_download_button');
+
+/**
+ * The google analytics code
+ *
+ */
+function danix_google_anal() {?>
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-23882460-1"></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+
+  gtag('config', 'UA-23882460-1');
+</script>
+<?php }
+add_action('wp_head', 'danix_google_anal', 10);
+
+/**
+ * The googlemaps shortcode
+ *
+ * @param width the width of the returned map
+ * @param height the height of the returned map
+ * @param src the url of the map you want to display
+ * @return string HTML the map object
+ * @since 0.57
+ *
+ */
+function danix_gmaps($atts, $content = null) {
+    extract(shortcode_atts(array(
+      "width" => '640',
+      "height" => '480',
+      "src" => ''
+    ), $atts));
+    return '<iframe width="'.$width.'" height="'.$height.'" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.$src.'&amp;output=embed" ></iframe>';
+}
+add_shortcode("googlemaps", "danix_gmaps");
+
+function danix_get_plugins_stats() {
+    $url    = 'https://api.wordpress.org/plugins/info/1.0/';
+    $fields = array(
+        'downloaded' => true,
+        'rating' => false,
+        'description' => false,
+        'short_description' => false,
+        'donate_link' => false,
+        'tags' => false,
+        'sections' => false,
+        'homepage' => false,
+        'added' => false,
+        'last_updated' => false,
+        'compatibility' => false,
+        'tested' => false,
+        'requires' => false,
+        'downloadlink' => false,
+    );
+    $args = (object) array( 'author' => 'danixland', 'fields' => $fields );
+    $request = array( 'action' => 'query_plugins', 'timeout' => 15, 'request' => serialize( $args) );
+    $response = wp_remote_post( $url, array( 'body' => $request ) );
+    $plugins_info = unserialize( $response['body'] );
+    $result = array();
+    $total_dl = '';
+    if ( isset( $plugins_info ) ) {
+        # let's build our array of data to return
+        foreach ($plugins_info->plugins as $plugin) {
+            $pl_name = $plugin->slug;
+            $pl_dirlink = 'https://wordpress.org/plugins/' . $pl_name;
+            $pl_download = $plugin->download_link;
+            $pl_downloaded = $plugin->downloaded;
+            $pl_voters = $plugin->num_ratings;
+            $pl_stars = $plugin->ratings;
+            $avg_vote = ($pl_stars[1] + $pl_stars[2] * 2 + $pl_stars[3] * 3 + $pl_stars[4] * 4 + $pl_stars[5] * 5) / $pl_voters;
+            $pl_avg_vote = ( ! is_int($avg_vote) ? 0 : $avg_vote );
+            $result[$pl_name] = array(
+                'dir_link' => $pl_dirlink,
+                'dl_link' => $pl_download,
+                'downloaded' => $pl_downloaded,
+                'voters' => $pl_voters,
+                'avg_rating' => $pl_avg_vote
+            );
+            $total_dl += $pl_downloaded;
+        }
+        $result['total_plugins'] = count($plugins_info->plugins);
+        $result['total_downloads'] = $total_dl;
+        return $result;
+    }
+    return array();
+}
+
+// Execute cron
+function danix_save_plugins_stats() {
+
+  $plugins = danix_get_plugins_stats();
+  update_option( 'danix_plugins_stats', $plugins );
+}
+add_action( 'danix_save_plugins_stats', 'danix_save_plugins_stats' );
+
+// Schedule cron
+if ( ! wp_next_scheduled( 'danix_save_plugins_stats' ) ) :
+  wp_schedule_event( 1407110400, 'daily', 'danix_save_plugins_stats' ); // 1407110400 is 08 / 4 / 2014 @ 0:0:0 UTC
+endif;
+
+/**
+ * The dotOrg plugins stats shortcode
+ *
+ * @param url $link link address.
+ * @param string $linkname text that will be displayed by the button.
+ * @return string HTML the link tag that will be rendered to the page.
+ *
+ */
+function danix_display_plugins_stats() {
+    $option_stats = get_option('danix_plugins_stats');
+    $plugins = ( false === $option_stats ? danix_get_plugins_stats() : $option_stats );
+    $average = '';
+    foreach ($plugins as $plugin) {
+        $average += $plugin['avg_rating'];
+    }
+    $average = $average / $plugins['total_plugins'];
+    ?>
+    <dl>
+        <dt><?php _e("Plugins", 'sog_simplify'); ?></dt>
+        <dd><?php printf( _n('I created %s plugin', 'I created %s plugins', $plugins['total_plugins'], 'sog_simplify' ), $plugins['total_plugins'] ); ?></dd><br />
+        <?php foreach ($plugins as $name => $data) { 
+            if (is_array($data) ) : ?>
+                <dd><a href="<?php echo $data['dir_link']; ?>"><?php echo $name; ?></a></dd>
+            <?php endif; ?>
+        <?php } ?>
+        <dt><?php _e('Total Downloads', 'sog_simplify'); ?></dt>
+        <dd><?php echo $plugins['total_downloads']; ?></dd>
+    </dl>
+<?php }
+add_shortcode('dotOrgStats', 'danix_display_plugins_stats');