Archive for the 'databases' Category
Tuesday, May 25th, 2010
Civi Updates & Announcements:
- first public alpha this Friday, code is pretty stable
- good changes in UI, features, functions
- CiviCRM book is “officially” coming out after book sprint in April, though it’s already up on en.flossmanuals.net - it’s bigger than Harry Potter! Includes broken out sections with step-by-step guides for everyday tasks
- Check out http://civicrm.org/groups/nyc for more info on the meetup group
- DrupalCampNYC 8 - coming up in July, already 2/3 sold out after one day! http://groups.drupal.org/nyc
Case Study: Phillip Bien - NYS Coalition of Social Workers
- NYS Coalition of Social Workers - formed by a handful of social workers to work directly at teh legislative level
- needed a new website to support advocacy costs, needed raise cash to do effective work to change the laws
- needed powerful professional website, membership benefits & incentives to join - all on a shoestring budget
- CiviCRM 3.1.3, Drupal 6, Dreamhost Private Server (LAMP) with PayPal
- wanted to build a longterm solution
- needed lower fees than a managed SaaS
- open source, strong track record
- Drupal ACL based on membership, abundant Drupal modules, CiviCRM better & better
- current site features: public site, memberships join and create site login, permissioned content types, downloads & docs archive, register for events, self-service contact info updating
- using entirely out of the box solutions for membership, events, etc
- Drupal modules in use: CiviCRM, CiviMember Roles Sync, CCk, content permissions, filefield, text, color, help, taxonomy, pathauto, string overrides, google analytics, views, views UI
- You could do this all without Terminal/CLI, cash, php, html, css, but you should get some help if you can!
- Future: want classified ads, membership cards, CiviMail, member and nonmember pricing for events and purchases, find someone else to work on the site, expire memberships on the first of the month instead of 365 days after join date
- Accomplishments: their legislation is on the Gov’s desk for signature, got lots of new paid members, love the new site for aesthetics, ease of use for site visitors, org members, and administrators
- “NYC CiviCRM meetup provided critical direction to pull this off”
CiviCase Overview and Demo
- track interactions between your organization and constituents
- related to activities built into CiviCRM constituents
- CiviCase ties activities together to create work flows for activities related to constituents
- can create rigorous workflows with requirements for what needs to be done by whom in order to close a case
- good example of a feature developed for a particular group’s needs and contributed back to the larger Civi community
- Right now there is no UI; need to configure an XML file to set up CiviCase, though there’s good documentation online
- You can write import/export interfaces to import anything into CiviCRM, so case information can probably be imported (e.g. from Act) though entire cases can’t be exported from Civi
- Rayogram created email inbox processing script to parse and create new cases in CiviCase via email
- Cases are made up of individual activities in relation to a CiviCRM contact
- When you open a case for a contact, you can describe the details of the case, assign a subject, select a case type, set a status, and create a start date and duration
- opening and closing a case is an activity; you then create new activities within the case
- Jack’s thoughts about specific use cases for clients: CiviCase for grant application processes? safe space cultivation? pen pals?
CiviRelate
- created by FatherShawn
- Drupal module that allows logged-in users to create relationships to a new Civi contacts when they enter that new contact’s information through a profile
- First using CiviRegister, another Drupal module which allows someone to fill out a Civi profile and create a Drupal login at the same time
- Does a dupe check and merge for the contact being entered
- Shawn used Coder to check his code
- module is currently in the Drupal.org CVS queue, but in the meantime you can find it on the CiviCRM wiki
Random Notes
- Check out Boost module for sending an entire Drupal site to static pages that are presented to anonymous users
Posted in CiviCRM, Drupal | 3 Comments »
Thursday, April 22nd, 2010
Kyle Jaster from Rayogram
- http://civicrm.org/blog/3711
- Rayogram planned and developed features with the intent to contribute them back to the larger Civi community
- When approaching projects like that, you need to think about how you can abstract your requirements so that they fit more use cases than just yours
- Tackled all of the core-related work first, so that bug fixes got into CiviCRM svn and can be easily pulled to facilitate the more customized aspects of dev for the project
NYSS Use Case
- typical contact tracking with a few custom profile fields
- extensive use of CiviCase and Activities
- integration with legacy mass mail solution (for now, CiviMail possible in the future)
- nearly standalone - very few Drupal features used
- big database, lots of records!
Optimization
- did a lot of testing & improvements to make sure it would work for NYSS
- many of these improvements will be part of CiviCRM 3.2 release
- worked with core
- memcache support
- Apache Solr search
Front End
- usability improvements, new features, increased “themeability” of CiviCRM
- usability improvements
- formalized the workflow in the UI - built in ways to go about the work (search, view, edit, repeat) - make that implicit in the UI
- pulled out nav bar to avoid confusion for end users
- consistent styling of forms
- clean up look and feel, reduce visual clutters
- restyled Contact Summary to reduce visual noise
- unbolded field labels so that content is more prominent and easily scanned rather than focus on labels
- when clicking on help links, help pops up consistently in one spot (for them, bottom right corner of the screen)
- looks like they somehow implemented vertical tabs?
- increased quality of page titles - things that you’re doing are laid out in the page title for better context
- buttons: added semantic icons to buttons
- themeability and design tweaks
- separate out structural CSS, eases dev work in refining UI, prep future “custom css” directory
- vertical tabs that are shown in demo aren’t going to be in CiviCRM core yet, but Kyle will publish the CSS
- New Features
- context-sensitive Actions module
- ability to edit contact info from any screen, not just returning to Summary
- Summary Overlay - as of 3.2, when you hover over a contact in search results, it pulls up basic profile info
- Free-Tagging Contacts, Cases, and Activities
- reserved = not editable by a general user
- CiviCase dashboard elements as dashlets on Contact dashboard
Posted in CiviCRM, CiviCon 2010 | No Comments »
Wednesday, April 21st, 2010
Breakout conversation: CiviCRM and the Drupal Community
notes started partway into the conversation
- How does a person contribute in bite-sized chunks to a code base that is monolithic?
- You can write Drupal modules for CiviCRM - that’s the best way to extend CiviCRM and is a recent development with added hook support
- Drupal has Form API, CiviCRM has Quick Form - you have to be willing to make that leap and learn something new
- there’s a big gap between the users and the developers
- there seems to be a Drupal/CiviCRM PR problem
- CiviCRM can either be broken down into smaller modules are not; just have to make a strong decision and stand behind it.
- Need to put projects out there that’s well defined for people to work on. Give people more concrete ways to get involved. Give specific points of contact for the work.
- CiviCRM is changing. In recent years the concepts of components have appeared, making things more modular; the API and hooks are better developed
- The thoughts that are going on internal to CiviCRM developers that might please Drupal folks need to be publicized better
- Thoughts about having Minimal and Standard installations (maybe Custom too) similar to Drupal 7 installation
- Could have a packged up Drupal/CiviCRM installation to make things easier
- more training videos and materials
- aesthetic differences between Drupal and CiviCRM can also be challenging when going from the former to the latter
- Large CSS and templates cleanup is underway for CiviCRM
- idea to develop a guide to CiviCRM for Drupal developers to ease transition, point out parallels
- modularize WYSIWYG so that people can choose to either use CiviCRM-bundled WYSIWYG or Drupal WYSIWYG API module
Posted in CiviCRM, Drupal, DrupalCon SF 2010 | No Comments »
Tuesday, March 16th, 2010
- NYC has the first group page on CiviCRM.org. It’s a pilot, so comments and suggestions are very welcome to make it more useful.
- Case Study: Fred from the Man Up Campaign
- Joomla website
- Use CiviCRM profiles for contact pages to collect information from site visitors, track their inquiries
- Also successfully used Profiles to collect fairly complex applications for a large campaign
- Added tons of custom fields to collect info via profiles, but use standard fields for email addresses, phone numbers, etc so basic info is easily accessible through search results fields and other views of contact summaries
- Custom fields can then be added to different profiles in different arrangements for public display and use; can also be used internally for data entry
- Also set up simple donation interface for the site through Civi - using PayPal, probably going to switch to Authorize.net
- Other folks using PayPal Pro (user does everything right on the site for about $37/mo, better experiences reported than with standard PayPal), Authorize.net (good experiences reported, the more payments you receive the more you can negotiate your per-payment rate down), Intuit and Google Checkout (painful experiences reported for both)
- Peter on CiviMail
- gotta keep your email lists and your emails themselves clean to avoid being blacklisted as spam
- big risk to send mail via shared hosting because you don’t know who else is sending crap email/spam from your shared host; better off going with VPS and setting up your own mail server
- Peter went with Google Apps & Gmail to send through CiviMail
- Other hosted options: May First/People Link has a dedicated bulk mail server that members can use to send via CiviMail; CiviSMPT is out there too
- CiviMail includes tracking via click-thru processes to allow reporting on who clicked what when
- CiviMail also tracks opens via a 1px image included in the email; not guaranteed since images aren’t always opened by email clients, but can give you some indication of how many folks are opening an email. Good for comparing who opened Email X vs Email Y (percentages, not accurate numbers)
- CiviMail includes handlers for forwarding replies, auto-responders, unsubscribes and resubscribes, opt-outs. CiviMail uses tokens in the emails so that it can tell which user is clicking and unsubscribe that particular user; unsubscribes users from the group you sent the mailing to. Users who click on the unsubscribe link don’t need to log into anywhere because of the token.
- Unsubscribed users will be removed from the group, but there will still be an indication that they used to belong to that group so you can tell that they unsubscribed themselves.
- Set up a cron job to run the script that looks for outgoing mail in CiviCRM and sends it; configure it to go every x minutes and send y number of emails per process. You need to know what your server’s hourly/daily/size limits.
- reply channels through VERP address - CiviCRM can go through a separate mailbox, pull out replies through the VERP token, track who replied, opted out, etc
- Another cron job is set up for a script checks whatever inbox you set up as the reply channel and processes the emails according to the VERP tokens in the reply-to addresses
- Whether VERP works depends on your mail host/mail system; Google supports VERP, should check whether your host does too.
- you can use a separate email account for the reply channel; you could also have this go to a bogus email account - CiviMail can process all the things on your own mail server that weren’t addressed to a real account (only possible if you’re running your own mail server)
- VERP will actually process the messages in your selected VERP inboxes.
- There’s an experimental script on the wiki that will map response emails to activities for the responding CiviCRM contact
- This stuff is set up through different CiviMail scripts triggered by cron jobs - these are located in the civicrm/bin folder
- Can create mail content on screen (editing HTML directly or using WYSIWYG, though that can wreck the email HTML) or import it from elsewhere; save templates for emails; you can create both HTML and plain text
- You can insert tokens from contacts’ info, tokens for opt outs
- CiviMail will block emails that don’t include opt-out mechanisms somewhere in the email (header, body, footer)
- CANSPAM regulations require opt out AND full snail mail addresses to be included on emails that are soliciting money! (did not know that!)
- Some folks suggest putting the opt-out link right at the top of the email (e.g. in the header) so users opt out instead of clicking “This is spam.”
- CiviMail lets you send test emails to certain groups, schedule mailings or send immediately.
- You can create CiviCRM profiles that allow mail recipients/site visitors to subscribe/unsubscribe themselves from public groups (and create CiviCRM contacts if they’re not already in there); adding the checksum value (token provided when creating the email) pulls that contact’s information into the profile fields, letting them edit their existing information
- You can look back at scheduled and sent emails, archive them, reuse old emails as templates, view reports
Posted in CRMs, CiviCRM, Drupal, Uncategorized, databases, networking | 2 Comments »
Thursday, September 10th, 2009
These are truly raw notes taken at the CiviCRM Developer Camp in NYC. These notes are mostly intended for and thus primarily decipherable by me, but I’m sharing them in case there’s something of use or interest for other folks.
Version Control
- You use svn to access most recent versions of CiviCRM code
- git is more useful for keeping track of your own changes with local commits, which is not possible in svn
- there’s a git-svn tool that pulls from a svn repo into a git repo
- code.creativecommon.org includes the cron job they use for git-svn
- branching in git is far more trivial than branching in svn
- there’s also a git-cvs tool out there (useful for Drupal code)
Posted in CiviCRM | No Comments »
Thursday, September 10th, 2009
These are truly raw notes taken at the CiviCRM Developer Camp in NYC. These notes are mostly intended for and thus primarily decipherable by me, but I’m sharing them in case there’s something of use or interest for other folks.
These sessions are very hands-on, so my notes will be more sparse than normal as I try to keep up!
Session One
- CiviCRM-specific Drupal modules don’t need to go in /sites/all/modules/civicrm/drupal/modules; they can go anywhere in the modules folder (e.g. /sites/all/modules)
- Lobo advises not closing the
- CRM_Core_Error::debug - displays debug error on the screen on page load. CRM_Core_Error::debug_var dumps info to a log file in the civicrm upload directory
- When creating custom CiviCRM templates, you should save them in a directory outside of /sites/all/modules/civicrm and then tell CiviCRM where that directory is in Administer >> Configure >> Global Settings >> Directories. If your changes don’t go into effect, you need to get rid of the sites/default/files/civicrm/templates_c directory (where templates are cached) either through your filesystem (rm -rf) or by enabling Debugging in CiviCRM (Administer >> Configure >> Global Settings >> Debugging) and adding the “directoryCleanup=1″ argument to a civicrm URL (e.g. http://localhost/sandbox/civicrm/admin/setting?reset=1&directoryCleanup=1)
- When you see stuff like “CRM_Utils_Array::value”, it’s a CiviCRM class. CiviCRM classes tend to correspond to the code & directory structure, so if I go to civicrm/CRM/Utils/Array.php I’ll find a function there called “value.” Brilliant!
Session Two
- Looked at multicurrency module: http://svn.civicrm.org/tools/trunk/drupal/modules/multicurrency/ - ways to deal with currency conversion for events with international participation & managing discounts
- Also looked at multisite module: http://svn.civicrm.org/tools/trunk/drupal/modules/multisite/
- Random tip: when using the buildForm hook, $formName corresponds with the form’s .tpl file (which you can get by viewing source) 99.9% of the time
Posted in CiviCRM | No Comments »
Thursday, September 10th, 2009
These are truly raw notes taken at the CiviCRM Developer Camp in NYC. These notes are mostly intended for and thus primarily decipherable by me, but I’m sharing them in case there’s something of use or interest for other folks.
- After hearing many requests for reports, CiviCRM decided to write CiviReports
These are truly raw notes taken at the CiviCRM Developer Camp in NYC. These notes are mostly intended for and thus primarily decipherable by me, but I’m sharing them in case there’s something of use or interest for other folks.
- Highlights in v3.0:
- ships with 20+ premade reports
- ability to automatically email reports via cron
- export reports in .csv and .pdf formats
- supports graphical reports (not just tabular, pie charts + bar charts too
- You can put all records that come up in a report into a group directly from the report view
- Report URLs accept arguments that can alter the search parameters for the report
Posted in CiviCRM | No Comments »
Thursday, September 10th, 2009
These are truly raw notes taken at the CiviCRM Developer Camp in NYC. These notes are mostly intended for and thus primarily decipherable by me, but I’m sharing them in case there’s something of use or interest for other folks.
- When first creating CiviCRM Views, if CiviCRM & Drupal are in different databases (which is recommended), the user for the Drupal MySQL user in has to have permissions (perhaps just Select permissions?) for the CiviCRM database. You also have to go into CiviCRM Global Settings >> Administer >> Configure >> CMS integration and follow the instructions in the Views integration settings box to update your Drupal settings.php file.
- When you create a new view, you’ll see different CiviCRM options under View Type. Even though you select a specific view type, e.g. CiviCRM Contributions or CiviCRM Contacts, other fields that are related to those types’ tables will be available to you in your view.
- You can add the available CiviCRM fields to your view as usual. Also as usual, you can do neater, more powerful stuff by creating Relationships and Arguments in your Views that are based on the newly available CiviCRM fields.
Posted in CRMs, CiviCRM, Drupal, databases | No Comments »
Wednesday, September 9th, 2009
These are truly raw notes taken at the CiviCRM Developer Camp in NYC. These notes are mostly intended for and thus primarily decipherable by me, but I’m sharing them in case there’s something of use or interest for other folks.
Lobo extended CiviCRM for use in his kids’ school. This is a high-level overview of what he did.
Basic Overview
- Writing a Simple Extension
- Write a .info and .module file
- Enable the module
- Implement your CiviCRM and/or Drupal hooks in the .module file
- What does the module do?
- For parents to manage their info themselves
- update address/email/phone
- sign up for extended care classes
- sign up for parent teacher conference meetings
- answer teacher questionnaires
- How did they do it?
- Custom Groups and Fields
- Profiles
- Permissioned Relationships - if User A has a permissioned relationship with User B, User A can edit User B’s data.
- Hooks
- buildForm / postProcess
- pageRun
- xmlMenu
- More details
- Used multi-record Custom Data Groups; implemented save/update via hooks
- Customized templates to improve look of multi-record custom data groups display
- Customized menu handlers for some functionality
- Manage one custom table to hold data
- Custom reports for teachers
- Code is publicly available, same CiviCRM license - http://svn.civicrm.org/sfschool/trunk
A more intensive look
- The Drupal module
- http://svn.civicrm.org/sfschool/trunk/drupal/sfschool/sfschool.module
- sfschool_civicrm_pageRun is the civicrm_pageRun (render a page) hook used within the sfschool module
- Drupal takes care of all of the hook implementation
- And this is where I get lost; think I’m missing some basic understanding of hooks, Drupal modules, etc. Might be time to finally learn that stuff! From here out I’ll take some sparse notes on key tips, resources, etc.
- Smarty template engine: http://www.smarty.net/
- check out civicrm/drupal/civitest.module.sample for examples of hooks implementation
- on the CiviCRM wiki in the developer section, list of all the hooks with explanation and some examples: http://wiki.civicrm.org/confluence/display/CRMDOC/CiviCRM+hook+specification
- Custom Template for Multiple Record Custom Data Groups
- Lobo changed the view for a specific custom data group, not for the other custom groups.
- Created two new templates: CustomDataView.tpl and StandardCustomDataView.tpl. CustomDataView.tpl has some Smarty code that tests for the right $groupId and redirects to StandardCustomDataView.tpl if it’s not the specific group ($groupId = 2) that Lobo wanted to show differently.
Posted in CRMs, CiviCRM, databases | No Comments »
Wednesday, September 9th, 2009
These are truly raw notes taken at the CiviCRM Developer Camp in NYC. These notes are mostly intended for and thus primarily decipherable by me, but I’m sharing them in case there’s something of use or interest for other folks.
Custom Fields & Profiles
- Custom fields come in sets; a given set of custom fields will be use to extend just one type of record (e.g. contacts, contributions, activities, events, etc), so you need to think carefully about where this information really belongs. You designate the record type that the custom data is used for at the set level, not at the individual field level, so choose carefully!
- Create and edit custom fields in Administer >> Customize >> Custom Data (v3.0 navigation structure, may not be the same in v2.x)
- Every new custom data set that you create becomes a new table in your system, named civicrm_value_your_custom_group_name_id_of_custom_group (example: civicrm_value_participant_info_16); every field you create in that custom group is a column in that table. There’s also a foreign key column to the table of the record type that this custom data group is for.
- When creating a custom field, you choose the type of data for the field and the input field type. Additional options will appear depending on the type of data and input field type you select.
- Neat data type - Contact Reference, which provides an autocomplete list of the other contacts in your database.
- There’s a hook that allows your custom field to look up options and values for a select field from an external data source.
- For Custom Data Groups created for Contacts (Contacts, Individuals, Organizations, or Households), there’s a relatively new “Does this Custom Data Group allow multiple records?” option to record multiple instances of information for a custom data group. Example: a “Past Employment” custom data group with Organization, Job Title, and Employment Dates fields; you could record many past jobs for that contact, not just one.
- Current Limitations of Custom Data Groups: Can’t export information in a custom data group with multiple records (though someone could probably right some custom SQL to do it, just can’t do it through the CiviCRM export interface); you can’t use custom data groups with multiple records in profiles.
- Create new profiles in Administer >> Customize >> CiviCRM Profile
- To include custom fields on, for example, an event registration form, you would add the custom field to a profile. When creating or editing the event registration form, you would tell it to embed that profile in the online registration form.
- You can also embed profiles in Drupal User Registration and View/Edit Drupal Users.
- Advanced Settings for profiles: limit listings to a specific group, add contacts to a group, notify when profile form is filled out, redirect URL for after profile form is submitted, cancel redirect URL for if someone cancels filling out the profile, use reCaptcha for the profile, Drupal account registration options, etc.
- Batch Update Via Profile - allows you to update records of a single type - do a search, select “Batch Update via profile” for the found set, then presented with a grid of editable fields from your selected profile for all of the contacts, including ability to propagate a value to all records in the found set.
- Can also use profiles for controlling what columns you see in advanced search; go to Settings for a Profile and select Use For > Search Results, then make sure that the individual fields in the profile are set to Public Pages or Public Pages & Listings visibility and have the “Results column?” box ticked.
- You can also invoke a search interface based on a profile by calling a profile url without “create” or anything else added to it (Fuzzy explanation, should probably look into this more)
Posted in CRMs, CiviCRM, databases | No Comments »