<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Plugin API changes</title>
		<link>https://www.cotonti.com</link>
		<description>Last topic posts</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Tue, 14 Apr 2026 19:48:51 -0000</pubDate>

		<item>
			<title>GHengeveld</title>
			<description><![CDATA[Instead of XML, we could consider JSON (it's becoming more and more widespread). Otherwise a PHP implementation (multidimensional arrays?) seems ok.<br />
<br />
Recently I've been working with AJAX plugins a LOT (custom implementation for a customer). I've already done some modification in the plug module to allow POST requests more easily.]]></description>
			<pubDate>Mon, 03 May 2010 18:15:55 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=30#post24435]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[XML files are quite massive on their own. We'll use PHP itself and try making it as compact as possible.]]></description>
			<pubDate>Thu, 11 Jun 2009 13:07:08 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=30#post13133]]></link>
		</item>
		<item>
			<title>Xerora</title>
			<description><![CDATA[I didn't really dig through the thread, but as far as the setup file, I suggest it being an xml file. It seems much cleaner and easier than nesting a load of arrays.<br />
<br />
<pre class="code">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;setup version=&quot;1.0&quot;&gt;

	&lt;information&gt;
                &lt;type&gt;module&lt;/type&gt;
		&lt;code&gt;gallery&lt;/code&gt;
		&lt;name&gt;Gallery&lt;/name&gt;
	&lt;/information&gt;
	
	&lt;hooks&gt;
		&lt;hook location=&quot;standalone&quot; file=&quot;photos&quot; order=&quot;1&quot; /&gt;
                &lt;hook location=&quot;main.first&quot; file=&quot;loader&quot; order=&quot;2&quot; /&gt;
	&lt;/hooks&gt;
	
&lt;/setup&gt;</pre>]]></description>
			<pubDate>Thu, 11 Jun 2009 09:18:27 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=30#post13130]]></link>
		</item>
		<item>
			<title>Dayver</title>
			<description><![CDATA[I hope we have chosen <strong>Major upgrade</strong> (or <strong>Brand new</strong> but very carefully) ? I hope so!<br />
<br />
<blockquote><a href="https://www.cotonti.com/forums.php?m=posts&amp;p=11651#11651">#</a> <strong>Trustmaster :</strong>
OK, here is a list of suggestions I have collected so far:<br />
[list=1]<br />
<li><em>Remove SED_EXTPLUGIN block</em> from every single plugin file...</li>
<li>Specify <em>hook bindings</em> as an array in setup file like:<br />
<div class="highlight"><pre class="php">$hooks = array(
	array('filename1', 'hook1', 10),
	array('filename1', 'hook2'),
	array('filename2', 'hook3', 99)
);</pre></div>
where the third optional parameter is priority (order). As you can see, it also allows for multiple hook bindings.</li>
<li>Automatically <em>preload plugin permissions</em> into $usr['auth_read'], $usr['auth_write'] and $usr['isadmin'].</li>
<li>Automatically <em>preload plugin langfile</em>.</li>
<li>Already added in tickets: <em>simplify CODE check</em>. It can be<br />
<div class="highlight"><pre class="php">defined('COT_CODE') or die('Wrong URL');</pre></div></li>
<li>Time to <em>change sed_ to cot_</em></li>
</ul>
<br />
More brainstorming while writing a plugin:<br />
<br />
7. <em>Auth hooks</em>. Add ability to affect auth in exact places (already known as EYOOP issue).<br />
<br />
8. <em>SQL query hooks</em>. There are some important queries that a plugin developer would like to modify before they get executed...<br />
</blockquote>
<br />
<br />
I known that all the items we must to do because all these improvements will reduce the time to create new plugins! And we must do so now because the little time.<br />
<br />
<br />
<blockquote><a href="https://www.cotonti.com/forums.php?m=posts&amp;p=12000#12000">#</a> <strong>Trustmaster :</strong>
<br />
<strong>UPD</strong><br />
<br />
Finally I've completed my &quot;callbacks vs. includes&quot; experiment and here is the summary:<br />
<ul>
<li>XCache is good for your health. With XCache there is absolutely no difference between callbacks and includes, not to mention things go significantly faster.</li>
<li>Without XCache includes are 5% slower than callbacks in loops and both are almost the same in normal hooks.</li>
<li>It takes 2 minuts to convert 1 plugin part to a callback.</li>
</ul>
To conclude it, callbacks are not so great on performance as we supposed. If 5% is really important for you, then your site is popular enough to run a dedi/VPS or at least ask your hoster for XCache.<br />
<br />
So we will focus on improving includes() and architecture changes won't be so dramatic.<br />
</blockquote>
<br />
This is good news. Thank you for your work!]]></description>
			<pubDate>Thu, 11 Jun 2009 08:34:16 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=30#post13129]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[Yes, so far seems like there isn't very much to change so it will be more of an update. The biggest change possible is callback concept but most likely it has more drawbacks than benefits so that we'll improve includes.<br />
<br />
Auth system is quite painful. On one hand, we want it to be more detailed and have control over every option and every group (some people even request control over every user). From security point of view, ACL alone is not enough and is combined with hierarchical model. But even as it is now, auth system is huge data and slow access. I'm afraid before we add more and more items, we need to find some smart ways to make auth system more compact and faster access.<br />
<br />
<strong>UPD</strong><br />
<br />
Finally I've completed my &quot;callbacks vs. includes&quot; experiment and here is the summary:<br />
<ul>
<li>XCache is good for your health. With XCache there is absolutely no difference between callbacks and includes, not to mention things go significantly faster.</li>
<li>Without XCache includes are 5% slower than callbacks in loops and both are almost the same in normal hooks.</li>
<li>It takes 2 minuts to convert 1 plugin part to a callback.</li>
</ul>
To conclude it, callbacks are not so great on performance as we supposed. If 5% is really important for you, then your site is popular enough to run a dedi/VPS or at least ask your hoster for XCache.<br />
<br />
So we will focus on improving includes() and architecture changes won't be so dramatic.]]></description>
			<pubDate>Sun, 03 May 2009 14:08:49 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=30#post12000]]></link>
		</item>
		<item>
			<title>Elgan</title>
			<description><![CDATA[i still didnt vote.<br />
<br />
however for now. SKimming through, All i see is for an update.<br />
<br />
new functions etc. Nothing really drastic or inspiring. just sed_ functions. WHich can be added and used to enhaunce plugins. Then make them more powerful. I find the trouble, have done in the past with not being abole to hook where i need to. <br />
<br />
I never used 125, but since cotonti and the install,uninstall thing, Ive finally been able to create some install scripts. Don't forget you can clear plugin body to get yourself a fresh page. Load tpls etc still if need be. I think its safer to not just load an SQL file. Now we have part install. We can do that from there if we wish. I give the user an options. <br />
<br />
I also find myself recreating admin panels within the plugin.  Something should be done about this. <br />
We should have more access to groups, and auth systems.  ive recreated groups  in my admin  panel ice created. With auth systems that are editable for the plugin.  Now thats fair enough. ironicly the groups etc and admin panel is probably neater in my plugin than all spread around cotonti.<br />
<br />
but what im trying to say is. In order to create the groups, and the rights system, i just borrowed code from cotonti. However i copy/pasting and slightly editing functions that are only found within admin pages of sed/cotinti and we have no access to as a developer. for example the rights parse line. Ive copied and used in my functions.php. I call it from categories and from groups to just parse the rights pulled from the rights table.]]></description>
			<pubDate>Sun, 03 May 2009 08:47:12 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11998]]></link>
		</item>
		<item>
			<title>urlkiller</title>
			<description><![CDATA[@Koradhil<br />
isnt there some sort of SQL= (never seen anything here) in the setup file?<br />
i think this is maybe the rest that remained... never seen it used, yet.<br />
<br />
would like to have a <br />
SQL=mediaBay.sql<br />
 to describe a file that should get exe when hitting install!<br />
edit: to descibe one if no mediaBay.sql exists in sql folder...<br />
<br />
<br />
@TwistedGA<br />
yeah, in fact he's right. its a rough easy system with the plugins.<br />
if iam remembering right there where a time when we had plugins and extendet plugins, right?<br />
isnt there any possibility to maybe have 2 plugin api's ? like one for advanced plugins using a shitload of code and the normal ones (the sed style ones)?]]></description>
			<pubDate>Sun, 03 May 2009 08:07:00 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11996]]></link>
		</item>
		<item>
			<title>GHengeveld</title>
			<description><![CDATA[Nice, didn't know this existed. I should implement this in my events/calendar plugin.]]></description>
			<pubDate>Mon, 27 Apr 2009 04:23:42 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11843]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[<blockquote><a href="https://www.cotonti.com/forums.php?m=posts&amp;p=11828#11828">#</a> <strong>Koradhil :</strong>
Just something I came up with.. wouldn't it be nice to have Cotonti automatically run the sql file (if included) when a plugin is installed through the adminpanel. Perhaps with a seperate authentication step so the user knows his database is being modified by the plugin. This would save the hassle of having to use phpMyAdmin to install a plugin.<br />
Actually I feel this should also be implemented for installing Cotonti itself (using a dedicated install script).<br />
</blockquote>
It was implemented a while ago (starting with Sed v125) and is know as install/uninstall scripts. For example see <a href="http://svn.cotonti.com/branches/plugins/modlist/modlist.setup.php">modlist</a>, markitup, attach and some other plugins.]]></description>
			<pubDate>Sun, 26 Apr 2009 23:21:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11839]]></link>
		</item>
		<item>
			<title>TwistedGA</title>
			<description><![CDATA[I hope this isnt as complicated as it sounds in here. I think I'll be hanging onto each and evry release of cotonti until things get too complicated for me to learn by looking at current code and applying it to the database in my head. The way things are now, is VERY easy to understand.]]></description>
			<pubDate>Sun, 26 Apr 2009 14:11:29 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11830]]></link>
		</item>
		<item>
			<title>GHengeveld</title>
			<description><![CDATA[Just something I came up with.. wouldn't it be nice to have Cotonti automatically run the sql file (if included) when a plugin is installed through the adminpanel. Perhaps with a seperate authentication step so the user knows his database is being modified by the plugin. This would save the hassle of having to use phpMyAdmin to install a plugin.<br />
Actually I feel this should also be implemented for installing Cotonti itself (using a dedicated install script).]]></description>
			<pubDate>Sun, 26 Apr 2009 04:36:35 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11828]]></link>
		</item>
		<item>
			<title>urlkiller</title>
			<description><![CDATA[my thoughts regarding the query builder was to let unexpirenced programmers do their own plugins with db support. <br />
<br />
its because most low-level plugins (sorry for that) don't have access to the db due to its more to learn for the new developer... so they just let this part out and find some other and not so well working ways to emulate a db, flatfiles etc... <br />
<br />
the query thing was just a quick idea where i was thinking would attract a lot more ppl to do their own plugins.<br />
<br />
but as i tried to say: make this last. first priority should be the redesign and interoperabillity of cot plugins system itself.<br />
<br />
btw. i voted brand new!<br />
but i have to admit i will be crying to the good ol stable system goodbye!<br />
and we should think about that making it as BC as possible to the old system.<br />
or developing a new plugin that has the possibilty to do so...]]></description>
			<pubDate>Sat, 25 Apr 2009 00:47:17 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11807]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[Query hooks are not for every query, they are for special queries only (say, like 2-3 hookable queries per module). But you're right plugin interoperability could be a problem. A possible solution is a query builder (as requested by urlkiller too). However, this will be low priority.]]></description>
			<pubDate>Fri, 24 Apr 2009 20:18:15 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11788]]></link>
		</item>
		<item>
			<title>Kilandor</title>
			<description><![CDATA[I think hooking queries could become a bad idea, where say a plugin is expecting something, yet another plugin as changed it.<br />
<br />
Not to mention wouldn't this cause alot of overhead, since lets say an average page, has 20 queries?]]></description>
			<pubDate>Fri, 24 Apr 2009 04:47:40 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11773]]></link>
		</item>
		<item>
			<title>Orkan</title>
			<description><![CDATA[<em>8. SQL query hooks. <br />
There are some important queries that a plugin developer would like to modify before they get executed. For example, if you want to affect forum posts order and join it with another table.</em><br />
<br />
Here is my very simple implementation of this idea: <a href="http://www.cotonti.com/pastebin/31">http://www.cotonti.com/pastebin/31</a><br />
I made it for one specific project, where the &quot;query&quot; is passed to several functions modifying it, before it gets executed.<br />
Of course, there is much room for improvement,<br />
Could be done with something more sophisticated, like php class with methods: addWhere(), addJoin(), addOrderBy() etc...]]></description>
			<pubDate>Fri, 24 Apr 2009 04:27:55 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11772]]></link>
		</item>
		<item>
			<title>Kilandor</title>
			<description><![CDATA[Oh yes a new feature would be nice, to install hooks inside of plugins, or un-install (useful for even developing, and you add something new) As well as you could uninstall hooks as well like that.<br />
(Similar to pause/unpause but for installing)<br />
<br />
Truthfully compared to many other systems I think our plugins are very easy to develop.<br />
<br />
Its just straightforward php, I've seen plugins for wordpress and stuff having to convert them, and the code is a pain in the ass to convert.<br />
<br />
Any of our plugins if someone wanted could relativity easy to any system, or just use it standalone.]]></description>
			<pubDate>Fri, 24 Apr 2009 01:44:23 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11771]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[Thanks for sharing your thoughts guys. I agree on most points mentioned above. Here I comment those need commenting.<br />
<br />
<blockquote><strong>urlkiller:</strong><hr />i think a more developer friendly sql install should considerd as well as maybe upload packed plugins that get unpacked by the system. would make it far more manageble for the users after.<br />
# yeah, upload a rared archive and the system installs. no ftp crap anymore.<br />
<br />
# update function O_o cool would be if you had an external api connection where a file is checked if the installed version is still up to date. if the server is allowed he downloads the new file from server, if he's not allowed he simple announces that a new version is available. this would be very very helpfull in support and bugfixing because everyone would have the latest version. of course this would be a optional feature for very huge plugins. (iam talking here about how hard it was to keep track on every single usergal release.)</blockquote>
Live update isn't very hard implementing. The only reason that makes me feel skeptic about it is security. For this you need to make files writable for PHP. It drops security level by nearly 30%, considering how many hacks were done using TPL Editor plugin and such.<br />
<br />
<blockquote><strong>urlkiller:</strong><hr /># while working a lot with ajax its bad that always the whole page gets loaded. would it be possible to have special plugin functions for a second db conection for ajax content? or more like a build in ajax query on the db. where you can execute, edit, add entries?</blockquote>
Take a look at <a href="http://www.cotonti.com/docs/en/plugins/ajax_parts">AJAX parts in plugins</a> and a <a href="http://svn.cotonti.com/trunk/plugins/markitup/markitup.ajax.php">markitup example</a>.<br />
<br />
<blockquote><strong>urlkiller:</strong><hr /># google apis java librarys!! can be defined in config and get's properly installed in &lt;head&gt;<br />
i know jquery is there for me, but sometimes the jquery misses some of the kick other libs have...</blockquote>
No need to enable support for every single JS library available on the net. You can switch jQuery off in Admin. We should also implement a compatibility mode option.<br />
<br />
<blockquote><strong>Orkan:</strong><hr />Anyway, I just wonder how you'll gonna implement event registering and broadcasting system without OOP?<br />
Do you have any rough ideas to share at this stage?</blockquote>
Don't forget, OOP has procedural code inside. And event handling is done with callbacks.<br />
<br />
<blockquote><strong>Orkan:</strong><hr />I like your &quot;collected suggestions&quot; very much. The 8. SQL query hooks could be done in arrays, I have similar idea already implemented in one of my private projects.</blockquote>
Could you post your snippet in <a href="http://www.cotonti.com/pastebin/">pastebin</a>?<br />
<br />
Once more, I agree on most of the other points. And our aim is to make plugin development as easy, flexible and clear as possible.<br />
<br />
As for interconnection APIs via SOAP, XML-RPC, etc... First we make our internal API, then it will be easier to export some of it to the outer world.]]></description>
			<pubDate>Wed, 22 Apr 2009 12:26:53 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11714]]></link>
		</item>
		<item>
			<title>GHengeveld</title>
			<description><![CDATA[At first I thought you were talking about an API to allow communication between Cotonti and other websites (facebook etc.), but then I read your post saying it isn't about that. I was disappointed to read this, because I would really like to see such functionality, but when I continued reading I found out it wasn't so bad, because the API you're talking about is also something I'd love to see.<br />
<br />
I voted Brand new, because I feel there's a lot that can be done to improve the current system, but it's better to start over to prevent clogging the code. Also I think there are improvements that will need an entirely different base to work with. Even though the current hooks system is quite conveniënt and works well for most applications, implementing an entirely new system could make things much easier for us.<br />
<br />
I think the new system should be mostly about keeping things easy and simple, so developing a plugin will be easier. The code required to 'install' a plugin and hook it up should be kept to a minimum and should also be well documented. I'm not so much into the technical details of implementing a system like this, but I've seen some welcome ideas in previous posts that I would like to see implemented.]]></description>
			<pubDate>Wed, 22 Apr 2009 05:54:21 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11703]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[I think that to remake private plugins easy and fast.]]></description>
			<pubDate>Wed, 22 Apr 2009 05:16:12 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11702]]></link>
		</item>
		<item>
			<title>Orkan</title>
			<description><![CDATA[Why I have to be always in opposite? ROTFL<br />
<br />
Anyway, I just wonder how you'll gonna implement event registering and broadcasting system without OOP?<br />
Do you have any rough ideas to share at this stage?<br />
<br />
I like your &quot;collected suggestions&quot; very much. The <strong>8. SQL query hooks</strong> could be done in arrays, I have similar idea already implemented in one of my private projects.<br />
What I would like to add here is the cache system for plugin hooks. I think its possible to join all php files attached to a hook into one file loaded by system instead of include() all the hooked files separately.<br />
<br />
<blockquote><strong>Kort:</strong><hr />There are just 37 plugs in the downloads/plugins. Why worry? Brand new.</blockquote>
dont forget about hundreds of private plugins<br />
<br />
I will vote for Minor update because of BC. <br />
Brand new or Major upgrade sounds to me like completely new CMS with some functions attached from old Seditio framework <img class="aux smiley" src="https://www.cotonti.com/./images/smilies/wink.gif" alt=";-)" />]]></description>
			<pubDate>Wed, 22 Apr 2009 05:03:52 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11700]]></link>
		</item>
		<item>
			<title>urlkiller</title>
			<description><![CDATA[i think a more developer friendly sql install should considerd as well as maybe upload packed plugins that get unpacked by the system. would make it far more manageble for the users after.<br />
<br />
making a fresh start, heh! just shooting some ideas in the pool...<br />
<br />
# maybe its cool to have a flexible config system. like a myplug.config.php that gets included auto. where you can define more and flexible new rules and settings for the plugin itself.<br />
<br />
# more easy integration of the core features: tags, comments, ratings, textboxer etc. nice would be a cot_create_comments('bla','bla','bla'); on any of the functions.<br />
<br />
# while working a lot with ajax its bad that always the whole page gets loaded. would it be possible to have special plugin functions for a second db conection for ajax content? or more like a build in ajax query on the db. where you can execute, edit, add entries?<br />
<br />
# google apis java librarys!! can be defined in config and get's properly installed in &lt;head&gt;<br />
i know jquery is there for me, but sometimes the jquery misses some of the kick other libs have...<br />
<br />
# sql query injection sound a bit bad... i would like to see a more low -level programmer friendly sql query system. integrated and easier to understand left / right joins and etc. <br />
<br />
query('table','field LIKE %BLALBA%','some more sql','ASC');<br />
<br />
some sort of that, dont know. if you don't like its anyways cool for me.<br />
<br />
# multihooking, cool!<br />
<br />
# yeah, upload a rared archive and the system installs. no ftp crap anymore.<br />
<br />
# auto chmodding of the files / folders. info from config file!?<br />
<br />
# update function O_o cool would be if you had an external api connection where a file is checked if the installed version is still up to date. if the server is allowed he downloads the new file from server, if he's not allowed he simple announces that a new version is available. this would be very very helpfull in support and bugfixing because everyone would have the latest version. of course this would be a optional feature for very huge plugins. (iam talking here about how hard it was to keep track on every single usergal release.)<br />
<br />
# quick question. we are not only talking about the installation syste here. in short we're talking about making the developer / designer API more aprehensive for any type of developer. if we would had a sort of toolbox like in most other distributions we would interest more low -level and high -level programmers to develop for cotonti, thus makes us more noticed...<br />
to be true first i was missing the huge documentations on seditio but then after some days of code browsing i was thinking that this is some sort of very stable and reliable system. i was missing most of the integrated features from other systems, wich, of course made them more complicated. but what aout haveing cotonti offering a broad array of predefined tools.<br />
<br />
not only this will help develop a new type of plugin. if its easy to code more plugins will be made. more ideas will flow into the project. the more recognised it will be.<br />
<br />
ok that would be enough for today. maybe i got some more ideas. dont' start coding yet ;)]]></description>
			<pubDate>Wed, 22 Apr 2009 02:09:33 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11694]]></link>
		</item>
		<item>
			<title>Kilandor</title>
			<description><![CDATA[I vote for Major Upgrade, new features, enhancments etc.<br />
<br />
<ul>
<li>New hooking features, multi-hooking(same file multiple hooks), timer based hooks(ex, a cron sort of thing)</li>
<li>All configs, settings etc, should be code, not the commented crap(leave old method for backwards compatibility)</li>
<li>Advance install/uninstall API, IE on install before or after core install, it can be set, to code your own menu/options, or atleast flag options to come up, ex On install ask if they want to drop a SQL table and re-add it, or ask if they are upgrading, to run upgrade code, on uninstall ask if they want to drop it.</li>
<li>New functions that are friendly for Plugins, such as easy config change functions, etc</li>
<li>Prob more but i'm drawing a blank now.</li>
</ul>]]></description>
			<pubDate>Wed, 22 Apr 2009 01:00:02 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11677]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[Agree at all. But  I think (8) is unusefull]]></description>
			<pubDate>Tue, 21 Apr 2009 23:24:09 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11673]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[OK, here is a list of suggestions I have collected so far:<br />
<ol>
<li><em>Remove SED_EXTPLUGIN block</em> from every single plugin file. In fact, it is more annoying and redundant rather than useful. &quot;Code&quot; is the same as plugin name. &quot;Part&quot; can be identified by file name. &quot;Hooks&quot; can be binded in setup file (see below). &quot;Tags&quot; are better to be collected they way <a href="http://www.cotonti.com/plug.php?e=tpltags">&quot;tpltags&quot; plugin</a> does it (by scanning the code instead of forcing plugin developer to describe every tag). &quot;Order&quot; can be specified in hook binding.</li>
<li>Specify <em>hook bindings</em> as an array in setup file like:<br />
<div class="highlight"><pre class="php">$hooks = array(
	array('filename1', 'hook1', 10),
	array('filename1', 'hook2'),
	array('filename2', 'hook3', 99)
);</pre></div>
where the third optional parameter is priority (order). As you can see, it also allows for multiple hook bindings.</li>
<li>Automatically <em>preload plugin permissions</em> into $usr['auth_read'], $usr['auth_write'] and $usr['isadmin'].</li>
<li>Automatically <em>preload plugin langfile</em>.</li>
<li>Already added in tickets: <em>simplify CODE check</em>. It can be<br />
<div class="highlight"><pre class="php">defined('COT_CODE') or die('Wrong URL');</pre></div></li>
<li>Time to <em>change sed_ to cot_</em></li>
</ol>
<br />
More brainstorming while writing a plugin:<br />
<br />
7. <em>Auth hooks</em>. Add ability to affect auth in exact places (already known as EYOOP issue).<br />
<br />
8. <em>SQL query hooks</em>. There are some important queries that a plugin developer would like to modify before they get executed. For example, if you want to affect forum posts order and join it with another table. Currently queries are executed like $sql = sed_sql_query(&quot;SELECT ...&quot;), so the only way to change it is either a corehack or another similar query. If we did it like:<br />
<div class="highlight"><pre class="php">$query = &quot;SELECT ...&quot;;
forums_posts_query(); // HOOK here
$sql = cot_query($query);</pre></div>
it could leave a possibility to edit the query with a plugin before it gets executed. It's not the most elegant way to modify a query, but if you know a better way, don't hesitate to share.]]></description>
			<pubDate>Tue, 21 Apr 2009 19:17:16 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11651]]></link>
		</item>
		<item>
			<title>Lissbol</title>
			<description><![CDATA[<blockquote><a href="https://www.cotonti.com/forums.php?m=posts&amp;p=11641#11641">#</a> <strong>esclkm :</strong>
If we will rewrite it in every version - our CMS will be not so attractive for developers<br />
</blockquote>
<br />
agree with that if Cotonti is going to have a chance in the future vs. WP , Drupal etc etc then über major changes can't be made in every release.]]></description>
			<pubDate>Tue, 21 Apr 2009 17:36:57 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11648]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[The poll is not over so continue voting, but I see that we're going to be pretty ready for almost any changes that would bring significant benefits.<br />
<br />
Now it is time to start a research and learn what exactly we are going to change. So please request features you would like to see in Renaissance as a plugin developer. Our overall goal is to make plugin development as easy as possible, flexible to implement almost anything and still strong enough and bug-proof.<br />
<br />
Then we discuss these features, select those worth implementing and after that form project details for the API upgrade.]]></description>
			<pubDate>Tue, 21 Apr 2009 15:06:06 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11645]]></link>
		</item>
		<item>
			<title>tensh</title>
			<description><![CDATA[Is there anything wrong with the current plugin system? <br />
What do you miss in this system? <br />
Because if you want to change something that is working fine, there must be a strong reason to do so.<br />
<br />
I agree that plugin API, if changed, must remain the same for a loooong tiiime.]]></description>
			<pubDate>Tue, 21 Apr 2009 14:38:45 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11644]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[We need major upgrade or brand new.<br />
But in Renaissance we need new stable concept, which must be not edited or rewritten in new versions.<br />
If we will rewrite it in every version - our CMS will be not so attractive for developers]]></description>
			<pubDate>Tue, 21 Apr 2009 13:32:26 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11641]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[When I say API, I usually mean Application Programming Interface from Software Architect's or Software Designer's point of view. It's not FaceBook/GoogleMaps integration or whatsoever. Also please notice that in Cotonti we stake on modularity rather than built-in features and more freedom for third-party programmers.<br />
<br />
There are 37 plugs here, but a hundred more inherited from Seditio here and there. Keep in mind we can loose em all. If it is ok, then Renaissance has a chance to be something different, whereas Genesis will stay for long-term backwards compatibility.]]></description>
			<pubDate>Tue, 21 Apr 2009 03:00:05 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11633]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[There are just 37 plugs in the downloads/plugins. Why worry? Brand new.]]></description>
			<pubDate>Mon, 20 Apr 2009 23:56:01 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11625]]></link>
		</item>
		<item>
			<title>aiwass</title>
			<description><![CDATA[In my opinion, there are a few things that i think would be needed as standard parts of Cotonti, before any changes regarding API's etc.<br />
<br />
<strong>Those things should be :</strong><br />
- Custommetas (The admin can set what keywords he wants on any pages, events, forums etc. he wants. SEO at it's best)<br />
- Events &amp; Calendar should not be a plugin, it should be standard.<br />
- Trackbacks as well<br />
- Related Pages (SeeAlso is a plugin today from LDU/Seditio)<br />
<br />
When we talk about API's there should be a API that, at least in parts, work externally for other sites to integrate with your site (Ex. Youtube, Digg, SoundCloud, Facebook etc.). By thinking of this when work begins on designing an API for Cotonti, would make it more viable for future users and also be an incentive to plugin builders/module builders to create based on versatility.<br />
<br />
If we go for Brand New, then the above stated would be made as standard, at least i think so. Maybe even go as far as stating that all todays plugins are standard features included and the API opens new doors and development concepts for integration and involvement of Cotonti based &quot;Brand New&quot;-Plugins. <br />
<br />
I would even go as far to say that it might be the only way to separate from the old Seditio way of making, integrating and developing of new features, which is now translated over to Cotonti, as it is based upon Seditio-N. <br />
<br />
Personally i would go for Brand New, since i love technology and smart new features, even though, those stated in the beginning are old as hell, but they serve a good purpose and they are standard parts of other CMS/Frameworks out there that are commitment/community driven projects.<br />
<br />
Vote is <strong>BRAND NEW</strong>]]></description>
			<pubDate>Mon, 20 Apr 2009 23:55:50 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11624]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[Not very much information on designs unless we are pretty sure how much backwards compatibility we want.<br />
<br />
Brand new - is likely to be new plugin abstracts, reviewing everything on what plugins are. I haven't thought what it could be. Just means that no old plugins will work at all.<br />
<br />
Major upgrade is most likely to be based on callback functions. So every plugin part will be a function. You can bind it as a handler for several events at a time (aka hooks). When a module is run, it preloads plugin includes so all necessary callbacks are compiled and binded. A hook calls the callbacks due to their order. Most changes inside of the plugins are related to making them functions, meaning also that they will need to access global variables explicitly.<br />
<br />
Minor update is about adding extra functionality without changing the concept of plugin parts (which will stay as includes). Just extend sed_plugins to bind the same part to several hooks, improve auth handling and implement a few other requested features. There still be changes in plugins, but most of old code will work.<br />
<br />
I just want to warn that if you vote for &quot;Brand new&quot; or &quot;Major upgrade&quot; that would mean that old plugins will need some work. I'm not sure there will be enough enthusiasts to do it.]]></description>
			<pubDate>Mon, 20 Apr 2009 14:16:40 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11622]]></link>
		</item>
		<item>
			<title>Dayver</title>
			<description><![CDATA[I voted for <strong>Major upgrade</strong> because from my point of view, this is the optimal ratio between the new opportunities that are provided and the complexity of changes to the old plug-ins<br />
<div style="margin:4px 0px 4px 0px"><input type="button" value="По русски" onclick="if(this.parentNode.getElementsByTagName('div')[0].style.display != '') { this.parentNode.getElementsByTagName('div')[0].style.display = ''; } else { this.parentNode.getElementsByTagName('div')[0].style.display = 'none'; }" /><div style="display:none" class="spoiler">Я проголосовал за Major upgrade потому что с моей точки зрения это является оптимальным соотношением между новыми возможностями которые будут предоставлены при реализации этим способом и сложностью переделки старых плагинов(а их ой как много, а людей которые будут все это переделывать очь мало, потому Brand new не катит)</div></div>]]></description>
			<pubDate>Mon, 20 Apr 2009 08:44:01 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11616]]></link>
		</item>
		<item>
			<title>Elgan</title>
			<description><![CDATA[do you have any more details on designs? <br />
<br />
It would be nice, Im also thinking of some sort of setting auth functions as well as getting auth, as you have to grab authing for each new created user group.<br />
<br />
admin needs to be more plugable if we want proper intergration, atm ive left all my admin in my plugin, as its easier, plus all my admin is in 1 section then.  HOwever, its still seperate from the engine admin and i have to provide 2 admin links.<br />
<br />
ive never actually needed to multiple hook, Its just easier to make a function if its code thats going to be duplicated.]]></description>
			<pubDate>Mon, 20 Apr 2009 04:38:58 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11607]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[As you know new Module and Plugin APIs are planned for Renaissance. As for Modularization, I'm going to tell my opinion in its topic a little bit later, it is not really much we should do with the API, it's mostly about changing file structure.<br />
<br />
In this topic I'd like to ask about Plugin API. We want plugins to be a little bit more flexible, hook into multiple places, etc. There is a really interesting idea of implementing plugins as event handlers and making a move towards event-driven behavior. But what worries me before I start to make API concepts is how far plugin developers are ready to go.<br />
<br />
So I wonder how much backwards compatibility there should be. Here I explain poll options:<br />
<ul>
<li><strong>Brand new</strong> - the API is something revolutionary, but all the existing plugins will have to be rewritten. Almost no backwards compatibility at all.</li>
<li><strong>Major upgrade</strong> - event-driven design, flexibility benefits. Will require changes in interface part of all the plugins, but the actual code will stay the same. It's about changing 10-30% of code in plugins.</li>
<li><strong>Minor update</strong> - just try to add multiple hooks keeping current design. Will require changes in plugin headers (currently known as SED_BEGIN_EXTPLUGIN). 3-5% of changes in code and old plugins should work too.</li>
<li><strong>No changes</strong> - just leave the plugins alone.</li>
</ul>
<br />
Please explain your choice, especially if you are a Team member.]]></description>
			<pubDate>Mon, 20 Apr 2009 03:09:14 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=2631&d=0#post11605]]></link>
		</item>
	</channel>
</rss>