Add civix generated boilerplate.
authorDavid Thompson <davet@gnu.org>
Mon, 29 Sep 2014 16:26:31 +0000 (12:26 -0400)
committerDavid Thompson <davet@gnu.org>
Mon, 29 Sep 2014 16:26:31 +0000 (12:26 -0400)
* COPYING: Use civix auto-generated license text.
* COYPING.exception: Delete it.
* info.xml: New file.
* memberdashboard.civix.php: New file.
* memberdashboard.php: New file.

COPYING
COPYING.exception [deleted file]
info.xml [new file with mode: 0644]
memberdashboard.civix.php [new file with mode: 0644]
memberdashboard.php [new file with mode: 0644]

diff --git a/COPYING b/COPYING
index dba13ed2ddf783ee8118c6a581dbf75305f816a3..6db1b93bb797233eea970d23f25d5a23aae3d99c 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -1,3 +1,9 @@
+Package: org.fsf.memberdashboard
+Copyright (C) 2014, Free Software Foundation, Inc. <sysadmin@gnu.org>
+Licensed under the GNU Affero Public License 3.0 (below).
+
+-------------------------------------------------------------------------------
+
                     GNU AFFERO GENERAL PUBLIC LICENSE
                        Version 3, 19 November 2007
 
diff --git a/COPYING.exception b/COPYING.exception
deleted file mode 100644 (file)
index 29dbf0d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-CiviCRM Licensing Exception
-
-Copyright (c) 2010 CiviCRM LLC, http://civicrm.org/
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-This CiviCRM Licensing Exception is an additional permission under section 7
-of the GNU Affero General Public License, version 3. It applies to a given file
-that bears a notice stating that the file is governed by that license along
-with this exception.
-
-Permission is hereby granted to combine the Program with works
-licensed under the PHP License versions 2.01, 2.02, 3.0 and 3.01.
-
-Permission is hereby granted to license modified versions of the
-Program to CiviCRM LLC under the Academic Free License version 3.
diff --git a/info.xml b/info.xml
new file mode 100644 (file)
index 0000000..012f37e
--- /dev/null
+++ b/info.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<extension key="org.fsf.memberdashboard" type="module">
+  <file>memberdashboard</file>
+  <name>FSF Membership Dashboard</name>
+  <description>
+    A user interface for FSF members to manage their contact
+    information, donations, email forwarding addresses, and more.
+  </description>
+  <license>AGPL-3.0</license>
+  <maintainer>
+    <author>Free Software Foundation, Inc.</author>
+    <email>sysadmin@gnu.org</email>
+  </maintainer>
+  <urls>
+    <url desc="Main Extension Page">http://FIXME</url>
+    <url desc="Documentation">http://FIXME</url>
+    <url desc="Support">http://FIXME</url>
+    <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
+  </urls>
+  <releaseDate>2014-09-29</releaseDate>
+  <version>0.1</version>
+  <develStage>alpha</develStage>
+  <compatibility>
+    <ver>4.2</ver>
+  </compatibility>
+  <comments></comments>
+  <civix>
+    <namespace>CRM/Memberdashboard</namespace>
+  </civix>
+</extension>
diff --git a/memberdashboard.civix.php b/memberdashboard.civix.php
new file mode 100644 (file)
index 0000000..330a3da
--- /dev/null
@@ -0,0 +1,279 @@
+<?php
+
+// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file
+
+/**
+ * (Delegated) Implementation of hook_civicrm_config
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config
+ */
+function _memberdashboard_civix_civicrm_config(&$config = NULL) {
+  static $configured = FALSE;
+  if ($configured) return;
+  $configured = TRUE;
+
+  $template =& CRM_Core_Smarty::singleton();
+
+  $extRoot = dirname( __FILE__ ) . DIRECTORY_SEPARATOR;
+  $extDir = $extRoot . 'templates';
+
+  if ( is_array( $template->template_dir ) ) {
+      array_unshift( $template->template_dir, $extDir );
+  } else {
+      $template->template_dir = array( $extDir, $template->template_dir );
+  }
+
+  $include_path = $extRoot . PATH_SEPARATOR . get_include_path( );
+  set_include_path( $include_path );
+}
+
+/**
+ * (Delegated) Implementation of hook_civicrm_xmlMenu
+ *
+ * @param $files array(string)
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu
+ */
+function _memberdashboard_civix_civicrm_xmlMenu(&$files) {
+  foreach (_memberdashboard_civix_glob(__DIR__ . '/xml/Menu/*.xml') as $file) {
+    $files[] = $file;
+  }
+}
+
+/**
+ * Implementation of hook_civicrm_install
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install
+ */
+function _memberdashboard_civix_civicrm_install() {
+  _memberdashboard_civix_civicrm_config();
+  if ($upgrader = _memberdashboard_civix_upgrader()) {
+    $upgrader->onInstall();
+  }
+}
+
+/**
+ * Implementation of hook_civicrm_uninstall
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall
+ */
+function _memberdashboard_civix_civicrm_uninstall() {
+  _memberdashboard_civix_civicrm_config();
+  if ($upgrader = _memberdashboard_civix_upgrader()) {
+    $upgrader->onUninstall();
+  }
+}
+
+/**
+ * (Delegated) Implementation of hook_civicrm_enable
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable
+ */
+function _memberdashboard_civix_civicrm_enable() {
+  _memberdashboard_civix_civicrm_config();
+  if ($upgrader = _memberdashboard_civix_upgrader()) {
+    if (is_callable(array($upgrader, 'onEnable'))) {
+      $upgrader->onEnable();
+    }
+  }
+}
+
+/**
+ * (Delegated) Implementation of hook_civicrm_disable
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable
+ * @return mixed
+ */
+function _memberdashboard_civix_civicrm_disable() {
+  _memberdashboard_civix_civicrm_config();
+  if ($upgrader = _memberdashboard_civix_upgrader()) {
+    if (is_callable(array($upgrader, 'onDisable'))) {
+      $upgrader->onDisable();
+    }
+  }
+}
+
+/**
+ * (Delegated) Implementation of hook_civicrm_upgrade
+ *
+ * @param $op string, the type of operation being performed; 'check' or 'enqueue'
+ * @param $queue CRM_Queue_Queue, (for 'enqueue') the modifiable list of pending up upgrade tasks
+ *
+ * @return mixed  based on op. for 'check', returns array(boolean) (TRUE if upgrades are pending)
+ *                for 'enqueue', returns void
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade
+ */
+function _memberdashboard_civix_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
+  if ($upgrader = _memberdashboard_civix_upgrader()) {
+    return $upgrader->onUpgrade($op, $queue);
+  }
+}
+
+/**
+ * @return CRM_Memberdashboard_Upgrader
+ */
+function _memberdashboard_civix_upgrader() {
+  if (!file_exists(__DIR__.'/CRM/Memberdashboard/Upgrader.php')) {
+    return NULL;
+  } else {
+    return CRM_Memberdashboard_Upgrader_Base::instance();
+  }
+}
+
+/**
+ * Search directory tree for files which match a glob pattern
+ *
+ * Note: Dot-directories (like "..", ".git", or ".svn") will be ignored.
+ * Note: In Civi 4.3+, delegate to CRM_Utils_File::findFiles()
+ *
+ * @param $dir string, base dir
+ * @param $pattern string, glob pattern, eg "*.txt"
+ * @return array(string)
+ */
+function _memberdashboard_civix_find_files($dir, $pattern) {
+  if (is_callable(array('CRM_Utils_File', 'findFiles'))) {
+    return CRM_Utils_File::findFiles($dir, $pattern);
+  }
+
+  $todos = array($dir);
+  $result = array();
+  while (!empty($todos)) {
+    $subdir = array_shift($todos);
+    foreach (_memberdashboard_civix_glob("$subdir/$pattern") as $match) {
+      if (!is_dir($match)) {
+        $result[] = $match;
+      }
+    }
+    if ($dh = opendir($subdir)) {
+      while (FALSE !== ($entry = readdir($dh))) {
+        $path = $subdir . DIRECTORY_SEPARATOR . $entry;
+        if ($entry{0} == '.') {
+        } elseif (is_dir($path)) {
+          $todos[] = $path;
+        }
+      }
+      closedir($dh);
+    }
+  }
+  return $result;
+}
+/**
+ * (Delegated) Implementation of hook_civicrm_managed
+ *
+ * Find any *.mgd.php files, merge their content, and return.
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_managed
+ */
+function _memberdashboard_civix_civicrm_managed(&$entities) {
+  $mgdFiles = _memberdashboard_civix_find_files(__DIR__, '*.mgd.php');
+  foreach ($mgdFiles as $file) {
+    $es = include $file;
+    foreach ($es as $e) {
+      if (empty($e['module'])) {
+        $e['module'] = 'org.fsf.memberdashboard';
+      }
+      $entities[] = $e;
+    }
+  }
+}
+
+/**
+ * (Delegated) Implementation of hook_civicrm_caseTypes
+ *
+ * Find any and return any files matching "xml/case/*.xml"
+ *
+ * Note: This hook only runs in CiviCRM 4.4+.
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_caseTypes
+ */
+function _memberdashboard_civix_civicrm_caseTypes(&$caseTypes) {
+  if (!is_dir(__DIR__ . '/xml/case')) {
+    return;
+  }
+
+  foreach (_memberdashboard_civix_glob(__DIR__ . '/xml/case/*.xml') as $file) {
+    $name = preg_replace('/\.xml$/', '', basename($file));
+    if ($name != CRM_Case_XMLProcessor::mungeCaseType($name)) {
+      $errorMessage = sprintf("Case-type file name is malformed (%s vs %s)", $name, CRM_Case_XMLProcessor::mungeCaseType($name));
+      CRM_Core_Error::fatal($errorMessage);
+      // throw new CRM_Core_Exception($errorMessage);
+    }
+    $caseTypes[$name] = array(
+      'module' => 'org.fsf.memberdashboard',
+      'name' => $name,
+      'file' => $file,
+    );
+  }
+}
+
+/**
+ * Glob wrapper which is guaranteed to return an array.
+ *
+ * The documentation for glob() says, "On some systems it is impossible to
+ * distinguish between empty match and an error." Anecdotally, the return
+ * result for an empty match is sometimes array() and sometimes FALSE.
+ * This wrapper provides consistency.
+ *
+ * @link http://php.net/glob
+ * @param string $pattern
+ * @return array, possibly empty
+ */
+function _memberdashboard_civix_glob($pattern) {
+  $result = glob($pattern);
+  return is_array($result) ? $result : array();
+}
+
+/**
+ * Inserts a navigation menu item at a given place in the hierarchy
+ *
+ * $menu - menu hierarchy
+ * $path - path where insertion should happen (ie. Administer/System Settings)
+ * $item - menu you need to insert (parent/child attributes will be filled for you)
+ * $parentId - used internally to recurse in the menu structure
+ */
+function _memberdashboard_civix_insert_navigation_menu(&$menu, $path, $item, $parentId = NULL) {
+  static $navId;
+
+  // If we are done going down the path, insert menu
+  if (empty($path)) {
+    if (!$navId) $navId = CRM_Core_DAO::singleValueQuery("SELECT max(id) FROM civicrm_navigation");
+    $navId ++;
+    $menu[$navId] = array (
+      'attributes' => array_merge($item, array(
+        'label'      => CRM_Utils_Array::value('name', $item),
+        'active'     => 1,
+        'parentID'   => $parentId,
+        'navID'      => $navId,
+      ))
+    );
+    return true;
+  } else {
+    // Find an recurse into the next level down
+    $found = false;
+    $path = explode('/', $path);
+    $first = array_shift($path);
+    foreach ($menu as $key => &$entry) {
+      if ($entry['attributes']['name'] == $first) {
+        if (!$entry['child']) $entry['child'] = array();
+        $found = _memberdashboard_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item, $key);
+      }
+    }
+    return $found;
+  }
+}
+
+/**
+ * (Delegated) Implementation of hook_civicrm_alterSettingsFolders
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders
+ */
+function _memberdashboard_civix_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) {
+  static $configured = FALSE;
+  if ($configured) return;
+  $configured = TRUE;
+
+  $settingsDir = __DIR__ . DIRECTORY_SEPARATOR . 'settings';
+  if(is_dir($settingsDir) && !in_array($settingsDir, $metaDataFolders)) {
+    $metaDataFolders[] = $settingsDir;
+  }
+}
diff --git a/memberdashboard.php b/memberdashboard.php
new file mode 100644 (file)
index 0000000..881a4f7
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+
+require_once 'memberdashboard.civix.php';
+
+/**
+ * Implementation of hook_civicrm_config
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config
+ */
+function memberdashboard_civicrm_config(&$config) {
+  _memberdashboard_civix_civicrm_config($config);
+}
+
+/**
+ * Implementation of hook_civicrm_xmlMenu
+ *
+ * @param $files array(string)
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu
+ */
+function memberdashboard_civicrm_xmlMenu(&$files) {
+  _memberdashboard_civix_civicrm_xmlMenu($files);
+}
+
+/**
+ * Implementation of hook_civicrm_install
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install
+ */
+function memberdashboard_civicrm_install() {
+  _memberdashboard_civix_civicrm_install();
+}
+
+/**
+ * Implementation of hook_civicrm_uninstall
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall
+ */
+function memberdashboard_civicrm_uninstall() {
+  _memberdashboard_civix_civicrm_uninstall();
+}
+
+/**
+ * Implementation of hook_civicrm_enable
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable
+ */
+function memberdashboard_civicrm_enable() {
+  _memberdashboard_civix_civicrm_enable();
+}
+
+/**
+ * Implementation of hook_civicrm_disable
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable
+ */
+function memberdashboard_civicrm_disable() {
+  _memberdashboard_civix_civicrm_disable();
+}
+
+/**
+ * Implementation of hook_civicrm_upgrade
+ *
+ * @param $op string, the type of operation being performed; 'check' or 'enqueue'
+ * @param $queue CRM_Queue_Queue, (for 'enqueue') the modifiable list of pending up upgrade tasks
+ *
+ * @return mixed  based on op. for 'check', returns array(boolean) (TRUE if upgrades are pending)
+ *                for 'enqueue', returns void
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade
+ */
+function memberdashboard_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
+  return _memberdashboard_civix_civicrm_upgrade($op, $queue);
+}
+
+/**
+ * Implementation of hook_civicrm_managed
+ *
+ * Generate a list of entities to create/deactivate/delete when this module
+ * is installed, disabled, uninstalled.
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_managed
+ */
+function memberdashboard_civicrm_managed(&$entities) {
+  _memberdashboard_civix_civicrm_managed($entities);
+}
+
+/**
+ * Implementation of hook_civicrm_caseTypes
+ *
+ * Generate a list of case-types
+ *
+ * Note: This hook only runs in CiviCRM 4.4+.
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_caseTypes
+ */
+function memberdashboard_civicrm_caseTypes(&$caseTypes) {
+  _memberdashboard_civix_civicrm_caseTypes($caseTypes);
+}
+
+/**
+ * Implementation of hook_civicrm_alterSettingsFolders
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders
+ */
+function memberdashboard_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) {
+  _memberdashboard_civix_civicrm_alterSettingsFolders($metaDataFolders);
+}