예제 #1
0
function xoops_module_update_smartsection($module)
{
    // Load SmartDbUpdater from the SmartObject Framework if present
    $smartdbupdater = XOOPS_ROOT_PATH . "/modules/smartsection/class/smartdbupdater.php";
    include_once $smartdbupdater;
    $dbupdater = new SmartobjectDbupdater();
    ob_start();
    echo "<code>" . _SDU_UPDATE_UPDATING_DATABASE . "<br />";
    // Adding partial_view field
    $table = new SmartDbTable('smartsection_items');
    if (!$table->fieldExists('partial_view')) {
        $table->addNewField('partial_view', "varchar(255) NOT NULL default ''");
    } else {
        $table->addAlteredField('partial_view', "varchar(255) NOT NULL default ''");
    }
    if (!$dbupdater->updateTable($table)) {
        /**
         * @todo trap the errors
         */
    }
    unset($table);
    /**
     * Check for items with categoryid=0
     */
    @($smartsection_item_handler = xoops_getmodulehandler('item', 'smartsection'));
    @($smartsection_category_handler = xoops_getmodulehandler('category', 'smartsection'));
    if ($smartsection_item_handler) {
        //find a valid categoryid
        $categoriesObj = $smartsection_category_handler->getCategories(1, 0, 0, 'weight', 'ASC', false);
        if (count($categoriesObj) > 0) {
            $categoryid = $categoriesObj[0]->getVar('categoryid');
            $criteria = new CriteriaCompo();
            $criteria->add(new Criteria('categoryid', 0));
            $smartsection_item_handler->updateAll('categoryid', $categoryid, $criteria);
            echo "&nbsp;&nbsp;Cleaning up items for with categoryid=0<br />";
        }
    }
    // Adding item_tag field in smartsection_items
    $table = new SmartDbTable('smartsection_items');
    if (!$table->fieldExists('item_tag')) {
        $table->addNewField('item_tag', "TEXT NOT NULL");
    }
    if ($table->fieldExists('tags')) {
        $table->addDropedField('tags');
    }
    if (!$dbupdater->updateTable($table)) {
        /**
         * @todo trap the errors
         */
    }
    unset($table);
    echo "</code>";
    $feedback = ob_get_clean();
    if (method_exists($module, "setMessage")) {
        $module->setMessage($feedback);
    } else {
        echo $feedback;
    }
    return true;
}
예제 #2
0
function xoops_module_update_smartpartner($module)
{
    include_once XOOPS_ROOT_PATH . "/modules/" . $module->getVar('dirname') . "/include/functions.php";
    include_once XOOPS_ROOT_PATH . "/modules/smartobject/class/smartdbupdater.php";
    $dbupdater = new SmartobjectDbupdater();
    ob_start();
    $dbVersion = smartpartner_GetMeta('version');
    $dbupdater = new SmartobjectDbupdater();
    echo "<code>" . _SDU_UPDATE_UPDATING_DATABASE . "<br />";
    //smartpartner_create_upload_folders();
    // db migrate version = 3
    $newDbVersion = 3;
    if ($dbVersion < $newDbVersion) {
        echo "Database migrate to version " . $newDbVersion . "<br />";
        $table = new SmartDbTable('smartpartner_partner');
        $table->addNewField('email_priv', " tinyint(1) NOT NULL default '0'");
        $table->addNewField('phone_priv', " tinyint(1) NOT NULL default '0'");
        $table->addNewField('adress_priv', " tinyint(1) NOT NULL default '0'");
        if (!$dbupdater->updateTable($table)) {
            /**
             * @todo trap the errors
             */
        }
        unset($table);
    }
    // db migrate version =4
    $newDbVersion = 4;
    if ($dbVersion < $newDbVersion) {
        echo "Database migrate to version " . $newDbVersion . "<br />";
        //create new tables
        // Create table smartpartner_categories
        $table = new SmartDbTable('smartpartner_categories');
        if (!$table->exists()) {
            $table->setStructure("\r\n\t\t\t  `categoryid` int(11) NOT NULL auto_increment,\r\n\t\t\t  `parentid` int(11) NOT NULL default '0',\r\n\t\t\t  `name` varchar(100) NOT NULL default '',\r\n\t\t\t  `description` text NOT NULL,\r\n\t\t\t  `image` varchar(255) NOT NULL default '',\r\n\t\t\t  `total` int(11) NOT NULL default '0',\r\n\t\t\t  `weight` int(11) NOT NULL default '1',\r\n\t\t\t  `created` int(11) NOT NULL default '0',\r\n\t\t\t  PRIMARY KEY  (`categoryid`)\r\n\t\t\t");
            if (!$dbupdater->updateTable($table)) {
                /**
                 * @todo trap the errors
                 */
            }
        }
        // Create table smartpartner_partner_cat_link
        $table = new SmartDbTable('smartpartner_partner_cat_link');
        if (!$table->exists()) {
            $table->setStructure("\r\n\t\t\t  `partner_cat_linkid` int(11) NOT NULL auto_increment,\r\n\t\t\t  `categoryid` int(11) NOT NULL default '0',\r\n\t\t\t  `partnerid` int(11) NOT NULL default '0',\r\n\t\t\t   PRIMARY KEY  (`partner_cat_linkid`)\r\n\t\t\t");
            if (!$dbupdater->updateTable($table)) {
                /**
                 * @todo trap the errors
                 */
            }
        }
        // Create table smartpartner_offer
        $table = new SmartDbTable('smartpartner_offer');
        if (!$table->exists()) {
            $table->setStructure("\r\n\t\t\t   `offerid` int(11) NOT NULL auto_increment,\r\n\t\t\t  `partnerid` int(11) NOT NULL default '0',\r\n\t\t\t  `title` varchar(255) NOT NULL default '',\r\n\t\t\t  `description` TEXT NOT NULL,\r\n\t\t\t  `url` varchar(150) default '',\r\n\t\t\t  `image` varchar(150) NOT NULL default '',\r\n\t\t\t  `date_sub` int(11) NOT NULL default '0',\r\n\t\t\t  `date_pub` int(11) NOT NULL default '0',\r\n\t\t\t  `date_end` int(11) NOT NULL default '0',\r\n\t\t\t  `status` int(10) NOT NULL default '-1',\r\n\t\t\t  `weight` int(1) NOT NULL default '0',\r\n\t\t\t  `dohtml` int(1) NOT NULL default '1',\r\n\t\t\t  PRIMARY KEY  (`offerid`)\r\n\t\t\t");
            if (!$dbupdater->updateTable($table)) {
                /**
                 * @todo trap the errors
                 */
            }
        }
        // Create table smartpartner_offer
        $table = new SmartDbTable('smartpartner_files');
        if (!$table->exists()) {
            $table->setStructure("\r\n\t\t\t  `fileid` int(11) NOT NULL auto_increment,\r\n\t\t\t  `id` int(11) NOT NULL default '0',\r\n\t\t\t  `name` varchar(255) NOT NULL default '',\r\n\t\t\t  `description` TEXT NOT NULL,\r\n\t\t\t  `filename` varchar(255) NOT NULL default '',\r\n\t\t\t  `mimetype` varchar(64) NOT NULL default '',\r\n\t\t\t  `uid` int(6) default '0',\r\n\t\t\t  `datesub` int(11) NOT NULL default '0',\r\n\t\t\t  `status` int(1) NOT NULL default '-1',\r\n\t\t\t  `notifypub` tinyint(1) NOT NULL default '1',\r\n\t\t\t  `counter` int(8) unsigned NOT NULL default '0',\r\n\t\t\t  PRIMARY KEY  (`fileid`)\r\n\t\t\t");
            if (!$dbupdater->updateTable($table)) {
                /**
                 * @todo trap the errors
                 */
            }
        }
        //loop in partners to insert cat_links in partner_cat_link table
        $smartparner_partner_handler = xoops_getModuleHandler('partner', 'smartpartner');
        $smartparner_partner_cat_link_handler = xoops_getModuleHandler('partner_cat_link', 'smartpartner');
        $moduleperm_handler =& xoops_gethandler('groupperm');
        $module_handler =& xoops_gethandler('module');
        $module = $module_handler->getByDirname('smartpartner');
        $groupsArray = $moduleperm_handler->getGroupIds('module_read', $module->mid(), 1);
        $sql = 'SELECT id, categoryid from ' . $smartparner_partner_handler->table;
        $records = $smartparner_partner_handler->query($sql);
        foreach ($records as $record) {
            if ($record['categoryid'] != 0) {
                $new_link = $smartparner_partner_cat_link_handler->create();
                $new_link->setVar('partnerid', $record['id']);
                $new_link->setVar('categoryid', $record['categoryid']);
                $smartparner_partner_cat_link_handler->insert($new_link);
                unset($new_link);
            }
            foreach ($groupsArray as $group) {
                $moduleperm_handler->addRight('full_view', $record['id'], $group, $module->mid());
            }
        }
        //drop cat_id in partner table
        $table = new SmartDbTable('smartpartner_partner');
        $table->addNewField('last_update', " int(11) NOT NULL default '0'");
        $table->addNewField('showsummary', " tinyint(1) NOT NULL default '0'");
        $table->addDropedField('categoryid');
        if (!$dbupdater->updateTable($table)) {
            /**
             * @todo trap the errors
             */
        }
        unset($table);
    }
    echo "</code>";
    $feedback = ob_get_clean();
    if (method_exists($module, "setMessage")) {
        $module->setMessage($feedback);
    } else {
        echo $feedback;
    }
    smartpartner_SetMeta("version", isset($newDbVersion) ? $newDbVersion : 0);
    //Set meta version to current
    return true;
}