/**
  * Main cnRole Instance.
  *
  * Insures that only one instance of cnRole exists at any one time.
  *
  * @access public
  * @since 0.7.5
  * @return object cnRole
  */
 public static function getInstance()
 {
     if (!isset(self::$instance)) {
         /*
          * Initiate an instance of the class.
          */
         self::$instance = new self();
     }
     return self::$instance;
 }
 /**
  * Callback for the "Login Required" settings field.
  * This ensure all roles are set to have the connections_view_public
  * capability to ensures all roles can at least view the public entries.
  *
  * @access private
  * @since  0.7.3
  *
  * @param $loginRequired
  *
  * @return int
  */
 public static function setAllowPublic($loginRequired)
 {
     global $wp_roles;
     if ($loginRequired) {
         if (!isset($wp_roles)) {
             $wp_roles = new WP_Roles();
         }
         $roles = $wp_roles->get_names();
         foreach ($roles as $role => $name) {
             cnRole::add($role, 'connections_view_public');
         }
     }
     return $loginRequired;
 }
 /**
  * Update the role settings.
  *
  * @access private
  * @since 0.7.5
  * @uses current_user_can()
  * @uses check_admin_referer()
  * @uses wp_redirect()
  * @uses get_admin_url()
  * @uses get_current_blog_id()
  * @return void
  */
 public static function updateRoleCapabilities()
 {
     /** @var $wp_roles WP_Roles */
     global $wp_roles;
     $form = new cnFormObjects();
     /*
      * Check whether user can edit roles
      */
     if (current_user_can('connections_change_roles')) {
         check_admin_referer($form->getNonce('update_role_settings'), '_cn_wpnonce');
         if (isset($_POST['roles'])) {
             // Cycle thru each role available because checkboxes do not report a value when not checked.
             foreach ($wp_roles->get_names() as $role => $name) {
                 if (!isset($_POST['roles'][$role])) {
                     continue;
                 }
                 foreach ($_POST['roles'][$role]['capabilities'] as $capability => $grant) {
                     // the administrator should always have all capabilities
                     if ($role == 'administrator') {
                         continue;
                     }
                     if ($grant == 'true') {
                         cnRole::add(esc_attr($role), esc_attr($capability));
                     } else {
                         cnRole::remove(esc_attr($role), esc_attr($capability));
                     }
                 }
             }
         }
         if (isset($_POST['reset'])) {
             cnRole::reset(array_map('esc_attr', $_POST['reset']));
         }
         if (isset($_POST['reset_all'])) {
             cnRole::reset();
         }
         cnMessage::set('success', 'role_settings_updated');
         wp_redirect(get_admin_url(get_current_blog_id(), 'admin.php?page=connections_roles'));
         exit;
     } else {
         cnMessage::set('error', 'capability_roles');
     }
 }
示例#4
0
 /**
  * During activation this will initiate the options.
  */
 private function initOptions()
 {
     $version = $this->options->getVersion();
     switch (TRUE) {
         /** @noinspection PhpMissingBreakStatementInspection */
         case version_compare($version, '0.7.3', '<'):
             /*
              * Retrieve the settings stored prior to 0.7.3 and migrate them
              * so they will be accessible in the structure supported by the
              * Connections WordPress Settings API Wrapper Class.
              */
             if (FALSE !== get_option('connections_options')) {
                 $options = get_option('connections_options');
                 if (FALSE === get_option('connections_login')) {
                     update_option('connections_login', array('required' => $options['settings']['allow_public'], 'message' => 'Please login to view the directory.'));
                 }
                 if (FALSE === get_option('connections_visibility')) {
                     update_option('connections_visibility', array('allow_public_override' => $options['settings']['allow_public_override'], 'allow_private_override' => $options['settings']['allow_private_override']));
                 }
                 if (FALSE === get_option('connections_image_thumbnail')) {
                     update_option('connections_image_thumbnail', array('quality' => $options['settings']['image']['thumbnail']['quality'], 'width' => $options['settings']['image']['thumbnail']['x'], 'height' => $options['settings']['image']['thumbnail']['y'], 'ratio' => $options['settings']['image']['thumbnail']['crop']));
                 }
                 if (FALSE === get_option('connections_image_medium')) {
                     update_option('connections_image_medium', array('quality' => $options['settings']['image']['entry']['quality'], 'width' => $options['settings']['image']['entry']['x'], 'height' => $options['settings']['image']['entry']['y'], 'ratio' => $options['settings']['image']['entry']['crop']));
                 }
                 if (FALSE === get_option('connections_image_large')) {
                     update_option('connections_image_large', array('quality' => $options['settings']['image']['profile']['quality'], 'width' => $options['settings']['image']['profile']['x'], 'height' => $options['settings']['image']['profile']['y'], 'ratio' => $options['settings']['image']['profile']['crop']));
                 }
                 if (FALSE === get_option('connections_image_logo')) {
                     update_option('connections_image_logo', array('quality' => $options['settings']['image']['logo']['quality'], 'width' => $options['settings']['image']['logo']['x'], 'height' => $options['settings']['image']['logo']['y'], 'ratio' => $options['settings']['image']['logo']['crop']));
                 }
                 if (FALSE === get_option('connections_compatibility')) {
                     update_option('connections_compatibility', array('google_maps_api' => $options['settings']['advanced']['load_google_maps_api'], 'javascript_footer' => $options['settings']['advanced']['load_javascript_footer']));
                 }
                 if (FALSE === get_option('connections_debug')) {
                     update_option('connections_debug', array('debug_messages' => $options['debug']));
                 }
                 unset($options);
             }
             /** @noinspection PhpMissingBreakStatementInspection */
         /** @noinspection PhpMissingBreakStatementInspection */
         case version_compare($version, '0.7.4', '<'):
             /*
              * The option to disable keyword search was added in version 0.7.4. Set this option to be enabled by default.
              */
             $options = get_option('connections_search');
             $options['keyword_enabled'] = 1;
             update_option('connections_search', $options);
             unset($options);
             /** @noinspection PhpMissingBreakStatementInspection */
         /** @noinspection PhpMissingBreakStatementInspection */
         case version_compare($version, '0.8', '<'):
             /*
              * The option to disable keyword search was added in version 0.7.4. Set this option to be enabled by default.
              */
             $options = get_option('connections_compatibility');
             $options['css'] = 1;
             update_option('connections_compatibility', $options);
             unset($options);
             $options = get_option('connections_display_results');
             $options['search_message'] = 1;
             update_option('connections_display_results', $options);
             unset($options);
     }
     if (NULL === $this->options->getDefaultTemplatesSet()) {
         $this->options->setDefaultTemplates();
     }
     // Class used for managing role capabilities.
     if (!class_exists('cnRole')) {
         require_once CN_PATH . 'includes/admin/class.capabilities.php';
     }
     if (TRUE != $this->options->getCapabilitiesSet()) {
         cnRole::reset();
         $this->options->defaultCapabilitiesSet(TRUE);
     }
     // Increment the version number.
     $this->options->setVersion(CN_CURRENT_VERSION);
     // Save the options
     $this->options->saveOptions();
     /*
      * This option is added for a check that will force a flush_rewrite() in connectionsLoad::adminInit() once.
      * Should save the user from having to "save" the permalink settings.
      */
     update_option('connections_flush_rewrite', '1');
 }
示例#5
0
function connectionsShowRolesPage()
{
    /*
     * Check whether user can edit roles
     */
    if (!current_user_can('connections_change_roles')) {
        wp_die('<p id="error-page" style="-moz-background-clip:border;
				-moz-border-radius:11px;
				background:#FFFFFF none repeat scroll 0 0;
				border:1px solid #DFDFDF;
				color:#333333;
				display:block;
				font-size:12px;
				line-height:18px;
				margin:25px auto 20px;
				padding:1em 2em;
				text-align:center;
				width:700px">' . __('You do not have sufficient permissions to access this page.', 'connections') . '</p>');
    } else {
        global $connections, $wp_roles;
        $form = new cnFormObjects();
        ?>
		<div class="wrap cn-roles">
			<?php 
        echo get_screen_icon('connections');
        ?>

			<h2>Connections : <?php 
        _e('Roles &amp; Capabilities', 'connections');
        ?>
</h2>

			<?php 
        $attr = array('action' => '', 'method' => 'post');
        $form->open($attr);
        $form->tokenField('update_role_settings');
        ?>

			<div id="poststuff" class="metabox-holder has-right-sidebar">

				<div class="inner-sidebar" id="side-info-column">
					<div id="submitdiv" class="postbox">
						<h3 class="hndle" style="cursor: auto;">
							<span><?php 
        _e('Save Changes or Reset', 'connections');
        ?>
</span>
						</h3>

						<div class="inside">

							<div id="minor-publishing">
								<label for="reset_all_roles">
									<input type="checkbox" id="reset_all_roles" name="reset_all" value="true">
									<?php 
        _e('Reset All Role Capabilities', 'connections');
        ?>
								</label>
							</div>

							<div id="major-publishing-actions">
								<div id="publishing-action">
									<input type="hidden" name="cn-action" value="update_role_capabilities"/>
									<input class="button-primary" type="submit" value="<?php 
        _e('Update', 'connections');
        ?>
" name="save" />
								</div>
								<div class="clear"></div>
							</div>
						</div>

					</div>
				</div>

				<div class="has-sidebar" id="post-body">
					<div class="has-sidebar-content" id="post-body-content">
						<?php 
        $editable_roles = get_editable_roles();
        foreach ($editable_roles as $role => $details) {
            $name = translate_user_role($details['name']);
            // the admininistrator should always have all capabilities
            if ($role == 'administrator') {
                continue;
            }
            $capabilies = cnRole::capabilities();
            echo '<div class="postbox">';
            echo '<h3 class="hndle" style="cursor: auto;"><span>', $name, '</span></h3>';
            echo '<div class="inside">';
            foreach ($capabilies as $capability => $capabilityName) {
                // if unregistered users are permitted to view the entry list there is no need for setting this capability
                if ($capability == 'connections_view_public' && $connections->options->getAllowPublic() == true) {
                    continue;
                }
                echo '<span style="display: block;"><label for="' . $role . '_' . $capability . '">';
                echo '<input type="hidden" name="roles[' . $role . '][capabilities][' . $capability . ']" value="false" />';
                echo '<input type="checkbox" id="' . $role . '_' . $capability . '" name="roles[' . $role . '][capabilities][' . $capability . ']" value="true" ';
                if (cnRole::hasCapability($role, $capability)) {
                    echo 'CHECKED ';
                }
                // the admininistrator should always have all capabilities
                if ($role == 'administrator') {
                    echo 'DISABLED ';
                }
                echo '/> ' . $capabilityName . '</label></span>' . "\n";
            }
            echo '<span style="display: block;"><label for="' . $role . '_reset_capabilities">';
            echo '<input type="checkbox" id="' . $role . '_reset_capabilities" name="reset[' . $role . ']" value="' . $name . '" /> ';
            echo sprintf(__('Reset %s Capabilities', 'connections'), $name) . '</label></span>' . "\n";
            echo '</div>';
            echo '</div>';
        }
        ?>
					</div>
				</div>
			</div>

			<?php 
        $form->close();
        ?>


		</div>
		<div class="clear"></div>

	<?php 
    }
}