<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Doggetto.com</title>
	<atom:link href="http://blog.doggetto.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.doggetto.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 22 Apr 2011 05:30:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Greek Sentence 1</title>
		<link>http://blog.doggetto.com/2011/04/greek-sentence-1/</link>
		<comments>http://blog.doggetto.com/2011/04/greek-sentence-1/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 05:27:25 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=650</guid>
		<description><![CDATA[So it&#8217;s been a while since I&#8217;ve been able to work on my Ancient Greek and I&#8217;m really feeling it. So I figure I&#8217;ll go through a sentence here every couple days (I&#8217;d say every day, but what happens if I miss a day?). Tonight the randomly selected sentence is οὐκ ἂν ἀφείην ὁπόσους ἂν [...]]]></description>
			<content:encoded><![CDATA[<p>So it&#8217;s been a while since I&#8217;ve been able to work on my Ancient Greek and I&#8217;m <em>really</em> feeling it.  So I figure I&#8217;ll go through a sentence here every couple days (I&#8217;d say every day, but what happens if I miss a day?).</p>
<p>Tonight the randomly selected sentence is</p>
<blockquote><p>οὐκ ἂν ἀφείην ὁπόσους ἂν ἕλωμεν πρὶν ἂν χρήματα δῶσιν.</p></blockquote>
<p><span id="more-650"></span></p>
<h4>Just Thinking</h4>
<p>Okay, so upon just looking at the sentence I can see only a few words I know.  So depressing!  Without looking anything up, here&#8217;s my thoughts:</p>
<table>
<tr>
<td>οὐκ</td>
<td>&#8220;not, no, negation&#8221;</td>
</tr>
<tr>
<td>ἂν</td>
<td>This word is untranslatable, but is used (somehow! Argh!) with optatives generally, right?</td>
</tr>
<tr>
<td>ἀφείην</td>
<td>A verb, right?</td>
</tr>
<tr>
<td>ὁπόσους</td>
<td>Looks like a noun, plural masculine accusative.</td>
</tr>
<tr>
<td>ἕλωμεν</td>
<td>A verb (1st Person plural indicative?) ?</td>
</tr>
<tr>
<td>πρὶν</td>
<td>A preposition, right? </td>
</tr>
<tr>
<td>χρήματα</td>
<td>Neuter (from the -ματα) plural nominative?  Burning? Krhmata ~ cremation?</td>
</tr>
</table>
<p>Well *that* was depressing!</p>
<h4>Liddel &#038; Scott</h4>
<p>Now I&#8217;ll look up what I don&#8217;t know in my Middle Liddel.</p>
<table>
<tr>
<td>ἀφείην</td>
<td>Seems to be from ἀφίημι? Aha! This form is listed as an optative. I don&#8217;t remember optative endings.  I&#8217;ll guess 1st Person singular. Upon working on the next words, maybe it&#8217;s plural. Means &#8220;Let go, free&#8221;?</td>
</tr>
<tr>
<td>ὁπόσους</td>
<td>Adjective, from ὁμόσος, &#8220;as great as&#8221;</td>
</tr>
<tr>
<td>ἕλωμεν</td>
<td>Having trouble finding this one.</td>
</tr>
<tr>
<td>πρὶν</td>
<td>adverb: <em>before, until<em></td>
</tr>
<tr>
<td>χρήματα</td>
<td>Not finding this one.</td>
</tr>
<tr>
<td>δῶσιν</td>
<td>Verb, 3rd Person plural?  Can&#8217;t find it either.</td>
</tr>
</table>
<p><br/></p>
<h4>Perseus</h4>
<p>The end-all-be-all of finding this stuff: the <a href="http://www.perseus.tufts.edu/hopper/morph">Perseus Project Word Study Tool</a>.</p>
<table>
<tr>
<td>ἀφείην</td>
<td>Verb, 1 Person singular, aorist optative = &#8220;I might have let go&#8221;</td>
</tr>
<tr>
<td>ἕλωμεν</td>
<td>Verb, 1 Person plural aorist subjunctive active = &#8220;We may have taken&#8221;</td>
</tr>
<tr>
<td>χρήματα</td>
<td>from χράομαι (should have looked with an α as well as a η!), noun, pl neuter nom/acc = &#8220;possessions&#8221;</td>
</tr>
<tr>
<td>δῶσιν</td>
<td>Verb, from δίδωμι, 3rd Person pl aorist subjunctive active = &#8220;they may have given/granted&#8221;</td>
</tr>
</table>
<p><br/></p>
<h3>Putting It Together</h3>
<blockquote><p>οὐκ ἂν ἀφείην ὁπόσους ἂν ἕλωμεν πρὶν ἂν χρήματα δῶσιν.</p></blockquote>
<p>Not (ἂν) I might have let go as many as (ἂν) we may have taken before (ἂν) possessions they may have given.</p>
<p><strong>I would not have let as many go free as we might have taken until they had given possessions.</strong></p>
<p>I&#8217;m not very happy with this sentence.  I feel I&#8217;ve got the general gist of it (probably some sort of promise), but the details are messed up.  Optatives do screwy things like express wishes or intent and this sentence is full of them.  Why or why can&#8217;t people just use the indicative?  So I think the sentence is generally expressing some sort of promise about not letting as many go as they had taken before they (the enemy I presume?) have given them property.</p>
<p>Oh well.  The more I do this, the better (and faster) I&#8217;ll get.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2011/04/greek-sentence-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problems with Polyandry and Problems with Feminism</title>
		<link>http://blog.doggetto.com/2011/01/problems-with-polyandry-are-problems-with-feminism/</link>
		<comments>http://blog.doggetto.com/2011/01/problems-with-polyandry-are-problems-with-feminism/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 05:00:05 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Mormon]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=642</guid>
		<description><![CDATA[I understand that I am, in discussing this, leaping into the fray of some truly difficult historical research and study. In discussions of this kind simply being exposed to such ideas without mentally preparing for them can result in rejection of faith, of historical fact, or even both. For those who are troubled by this [...]]]></description>
			<content:encoded><![CDATA[<p><em>I understand that I am, in discussing this, leaping into the fray of some truly difficult historical research and study.  In discussions of this kind simply being exposed to such ideas without mentally preparing for them can result in rejection of faith, of historical fact, or even both.  For those who are troubled by this post I&#8217;d recommend reading the polygamy chapters of Dr. Richard Bushman&#8217;s </em>Rough Stone Rolling<em>.</em><span id="more-642"></span></p>
<p>Joseph Smith was a polygamist.  Over the course of his life he married multiple women; many, if not most or all, of these relationships were sexually consummated, though a handful of these marriages may have been only sealings without a physical relationship.  However it went, Joseph&#8217;s polygamy is a fact and, to be admitted, a difficult one to accept for many members of the Church who have grown up not knowing about it.  However, the LDS Church is now quite public about it (you can even <a href="https://familysearch.org/s/treeDetails/show?uri=http%3A%2F%2Ftree.familysearch.org%3A8080%2Fwww-af-webservice%2Fperson%2F7762167">see some of the marriages</a> at the LDS genealogy site, <a href="https://familysearch.org/">FamilySearch.org</a>) and it is mentioned in manuals and CES courses.  It&#8217;s even discussed quite bluntly and openly in the popular historical fictions series <em>The Work and the Glory</em>.  The youth of the Church are exposed to it from high school and onward.  Give it a few more years and it will be common knowledge for most members of the church if it isn&#8217;t already.</p>
<p>However, there is another aspect of Joseph&#8217;s polygamy that is even more disturbing to people that I find intriguing: polyandry (meaning &#8220;many men&#8221;).  While polygamy in the church is usually understood to mean one man married to multiple women (technically &#8220;polygyny&#8221;, or &#8220;many women&#8221;), polyandry means one woman married to multiple men, and this actually occurred in Nauvoo.  Basically put, it has been clearly evidenced that some of the women whom Joseph married were already married to other men; three of these are on FamilySearch.org: <a href="https://familysearch.org/s/treeDetails/show?uri=http%3A%2F%2Ftree.familysearch.org%3A8080%2Fwww-af-webservice%2Fperson%2F7106574">Zina Huntington Jacobs</a>, <a href="https://familysearch.org/s/treeDetails/show?uri=http%3A%2F%2Ftree.familysearch.org%3A8080%2Fwww-af-webservice%2Fperson%2F1440669">Prescendia Huntington Buell</a> (Zina&#8217;s sister), and <a href="https://familysearch.org/s/treeDetails/show?uri=http%3A%2F%2Ftree.familysearch.org%3A8080%2Fwww-af-webservice%2Fperson%2F1020523">Mary Elizabeth Rollins Lightner</a> (famous for saving, along with her sister, pages of the Book of Commandments as a young girl from a violent mob in the early 1830s; I&#8217;m sure you&#8217;ve heard the story multiple times in Church &#8211; she was an amazing woman).  There were possibly as many as nine in total who were married to the Prophet Joseph Smith (and, after his death remarried to Brigham Young, Heber C. Kimball, and other church leaders) as well as being simultaneously married (not sealed, however) to other men.</p>
<p>Many people find this fact to be insurmountable.  I&#8217;ve heard of many people who have had their rock-solid faith dashed upon this information.  Heck, it was seriously disturbing to myself when I first read about it in Dr. Richard Bushman&#8217;s <em>Rough Stone Rolling</em> (partially because it was too difficult to mentally reject Dr. Bushman&#8217;s book because I had obtained a copy of it at Deseret Book).  However, there are two things that I now find very interesting and intriguing about people&#8217;s responses to this information.  First, I find it interesting that it bothers people more than regular polygamy does, and second, I find it interesting that there is intense debate among historians as to whether Joseph had sexual relations with these polyandrous wives.  Why are these such overwhelming issues?  I&#8217;d argue that it is because the culture that is looking at the issue of polyandry is limited by a non-feminist viewpoint; or, to put it another way, a powerful tool available to Mormons (but not used by most of them) for studying this issue is a feminist and egalitarian perspective.</p>
<p>Basically put, simply ask yourself (if you&#8217;re having or have had trouble with this issue) WHY is this issue affecting me so strongly?  While most modern Mormons have trouble with the idea of polygamy they&#8217;ve developed ways to either put it on the shelf or understand it as a doctrine of the Church&#8217;s past.  Finding out that Joseph practiced polygamy can be difficult, but chances are that you&#8217;ve already encountered it and have dealt with it in some way.  Why would finding out about polyandry be any different?  Well, I can&#8217;t really argue for you (dear reader) because I don&#8217;t know you, but I can explain it for myself: the problem was how the issue framed itself in my own mind.  I was used to Joseph marrying multiple women, but it was troubling when I found out that some of those women <em>belonged</em> to other men.  I&#8217;m embarrassed to say it, but that was how I looked at the issue deep inside my own head.  Joseph was taking what already had been promised to someone else; he was stealing!  But then I stopped and turned the situation around in my head.  What about women in a regular polygynous relationship?  They were married to a man who already belonged to another <em>woman</em>, right?  To be fair I should have been thinking that they were taking what had already been promised to someone else; they were stealing?  But that was <em>not</em> how I looked at polygyny.  Why?</p>
<p>Probably because I was used to the patriarchal system; the man is to preside over the household.  The man is in charge.  While the best marriage is an equal one, the line of authority in the family still flows subtly from the woman to the man.  In my mind, the families in old Utah were large families that centered upon the single father.  It was okay (kinda) in my mind for two women to belong to one man (and that the women could share that ownership of their husband).  For some reason in my head women could share a man, and a man could share his love towards multiple women.</p>
<p>But polyandry turns all of this on its head: a woman who is already married already belongs to someone else.  Men can share their relationship, but I had difficulty imagining women doing the same.  I could imagine a man at the center of a multiple partner scenario; I had difficulty imaging a woman doing the same.</p>
<p>Another issue that often pops up, especially from apologists, is whether or not Joseph had a sexual relationship with these married women.  The data isn&#8217;t exactly conclusive, but it seems that for at least some of them he did.  This bothers people.  <em>A lot.</em>  There&#8217;s quite a bit of effort from some people to try and prove that these particular relationships were only spiritual relationships in nature, that there was no sexual contact between Joseph and these women.</p>
<p>Well, why is this a problem?  Brigham Young had a number of wives and dozens of children with many of them.  This is <em>common</em> knowledge to everyone both within and outside of the Church.  Both Mormons and non-Mormons make jokes about it (the Mormon ones tend to be much cleaner).  Brigham Young had many wives and these were real marriages.  Most Mormons have no problems with it because sex is a good thing as long as it is <em>within</em> a marriage structure.  And these women were married to Brigham, so it&#8217;s no problem to most Mormons.</p>
<p>So why is there all of the effort to distance Joseph and his polyandrous wives?  Nobody seems to be assuming that these women weren&#8217;t having sex with their first husbands: merely that they possibly didn&#8217;t have sex with their second husband.  Why the difference?  Nobody questions whether or not Brigham had sex with his wives?  Why is there a difference?  Again, because we place more of the importance in these relationships on the <em>men</em> than the <em>women</em>.  The emphasis is on <em>Joseph Smith</em>, not on <em>Mary Rollins Lightner</em>.  Why is that?  Again: because these women <em>belong</em> to someone else.  It&#8217;s difficult to look at the situation as though the <em>men</em> involved <em>belong</em> to the women.</p>
<p>Besides, in term of the historical record, after the death of Joseph Smith most of Joseph&#8217;s wives were remarried to Brigham Young, Heber C. Kimball and other church leaders (including the Huntington sisters) and some had children with these third husbands (again including the Huntington sisters).  So even if we can show that Joseph never had sexual relation with these wives, they had sexual relationship with their later husbands.</p>
<p>So what is the solution?  Well, I can&#8217;t speak for everyone and I don&#8217;t want to be a Mormon apologist, but I think that feminism gives Mormons a powerful tool to look at this.  If we are limited by our vision of the father &#8220;presiding&#8221; and the mother &#8220;nurturing&#8221; we continue to limit ourselves to a view of marriage where the wife is inferior (even if only a slight bit) to the husband.  However, if we adopt an egalitarian view of marriage where the two (or even more) people involved in the marriage are truly equal to each other with no authority of one over the other in any sphere then suddenly the role of &#8220;wife&#8221; and &#8220;husband&#8221; simply equate to &#8220;partner&#8221; (or, for those who dislike that term as too &#8220;liberal&#8221; or &#8220;gay&#8221;, to &#8220;spouse&#8221;).  At that point the terms &#8220;polygyny&#8221; (&#8220;many women&#8221;) and &#8220;polyandry&#8221; (&#8220;many men&#8221;) become the same thing: a relationship where there is one person married to multiple spouses.  It becomes truly just &#8220;polygamy&#8221;.  And while most Mormons (myself included) still have a lot of trouble dealing with the idea of polygamy, adopting an egalitarian view of marriage forces us to look at polyandry and say to ourselves &#8220;What is the problem with this historical practice?  Is this really any worse, or really any different, from the practice of polygyny?  Even if sex was involved in these relationships?&#8221;  Answer: not really.  And so we see yet another benefit to the Church and its members from a wider acceptance of feminism and egalitarianism instead of patriarchy and complementarianism. However, I worry because it seems that, in general, the Church refuses to be more than complementarian in their approach to equality in marriage and that Church culture (in Utah especially) still rejects feminism as a movement with suspicion and distrust.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2011/01/problems-with-polyandry-are-problems-with-feminism/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Compiling HipHop on Ubuntu 10.04</title>
		<link>http://blog.doggetto.com/2010/09/compiling-hiphop-on-ubuntu-10-04/</link>
		<comments>http://blog.doggetto.com/2010/09/compiling-hiphop-on-ubuntu-10-04/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 04:41:13 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=632</guid>
		<description><![CDATA[So I wanted to give HipHop a run-through. It seems like an awesome project to be able to write PHP and compile to C++ code (nice for me when I spend most of my non-school life in PHP). However, while following the Ubuntu build instructions I couldn&#8217;t make the project due to errors with ~/hiphop/hiphop-php/src/runtime/base/server/ [...]]]></description>
			<content:encoded><![CDATA[<p>So I wanted to give <a href="http://wiki.github.com/facebook/hiphop-php/">HipHop</a> a run-through.  It seems like an awesome project to be able to write PHP and compile to C++ code (nice for me when I spend most of my non-school life in PHP).  However, while following the <a href="http://wiki.github.com/facebook/hiphop-php/building-and-installing-on-ubuntu-910">Ubuntu build instructions</a> I couldn&#8217;t make the project due to errors with <code>~/hiphop/hiphop-php/src/runtime/base/server/<br />
libevent_server.cpp</code> on line 98 (<code>evhttp_is_connection_ssl</code> was undeclared I think).  Sorry for the lack of more precision on the error &#8211; I&#8217;ve solved it and I&#8217;ve lost the display of the error on my terminal so I&#8217;m writing this post based on my bash history).<span id="more-632"></span></p>
<p>So I&#8217;m just writing this quick post for anyone else who is running into the same error: the way I got past the problem was to edit the file in question (<code>~/hiphop/hiphop-php/src/runtime/base/server/<br />
libevent_server.cpp</code>).  I noticed that every other reference in the file to <code>evhttp_is_connection_ssl</code> was wrapped in a make ifdef instruction, so I copied the same instructions to surround line 98:</p>
<blockquote><p><code>...<br/>&nbsp;&nbsp;LibEventTransport transport(server, request, m_id);<br/>&nbsp;&nbsp;<strong>#ifdef _EVENT_USE_OPENSSL</strong><br/>&nbsp;&nbsp;if (evhttp_is_connection_ssl(job-&gt;request-&gt;evcon)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;transport.setSSL();<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;<strong>#endif</strong><br/>&nbsp;&nbsp;bool error = true;<br/>&nbsp;&nbsp;std::string errorMsg;<br/>...</code></p></blockquote>
<p>After making that change the make operation, while incredibly long, went just fine.  Now to see how well HipHop itself works!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2010/09/compiling-hiphop-on-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My Thoughts on Pres. Packer and Pres. Beck at the 2010 LDS General Conference</title>
		<link>http://blog.doggetto.com/2010/04/packer-beck-conference-2010/</link>
		<comments>http://blog.doggetto.com/2010/04/packer-beck-conference-2010/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 19:05:34 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Mormon]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=607</guid>
		<description><![CDATA[The following is long because I want to make sure I approach the subject carefully. It is indeed a soft criticism upon statements given by a man I believe to be an Apostle of God, so I can understand if the very idea can be seen as offensive to some. I apologize for that offense, [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">The following is long because I want to make sure I approach the subject carefully.  It is indeed a soft criticism upon statements given by a man I believe to be an Apostle of God, so I can understand if the very idea can be seen as offensive to some.  I apologize for that offense, but I believe the criticism is valid.<span id="more-607"></span></p>
<p class="intro">I am a little hesitant to share specifics with why I was disappointed with a particular talk from General Conference.  Over the next six months, many LDS (myself included) will study from the transcripts as published in next month&#8217;s &#8220;Ensign&#8221;; it&#8217;s expected that each talk can provide spiritual comfort and counsel.  I don&#8217;t want my personal opinion about a particular talk to somehow be seen as invalidating or belittling another person&#8217;s enjoyment of the same discourse;  my expectations are different and my concerns are different.  I don&#8217;t think that anyone in Church leadership is somehow dishonest, hypocritical, or evil.  I believe that they are all honest women and men who say the things they say because they believe in the doctrines of the LDS Church.  However, a leadership position in the Church doesn&#8217;t somehow disqualify someone from making a poor choice of words, or even from endorsing a particular point of view that may later be seen as uninspired (much of the pre-1978 folklore would qualify for this; much of it was publicly taught as truth and is now seen as nothing more than misguided opinion).  As someone listening to my leaders, I can only argue from a position that I believe in, and if that doesn&#8217;t match up completely with what I hear, then I need to look carefully at both what I believe and what was said.  Sometimes my beliefs change, and other times I reject the wild fruits in someone&#8217;s message and only prize the good fruits.  I&#8217;ve never found a talk given by a Church leader that didn&#8217;t have something in it that was worthy of study and implementation, but I&#8217;ve found a few that had some ideas that I had to leave behind because my beliefs simply could not agree with some of what was said.</p>
<p>The Church of Jesus Christ of Latter-day Saints is a small movement compared to many Protestant Christian denominations.  Its relative youth compared to the other three Abrahamic religions tends to mean it is easily mocked for its particular historical and faith claims which have occurred within the past two centuries; in spite of this the Church has grown considerably during that time (not nearly as much as the Pentecostal movement, for instance, but for a tightly organized movement, it is an impressive growth).  If it is to continue to be a force for good it must continue to grow; however, while the Church currently claims nearly 14 million members it is a guessing game as to how many of those are active in their practice, let alone how many have achieved the highest levels of activity expected for the general membership by attending the Temple or being ordained in the Priesthood.  The answer is certainly much lower than the pure membership numbers.  From other statistical sources, such as Gallup or Pew, we know that women form a clear majority of active Church membership.  As such, it might be expected that Church leadership would speak out more on issues relating to what is expected of all human beings, not just men, within the Church, with perhaps an occasional focus on women&#8217;s issues and their strength (by virtue of their numbers at the very least).  Such an emphasis was occasionally seen and heard during some of the past weekend, but it is interesting to me how that emphasis was expressed, especially in comparing and contrasting the first two discourses delivered.</p>
<p class="intro">President Boyd K. Packer spoke at length about how the Power of the Priesthood is not yet being expressed among the Priesthood holders of the Church. However, (without a transcript to compare against) he didn&#8217;t directly define the Power of the Priesthood, as opposed to the Authority of the Priesthood which I&#8217;ve continually read from Church sources to mean &#8220;the authority to act in God&#8217;s name&#8221; or, in other words, the authority to perform efficacious rituals and ordinances.  In the Church, women have not, as yet, been given such authority apart from their limited authority to perform some of the Temple rituals.  However, it appeared to me that the general gist of the &#8220;Power&#8221; being described was not simply the miraculous ability to enjoy gifts from God such as healing (a power that is equally available to women through the prayer of faith, as expressed by Elder Dallin H. Oaks during his Priesthood Session remarks, and as attested by much of Latter-day Saint Church history where administration and blessings on the sick by women are commonplace), but was also power in the sense of authority and responsibility in relation to other human beings.  I love that the Church has a structure that allows for people, both female and male, to hold positions of authority not because they have any particular skill for such positions but rather because the initial &#8220;calling&#8221; to that position was supposed to be the result of revelatory impressions.  I accept that it can on rare occasion be useful to have an individual who has a sort of &#8220;final say&#8221; regarding difficult decisions, but I also believe that the most successful and most efficient individuals in the positions never use that &#8220;final say&#8221; (many others, of course, fall victim to the temptation to use it often which usually in my experience quickly devolves to what Joseph Smith referred to as &#8220;unrighteous dominion&#8221;).  The best decisions are mutual decisions where all involved are respected equally.  This seems to be how the highest councils of the LDS Church usually are run.</p>
<p>Thus, to me, statements like &#8220;The priesthood does not have the strength that it should have and will not have until the power of the priesthood is firmly fixed in the families as it should be&#8221; are troubling to me.  What &#8220;power&#8221; of the priesthood is to be expressed within a family?  The first answer that comes to mind is the ability of the father to directly request blessings and miracles of God for his family, to perform rituals involving members of his family like baptism and the Gift of the Holy Ghost, or to pass on this authority to his sons.  That&#8217;s always a nice thing, in my mind, for a father to offer because at our present point in history, he is the only one with the authority to do so in the home.  To me, while the authority is divine, it&#8217;s no different than if the mother of the home had a bank account of her own with large amounts of funds that she could give to members of her family, including her husband, whenever it was requested (and that, for some unknown reason she was not allow to jointly co-own and operate with her husband).  If done in a spirit of generosity and love, without the mother feeling somehow important or entitled due to her ownership of such an account, the sharing of such funds as gifts could help the family to grow together.  Of course, if she were concerned about keeping an egalitarian relationship between herself and her husband or children she might not want to make too much use of her bank account.  In a similar fashion, I know of many men, myself included, who don&#8217;t actually enjoy giving blessings or other priesthood rituals in the home too often because it can be difficult to preserve the particular level of equality that the spousal partnership has currently achieved.  However, since such gifts and rituals can be used to strengthen family relationships when done with the right spirit, I would agree that men in the Church, myself included, need to do more of them for the families to which we belong.</p>
<p>However, this idea of the father stepping up in regards to what he has to offer to the family does <i>not</i> seem to be simply what President Packer has in mind.  Later statements about how it is a father&#8217;s right and duty to preside in the home are certainly much more than an offering of generosity and love.  &#8220;The priesthood does not have the strength that it should have and will not have until the power of the priesthood is firmly fixed in the families as it should be.&#8221;  Again, what does this phrase &#8220;power of the priesthood&#8221; mean?  From a note made during the talk (there is no transcript yet, so this may be flavored by thoughts I was having while watching) &#8220;The father presides at the table, in family prayer, and in general instruction to the family.  When he is present, he is presiding.&#8221;  It seems to me that President Packer is calling on men to lead and run their families in all settings , even informal things Family Home Evening and other events.</p>
<p>He shared a story where a young man had requested to be ordained to a higher level of the priesthood by an individual that was not his father.  We as an audience were given no context for that decision, and were even told later that the young man&#8217;s brothers had also previously requested to not have their father involved in their ordinations.  The moral of the story was clear, however: it didn&#8217;t matter <i>why</i> the father&#8217;s sons did not want him involved, he <i>deserved</i> to be involved because he was <b>the father</b>.  He had the <i>right</i> because he had contributed his Y chromosomes to their genetic makeup (my words, obviously).  It was later related that the forced ordination by the father had indeed resulted in a better relationship between father and son; it can&#8217;t be denied, this was a touching end to the story, but for all we know it could have ended just as easily that the young man felt that his reasons for not choosing his father were seen as pointless and, upon feeling that his input was completely ignored, descended into apathy in regards to his place within the Church.  In the end, the decision was not forced because of love.  The moral of the story was all about respect for authority, and respect for maleness specifically.  It wasn&#8217;t even about respect for the priesthood, since the story implied that the father should be involved in the ordination even if he didn&#8217;t have the authority to be involved (it was jokingly implied that, in such a case, he would be given such authority on the spot as a sort of &#8220;military commission&#8221;).</p>
<p>And what is the responsibility of women in regards to Pres. Packer&#8217;s plea for men to step it up in using the &#8220;power&#8221; of the priesthood in the home? &#8220;Unless we enlist the attention of the mothers and daughters and sisters, who have influence on their husbands, fathers, sons and brothers, we cannot progress. The priesthood will lose great power if the sisters are neglected.&#8221;  Personally, I think that the female members of my own family have <i>far</i> more to give to our family than &#8220;attention&#8221; and &#8220;influence&#8221;.  Certainly, Heidi can (and does) request blessings using the priesthood in her home, but that is <i>not</i> all that she can do in terms of creating a home that can be shielded from harm.  &#8220;You [Fathers] have the power of the priesthood directly from the Lord to protect your home. There will be times when all that stands as a shield between your family and the adversary&#8217;s mischief will be that power.&#8221;  I cannot agree with this prediction; the shield is that <i>we</i>, as parents (plural, not gendered), can raise our children to be moral agents that can choose, as we can choose individually and unitedly, to resist immorality and &#8220;mischief&#8221;.  If the use of priesthood in the home can be a bonding agent to help increase trust, love, and respect among all of us, so much the better.  But it is only one ingredient among many for a strong home and family.  The better ingredients have been what is available to all families, both within and without the LDS Church: love, respect, and kindness.</p>
<p>In total, President Packer&#8217;s call for men to step up in employing their authority in both the Church and the home, was severely limiting for members of the Church who do not have the priesthood.  Which, if you&#8217;ll recall again, is the vast majority of Church members.  It was a call for the minority to assert their authority and a call for the majority to assist and aid them in doing so.  I felt that the entire talk was a missed opportunity to not simply empower those few men within the Church who have the priesthood, but instead call for all members of the Church to step it up in striving to obtain miracles and blessings from God.  While the priesthood is authority that is currently limited to men, a call to live up to the power available to us as children of God is a call that anyone can answer.</p>
<p class="intro">All of this is why I appreciated so much the next talk by President Julie Beck, personally applying it somewhat as a corollary to the previous talk.  My issue with President Packer&#8217;s talk came from my trying to apply generally the principles he was discussing to members of the Church as a whole; much of what he said simply cannot apply to the majority of church members.  However, all of what President Beck spoke about is applicable to all members of the Church.  She spoke of women in the church increasing faith, strengthening families, and providing relief.  And she spoke of the power that can help women in accomplishing these goals: personal revelation.  In discussing this, she was appealing to the personal and individual communication available to all individuals.  To President Beck, the divine power available to women (and men, I would add) is a power that comes to them directly from God.  Women are not dependent upon men to provide them with power: they have it by virtue of their personal relationship with God and their ability to listen to the revelatory promptings of God&#8217;s Spirit.  Women don&#8217;t need men to tell them when they are doing well; she proclaimed that women should be women, not babies to be petted and corrected all the time. &#8220;We know we are successful if we live so that we qualify for, receive, and know how to follow the Spirit&#8221;.</p>
<p>President Beck was also exhorting the women of the Church to step it up: &#8220;In my visits with the sisters, I have felt that there has never been a greater need for increased faith and personal righteousness. There has never been a greater need for strong families and homes. There has never been more that could be done to help others who are in need&#8230; When Relief Society functions in an inspired way, it lifts women up and out of a troubled world and into a way of living that prepares them for the blessings of eternal life&#8230; Through Relief Society, sisters can receive answers to their questions and be blessed by the combined spiritual power of all the sisters.&#8221;  Now, I&#8217;m not sure what was meant by &#8220;through Relief Society&#8221; in that statement, but the combined efforts of many people can be a powerful force indeed.  In calling upon the sisters to do better, she told them that &#8220;We are doing well when we increase faith and personal righteousness, strengthen families and homes, and seek out and help others who are in need.&#8221;  There was little from her remarks that was not equally applicable to any member of the Church, or, indeed, any member of another faith entirely.  Her talk was not limiting at all, even though it was addressed only to the women of the Church.  It was empowering and ennobling counsel that applied to everyone who was listening.</p>
<p class="intro">Indeed, these two points of view were present throughout the Conference to varying degrees.  At times the exhortations to rely upon divine power was limited to those of the Priesthood, while at other times the same exhortation was given to everyone.  Since the majority of Church membership is composed of individuals without Priesthood authority, I felt it was far better to speak to the Church as a whole.  Especially since the Priesthood have their own semi-private session of General Conference (semi because I can&#8217;t imagine that anyone would ask a sister in attendance to leave).  Why give a talk addressed to the Priesthood to the general membership in the first place?  Especially one that seemed to be about so much more than wives requesting that their husbands offer and be involved in more blessings and ordinances to members of the family?  I don&#8217;t have much of an answer.</p>
<p class="intro">TL;DR;<br/>President Packer&#8217;s talk, while not saying anything negative in particular, was limiting in its aspect, target audience, and application.  It was empowering to the few.  President Beck&#8217;s talk, while also not a paragon of egalitarian thought, was unlimited in aspect, audience, and application.  It was empowering to all.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2010/04/packer-beck-conference-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Faux-WordPress Plugin Note II</title>
		<link>http://blog.doggetto.com/2010/03/faux-wordpress-note-ii/</link>
		<comments>http://blog.doggetto.com/2010/03/faux-wordpress-note-ii/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 19:02:10 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[symfony Framework]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=593</guid>
		<description><![CDATA[Okay, I think I&#8217;ve got the repository nonsense worked out. Feel free to checkout or browse the code at: https://svn.xp-dev.com/svn/tpdFauxWPPlugin/trunk/ As I said, I&#8217;m still working on this, so be careful: the code might not actually be working all the time. Feel free to read the logs for more info, I try to at least [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, I think I&#8217;ve got the repository nonsense worked out.</p>
<p>Feel free to checkout or browse the code at:<br />
<a href="https://svn.xp-dev.com/svn/tpdFauxWPPlugin/trunk/">https://svn.xp-dev.com/svn/tpdFauxWPPlugin/trunk/</a><span id="more-593"></span></p>
<p>As I said, I&#8217;m still working on this, so be careful: the code might not actually be working all the time.  Feel free to read the logs for more info, I try to at least type something when I commit.</p>
<p>For those who are interested in how to convert your project into a plugin, it&#8217;s actually quite simple.  A plugin is like a little mini-application: it holds a lib directory for filters, forms, and models; it holds a modules directory for modules (these have to be explicitly activated in each application); and it can hold other directories like web and config.  Each of these directories functions the same as in a full application.  One nice thing a lot of plugin developers will do is to add a third layer of inheritance above the plugin model classes so that future developers can extend the plugin without having to muck about inside of the plugin code  (You might have seen this if you&#8217;ve played around with sfGuard:  the normal model classes are all empty and extend the Plugin classes which extend the base classes).</p>
<p>Anyways, gather all of that together, and you have the directory structure of a plugin, ready to be used in Symfony.  As for the actually business of packaging I&#8217;ll have to leave that for later.  It can be very simple, but to pull off some really cool things requires a bit of work.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2010/03/faux-wordpress-note-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Producing a Faux-WordPress Plugin for Symfony, Part IV</title>
		<link>http://blog.doggetto.com/2010/03/producing-a-faux-wordpress-plugin-for-symfony-part-iv/</link>
		<comments>http://blog.doggetto.com/2010/03/producing-a-faux-wordpress-plugin-for-symfony-part-iv/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 17:27:04 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[symfony Framework]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=589</guid>
		<description><![CDATA[I really want to finish this plugin.  I'm getting a little tired of using two solutions for my website and I want to get back to working on other things I've planned.  So instead of giving everyone the play-by-play for the application (which has been taking FOREVER), I'm going to give status updates on the project, open up a subversion repository, and just start building the applicaiton]]></description>
			<content:encoded><![CDATA[<p class="intro>For this fourth part of my post on my FauxWordPress plugin I am changing tack.  Previously I&#8217;ve actually been developing at the exact same time as writing.  This meant that, in essense, I was writing everything twice, then testing, then writing everything twice again, then testing, and finally writing everything twice again.  I guess this was really fun for people who were trying to follow along from scratch, but there&#8217;s already plenty of good tutorials that help in the development of a full application (Askeet, Jobeet).  Besides, while there are aspects of plugin development that I had to somewhat struggle with, it was better for me to struggle because I think I&#8217;ve learned more that way (still learning).<span id="more-589"></span></p>
<p class="intro">I really want to finish this plugin.  I&#8217;m getting a little tired of using two solutions for my website and I want to get back to working on other things I&#8217;ve planned.  So instead of giving everyone the play-by-play for the application (which has been taking FOREVER), I&#8217;m going to give status updates on the project, open up a subversion repository, and just start building the applicaiton.  At certain points along the way I&#8217;ll give posts about certain aspects of the development process that you should keep in mind for application development.</p>
<p>I&#8217;ve been swaped the past month with work and school so development on this plugin was somewhat slow.  I have finished up my plans for spam checking, however.  Considering that this is, basically, version 1 I&#8217;ve not written it very well in terms of adding additional spam solutions, but for now there is a Spam class that contains some abstracted functions for spam checking.  These functions basically run other functions within the class based upon config variables.  Currently there are functions to handle either Akismet or TypePad AntiSPam; I cheated because technically TypePad uses the same API calls as Akismet.  Two for the price of one!  If no spam solution is specified in the app.yml config file, then all comments are automatically approved.  I have still not added Mollum spam checking because it doesn&#8217;t return a straight-up boolean response but will, if unsure of the comment&#8217;s status after an initial check, present the user with a CAPTCHA field.  This sort of two-step process will be a little more involved and I&#8217;ll need to see about implementing it later.  For now, however, spam collection with two different checking solutions is finished.</p>
<p>Next to work on is the Show View for posts.  I want, as stated before, to allow the displaying and listing of posts (basically the entire post module for the frontend) to use any sort of WordPress theme.  I will be continuing to push for this goal after cleaning up the subversion repository.</p>
<p class="intro">Which brings me to my final bit of news.  I suck at subversion; I may use the CLI for it, but it you were to ask me to merge two branches to the trunk or something standard like that, I&#8217;d say get someone else.  I&#8217;m good at checking code out and checking code in.  Producing branches and trunks?  Not so good at that, but I need to learn.  To do so, I&#8217;ll be spending a bit of time today cleaning up my project repository and working copy in case anybody wants to check anything out.  Currently I&#8217;m still developing a full-blown application and not a plugin; converting from a project to a plugin isn&#8217;t that hard, so I&#8217;ll probably spend some time converting it and continue development as a plugin.  The benefit is that if anyone wants to try out this unfinished plugin, or offer any suggestions, they&#8217;ll be able to checkout code themselves.  I&#8217;ll post the URL of the repository as soon as I get it all figured out.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2010/03/producing-a-faux-wordpress-plugin-for-symfony-part-iv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Faux-WordPress Plugin Note I</title>
		<link>http://blog.doggetto.com/2010/02/faux-wordpress-note/</link>
		<comments>http://blog.doggetto.com/2010/02/faux-wordpress-note/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 20:00:11 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=585</guid>
		<description><![CDATA[This is mostly just for my own notes, because this will come up later in the project. To allow a plugin for spam modification in my plugin, I need to abstract out a few things: The comment to be posted is given to an abstract checking function. This checking function in turn calls the plugin&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>This is mostly just for my own notes, because this will come up later in the project.<span id="more-585"></span></p>
<p>To allow a plugin for spam modification in my plugin, I need to abstract out a few things:<br />
The comment to be posted is given to an abstract checking function.  This checking function in turn calls the plugin&#8217;s checking function. (This is like the sfGuard login function which can either run default or turn over login functionality to another function for such things as LDAP login).</p>
<p>The plugin has a few options for how it responds, all of which I should try to allow for:
<ol>
<li>It will set the comment as ham</li>
<li>It will set the comment as spam</li>
<li>It will run a secondary process to determine the humanity of the poster</li>
</ol>
<p>After the comments are automatically dealt with, the user may change the results somewhat.  The plugin will probably want to report on these changes.
<ol>
<li>User changed spam to ham (incorrectly marked as spam)</li>
<li>User changed ham to spam (incorrectly marked as ham)</li>
</ol>
<p>There are probably three spam filters that I would make use of:
<ul>
<li><a href="http://akismet.com/development/">Akismet</a></li>
<li><a href="http://antispam.typepad.com/info/developers.html">Typepad AntiSpam</a></li>
<li><a href="http://mollom.com/api">Mollum</a></li>
</ul>
<p>I should focus on these three and make certain that each one of them can be turned off/on with nothing more than changing the app&#8217;s config file.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2010/02/faux-wordpress-note/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Producing a Faux-WordPress Plugin for Symfony, Part III</title>
		<link>http://blog.doggetto.com/2010/02/producing-a-faux-wordpress-plugin-for-symfony-part-iii/</link>
		<comments>http://blog.doggetto.com/2010/02/producing-a-faux-wordpress-plugin-for-symfony-part-iii/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 19:30:24 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[symfony Framework]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=555</guid>
		<description><![CDATA[To build this plugin I&#8217;m going to start with a new project, entirely from scratch. This means that I will be initially developing a normal application. Once we&#8217;re nearing the end, we&#8217;ll package the project up into a plugin. This post will cover the development of basic CRUD functionality so we can actually do something [...]]]></description>
			<content:encoded><![CDATA[<p>To build this plugin I&#8217;m going to start with a new project, entirely from scratch.  This means that I will be initially developing a normal application.  Once we&#8217;re nearing the end, we&#8217;ll package the project up into a plugin.  This post will cover the development of basic CRUD functionality so we can actually <em>do</em> something if we want.<span id="more-555"></span></p>
<p>To start off, we&#8217;ll need our database and web server set up and ready to go.  I won&#8217;t go into that now and will just assume that you have config/databases.yml and config/propel.ini both set up and ready to go.  I also enjoy setting a VirtualHost in apache to handle the application, but that sort of choice is up to you.  It won&#8217;t matter to the packaged plugin in the end what you name the development database or how to configure your server.</p>
<p>We&#8217;ll need to have sfGuardUserPlugin installed because there are a few references to it in the schema of the previous post.  Let&#8217;s install it now before we set up the database tables.</p>
<div class="box"><code>symfony plugin:install sfGuardPlugin;</code></div>
<p>Now that we have sfGuard installed, we should be ready to build the application.</p>
<div class="box"><code>symfony propel:build-all --no-confirmation;</code></div>
<p>The schema is established in the database and we&#8217;re ready to go.</p>
<p>Let&#8217;s establish a few generators to take care of data entry.  For now, let&#8217;s establish one for managing posts and managing comments.</p>
<div class="box"><code>symfony propel:generate-admin --module="post" frontend sfFauxWPPost;<br />
symfony propel:generate-admin --module="comment" frontend sfFauxWPComment;</code></div>
<p>Next let&#8217;s set up the post module as the default module (for now) for the frontend, and set up links to the two modules in the template.</p>
<div class="box"><strong>/apps/frontend/config/routing.yml:</strong><br />
<code>...<br />
# default rules<br />
homepage:<br />
&nbsp;&nbsp;url:   /<br />
&nbsp;&nbsp;param: { module: post, action: index }<br />
...</code></div>
<div class="box"><strong>/apps/frontend/templates/layout.php:</strong><br />
<code>...<br />
&nbsp;&nbsp;&lt;body&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;?php echo link_to('Posts', '@sf_faux_wp_post') ?&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;?php echo link_to('Comments', '@sf_faux_wp_comment')?&gt;&lt;/li&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php echo $sf_content ?&gt;<br />
&nbsp;&nbsp;&lt;/body&gt;<br />
...</code></div>
<p>Now, after cleaing the cache (<code>symfony cc;</code>) we should be able to load the application and see the Post module.  It&#8217;s rather messy, however, since there is a <em>large</em> fitler box on the side and no default data to look at.  Also, if we try to click on the &#8220;Comments&#8221; link we&#8217;ll get a failure because there is no &#8220;__toString&#8221; function for Posts.  Let&#8217;s fix this first of all since we&#8217;ll be needing to echo objects a lot in this project.</p>
<p>The following are the objects that we&#8217;d expect to produce a string when echoed.  As for the others, feel free to add a __toString if you want.  We&#8217;ll probably address these objects later.  I am including phpDoc documentation in the functions because I want to have a correctly defined tooltip in NetBeans whne I reference this function.</p>
<div class="box"><strong>/lib/model/sfFauxWPCategory.php:</strong><br />
<code>&lt;?php</p>
<p>class sfFauxWPCategory extends BasesfFauxWPCategory<br />
{<br />
&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;* Echos the name of the category.<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* @return     string<br />
&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;public function __toString()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;getName();<br />
&nbsp;&nbsp;}<br />
}</code></div>
<div class="box"><strong>/lib/model/sfFauxWPComment.php:</strong><br />
<code>class sfFauxWPComment extends BasesfFauxWPComment<br />
{<br />
&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;* Echos the content of the comment.<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* @return     string<br />
&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;public function __toString()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;getContent();<br />
&nbsp;&nbsp;}<br />
}<br />
</code></div>
<div class="box"><strong>/lib/model/sfFauxWPPost.php:</strong><br />
<code>&lt;?php</p>
<p>class sfFauxWPPost extends BasesfFauxWPPost<br />
{<br />
&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;* Echos the title of the post.<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* @return     string<br />
&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;public function __toString()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;getTitle();<br />
&nbsp;&nbsp;}<br />
}</code></div>
<div class="box"><strong>/lib/model/sfFauxWPTag.php:</strong><br />
<code>&lt;?php</p>
<p>class sfFauxWPTag extends BasesfFauxWPTag<br />
{<br />
&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;* Echos the name of the tag.<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* @return     string<br />
&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;public function __toString()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;getName();<br />
&nbsp;&nbsp;}<br />
}</code></div>
<p>Now the basic CRUD functions for both Posts and Comments should be working.  Finally, before we end for now, let&#8217;s establish a &#8220;show&#8221; view for posts.</p>
<div class="box"><strong>/apps/frontend/modules/post/actions/actions.class.php:</strong><br />
<code>&lt;?php</p>
<p>/**<br />
&nbsp;* post actions.<br />
&nbsp;*<br />
&nbsp;* @package    PhpProject1<br />
&nbsp;* @subpackage post<br />
&nbsp;* @author     Your name here<br />
&nbsp;* @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $<br />
&nbsp;*/<br />
class postActions extends autoPostActions<br />
{<br />
&nbsp;&nbsp;public function executeShow(sfWebRequest $request)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;sf_faux_wp_post = $this-&gt;getRoute()-&gt;getObject();<br />
&nbsp;&nbsp;}<br />
}</code></div>
<div class="box"><strong>/apps/frontend/modules/post/templates/showSuccess.php:</strong><br />
<code>&lt;?php use_helper('I18N', 'Date') ?&gt;<br />
&lt;?php include_partial('post/assets') ?&gt;</p>
<p>&lt;div id="sf_admin_container"&gt;<br />
&nbsp;&nbsp;&lt;h1&gt;&lt;?php echo __($sf_faux_wp_post->getTitle(), array(), 'messages') ?&gt;&lt;/h1&gt;</p>
<p>&nbsp;&nbsp;&lt;div id="sf_admin_content"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="sf_faux_wp_published_at"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php echo $sf_faux_wp_post-&gt;getPublishedAt(); ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="sf_faux_wp_content"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php echo __(nl2br($sf_faux_wp_post-&gt;getContent())); ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;hr/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="comments"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="comment_count"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php echo ($sf_faux_wp_post-&gt;countsfFauxWPComments() ? $sf_faux_wp_post-&gt;countsfFauxWPComments() : "No") ?&gt; Comment&lt;?php echo ($sf_faux_wp_post-&gt;countsfFauxWPComments() != 1 ? 's' : '')  ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php foreach($sf_faux_wp_post-&gt;getsfFauxWPComments() as $id =&gt; $comment):?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="comment_&lt;?php echo $id ?&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="comment_name_&lt;?php echo $id ?&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php echo __($comment-&gt;getWebsite() ? link_to($comment-&gt;getAuthor(), $comment-&gt;getWebsite()) : $comment->getAuthor()) ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="comment_content_&lt;?php echo $id ?&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php echo __($comment-&gt;getContent()) ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php endforeach; ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&lt;/div&gt;<br />
&lt;/div&gt;</code></div>
<p>That&#8217;s enough for today.  Dang, I never expected that writing these posts would slow down the development so much.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2010/02/producing-a-faux-wordpress-plugin-for-symfony-part-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Producing a Faux-WordPress Plugin for Symfony, Part II</title>
		<link>http://blog.doggetto.com/2010/02/producing-a-faux-wordpress-plugin-for-symfony-part-ii/</link>
		<comments>http://blog.doggetto.com/2010/02/producing-a-faux-wordpress-plugin-for-symfony-part-ii/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 00:00:06 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[symfony Framework]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=524</guid>
		<description><![CDATA[The Symfony framework is awesome (and well-suited, I'd argue, for such an endeavor whenever someone wishes to attempt it), but it is meant for PHP developers, not for somebody who just wants to host a blog to talk about ecclesiology(!).  So, my plugin will approach the issue from this point of view: the PHP developer.  Wordpress plugins extend Wordpress to act however the developer wants; with a real Wordpress install all needs for the website are meant to really be handled by Wordpress.  With my plugin, it is really just a plugin to handle and emulate the <em>blogging</em> aspects of Wordpress; for the other features that a user or developer might want you'll need to address those through the framework itself.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.caerdelyn.co.uk/photos.html"><img alt="Working on the Foundations" title="Working on the Foundations" class="content-img-right" src="/wp-content/uploads/w_foundation.jpg" height="200" width="240"></a>
<p class="intro">WordPress is, by far, the most popular blogging framework on the Internet today and that popularity is not undeserved.  It has an easy installation and is set up to cater to non-technical people.  After installation, it simply works and people are up and running quickly.  It has an active plugin community to extend it in any direction a user might need.  In short, it&#8217;s a great solution to use pretty much anywhere.</p>
<p>However, it&#8217;s also not very nice to play with as a developer.  The code is mostly based around PHP 4 (although that will probably change when 3.0 is released) and writing plugins and themes can occasionally be a nightmare.  Security is, unfortunately, a constant problem since the ease-of-use is occasionally in tension with secure practices.  Finally, while the self-contained aspect of WordPress is great for a typical user who pretty much runs their entire site through WordPress, integrating a WordPress installation with an existing applicaiton &#8212; especially an application that has its own extensive user-management solution &#8212; is a daunting task.<span id="more-524"></span>  WordPress is a streamlined applicaiton, but trying to bend it in ways it wasn&#8217;t meant to bend (fiddling with database schemas, login and session management, etc) often breaks either WordPress or the developer.</p>
<p>The symfony plugin I am trying to write is NOT to somehow <em>replace</em> WordPress.  That is a large project that would be nearly impossible for myself.  I have no idea how I&#8217;d ever compete against the easiness of a WordPress installation.  The Symfony framework is awesome (and well-suited, I&#8217;d argue, for such an endeavor whenever someone wishes to attempt it), but it is meant for PHP developers, not for somebody who just wants to host a blog.  So, my plugin will approach the issue from the PHP developer&#8217;s point of view.  WordPress plugins extend WordPress to act however the developer wants; with a WordPress installation all functions of the website are meant to be handled by WordPress.  With my plugin, it is just a plugin to handle and emulate the <em>blogging</em> aspects of WordPress; for the other features that a user or developer might want you&#8217;ll need to address those through the framework itself.  Anything that isn&#8217;t the job of a blogging solution (e.g., a contact page) isn&#8217;t done by the blogging solution.</p>
<p>So, with that out of the way, on to building the plugin (which, until I think of a better name, is called sfFauxWP).</p>
<p class="intro">The foundation of any blogging solution revolves around the basic idea of posts and comments.  The following schema (adapted from the already excellent <a href="http://www.symfony-project.org/plugins/sfSimpleBlogPlugin">sfSimpleBlogPlugin</a>) allows for posts, comments, tags (non-self-referential post attributes), categories (self-referential post attributes), and user ratings.  There are a number of booleans which hold post-specific settings regarding user interaction.  While allowing some room for possible modification in the future, this schema is probably more than enough for our needs.</p>
<h3>schema.yml</h3>
<p><code style="line-height: 1em; font-size: medium;"><strong>propel</strong>:<br />
&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>package</strong>: lib.model<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>defaultIdMethod</strong>: native<br/><br />
<em>## Posts ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_posts</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPPost<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>author_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_guard_user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>title</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: varchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>size</strong>: 255<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>short_title</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: varchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>size</strong>: 255<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>summary</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: longvarchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>content</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: longvarchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>is_published</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: boolean<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>default</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>restrict_comments</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: boolean<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>default</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>rate_comments</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: boolean<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>default</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>rate_posts</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: boolean<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>default</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>published_at</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: date<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_uniques</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>short_title_published_at</strong>: [short_title, published_at]<br/><br />
<em>## Comments ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_comments</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPComment<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>sf_faux_wp_post_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_posts<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>sf_guard_user_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_guard_user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>author</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: varchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>size</strong>: 255<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>email</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: varchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>size</strong>: 255<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>website</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: varchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>size</strong>: 255<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>content</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: longvarchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>is_moderated</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: boolean<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>default</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br/><br />
<em>## Tags ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_tags</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPTag<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>name</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: varchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>size</strong>: 255<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>index</strong>: unique<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br/><br />
<em>## Categories ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_categories</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPCategory<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>parent_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_posts<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: set null<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>name</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: varchar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>size</strong>: 255<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>index</strong>: unique<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br/><br />
<em>## The Post<=>Tag Relationship ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_post_tags</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPPostTag<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>post_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_posts<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>tag_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_tags<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_uniques</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>post_tag</strong>: [post_id, tag_id]<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br/><br />
<em>## The Post<=>Category Relationship ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_post_categories</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPPostCategory<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>post_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_posts<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>category_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_tags<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: set null<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_uniques</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>post_category</strong>: [post_id, category_id]<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br/><br />
<em>## The Post Group Controls - Who Can Comment? ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_post_groups</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPPostGroup<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>post_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_posts<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>group_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_guard_group<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br/><br />
<em>## The Category Group Controls - Who Can Create? ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_category_groups</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPCategoryGroup<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>category_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_tags<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>group_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_guard_group<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br/><br />
<em>## The User Ratings for Comments ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_comment_user_ratings</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPCommentUserRating<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>comment_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_comments<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>user_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_guard_user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>rating</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: tinyint<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>default</strong>: 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~<br/><br />
<em>## The User Ratings for Posts ##</em><br />
&nbsp;&nbsp;<strong>sf_faux_wp_post_user_ratings</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>_attributes</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>phpName</strong>: sfFauxWPPostUserRating<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>primaryKey</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>autoIncrement</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>post_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_faux_wp_posts<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>user_id</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: integer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>required</strong>: true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignTable</strong>: sf_guard_user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>foreignReference</strong>: id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>onDelete</strong>: cascade<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>rating</strong>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>type</strong>: tinyint<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>default</strong>: 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>created_at</strong>: ~<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>updated_at</strong>: ~</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2010/02/producing-a-faux-wordpress-plugin-for-symfony-part-ii/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Producing a Faux-WordPress Plugin for Symfony, Part I</title>
		<link>http://blog.doggetto.com/2010/01/producing-a-faux-wordpress-plugin-for-symfony-pat-i/</link>
		<comments>http://blog.doggetto.com/2010/01/producing-a-faux-wordpress-plugin-for-symfony-pat-i/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 01:30:01 +0000</pubDate>
		<dc:creator>NoCoolName_Tom</dc:creator>
				<category><![CDATA[symfony Framework]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.doggetto.com/?p=485</guid>
		<description><![CDATA[So, for the past year or so I have struggled in trying to figure out how best to incorporate Wordpress into a Symfony application.  The conclusion I have come to?  I'm really starting to wonder if it's worth any of the trouble.  So, I'm trying to figure out, for myself at least, what aspects of Wordpress I really appreciate; of those features, I really wonder whether or not building a new plugin (or extending sfSimpleBlogPlugin/sfBlogsPlugin) would not be a better idea.]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/printing_press.jpg" alt="Printing Press" title="Printing Press" width="250" height="150" class="content-img" />
<p class="intro">So, for the past year or so I have struggled in trying to figure out how best to incorporate WordPress into a Symfony application.  The conclusion I have come to?  I&#8217;m really starting to wonder if it&#8217;s worth any of the trouble.  So, I&#8217;m trying to figure out, for myself at least, what aspects of WordPress I really appreciate; of those features, I really wonder whether or not building a new plugin (or extending sfSimpleBlogPlugin/sfBlogsPlugin) would not be a better idea.<span id="more-485"></span></p>
<p>I have not yet started on this project, so to decide whether it&#8217;s worthwhile, what are the aspects of WordPress (or just blog administration in general) that I really enjoy and would like to see in any other solution?</p>
<ol>
<li>
<p><strong>Themes</strong><br/>The multiplicity of WordPress themes is a great example of how extendible the blogging framework is.  Just download it, select it, and you&#8217;re good to go.  I would love, with a Symfony solution, to be able to define a theme in a config file (or even in the admin backend, as is done with WordPress) and have it display.  Or choose to use the application template default instead.  Whatever solution I come up with, I would love for it to be able to accomodate existing WordPress themes <em>without</em> any extensive reworkings (plug and play would be ideal).</p>
</li>
<li>
<p><strong>Spam Collection/Akismet</strong><br/>WordPress makes good use of the Akismet spam prevention filters.  My solution would have to make use of these prevention techniques as well.  It&#8217;d be great to figure out how to make use of ReCAPTCHA, but your avergae blog nowadays usually depends upon active filtering and I want my solution to seem like any other typical blog.</p>
</li>
<li>
<p><strong>Scheduling and Drafting of Posts</strong><br/>I <em>love</em> the ability in WordPress of drafting and publishing against a future date.  The ability to view these drafts or, if logged in, to see to-be-published posts is needed.</p>
</li>
<li>
<p><strong>Pingbacks</strong><br/>It&#8217;s just good blogging ettiquete to pingback to other blogs.  My pingback solution should work correctly with existing blogging frameworks.</p>
</li>
<li>
<p><strong>RSS Feeds</strong><br/>I&#8217;d like to deliver post/comment feeds for the entire blog as well as individual posts.</p>
</li>
<li>
<p><strong>Media Library</strong><br/>Having pictures and audio (and YouTube code) available for blog posts is made much easier when you&#8217;re confident that they are on the server and available for use.  An effective Media Library would be nice.  On the frontend, it might even be cool to put together some sort of slide-show option (although that might be more work than I need right now).</p>
</li>
<li>
<p><strong>Twitter Integration</strong><br/>I haven&#8217;t yet figured out the best way to use Twitter, but it&#8217;d be nice to be able to simul-publish a post along with a custom/default Twitter announcement and link.  Perhaps it&#8217;d also be cool to pull in Twitter posts as a sort of specialized blogroll.</p>
</li>
<li>
<p><strong>Categories/Tags</strong><br/>Having a branching tree of categories is a very nice aspect of modern blog frameworks.  I would love to be able to filter the posts based on multiple categories (not that I actually plan on writing so many posts to make that particular feature needful, but it&#8217;d be nice to have).  Deleting a category should, in my mind, simply move all of the posts up to belong to the category parent (if it exists).</p>
</li>
<li>
<p><strong>Wysiwyg Editor</strong><br/>The user should be able to set whether they wish to have the Wysiwyg editor or the source editor as their default &#8211; I use source almost all of the time and to have that be default for myself would be great.  The Wysiwyg Editor should be fast and user-friendly.</p>
</li>
<li>
<p><strong>Gravatars</strong><br/>If allowed by the theme, the use of gravatars would be very nice indeed.  I always enjoy having my avatar at a blog be personalized without me having to do anything.</p>
</li>
<li>
<p><strong>Word Count</strong><br/>I like knowing how many words are on a post, or a post summary.</p>
</li>
<li>
<p><strong>Reddit-style Like/Dislike</strong><br/>I absolutely hate having trolls on some of the blogs I go to, but it&#8217;s too easy to feed to trolls when all you want to do is get rid of them.  Being able to both like and dislike posts and comments would be a great way to users to be involved both with the blog and with each other (obviously, this should be restricted on a post-by-post basis to view-by-all, by-specified-groups, or by-none; or you could just turn the feature off on some posts).</p>
</li>
<li>
<p><strong>Protected Posts and Access Control</strong><br/>Yeah, this starts to blur the line between forum and blog, but to be honest, there are some blog posts where I&#8217;d love to prevent the entire Internet from looking at them.  I&#8217;d love to protect posts either by a defined password or even by user levels (sfGuard would work great for this).  Perhaps even apply these permissions to the categories/tags to automatically assign protection to posts.</p>
</li>
<li>
<p><strong>Ajax</strong><br/>In another word: bling.  I want the backend and the frontend to be a little easier to use by default and look nice.  Symfony includes support for a number of good Javascript libraries.</p>
</li>
<li>
<p><strong>Configuration</strong><br/>There are two levels of configuration that would be available to this solution: there would be the administrative options like themes, spam control, and others.  However there are application options that are also important:  use ajax or not?  use feeds or not?  These are things that are likely just set once and never set again.  As such, who cares if they are removed from the user and are placed into a symfony configuration file?  Simplifying the backend by not placing EVERYTHING in it would go a long way in my opinion, so I will need to define what I feel should be configurable by the user and I will also need to define WHERE they can configure it.</p>
</li>
</ol>
<p>Things I do not need:</p>
<ol>
<li>
<p><strong>Pages</strong><br/>Since we&#8217;re NOT using WordPress to handle everything, any other pages could be handled by adding a module to the application.</p>
</li>
<li>
<p><strong>Cache</strong><br/>I know that symfony caching could be a lot better, but it&#8217;s still pretty good and it&#8217;s standard in the framework.  I don&#8217;t see a need to add it.</p>
</li>
<li>
<p><strong>Contact Forms</strong><br/>We&#8217;re working with an entire framework here, complete with the idea that we&#8217;ll be delivering other content besides a blog.  If I were going to provide a complete blogging solution simply based on symfony (instead of a plugin), then this would make sense.  But in regards to this plugin, if you want a contact page, build it yourself!</p>
</li>
</ol>
<p>Things I think would be plain awesome but have no clue how:</p>
<ol>
<li>
<p><strong>Gears or HTML5</strong><br/>Using Google Gears is an awesome way of interacting with a web application.  WordPress has the ability to interact with Gears for the backend area &#8211; this speeds things up IMMENSELY.  However, Google has publicly announced with the advent of Google Wave that they really don&#8217;t see a future for Gears when all of their needs can be handled with tools in HTML5.  It would be awesome to beat WordPress to the gate by somehow implementing HTML5 tools to help speed up the backend (or possibly even the frontend).</p>
</li>
<li>
<p><strong>Alternate Login Options for Admin and Comments</strong><br/>  This is more of an issue regarding sfGuardUser, but it would be fantastic to allow a user to log into the site using FacebookConnect or OpenId.  If anything, it would allow for specific user preferences regarding comments.  This may be a bit of overkill for my own needs, but if I ever planned on opening a multi-user (or even, perhaps, a multi-blog) plugin I think this would be a great selling point.</p>
</li>
<li>
<p><strong>Mobile Solution</strong><br/>  Again, this may not be a strictly blogging feature, but it&#8217;d be nice to figure out how to deliver the application in a mobile format for Androids and iPhones.</p>
</li>
<li>
<p><strong>PHP Code within the Post</strong><br/>  This maye be the worst idea in the history of the world &#8211; to be honest it&#8217;s a security nightmare.  However, it&#8217;d be pretty awesome sometimes to not just dynamically serve posts, but to have the post content be dynamic.  It&#8217;d be fun to look further into this.</p>
</li>
<li>
<p><strong>Detailed Stats</strong><br/>  Keeping track of detailed visitor statistics would help in building some fun features (most/least popular posts, most/least popular comments, etc).</p>
</li>
<li>
<p><strong>iTunes/Podcasting Help</strong><br/>  It&#8217;d be great to ensure that you can deliver an accurate iTunes podcasting feed from the app without devoting every post to the podcast.</p>
</li>
</ol>
<p>In looking at this closely, almost all of it could be handled VERY easily by existing symfony plugins or could be created very easily.  There are a few difficulties, however, the largest of which is obviously the theme integration.  However, if I could get it to work (and I have a few ideas) then the largest reason for me to use WordPress goes away and I can be happy in having a tightly integrated blogging solution available for my projects.</p>
<p>Over the next few weeks I will be working on trying to create this solution using the symfony framework.  I&#8217;ll try to document my progress and, hopefully, my success.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.doggetto.com/2010/01/producing-a-faux-wordpress-plugin-for-symfony-pat-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

