| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | <?php/** * @file * The Flag Bookmark module install hooks. *//** * Implements hook_install(). */function materio_flag_install() {  // Everything is handled by hook_enable().}/** * Implements hook_enable(). * * We create the demonstration flag on enable, so hook implementations in flag * module will fire correctly, as the APIs are not available on install. */function materio_flag_enable() {  // Load the flag API in case we want to use it when enabling.  include_once(drupal_get_path('module', 'flag') . '/flag.module');  if (!flag_get_flags()) {    // Install a demonstration flag only if no flag exists. This is to prevent    // a case where a disables and enables the module, and the demonstration    // flag is overwritten or re-created.    $flag = flag_flag::factory_by_entity_type('node');    $configuration = array(        'name' => 'bookmarks',        'global' => 0,        'show_on_page' => 1,        'show_on_teaser' => 0,        'show_on_form' => 0,        // The following UI labels aren't wrapped in t() because they are written        // to the DB in English. They are passed to t() later, thus allowing for        // multilingual sites.        'title' => 'Bookmarks',        'flag_short' => 'Bookmark this',        'flag_long' => 'Add this post to your bookmarks',        'flag_message' => 'This post has been added to your bookmarks',        'unflag_short' => 'Unbookmark this',        'unflag_long' => 'Remove this post from your bookmarks',        'unflag_message' => 'This post has been removed from your bookmarks',        'types' => _materio_flag_install_get_suggested_node_types(),    );    $flag->form_input($configuration);    $flag->save();    // Clear the flag cache so the new permission is seen by core.    drupal_static_reset('flag_get_flags');    // Grant permissions.    $permissions = array('flag bookmarks', 'unflag bookmarks');    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, $permissions);  }}/** * Returns some node types to which the demonstration 'bookmarks' flag will apply. */function _materio_flag_install_get_suggested_node_types() {  $preferred = array('page', 'article', 'story', 'forum', 'blog');  $existing = array_intersect($preferred, array_keys(node_type_get_types()));  if (!$existing) {    // As a last resort, take the first preference.    return array($preferred[0]);  }  return $existing;}
 |