Code to upgrade database from Version 0.98 to Version 1, a=chris

Chris Pollett [2014-06-12 03:Jun:th]
Code to upgrade database from Version 0.98 to Version 1, a=chris
Filename
configs/config.php
configs/createdb.php
controllers/admin_controller.php
data/default.db
index.php
lib/upgrade_functions.php
locale/ar/configure.ini
locale/bn/configure.ini
locale/de/configure.ini
locale/en-US/configure.ini
locale/es/configure.ini
locale/fa/configure.ini
locale/fr-FR/configure.ini
locale/he/configure.ini
locale/hi/configure.ini
locale/in-ID/configure.ini
locale/it/configure.ini
locale/ja/configure.ini
locale/kn/configure.ini
locale/ko/configure.ini
locale/pl/configure.ini
locale/pt/configure.ini
locale/ru/configure.ini
locale/te/configure.ini
locale/th/configure.ini
locale/tr/configure.ini
locale/vi-VN/configure.ini
locale/zh-CN/configure.ini
models/profile_model.php
diff --git a/configs/config.php b/configs/config.php
index 086ec8492..0ca6bb292 100755
--- a/configs/config.php
+++ b/configs/config.php
@@ -34,6 +34,10 @@
  */
 if(!defined('BASE_DIR') ||
     defined('PROFILE_FILE_NAME')) {echo "BAD REQUEST"; exit();}
+/** Version number for upgrade function
+ *  @var int
+ */
+define('YIOOP_VERSION', 20);
 /*
     pcre is an external library to php which can cause Yioop
     to seg fault if given instances of reg expressions with
@@ -161,8 +165,6 @@ if(file_exists(WORK_DIRECTORY.PROFILE_FILE_NAME)) {
     /** @ignore */
     define('PROFILE', false);
     define('DBMS', 'sqlite3');
-    define('CAPTCHA_TYPE', CAPTCHA);
-    define('CAPTCHA_POSSIBILITIES', MOST);
     define('AUTHENTICATION_MODE', NORMAL_AUTHENTICATION);
     define('DEBUG_LEVEL', NO_DEBUG_INFO);
     define('USE_FILECACHE', false);
diff --git a/configs/createdb.php b/configs/createdb.php
index 247dc2b4c..39a9b1dea 100755
--- a/configs/createdb.php
+++ b/configs/createdb.php
@@ -66,7 +66,9 @@ if(!in_array(DBMS, array('sqlite', 'sqlite3'))) {
     /*  postgres doesn't let you drop a database while connected to it so drop
         tables instead first
      */
-    foreach($profile_model->database_tables as $table) {
+    $profile_model->initializeSql($db, $dbinfo);
+    $database_tables = array_keys($profile_model->create_statements);
+    foreach($database_tables as $table) {
         $db->execute("DROP TABLE ".$table);
     }
     $db->execute("DROP DATABASE IF EXISTS ".DB_NAME);
@@ -83,7 +85,7 @@ if(!$profile_model->createDatabaseTables($db, $dbinfo)) {
     echo "\n\nCouldn't create database tables!!!\n\n";
     exit();
 }
-$db->execute("INSERT INTO VERSION VALUES (19)");
+$db->execute("INSERT INTO VERSION VALUES (".YIOOP_VERSION.")");
 $creation_time = microTimestamp();
 //numerical value of the blank password
 $profile = $profile_model->getProfile(WORK_DIRECTORY);
diff --git a/controllers/admin_controller.php b/controllers/admin_controller.php
index 0c372c4ee..df28a740f 100755
--- a/controllers/admin_controller.php
+++ b/controllers/admin_controller.php
@@ -143,13 +143,14 @@ class AdminController extends Controller implements CrawlConstants
                     $data['SCRIPT'] = "doMessage('<h1 class=\"red\" >".
                         tl('admin_controller_login_successful')."</h1>')";
                     $data = array_merge($data, $this->processSession());
+                    $view = "admin";
                     if(isset($data['INACTIVE'])) {
-                        $data['SCRIPT'] .= "doMessage('<h1 class=\"red\" >".
+                        $data['CURRENT_ACTIVITY'] = "signin";
+                        $data['SCRIPT'] = "doMessage('<h1 class=\"red\" >".
                             tl('admin_controller_account_not_active')."</h1>');";
                         $view = "signin";
                         unset($_SESSION['USER_ID']);
                     }
-                    $view = "admin";
                 }
             } else {
                 $alt_message = false;
diff --git a/data/default.db b/data/default.db
index af59d8856..cd0da75e8 100644
Binary files a/data/default.db and b/data/default.db differ
diff --git a/index.php b/index.php
index 33c127535..7577891ba 100755
--- a/index.php
+++ b/index.php
@@ -34,10 +34,6 @@
  * @copyright 2009 - 2014
  * @filesource
  */
-/** Version number for upgrade function
- *  @var int
- */
-define('YIOOP_VERSION', 19);
 /** Calculate base directory of script
  *  @ignore
  */
diff --git a/lib/upgrade_functions.php b/lib/upgrade_functions.php
index f5786c4f2..1a2b0eedb 100644
--- a/lib/upgrade_functions.php
+++ b/lib/upgrade_functions.php
@@ -113,6 +113,7 @@ function upgradeDatabaseWorkDirectory()
     } else {
         exit(); // maybe someone else has locked DB, so bail
     }
+    $result = NULL; //don't lock db if sqlite
     $key = array_search($current_version, $versions);
     $versions = array_slice($versions, $current_version);
     foreach($versions as $version) {
@@ -489,9 +490,9 @@ function upgradeDatabaseVersion16(&$db)

     $old_archives_path = WORK_DIRECTORY."/cache/archives";
     $new_archives_path = WORK_DIRECTORY."/archives";
-    if (file_exists($old_archives_path)) {
+    if(file_exists($old_archives_path)) {
         rename($old_archives_path, $new_archives_path);
-    } else {
+    } else if(!file_exists($new_archives_path)) {
         mkdir($new_archives_path);
     }
     $db->setWorldPermissionsRecursive($new_archives_path);
@@ -526,7 +527,6 @@ function upgradeDatabaseVersion17(&$db)
         'Manage Groups');
     updateTranslationForStringId($db, 'db_activity_manage_groups', 'fr-FR',
         'Modifier les groupes');
-
     upgradeLocales();
 }
 /**
@@ -545,60 +545,232 @@ function upgradeDatabaseVersion18(&$db)
                 TYPE VARCHAR(16))");
     $db->execute("CREATE TABLE BLOG_DESCRIPTION (TIMESTAMP INT(11) UNIQUE,
                 DESCRIPTION VARCHAR(4096))");
-
     addActivityAtId($db, 'db_activity_blogs_pages', "blogPages", 6);
     updateTranslationForStringId($db, 'db_activity_blogs_pages', 'en-US',
         'Blogs and Pages');
     updateTranslationForStringId($db, 'db_activity_blogs_pages', 'fr-FR',
         'les blogs et les pages');
-
     upgradeLocales();
 }
 /**
  * Upgrades a Version 18 version of the Yioop! database to a Version 19 version
- * This is a major upgrade in that crawlCrypt was changed, so old passwords
- * won't work. All accounts are copied over to the new system but are defaulted
- * to inactive. The root account is copied over but its password is reset to
- * blank
+ * This update has been superseded by the Version20 update and so its contents
+ * have been eliminated except for the change to the version table.
  * @param object $db datasource to use to upgrade
  */
 function upgradeDatabaseVersion19(&$db)
 {
     $db->execute("DELETE FROM VERSION WHERE ID < 18");
     $db->execute("UPDATE VERSION SET ID=19 WHERE ID=18");
-    $db->execute("CREATE TABLE VISITOR(ADDRESS VARCHAR(39),
-        PAGE_NAME VARCHAR(16), END_TIME INTEGER, DELAY INTEGER,
-        FORGET_AGE INTEGER)");
-    $dbinfo = array("DBMS" => DBMS, "DB_HOST" => DB_HOST, "DB_NAME" => DB_NAME,
-        "DB_PASSWORD" => DB_PASSWORD);
-    $sql = "ALTER TABLE USERS RENAME TO USER_OLD";
-    $db->execute($sql);
-    $auto_increment = $db->autoIncrement($dbinfo);
-    $db->execute("CREATE TABLE USERS(USER_ID INTEGER PRIMARY KEY $auto_increment,
-        FIRST_NAME VARCHAR(16), LAST_NAME VARCHAR(16),
-        USER_NAME VARCHAR(16) UNIQUE, EMAIL VARCHAR(60),
-        PASSWORD CHAR(60), STATUS INTEGER, HASH CHAR(60))");
-    $sql = "SELECT USER_ID, USER_NAME FROM USER_OLD";
-    $result = $db->execute($sql);
-    while($row = $db->fetchArray($result)) {
-        $status = ($row['USER_NAME'] == 'root') ? ACTIVE_STATUS :
-            INACTIVE_STATUS;
-        $creation_time = microTimestamp();
-        $sql = "INSERT INTO USER (USER_ID, USER_NAME, FIRST_NAME, LAST_NAME,
-            EMAIL, PASSWORD, STATUS, HASH)
-            VALUES ('{$row['USER_ID']}', '{$row['USER_NAME']}',
-            '{$row['FIRST_NAME']}', '{$row['LAST_NAME']}', '{$row['EMAIL']}',
-            '".crawlCrypt('')."', '".$status."', '".
-            crawlCrypt($row['USER_NAME'].AUTH_KEY.$creation_time)."', '".
-            $creation_time."')";
-        $db->execute($sql);
+}
+/**
+ * Upgrades a Version 19 version of the Yioop! database to a Version 20 version
+ * This is a major upgrade as the user table have changed. This also acts
+ * as a cumulative since version 0.98. It involves a web form that has only
+ * been localized to English
+ * @param object $db datasource to use to upgrade
+ */
+function upgradeDatabaseVersion20(&$db)
+{
+    if(!isset($_REQUEST['v20step'])) {
+        $_REQUEST['v20step'] = 1;
+    }
+    $upgrade_check_file = WORK_DIRECTORY."/v20check.txt";
+    if(!file_exists($upgrade_check_file)) {
+        $upgrade_password = substr(sha1(microtime().AUTH_KEY), 0, 8);
+        file_put_contents($upgrade_check_file, $upgrade_password);
+    } else {
+        $v20check = trim(file_get_contents($upgrade_check_file));
+        if(isset($_REQUEST['v20step']) && $_REQUEST['v20step'] == 2 &&
+            (!isset($_REQUEST['upgrade_code'])||
+            $v20check != trim($_REQUEST['upgrade_code']))) {
+            $_REQUEST['v20step'] = 1;
+            $data['SCRIPT'] = "doMessage('<h1 class=\"red\" >".
+                "v20check.txt not typed in correctly!</h1>')";
+        }
+    }
+    switch($_REQUEST['v20step'])
+    {
+        case "2":
+            /** Get base class for profile_model.php*/
+            require_once BASE_DIR."/models/model.php";
+            /** For ProfileModel::createDatabaseTables method */
+            require_once BASE_DIR."/models/profile_model.php";
+            /** For UserModel::addUser method */
+            require_once BASE_DIR."/models/user_model.php";
+            $profile_model = new ProfileModel(DB_NAME, false);
+            $profile_model->db = $db;
+            $save_tables = array("ACTIVE_FETCHER", "CURRENT_WEB_INDEX",
+                "FEED_ITEM", "MACHINE", "MEDIA_SOURCE", "SUBSEARCH");
+            $dbinfo = array("DBMS" => DBMS, "DB_HOST" => DB_HOST,
+                "DB_USER" => DB_USER, "DB_PASSWORD" => DB_PASSWORD,
+                "DB_NAME" => DB_NAME);
+            $creation_time = microTimestamp();
+            $profile = $profile_model->getProfile(WORK_DIRECTORY);
+            $new_profile = $profile;
+            $new_profile['AUTHENTICATION_MODE'] = NORMAL_AUTHENTICATION;
+            $new_profile['FIAT_SHAMIR_MODULUS'] = generateFiatShamirModulus();
+            $new_profile['MAIL_SERVER']= "";
+            $new_profile['MAIL_PORT']= "";
+            $new_profile['MAIL_USERNAME']= "";
+            $new_profile['MAIL_PASSWORD']= "";
+            $new_profile['MAIL_SECURITY']= "";
+            $new_profile['REGISTRATION_TYPE'] = 'disable_registration';
+            $new_profile['USE_MAIL_PHP'] = true;
+            $new_profile['WORD_SUGGEST'] = true;
+            $profile_model->updateProfile(WORK_DIRECTORY, $new_profile,
+                $profile);
+            //get current users (assume can fit in memory and doesn't take long)
+            $users = array();
+            $sha1_of_upgrade_code = bchexdec(sha1($v20check));
+            $temp = bcpow($sha1_of_upgrade_code . '', '2');
+            $zkp_password = bcmod($temp, $new_profile['FIAT_SHAMIR_MODULUS']);
+            $user_tables_sql = array("SELECT USER_NAME FROM USER",
+                "SELECT USER_NAME, FIRST_NAME, LAST_NAME, EMAIL FROM USERS");
+            $i = 0;
+            foreach($user_tables_sql as $sql) {
+                $result = $db->execute($sql);
+                if($result) {
+                    while($users[$i] = $db->fetchArray($result)) {
+                        $setup_user_fields = array();
+                        if($users[$i]["USER_NAME"] == "root" ||
+                            $users[$i]["USER_NAME"] == "public") { continue; }
+                        $users[$i]["FIRST_NAME"] =
+                            (isset($users[$i]["FIRST_NAME"])) ?
+                            $users[$i]["FIRST_NAME"] : "FIRST_$i";
+                        $users[$i]["LAST_NAME"] =
+                            (isset($users[$i]["LAST_NAME"])) ?
+                            $users[$i]["LAST_NAME"] : "LAST_$i";
+                        $users[$i]["EMAIL"] =
+                            (isset($users[$i]["EMAIL"])) ?
+                            $users[$i]["EMAIL"] : "user$i@dev.null";
+                        /* although not by default using zkp set up so
+                           accounts would work on switch
+                        */
+                        $users[$i]["PASSWORD"] = $v20check;
+                        $users[$i]["STATUS"] = INACTIVE_STATUS;
+                        $users[$i]["CREATION_TIME"] = $creation_time;
+                        $users[$i]["UPS"] = 0;
+                        $users[$i]["DOWNS"] = 0;
+                        $users[$i]["ZKP_PASSWORD"] = $zkp_password;
+                        $i++;
+                    }
+                    unset($users[$i]);
+                    $result = NULL;
+                }
+            }
+            $dbinfo = array("DBMS" => DBMS, "DB_HOST" => DB_HOST,
+                "DB_USER" => DB_USER, "DB_PASSWORD" => DB_PASSWORD,
+                "DB_NAME" => DB_NAME);
+            $profile_model->initializeSql($db, $dbinfo);
+            $database_tables = array_diff(
+                array_keys($profile_model->create_statements),
+                $save_tables);
+            $database_tables = array_merge($database_tables,
+                array("BLOG_DESCRIPTION", "USER_OLD", "ACCESS"));
+            foreach($database_tables as $table) {
+                if(!in_array($table, $save_tables)){
+                    $db->execute("DROP TABLE ".$table);
+                }
+            }
+            if($profile_model->migrateDatabaseIfNecessary(
+                $dbinfo, $save_tables)) {
+                $user_model = new UserModel(DB_NAME, false);
+                $user_model->db = $db;
+                foreach($users as $user) {
+                    $user_model->addUser($user["USER_NAME"], $user["PASSWORD"],
+                        $user["FIRST_NAME"], $user["LAST_NAME"],
+                        $user["EMAIL"], $user["STATUS"], $user["ZKP_PASSWORD"]);
+                }
+                $user = array();
+                $user['USER_ID'] = ROOT_ID;
+                $user['PASSWORD'] = $v20check;
+                $user["ZKP_PASSWORD"] = $zkp_password;
+                $user_model->updateUser($user);
+                return;
+            }
+            $data['SCRIPT'] = "doMessage('<h1 class=\"red\" >".
+                "Couldn't migrate database tables from defaults!</h1>')";
+        case "1":
+        default:
+            ?>
+            <!DOCTYPE html>
+            <html lang='en-US'>
+            <head>
+            <title>Yioop Upgrade Detected</title>
+            <meta name="ROBOTS" content="NOINDEX,NOFOLLOW" />
+            <meta name="Author" content="Christopher Pollett" />
+            <meta charset="utf-8" />
+            <?php if(MOBILE) {?>
+            <meta name="viewport" content="width=device-width, initial-scale=1">
+            <?php } ?>
+            <link rel="stylesheet" type="text/css"
+                 href="<?php e(BASE_URL); ?>/css/search.css" />
+            </head>
+            <body class="html-ltr <?php if(MOBILE) {e('mobile'); } ?>" >
+            <div id="message" ></div>
+            <div class='small-margin-current-activity'>
+            <h1 class='center green'>Yioop Upgrade Detected!</h1>
+            <p>Upgrading to Version 1 of Yioop from an earlier version
+            is a major upgrade. The way passwords are stored and the
+            organization of the Yioop database has changed. Here is
+            what is preserved by this upgrade:</p>
+            <ol>
+            <li>Existing crawls and archive data.</li>
+            <li>Machines known if this instance is a name server.</li>
+            <li>Media sources and subsearches.</li>
+            <li>Feed items.</li>
+            </ol>
+            <p>Here is what happens during the upgrade which might
+            result in data loss:</p>
+            <ol>
+            <li>Root and user account passwords are changed to the contents of
+            v20check.txt.</li>
+            <li>User accounts other than root are marked as inactived,
+            so will have tobe activated under Manage Users before that person
+            can sign in.</li>
+            <li>All roles except Admin and User are deleted. Root
+            will be given Admin role, all other users will receive
+            User role.</li>
+            <li>All existing groups are deleted.</li>
+            <li>Existing crawl mixes will be deleted.</li>
+            <li>Any customized translations that begin with the prefix db_.
+            Other still in use translations will be preserved.</li>
+            </ol>
+            <p>If given the above you don't want to upgrade, merely replace
+            this folder with the contents of your old Yioop instance and
+            you should be able to continue to use Yioop as before.</p>
+            <p>If you decide to proceed with the upgrade, please back up
+            both your existing database and work directory.</p>
+            <form method="post" action="?">
+            <p><label for="upgrade-code">
+            <b>In the field below enter the string found in the file:<br />
+            <span class="green"><?php e(WORK_DIRECTORY."/v20check.txt")?></span>
+            </b></label></p>
+            <input id='upgrade-code' class="extra-wide-field"
+                name="upgrade_code" type="text" />
+            <input type="hidden" name="v20step" value="2" />
+            <button class="button-box" type="submit">Upgrade</button>
+            </form>
+            <?php
+        break;
     }
-    $db->disconnect();
-    $db->connect();
-    $db->dbname = NULL;
-    $sql = "DROP TABLE USER_OLD";
-    $db->execute($sql);
+    ?>
+    </div>
+    <script type="text/javascript" src="<?php e(BASE_URL);
+        ?>/scripts/basic.js" ></script>
+    <script type="text/javascript" >
+    <?php
+    if(isset($data['SCRIPT'])) {
+        e($data['SCRIPT']);
+    }
+    ?></script>
+    </body>
+    </html>
+   <?php
+   exit();
 }
+
 /**
  * Used to insert a new activity into the database at a given acitivity_id
  *
diff --git a/locale/ar/configure.ini b/locale/ar/configure.ini
index 7fc8ac9a6..4d573f5a3 100755
--- a/locale/ar/configure.ini
+++ b/locale/ar/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "استخدام الخيارات الموجودة بالأسفل"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "استخدام يوب! افتراضيات "
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "استخدام الخيارات الموجودة بالأسفل"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = "ابدأ"
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = "أيام 1"
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = "يومين"
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = "3 أيام"
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = "7 أيام"
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = "14 يوما"
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = "خيارات الصفحة تحديث!"
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = "تصفية تحديث الصفحات!"
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = "حدد عنوان URL تم تحريرها مسبقاً"
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = "نتيجة تحديث الصفحة يحتاج إلى تحديد عنوان URL!"
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = "تحديث الصفحة النتيجة!"
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = "تحميل الصفحة!"
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = "نوع الوسائط"
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = "فيديو"
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = "RSS"
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = "مؤشر/ميكس للاستخدام"
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = "مصدر الوسائط المضافة!"
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = "وأضاف سوبسيرتش!"
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = "مصدر الوسائط المحذوفة!"
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = "حذف سوبسيرتش!"
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "حفظ الإعدادات!"
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "Admin"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = "خروج السيارات في دقيقة واحدة!!"
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/bn/configure.ini b/locale/bn/configure.ini
index 2b4732963..151f1a62a 100755
--- a/locale/bn/configure.ini
+++ b/locale/bn/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/de/configure.ini b/locale/de/configure.ini
index 60f150014..4427f9dd3 100755
--- a/locale/de/configure.ini
+++ b/locale/de/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/en-US/configure.ini b/locale/en-US/configure.ini
index 32eeaff9d..1f7f38331 100755
--- a/locale/en-US/configure.ini
+++ b/locale/en-US/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = "Prediction: {1}"
 ; crawl_component.php line: 751
 crawl_component_scores = "{1}%% confidence, {2}%% disagreement"
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "Use options below"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "Use Yioop! defaults"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "Use options below"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = "Never"
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = "1 days"
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = "2 days"
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = "3 days"
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = "7 days"
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = "14 days"
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = "Basic"
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = "Centroid"
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = "Page Options Updated!"
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = "Running Tests!"
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = "Filter Pages Updated!"
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = "Select a Previously Edited URL"
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = "Result Page Update needs to Specify the URL!"
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = "Result Page Updated!"
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = "Page Loaded!"
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = "Media Kind"
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = "Video"
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = "RSS"
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = "Index/Mix to Use"
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = "Type of Source Not Set!"
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = "All Fields Need to be Filled!"
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = "Media Source Added!"
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = "All Fields Need to be Filled!"
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = "Subsearch Added!"
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = "Source Was Not Deleted!"
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = "Media Source Deleted!"
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = "Source Was Not Deleted!"
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = "Subsearch Deleted!"
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = "Subsearch Updated!"
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = "Media Source Updated!"
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "Settings Saved!"
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "Admin"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = "Auto-logout in One Minute!!"
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/es/configure.ini b/locale/es/configure.ini
index ca875f6b8..a85546c87 100755
--- a/locale/es/configure.ini
+++ b/locale/es/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "Utilice las opciones a continuaci&oacute;n"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "Utilizar Yioop! por defecto"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "Utilice las opciones a continuaci&oacute;n"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = "Nunca"
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = "1 d&iacute;a"
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = "2 d&iacute;as"
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = "3 d&iacute;as"
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = "7 d&iacute;as"
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = "14 d&iacute;as"
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = "Filtrar P&aacute;ginas Actualizadas!"
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = "Seleccionar una URL previamente editada"
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = "Resultados de la actualizaci&oacute;n de la p&aacute;gina debe especificar la URL!"
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = "P&aacute;gina Actualizada!"
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = "P&aacute;gina Cargada!"
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "Configuraci&oacute;n guardada!"
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "Administrador"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = "Auto-cerrar la sesi&oacute;n en un minuto!"
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/fa/configure.ini b/locale/fa/configure.ini
index 4c41cd26d..a7a5b85c5 100755
--- a/locale/fa/configure.ini
+++ b/locale/fa/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "از گزینه&zwnj;های زیر استفاده کن"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "از پیش&zwnj;فرض&zwnj;های Yioop! استفاده کن"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "از گزینه&zwnj;های زیر استفاده کن"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = "هرگز"
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = "۱ روز"
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = "۲ روز"
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = "۳ روز"
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = "۷ روز"
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = "۱۴ روز"
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = "تنظیمات صفحه به روز شد!"
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = "پالایه صفحات به روز شد!"
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = "یک URL که قبلن ویرایش شده انتخاب کنید"
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = "به روز رسانی صفحهٔ نتایج احتیاج به تعیین URL دارد! "
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = "صفحهٔ نتایج به روز آوری شد!"
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = "صفحه بارگذاری شد!"
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = "نوع رسانه"
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = "ویدیو"
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = "RSS"
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = "نمایه/ترکیب مورد استفاده"
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = "منبع رسانه&zwnj;ها اضافه شد!"
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = "زیرجستجو اضافه شد!"
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = "منبع رسانه&zwnj;ها حذف شد!"
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = "زیر جستجو حذف شد!"
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "تنظیمات ذخیره شد!"
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "مدیر"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = "خروج خودکار تا یک دقیقهٔ دیگر!!"
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/fr-FR/configure.ini b/locale/fr-FR/configure.ini
index ad3b8c135..e04efdad3 100755
--- a/locale/fr-FR/configure.ini
+++ b/locale/fr-FR/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "Configurations sauvegard&eacute;es"
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "Administration"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/he/configure.ini b/locale/he/configure.ini
index 4f6a0673b..76e7c0af3 100755
--- a/locale/he/configure.ini
+++ b/locale/he/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "השתמש באפשרויות הבאות"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = " השתמש כבררת מחדל כמנוע חיפוש"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "השתמש באפשרויות הבאות"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/hi/configure.ini b/locale/hi/configure.ini
index ac7d571d1..f63ace03c 100755
--- a/locale/hi/configure.ini
+++ b/locale/hi/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "सेटिंग्स सहेज द
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/in-ID/configure.ini b/locale/in-ID/configure.ini
index eeaf6b41a..dbba57e62 100755
--- a/locale/in-ID/configure.ini
+++ b/locale/in-ID/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "Administratif"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/it/configure.ini b/locale/it/configure.ini
index a78403e38..5065c1f83 100755
--- a/locale/it/configure.ini
+++ b/locale/it/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "Usa opzioni seguenti"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "Usa predefiniti Yioop!"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "Usa opzioni seguenti"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = "Mai"
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = "1 giorno"
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = "2 giorni"
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = "3 giorni"
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = "7 giorni"
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = "14 giorni"
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = "Opzioni Pagina aggiornate!"
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = "Filtro Pagina aggiornato!"
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = "Seleziona un URL precedentemente modificato"
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = "Aggiornamento pagina dei risultati necessita specificare URL!"
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = "Pagina dei risultatai aggiornata!"
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = "Pagina caricata!"
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "Settaggi salvati!"
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "Amministratore"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = "Fine Accesso in un minuto!!"
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/ja/configure.ini b/locale/ja/configure.ini
index 84bbb58a7..09553d95d 100755
--- a/locale/ja/configure.ini
+++ b/locale/ja/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "設定の保存しました"
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "管理"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = "自動なログアウト一分ぐらい"
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/kn/configure.ini b/locale/kn/configure.ini
index 735ef1246..0f85248fb 100755
--- a/locale/kn/configure.ini
+++ b/locale/kn/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "ಐಚ್ಛಿಕ ಆಯ್ಕೆ ಉಪಯೋಗಿಸಿ"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "ಯೂಪ್ ನ ಪೂರ್ವನಿಯೋಜಿತ ನಿಗದಿಗಳನ್ನು ಉಪಯೋಗಿಸಿ"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "ಐಚ್ಛಿಕ ಆಯ್ಕೆ ಉಪಯೋಗಿಸಿ"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/ko/configure.ini b/locale/ko/configure.ini
index d8448d71b..df4c9a755 100755
--- a/locale/ko/configure.ini
+++ b/locale/ko/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "현재 세팅이 저장됐습니다."
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "관리자"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = "1 분내에 자동 로그 아웃 됍니다."
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/pl/configure.ini b/locale/pl/configure.ini
index eec2998e6..2d856984d 100755
--- a/locale/pl/configure.ini
+++ b/locale/pl/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/pt/configure.ini b/locale/pt/configure.ini
index 796d76474..312e04e63 100755
--- a/locale/pt/configure.ini
+++ b/locale/pt/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/ru/configure.ini b/locale/ru/configure.ini
index 8faba5479..3a0f344ff 100755
--- a/locale/ru/configure.ini
+++ b/locale/ru/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/te/configure.ini b/locale/te/configure.ini
index ca4b8b52a..f9d485473 100755
--- a/locale/te/configure.ini
+++ b/locale/te/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "కింది ఆప్సం ఉపయొగిచండి"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "యూప్ డిఫాల్టస ఉపయొగిచండి"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "కింది ఆప్సం ఉపయొగిచండి"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/th/configure.ini b/locale/th/configure.ini
index 811127623..efea456f6 100755
--- a/locale/th/configure.ini
+++ b/locale/th/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/tr/configure.ini b/locale/tr/configure.ini
index f7cfd4ca1..cf88f2e01 100755
--- a/locale/tr/configure.ini
+++ b/locale/tr/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = ""
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = ""
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = ""
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = ""
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/vi-VN/configure.ini b/locale/vi-VN/configure.ini
index 7c8649215..43f5d343e 100755
--- a/locale/vi-VN/configure.ini
+++ b/locale/vi-VN/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "Sử dụng dưới đ&acirc;y"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "Sử dụng mặc định"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "Sử dụng dưới đ&acirc;y"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = ""
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = ""
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = ""
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = ""
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = ""
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = ""
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = ""
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = ""
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = ""
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = ""
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = ""
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = ""
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = ""
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = ""
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = ""
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = ""
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = ""
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "Những c&agrave;i đặt đ&atilde; đư
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "Quản trị"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = "Tự động tho&aacute;t trong một ph&uacute;t"
 ;
 ; crawlstatus_view.php line: 55
diff --git a/locale/zh-CN/configure.ini b/locale/zh-CN/configure.ini
index ad46c396b..0ed3d4a55 100755
--- a/locale/zh-CN/configure.ini
+++ b/locale/zh-CN/configure.ini
@@ -354,103 +354,103 @@ crawl_component_prediction = ""
 ; crawl_component.php line: 751
 crawl_component_scores = ""
 ;
-; crawl_component.php line: 789
+; crawl_component.php line: 793
 crawl_component_use_below = "以下使用者"
 ;
-; crawl_component.php line: 790
+; crawl_component.php line: 794
 crawl_component_use_defaults = "使用者預設"
 ;
-; crawl_component.php line: 792
+; crawl_component.php line: 796
 crawl_component_use_below = "以下使用者"
 ;
-; crawl_component.php line: 800
+; crawl_component.php line: 804
 crawl_component_recrawl_never = "取消重新搜尋"
 ;
-; crawl_component.php line: 801
+; crawl_component.php line: 805
 crawl_component_recrawl_1day = "每日重新搜尋"
 ;
-; crawl_component.php line: 802
+; crawl_component.php line: 806
 crawl_component_recrawl_2day = "兩日重新搜尋"
 ;
-; crawl_component.php line: 803
+; crawl_component.php line: 807
 crawl_component_recrawl_3day = "三日重新搜尋"
 ;
-; crawl_component.php line: 804
+; crawl_component.php line: 808
 crawl_component_recrawl_7day = "一週重新搜尋"
 ;
-; crawl_component.php line: 805
+; crawl_component.php line: 809
 crawl_component_recrawl_14day = "兩週重新搜尋"
 ;
-; crawl_component.php line: 813
+; crawl_component.php line: 817
 crawl_component_basic = ""
 ;
-; crawl_component.php line: 814
+; crawl_component.php line: 818
 crawl_component_centroid = ""
 ;
-; crawl_component.php line: 1085
+; crawl_component.php line: 1089
 crawl_component_page_options_updated = "更新頁面選項"
 ;
-; crawl_component.php line: 1111
+; crawl_component.php line: 1115
 crawl_component_page_options_running_tests = ""
 ;
-; crawl_component.php line: 1275
+; crawl_component.php line: 1277
 crawl_component_results_editor_update = "編輯者更新結果"
 ;
-; crawl_component.php line: 1289
+; crawl_component.php line: 1291
 crawl_component_edited_pages = "編輯頁面"
 ;
-; crawl_component.php line: 1302
+; crawl_component.php line: 1304
 crawl_component_results_editor_need_url = "需要網址"
 ;
-; crawl_component.php line: 1308
+; crawl_component.php line: 1310
 crawl_component_results_editor_page_updated = "更新頁面"
 ;
-; crawl_component.php line: 1321
+; crawl_component.php line: 1323
 crawl_component_results_editor_page_loaded = "載入頁面"
 ;
-; crawl_component.php line: 1350
+; crawl_component.php line: 1352
 crawl_component_media_kind = "多媒體類別"
 ;
-; crawl_component.php line: 1351
+; crawl_component.php line: 1353
 crawl_component_video = "影片"
 ;
-; crawl_component.php line: 1352
+; crawl_component.php line: 1354
 crawl_component_rss_feed = "RSS"
 ;
-; crawl_component.php line: 1366
+; crawl_component.php line: 1368
 crawl_component_sources_indexes = ""
 ;
-; crawl_component.php line: 1419
+; crawl_component.php line: 1421
 crawl_component_no_source_type = ""
 ;
-; crawl_component.php line: 1433
+; crawl_component.php line: 1435
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1442
+; crawl_component.php line: 1444
 crawl_component_media_source_added = "增加多媒體"
 ;
-; crawl_component.php line: 1454
+; crawl_component.php line: 1456
 crawl_component_missing_fields = ""
 ;
-; crawl_component.php line: 1463
+; crawl_component.php line: 1465
 crawl_component_subsearch_added = ""
 ;
-; crawl_component.php line: 1469
+; crawl_component.php line: 1471
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1476
+; crawl_component.php line: 1478
 crawl_component_media_source_deleted = "刪除多媒體"
 ;
-; crawl_component.php line: 1483
+; crawl_component.php line: 1485
 crawl_component_no_delete_source = ""
 ;
-; crawl_component.php line: 1490
+; crawl_component.php line: 1492
 crawl_component_subsearch_deleted = ""
 ;
-; crawl_component.php line: 1523
+; crawl_component.php line: 1525
 crawl_component_subsearch_updated = ""
 ;
-; crawl_component.php line: 1557
+; crawl_component.php line: 1559
 crawl_component_media_source_updated = ""
 ;
 ; social_component.php line: 69
@@ -1226,10 +1226,10 @@ settings_controller_settings_saved = "設定已儲存"
 ;
 ; /Applications/MAMP/htdocs/git/yioop//views
 ;
-; admin_view.php line: 71
+; admin_view.php line: 72
 admin_view_admin = "管理者"
 ;
-; admin_view.php line: 89
+; admin_view.php line: 90
 adminview_auto_logout_one_minute = ""
 ;
 ; crawlstatus_view.php line: 55
diff --git a/models/profile_model.php b/models/profile_model.php
index 583aab3a3..67e973058 100755
--- a/models/profile_model.php
+++ b/models/profile_model.php
@@ -65,22 +65,156 @@ class ProfileModel extends Model
         'USER_AGENT_SHORT', 'WEB_URI', 'WEB_ACCESS', 'WORD_SUGGEST'
         );
     /**
-     * These are the database tables used by Yioop
-     * @var array
+     *  Associative array (table_name => SQL statement to create that table)
+     *  List is alphabetical and contains all Yioop tables. List is only
+     *  initialized after an @see initializeSql call.
+     *  @var array
      */
-    var $database_tables = array( 'ACTIVE_FETCHER', 'ACTIVITY', 'CRAWL_MIXES',
-        'CURRENT_WEB_INDEX', 'FEED_ITEM', 'GROUP_ITEM', 'GROUP_ITEM_VOTE',
-        'GROUP_PAGE', 'GROUP_PAGE_HISTORY', 'GROUPS', 'LOCALE', 'MACHINE',
-        'MEDIA_SOURCE', 'MIX_COMPONENTS', 'ROLE', 'ROLE_ACTIVITY', 'SUBSEARCH',
-        'TRANSLATION', 'TRANSLATION_LOCALE', 'USERS', 'USER_GROUP', 'USER_ROLE',
-        'USER_SESSION', 'VISITOR', 'VERSION'
-        );
+    var $create_statements;
     /**
      *  {@inheritDoc}
      */
     function __construct($db_name = DB_NAME, $connect = true)
     {
         parent::__construct($db_name, $connect);
+        $this->create_statements = array();
+    }
+    /**
+     *  Used to construct $this->create_statements, the list of all SQL
+     *  CREATE statements needed to build a Yioop database
+     *
+     *  @param object $dbm a datasource_manager object used to get strings
+     *      for autoincrement and serial types for a given db
+     *  @param array $dbinfo connect info for the database, also used in
+     *      getting autoincrement and serial types
+     */
+    function initializeSql($dbm, $dbinfo)
+    {
+        $auto_increment = $dbm->autoIncrement($dbinfo);
+        $serial = $dbm->serialType($dbinfo);
+        $this->create_statements = array("ACTIVE_FETCHER" =>
+            "CREATE TABLE ACTIVE_FETCHER (NAME VARCHAR(16),FETCHER_ID INTEGER)",
+            "AF_FETCHER_ID_INDEX" => "CREATE INDEX AF_FETCHER_ID_INDEX ON
+                 ACTIVE_FETCHER (FETCHER_ID)",
+            "ACTIVITY" => "CREATE TABLE ACTIVITY (ACTIVITY_ID $serial
+                PRIMARY KEY $auto_increment, TRANSLATION_ID INTEGER,
+                METHOD_NAME VARCHAR(256))",
+            "ACTIVITY_TRANSLATION_ID_INDEX" => "CREATE INDEX
+                ACTIVITY_TRANSLATION_ID_INDEX ON ACTIVITY (TRANSLATION_ID)",
+            "CRAWL_MIXES" => "CREATE TABLE CRAWL_MIXES (TIMESTAMP NUMERIC(11)
+                PRIMARY KEY, NAME VARCHAR(16), OWNER_ID INTEGER,
+                PARENT NUMERIC(11))",
+            "CM_OWNER_ID_INDEX" => "CREATE INDEX CM_OWNER_ID_INDEX ON
+                CRAWL_MIXES (OWNER_ID)",
+            "CM_PARENT_INDEX" => "CREATE INDEX CM_PARENT_INDEX ON
+                CRAWL_MIXES (PARENT)",
+            "CURRENT_WEB_INDEX" => "CREATE TABLE CURRENT_WEB_INDEX
+                (CRAWL_TIME NUMERIC(11) PRIMARY KEY)",
+            "FEED_ITEM" => "CREATE TABLE FEED_ITEM (GUID CHAR(11) PRIMARY KEY,
+                TITLE VARCHAR(512), LINK VARCHAR(256),
+                DESCRIPTION VARCHAR(4096),
+                PUBDATE INT, SOURCE_NAME VARCHAR(16))",
+            "GROUP_ITEM" => "CREATE TABLE GROUP_ITEM (ID $serial PRIMARY KEY
+                $auto_increment, PARENT_ID INTEGER, GROUP_ID INTEGER,
+                USER_ID INTEGER, TITLE VARCHAR(512), DESCRIPTION VARCHAR(".
+                MAX_GROUP_POST_LEN."), PUBDATE NUMERIC(11),
+                UPS INTEGER DEFAULT 0, DOWNS INTEGER DEFAULT 0,
+                TYPE INTEGER DEFAULT ". STANDARD_GROUP_ITEM.")",
+            "GI_GROUP_ID_INDEX" => "CREATE INDEX GI_GROUP_ID_INDEX ON
+                GROUP_ITEM (GROUP_ID)",
+            "GI_USER_ID_INDEX" => "CREATE INDEX GI_USER_ID_INDEX ON
+                GROUP_ITEM (USER_ID)",
+            "GI_PARENT_ID_INDEX" => "CREATE INDEX GI_PARENT_ID_INDEX ON
+                GROUP_ITEM (PARENT_ID)",
+            "GROUP_ITEM_VOTE" => "CREATE TABLE GROUP_ITEM_VOTE(
+                USER_ID INTEGER, ITEM_ID INTEGER)",
+            "GROUP_PAGE" => "CREATE TABLE GROUP_PAGE (
+                ID $serial PRIMARY KEY $auto_increment, GROUP_ID INTEGER,
+                DISCUSS_THREAD INTEGER, TITLE VARCHAR(512),
+                PAGE VARCHAR(".MAX_GROUP_PAGE_LEN."), LOCALE_TAG VARCHAR(16),
+                CONSTRAINT GID_TITLE_LOC UNIQUE(GROUP_ID, TITLE, LOCALE_TAG))",
+            "GP_ID_INDEX" => "CREATE INDEX GP_ID_INDEX ON GROUP_PAGE
+                 (GROUP_ID, TITLE, LOCALE_TAG)",
+            "GROUP_PAGE_HISTORY" => "CREATE TABLE GROUP_PAGE_HISTORY(
+                PAGE_ID INTEGER, GROUP_ID INTEGER, EDITOR_ID INTEGER,
+                TITLE VARCHAR(512), PAGE VARCHAR(".MAX_GROUP_PAGE_LEN."),
+                EDIT_COMMENT VARCHAR(80), LOCALE_TAG VARCHAR(16),
+                PUBDATE NUMERIC(11), PRIMARY KEY(PAGE_ID, PUBDATE))",
+            "GROUPS" => "CREATE TABLE GROUPS (
+                GROUP_ID $serial PRIMARY KEY $auto_increment,
+                GROUP_NAME VARCHAR(128), CREATED_TIME VARCHAR(20),
+                OWNER_ID INTEGER, REGISTER_TYPE INTEGER,
+                MEMBER_ACCESS INTEGER, VOTE_ACCESS INTEGER DEFAULT ".
+                NON_VOTING_GROUP.")",
+            /* NOTE: We are not using singular name GROUP for GROUPS as
+               GROUP is a reserved SQL keyword
+             */
+            "GRP_OWNER_ID_INDEX" => "CREATE INDEX GRP_OWNER_ID_INDEX ON
+                GROUPS (OWNER_ID)",
+            "GRP_MEMBER_ACCESS_INDEX" => "CREATE INDEX GRP_MEMBER_ACCESS_INDEX
+                ON GROUPS(MEMBER_ACCESS)",
+            "LOCALE" => "CREATE TABLE LOCALE(LOCALE_ID $serial PRIMARY KEY
+                $auto_increment, LOCALE_TAG VARCHAR(16),
+                LOCALE_NAME VARCHAR(256), WRITING_MODE CHAR(5))",
+            "LCL_LOCALE_TAG_INDEX" => "CREATE INDEX LCL_LOCALE_TAG_INDEX ON
+                LOCALE(LOCALE_TAG)",
+            "MACHINE" => "CREATE TABLE MACHINE (NAME VARCHAR(16) PRIMARY KEY,
+                URL VARCHAR(256) UNIQUE, HAS_QUEUE_SERVER INT,
+                NUM_FETCHERS INTEGER, PARENT VARCHAR(16) )",
+            "MEDIA_SOURCE" => "CREATE TABLE MEDIA_SOURCE (
+                TIMESTAMP NUMERIC(11) PRIMARY KEY,
+                NAME VARCHAR(64) UNIQUE, TYPE VARCHAR(16),
+                SOURCE_URL VARCHAR(256), THUMB_URL VARCHAR(256),
+                LANGUAGE VARCHAR(7))",
+            "MS_TYPE_INDEX" => "CREATE INDEX MS_TYPE_INDEX ON
+                MEDIA_SOURCE(TYPE)",
+            "MIX_COMPONENTS" => "CREATE TABLE MIX_COMPONENTS (
+                TIMESTAMP NUMERIC(11), FRAGMENT_ID INTEGER,
+                CRAWL_TIMESTAMP NUMERIC(11), WEIGHT REAL, KEYWORDS VARCHAR(256),
+                PRIMARY KEY(TIMESTAMP, FRAGMENT_ID, CRAWL_TIMESTAMP) )",
+            "MIX_FRAGMENTS" => "CREATE TABLE MIX_FRAGMENTS (
+                TIMESTAMP NUMERIC(11),FRAGMENT_ID INTEGER, RESULT_BOUND INTEGER,
+                PRIMARY KEY(TIMESTAMP, FRAGMENT_ID))",
+            "ROLE" => "CREATE TABLE ROLE (
+                ROLE_ID $serial PRIMARY KEY $auto_increment,NAME VARCHAR(512))",
+            "ROLE_ACTIVITY" => "CREATE TABLE ROLE_ACTIVITY (ROLE_ID INTEGER,
+                ACTIVITY_ID INTEGER, PRIMARY KEY(ROLE_ID, ACTIVITY_ID))",
+            "SUBSEARCH" => "CREATE TABLE SUBSEARCH (
+                LOCALE_STRING VARCHAR(32) PRIMARY KEY,
+                FOLDER_NAME VARCHAR(16), INDEX_IDENTIFIER CHAR(13),
+                PER_PAGE INT)",
+            "TRANSLATION" => "CREATE TABLE TRANSLATION (
+                TRANSLATION_ID $serial PRIMARY KEY
+                $auto_increment, IDENTIFIER_STRING VARCHAR(512) UNIQUE)",
+            "TRANS_IDENTIFIER_STRING_INDEX" => "CREATE INDEX
+                TRANS_IDENTIFIER_STRING_INDEX ON
+                TRANSLATION(IDENTIFIER_STRING)",
+            "TRANSLATION_LOCALE" => "CREATE TABLE TRANSLATION_LOCALE
+                (TRANSLATION_ID INTEGER, LOCALE_ID INTEGER,
+                TRANSLATION VARCHAR(4096),
+                PRIMARY KEY(TRANSLATION_ID, LOCALE_ID))",
+            "USERS" => "CREATE TABLE USERS(USER_ID $serial PRIMARY KEY
+                $auto_increment, FIRST_NAME VARCHAR(16), LAST_NAME VARCHAR(16),
+                USER_NAME VARCHAR(16) UNIQUE, EMAIL VARCHAR(60),
+                PASSWORD CHAR(60), STATUS INTEGER, HASH CHAR(60),
+                CREATION_TIME VARCHAR(20), UPS INTEGER DEFAULT 0,
+                DOWNS INTEGER DEFAULT 0, ZKP_PASSWORD CHAR(200))",
+            "USRS_USER_NAME_INDEX" => "CREATE INDEX USRS_USER_NAME_INDEX ON
+                USERS(USER_NAME)",
+            "USER_GROUP" => "CREATE TABLE USER_GROUP (USER_ID INTEGER,
+                GROUP_ID INTEGER, STATUS INTEGER, JOIN_DATE NUMERIC(11),
+                PRIMARY KEY (GROUP_ID, USER_ID) )",
+            "USER_ROLE" => "CREATE TABLE USER_ROLE (USER_ID INTEGER,
+                ROLE_ID INTEGER, PRIMARY KEY (ROLE_ID, USER_ID))",
+            "USER_SESSION" => "CREATE TABLE USER_SESSION(
+                USER_ID INTEGER PRIMARY KEY, SESSION VARCHAR(4096))",
+            "VISITOR" => "CREATE TABLE VISITOR(ADDRESS VARCHAR(39),
+                PAGE_NAME VARCHAR(16),
+                END_TIME INTEGER, DELAY INTEGER, FORGET_AGE INTEGER,
+                ACCESS_COUNT INTEGER,
+                PRIMARY KEY(ADDRESS, PAGE_NAME))",
+            "VERSION" => "CREATE TABLE VERSION(ID INTEGER PRIMARY KEY)",
+            );
     }
     /**
      * Creates a folder to be used to maintain local information about this
@@ -241,159 +375,53 @@ EOT;
      *
      * @param array $dbinfo has fields for DBMS, DB_USER, DB_PASSWORD, DB_HOST
      *      and DB_NAME
+     * @param array $skip_list an array of table or index names not to bother
+     *      creating or copying
      * @return bool returns true if can connect to/create a valid database;
      *      returns false otherwise
      */
-    function migrateDatabaseIfNecessary($dbinfo)
+    function migrateDatabaseIfNecessary($dbinfo, $skip_list = array())
     {
         $test_dbm = $this->testDatabaseManager($dbinfo);

         if($test_dbm === false || $test_dbm === true) {return $test_dbm; }

-        /*
-            Don't copy MACHINE table as will be local to installation
-         */
-        $copy_tables = array("ACCESS", "ACTIVITY",
-            "CRAWL_MIXES", "CURRENT_WEB_INDEX", "FEED_ITEM", "GROUPS",
-            "LOCALE", "MEDIA_SOURCE", "MIX_COMPONENTS",
-            "MIX_GROUPS", "ROLE", "ROLE_ACTIVITY", "SUBSEARCH", "TRANSLATION",
-            "TRANSLATION_LOCALE", "USERS", "USER_GROUP", "USER_ROLE",
-            "USER_SESSION", "VERSION", "VISITOR");
-
+        $this->initializeSql($test_dbm, $dbinfo);
+        $copy_tables = array_diff(array_keys($this->create_statements),
+            $skip_list);
         if(!($create_ok = $this->createDatabaseTables($test_dbm, $dbinfo))) {
             return false;
         }
         require_once(BASE_DIR."/models/datasources/sqlite3_manager.php");
-
         $default_dbm = new Sqlite3Manager();
-
         $default_dbm->connect("", "", "", BASE_DIR."/data/default.db");
         if(!$default_dbm) {return false;}
-        foreach($copy_tables as $table) {
-            if(!$this->copyTable($table, $default_dbm, $test_dbm))
+        foreach($copy_tables as $table_or_index) {
+            if($table_or_index != "CURRENT_WEB_INDEX" &&
+                stristr($table_or_index, "_INDEX")) {
+                continue;
+            }
+            if(!$this->copyTable($table_or_index, $default_dbm, $test_dbm))
                 {return false;}
         }
         return true;
     }
     /**
      * On a blank database this method create all the tables necessary for
-     * Yioop
+     * Yioop less those on a skip list
      *
      * @param object $dbm a DatabaseManager open to some DBMS and with a
      *      blank database selected
-     * @return bool whether all of the creates were sucessful or not
+     * @param array $skip_list an array of table or index names not to bother
+     *      creating
+     * @return bool whether all of the creates were successful or not
      */
-    function createDatabaseTables($dbm, $dbinfo)
+    function createDatabaseTables($dbm, $dbinfo, $skip_list = array())
     {
-        $auto_increment = $dbm->autoIncrement($dbinfo);
-        $serial = $dbm->serialType($dbinfo);
-
-        //create table statements (should be kept alphabetical)
-        $create_statements = array(
-            "CREATE TABLE ACTIVE_FETCHER (NAME VARCHAR(16),FETCHER_ID INTEGER)",
-            "CREATE INDEX AF_FETCHER_ID_INDEX ON
-                 ACTIVE_FETCHER (FETCHER_ID)",
-            "CREATE TABLE ACTIVITY (ACTIVITY_ID $serial PRIMARY KEY
-                $auto_increment, TRANSLATION_ID INTEGER,
-                METHOD_NAME VARCHAR(256))",
-            "CREATE INDEX ACTIVITY_TRANSLATION_ID_INDEX ON
-                 ACTIVITY (TRANSLATION_ID)",
-            "CREATE TABLE CRAWL_MIXES (TIMESTAMP NUMERIC(11) PRIMARY KEY,
-                NAME VARCHAR(16), OWNER_ID INTEGER, PARENT NUMERIC(11))",
-            "CREATE INDEX CM_OWNER_ID_INDEX ON CRAWL_MIXES (OWNER_ID)",
-            "CREATE INDEX CM_PARENT_INDEX ON CRAWL_MIXES (PARENT)",
-            "CREATE TABLE CURRENT_WEB_INDEX
-                (CRAWL_TIME NUMERIC(11) PRIMARY KEY)",
-            "CREATE TABLE FEED_ITEM (GUID CHAR(11) PRIMARY KEY,
-                TITLE VARCHAR(512), LINK VARCHAR(256),
-                DESCRIPTION VARCHAR(4096),
-                PUBDATE INT, SOURCE_NAME VARCHAR(16))",
-            "CREATE TABLE GROUP_ITEM (ID $serial PRIMARY KEY $auto_increment,
-                PARENT_ID INTEGER, GROUP_ID INTEGER, USER_ID INTEGER,
-                TITLE VARCHAR(512), DESCRIPTION VARCHAR(".MAX_GROUP_POST_LEN."),
-                PUBDATE NUMERIC(11), UPS INTEGER DEFAULT 0,
-                DOWNS INTEGER DEFAULT 0, TYPE INTEGER DEFAULT ".
-                STANDARD_GROUP_ITEM.")",
-            "CREATE INDEX GI_GROUP_ID_INDEX ON GROUP_ITEM (GROUP_ID)",
-            "CREATE INDEX GI_USER_ID_INDEX ON GROUP_ITEM (USER_ID)",
-            "CREATE INDEX GI_PARENT_ID_INDEX ON GROUP_ITEM (PARENT_ID)",
-            "CREATE TABLE GROUP_ITEM_VOTE(USER_ID INTEGER, ITEM_ID INTEGER)",
-            "CREATE TABLE GROUP_PAGE (ID $serial PRIMARY KEY $auto_increment,
-                GROUP_ID INTEGER, DISCUSS_THREAD INTEGER, TITLE VARCHAR(512),
-                PAGE VARCHAR(".MAX_GROUP_PAGE_LEN."), LOCALE_TAG VARCHAR(16),
-                CONSTRAINT GID_TITLE_LOC UNIQUE(GROUP_ID, TITLE, LOCALE_TAG))",
-            "CREATE INDEX GP_ID_INDEX ON GROUP_PAGE
-                 (GROUP_ID, TITLE, LOCALE_TAG)",
-            "CREATE TABLE GROUP_PAGE_HISTORY (PAGE_ID INTEGER,
-                GROUP_ID INTEGER, EDITOR_ID INTEGER, TITLE VARCHAR(512),
-                PAGE VARCHAR(".MAX_GROUP_PAGE_LEN."), EDIT_COMMENT VARCHAR(80),
-                LOCALE_TAG VARCHAR(16), PUBDATE NUMERIC(11),
-                PRIMARY KEY(PAGE_ID, PUBDATE))",
-            "CREATE TABLE GROUPS (GROUP_ID $serial PRIMARY KEY $auto_increment,
-                GROUP_NAME VARCHAR(128), CREATED_TIME VARCHAR(20),
-                OWNER_ID INTEGER, REGISTER_TYPE INTEGER,
-                MEMBER_ACCESS INTEGER, VOTE_ACCESS INTEGER DEFAULT ".
-                NON_VOTING_GROUP.")",
-            /* NOTE: We are not using singular name GROUP for GROUPS as
-               GROUP is a reserved SQL keyword
-             */
-            "CREATE INDEX GRP_OWNER_ID_INDEX ON GROUPS (OWNER_ID)",
-            "CREATE INDEX GRP_MEMBER_ACCESS_INDEX ON GROUPS(MEMBER_ACCESS)",
-            "CREATE TABLE LOCALE(LOCALE_ID $serial PRIMARY KEY
-                $auto_increment, LOCALE_TAG VARCHAR(16),
-                LOCALE_NAME VARCHAR(256), WRITING_MODE CHAR(5))",
-            "CREATE INDEX LCL_LOCALE_TAG_INDEX ON LOCALE(LOCALE_TAG)",
-            "CREATE TABLE MACHINE (NAME VARCHAR(16) PRIMARY KEY,
-                URL VARCHAR(256) UNIQUE, HAS_QUEUE_SERVER INT,
-                NUM_FETCHERS INTEGER, PARENT VARCHAR(16) )",
-            "CREATE TABLE MEDIA_SOURCE (TIMESTAMP NUMERIC(11) PRIMARY KEY,
-                NAME VARCHAR(64) UNIQUE, TYPE VARCHAR(16),
-                SOURCE_URL VARCHAR(256), THUMB_URL VARCHAR(256),
-                LANGUAGE VARCHAR(7))",
-            "CREATE INDEX MS_TYPE_INDEX ON MEDIA_SOURCE(TYPE)",
-            "CREATE TABLE MIX_COMPONENTS (TIMESTAMP NUMERIC(11),
-                FRAGMENT_ID INTEGER, CRAWL_TIMESTAMP NUMERIC(11), WEIGHT REAL,
-                KEYWORDS VARCHAR(256),
-                PRIMARY KEY(TIMESTAMP, FRAGMENT_ID, CRAWL_TIMESTAMP) )",
-            "CREATE TABLE MIX_FRAGMENTS (TIMESTAMP NUMERIC(11),
-                FRAGMENT_ID INTEGER, RESULT_BOUND INTEGER,
-                PRIMARY KEY(TIMESTAMP, FRAGMENT_ID))",
-            "CREATE TABLE ROLE (ROLE_ID $serial PRIMARY KEY $auto_increment,
-                NAME VARCHAR(512))",
-            "CREATE TABLE ROLE_ACTIVITY (ROLE_ID INTEGER, ACTIVITY_ID INTEGER,
-                PRIMARY KEY(ROLE_ID, ACTIVITY_ID))",
-            "CREATE TABLE SUBSEARCH (LOCALE_STRING VARCHAR(32) PRIMARY KEY,
-                FOLDER_NAME VARCHAR(16), INDEX_IDENTIFIER CHAR(13),
-                PER_PAGE INT)",
-            "CREATE TABLE TRANSLATION (TRANSLATION_ID $serial PRIMARY KEY
-                $auto_increment, IDENTIFIER_STRING VARCHAR(512) UNIQUE)",
-            "CREATE INDEX TRANS_IDENTIFIER_STRING_INDEX ON
-                TRANSLATION(IDENTIFIER_STRING)",
-            "CREATE TABLE TRANSLATION_LOCALE (TRANSLATION_ID INTEGER,
-                LOCALE_ID INTEGER, TRANSLATION VARCHAR(4096),
-                PRIMARY KEY(TRANSLATION_ID, LOCALE_ID))",
-            "CREATE TABLE USERS(USER_ID $serial PRIMARY KEY $auto_increment,
-                FIRST_NAME VARCHAR(16), LAST_NAME VARCHAR(16),
-                USER_NAME VARCHAR(16) UNIQUE, EMAIL VARCHAR(60),
-                PASSWORD CHAR(60), STATUS INTEGER, HASH CHAR(60),
-                CREATION_TIME VARCHAR(20), UPS INTEGER DEFAULT 0,
-                DOWNS INTEGER DEFAULT 0, ZKP_PASSWORD CHAR(200))",
-            "CREATE INDEX USRS_USER_NAME_INDEX ON USERS(USER_NAME)",
-            "CREATE TABLE USER_GROUP (USER_ID INTEGER , GROUP_ID INTEGER,
-                   STATUS INTEGER, JOIN_DATE NUMERIC(11),
-                   PRIMARY KEY (GROUP_ID, USER_ID) )",
-            "CREATE TABLE USER_ROLE (USER_ID INTEGER, ROLE_ID INTEGER,
-                PRIMARY KEY (ROLE_ID, USER_ID))",
-            "CREATE TABLE USER_SESSION(USER_ID INTEGER PRIMARY KEY,
-                SESSION VARCHAR(4096))",
-            "CREATE TABLE VISITOR(ADDRESS VARCHAR(39),
-                PAGE_NAME VARCHAR(16),
-                END_TIME INTEGER, DELAY INTEGER, FORGET_AGE INTEGER,
-                ACCESS_COUNT INTEGER,
-                PRIMARY KEY(ADDRESS, PAGE_NAME))",
-            "CREATE TABLE VERSION(ID INTEGER PRIMARY KEY)",
-            );
-        foreach($create_statements as $statement) {
+        $this->initializeSQL($dbm, $dbinfo);
+        $create_statements = $this->create_statements;
+        foreach($create_statements as $table_or_index => $statement) {
+            if(in_array($table_or_index, $skip_list)) { continue; }
             if(!$result = $dbm->execute($statement)) {
                 echo $statement." ERROR!";
                 return false;
ViewGit