/**
 * The article will no longer exists, so we clan the language table
 */
function mlCleanLanguageOnArticleDelete(&$article, &$user, &$reason)
{
    $controller = new MultiLanguageManager_controller();
    $controller->executeRemoveLanguageSettingsRequest($article->getID());
    return true;
}
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 *
 */
/**
 * Try to load the curent skin for this extension
 */
wfSuppressWarnings();
include_once dirname(__FILE__) . MultiLanguageManager_controller::MultiLanguageManager_getSkinFile();
wfRestoreWarnings();
/**
 * Definition of the controller class
 */
class MultiLanguageManager_controller
{
    private $dbw;
    private $dbr;
    private $db_page_translation, $db_page, $db_page_language;
    /**
     * The rendering object (skin)
     */
    private $display = NULL;
    /**
     * Constructor
 /**
  * TARGET : createDetailLanguagePage
  * Scenario1 :
  * For this test, we know (@see setUp()) that :
  * 		-Default Language : 'en'
  * 		-Other Available language : 'fr', 'de'
  * 		-We know that User 1 has the right to change language
  * 
  * Page A is in 'en'
  * Page B is in 'en'
  * Page C is in 'fr'
  * A is translated by C
  * B
  * 
  */
 public function testCreateDetailLanguagePage_scenario1_ndl()
 {
     global $wgUser;
     $controller = new MultiLanguageManager_controller();
     $display = new MultiLanguageManager_displaytest();
     $controller->setDisplay($display);
     MultiLanguageManager_controller::setUILanguage($this->notDefaultLanguage);
     //Datas initialization
     $this->dbw->safeQuery("INSERT INTO ! (page_id, lang) VALUES (?, ?)", $this->db_page_language, $this->pageswithoutlanguage[2], 'fr');
     $this->assertEquals($this->dbw->affectedRows(), 1);
     $this->dbw->safeQuery("INSERT INTO ! (source, translate) VALUES (?, ?)", $this->db_page_translation, $this->pageswithoutlanguage[0], $this->pageswithoutlanguage[2]);
     $this->assertEquals($this->dbw->affectedRows(), 1);
     $pageA = Title::newFromID($this->pageswithoutlanguage[0]);
     $pageB = Title::newFromID($this->pageswithoutlanguage[1]);
     $pageC = Title::newFromID($this->pageswithoutlanguage[2]);
     //Scenario1 ready
     $this->assertEquals($controller->createDetailLanguagePage($pageA->getText()), "displayLanguagePolicy()displayChooseLanguage(en," . $this->pageswithoutlanguage[0] . ",FALSE,TRUE)displayItIsTranslatedBy(result," . $this->pageswithoutlanguage[0] . ",FALSE)");
     $this->assertEquals($controller->createDetailLanguagePage($pageB->getText()), "displayLanguagePolicy()displayChooseLanguage(en," . $this->pageswithoutlanguage[1] . ",FALSE,FALSE)displayItIsTranslatedBy(result," . $this->pageswithoutlanguage[1] . ",FALSE)");
     $this->assertEquals($controller->createDetailLanguagePage($pageC->getText()), "displayLanguagePolicy()displayChooseLanguage(fr," . $this->pageswithoutlanguage[2] . ",FALSE,TRUE)displayItTranslates(result," . $this->pageswithoutlanguage[2] . ",FALSE)");
     $oldUser = $wgUser;
     $wgUser = User::newFromName($this->user_name);
     $this->assertEquals($controller->createDetailLanguagePage($pageA->getText()), "displayLanguagePolicy()displayChooseLanguage(en," . $this->pageswithoutlanguage[0] . ",TRUE,TRUE)displayItIsTranslatedBy(result," . $this->pageswithoutlanguage[0] . ",TRUE)");
     $this->assertEquals($controller->createDetailLanguagePage($pageB->getText()), "displayLanguagePolicy()displayChooseLanguage(en," . $this->pageswithoutlanguage[1] . ",TRUE,FALSE)displayItIsTranslatedBy(result," . $this->pageswithoutlanguage[1] . ",TRUE)");
     $this->assertEquals($controller->createDetailLanguagePage($pageC->getText()), "displayLanguagePolicy()displayChooseLanguage(fr," . $this->pageswithoutlanguage[2] . ",TRUE,TRUE)displayItTranslates(result," . $this->pageswithoutlanguage[2] . ",TRUE)");
     $wgUser = $oldUser;
 }
 /**
  * execute the special page
  */
 public function execute($par)
 {
     global $wgUser, $wgOut;
     global $wgRequest;
     global $mgLanguagePermisionsKey;
     //needed with 1.6.x version
     $wgOut->setArticleFlag(false);
     $mode = $wgRequest->getVal('mode');
     $controller = new MultiLanguageManager_controller();
     if ($wgUser->isAllowed($mgLanguagePermisionsKey)) {
         switch ($mode) {
             case "deleteTranslation":
                 $source = $wgRequest->getVal('source');
                 $translate = $wgRequest->getVal('translate');
                 $wgOut->addHTML($controller->executeDeleteTranslationRequest($source, $translate));
                 break;
             case "addTranslation":
                 $source = $wgRequest->getVal('source');
                 $translate = $wgRequest->getVal('translate');
                 $articletitle = $wgRequest->getVal('articletitle');
                 $wgOut->addHTML($controller->executeAddTranslationRequest($source, $translate, $articletitle));
                 break;
             case "setLanguage":
                 $source = $wgRequest->getVal('source');
                 $lang = $wgRequest->getVal('lang');
                 $wgOut->addHTML($controller->executeSetLanguageRequest($source, $lang));
                 break;
         }
     }
     $wgOut->addHTML($controller->createDetailLanguagePage($wgRequest->getVal('cible')));
 }