add('name', PLUGIN_CREATIVECOMMONS_NAME); $propbag->add('description', PLUGIN_CREATIVECOMMONS_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Evan Nemerson'); $propbag->add('version', '1.2'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', 'php' => '4.1.0' )); $propbag->add('configuration', array('nc', 'nd', 'txt', 'cc_v2')); $propbag->add('event_hooks', array('frontend_display:rss-1.0:per_entry' => true, 'frontend_display:rss-1.0:once' => true, 'frontend_display:rss-1.0:namespace' => true, 'frontend_display:rss-2.0:per_entry' => true, 'frontend_display:rss-2.0:namespace' => true, 'frontend_display:html:per_entry' => true, 'frontend_display:html_layout' => true)); $propbag->add('groups', array('FRONTEND_EXTERNAL_SERVICES')); } function introspect_config_item($name, &$propbag) { switch($name) { /* case 'by': $propbag->add('type', 'boolean'); $propbag->add('name', PLUGIN_CREATIVECOMMONS_BY); $propbag->add('description', PLUGIN_CREATIVECOMMONS_BY_DESC); break; */ case 'cc_v2': $propbag->add('type', 'hidden'); $propbag->add('value', 'true'); break; case 'nc': $propbag->add('type', 'boolean'); $propbag->add('name', PLUGIN_CREATIVECOMMONS_NC); $propbag->add('description', PLUGIN_CREATIVECOMMONS_NC_DESC); $propbag->add('default', 'true'); break; case 'nd': $propbag->add('type', 'radio'); $propbag->add('name', PLUGIN_CREATIVECOMMONS_ND); $propbag->add('description', PLUGIN_CREATIVECOMMONS_ND_DESC); $propbag->add('radio', array( 'value' => array('yes', 'sa', 'no'), 'desc' => array(YES, PLUGIN_CREATIVECOMMONS_SA_DESC, NO) )); $propbag->add('radio_per_row', '1'); $propbag->add('default', 'yes'); break; case 'txt': $propbag->add('type', 'boolean'); $propbag->add('name', PLUGIN_CREATIVECOMMONS_TXT); $propbag->add('description', PLUGIN_CREATIVECOMMONS_TXT_DESC); $propbag->add('default', 'true'); break; default: return false; break; } return true; } function generate_content(&$title) { $title = $this->title; } function event_hook($event, &$bag, &$eventData) { global $serendipity; $license_data = $this->get_license_data(); $license_version = $this->get_config('cc_version', '1.0'); $license_type = $license_data['type']; $license_string = $license_data['string']; $rdf = $license_data['rdf']; if ($license_string == '') { $license_uri = 'http://web.resource.org/cc/PublicDomain'; } else { $license_uri = 'http://creativecommons.org/licenses/'.$license_string.'/'.$license_version.'/'; switch ($serendipity['lang']){ case 'ja': $license_uri .= 'jp/'; break; case 'de': $license_uri .= 'deed.de'; break; } } $cc_visibility = 'invisible'; switch ($event) { case 'frontend_display:html_layout': $cc_visibility = 'visible'; case 'frontend_display:html:per_entry': $eventData['display_dat'] .= '
'; if ($license_string == '') { if ($cc_visibility == 'visible') { $eventData['display_dat'] .= ''; $eventData['display_dat'] .= 'No Rights Reserved'; $eventData['display_dat'] .= ''; if (serendipity_db_bool($this->get_config('txt', true))) { $eventData['display_dat'] .= '
' . str_replace('#license_uri#', $license_uri, PLUGIN_CREATIVECOMMONS_CAP_PD); } } } elseif ($cc_visibility == 'visible') { $eventData['display_dat'] .= ''; $eventData['display_dat'] .= 'Creative Commons License - Some Rights Reserved'; $eventData['display_dat'] .= ''; if (serendipity_db_bool($this->get_config('txt', true))) { $eventData['display_dat'] .= '
' . str_replace('#license_uri#', $license_uri, PLUGIN_CREATIVECOMMONS_CAP); } } $eventData['display_dat'] .= ''; $eventData['display_dat'] .= '
'; return true; break; case 'frontend_display:rss-2.0:per_entry': $eventData['display_dat'] .= ''.$license_uri.''; return true; break; case 'frontend_display:rss-1.0:per_entry': $eventData['display_dat'] .= ''; return true; break; case 'frontend_display:rss-1.0:once': $eventData['display_dat'] .= ''; foreach ($rdf as $rdf_t => $rdf_v) { $eventData['display_dat'] .= ''; } $eventData['display_dat'] .= ''; return true; break; case 'frontend_display:rss-2.0:namespace': $eventData['display_dat'] .= 'xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"'; return true; break; case 'frontend_display:rss-1.0:namespace': $eventData['display_dat'] .= 'xmlns:cc="http://web.resource.org/cc/"'; return true; break; default: return true; break; } } function get_license_data() { $license_type = array(); $license_version = $this->get_config('cc_version', '1.0'); if ( ($license_version < 2.5) && ($this->get_config('cc_v2', 'false') == 'true') ) { $this->set_config('cc_version', '2.5'); $license_version = '2.5'; } if (($license_version >= 2.5) || serendipity_db_bool($this->get_config('by', true))) { $license_type[] = 'by'; } if (!serendipity_db_bool($this->get_config('nc', true))) { $license_type[] = 'nc'; } if ($this->get_config('nd') == 'no') { $license_type[] = 'nd'; } if ($this->get_config('nd') == 'sa') { $license_type[] = 'sa'; } $license_string = implode('-', $license_type); switch ($license_string) { case 'by': $rdf = array( 'Attribution' => 'requires', 'Reproduction' => 'permits', 'Distribution' => 'permits', 'DerivativeWorks' => 'permits', 'Notice' => 'requires' ); break; case 'by-nd': $rdf = array( 'Attribution' => 'requires', 'Reproduction' => 'permits', 'Distribution' => 'permits', 'Notice' => 'requires' ); break; case 'by-nd-nc': $rdf = array( 'Attribution' => 'requires', 'Reproduction' => 'permits', 'Distribution' => 'permits', 'CommercialUse' => 'prohibits', 'Notice' => 'requires' ); break; case 'by-nc': $rdf = array( 'Attribution' => 'requires', 'Reproduction' => 'permits', 'Distribution' => 'permits', 'DerivativeWorks' => 'permits', 'CommercialUse' => 'prohibits', 'Notice' => 'requires' ); break; case 'by-nc-sa': $rdf = array( 'Attribution' => 'requires', 'Reproduction' => 'permits', 'Distribution' => 'permits', 'DerivativeWorks' => 'permits', 'ShareAlike' => 'requires', 'CommercialUse' => 'prohibits', 'Notice' => 'requires' ); break; case 'by-sa': $rdf = array( 'Attribution' => 'requires', 'Reproduction' => 'permits', 'Distribution' => 'permits', 'DerivativeWorks' => 'permits', 'ShareAlike' => 'requires', 'Notice' => 'requires' ); break; case 'nd': $rdf = array( 'Reproduction' => 'permits', 'Distribution' => 'permits', 'Notice' => 'requires' ); break; case 'nd-nc': $rdf = array( 'Reproduction' => 'permits', 'Distribution' => 'permits', 'CommercialUse' => 'prohibits', 'Notice' => 'requires' ); break; case 'nc': $rdf = array( 'Reproduction' => 'permits', 'Distribution' => 'permits', 'DerivativeWorks' => 'permits', 'CommercialUse' => 'prohibits', 'Notice' => 'requires' ); break; case 'nc-sa': $rdf = array( 'Reproduction' => 'permits', 'Distribution' => 'permits', 'DerivativeWorks' => 'permits', 'ShareAlike' => 'requires', 'CommercialUse' => 'prohibits', 'Notice' => 'requires' ); break; case 'sa': $rdf = array( 'Reproduction' => 'permits', 'Distribution' => 'permits', 'DerivativeWorks' => 'permits', 'ShareAlike' => 'requires', 'Notice' => 'requires' ); break; case '': $rdf = array( 'Reproduction' => 'permits', 'Distribution' => 'permits', 'DerivativeWorks' => 'permits' ); break; } return array( 'type' => $license_type, 'string' => $license_string, 'rdf' => $rdf ); } } /* vim: set sts=4 ts=4 expandtab : */ ?>