From: <luc...@us...> - 2014-10-06 19:43:15
|
Revision: 12812 http://sourceforge.net/p/xoops/svn/12812 Author: luciorota Date: 2014-10-06 19:43:10 +0000 (Mon, 06 Oct 2014) Log Message: ----------- fixed bug when updating from xNewsletter to xnewsletter on linux/unix servers fixed bug in subscr form (goffy) Modified Paths: -------------- XoopsModules/xnewsletter/branches/luciorota/xnewsletter/class/subscr.php XoopsModules/xnewsletter/branches/luciorota/xnewsletter/class/task.php XoopsModules/xnewsletter/branches/luciorota/xnewsletter/docs/update.txt XoopsModules/xnewsletter/branches/luciorota/xnewsletter/include/onupdate.php XoopsModules/xnewsletter/branches/luciorota/xnewsletter/language/english/admin.php XoopsModules/xnewsletter/branches/luciorota/xnewsletter/xoops_version.php Modified: XoopsModules/xnewsletter/branches/luciorota/xnewsletter/class/subscr.php =================================================================== --- XoopsModules/xnewsletter/branches/luciorota/xnewsletter/class/subscr.php 2014-10-05 03:14:05 UTC (rev 12811) +++ XoopsModules/xnewsletter/branches/luciorota/xnewsletter/class/subscr.php 2014-10-06 19:43:10 UTC (rev 12812) @@ -110,24 +110,22 @@ if ($action === false) { $action = $_SERVER['REQUEST_URI']; } - include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php'; + // $title = $this->isNew() ? sprintf(_MA_XNEWSLETTER_SUBSCRIPTION_ADD) : sprintf(_MA_XNEWSLETTER_SUBSCRIPTION_EDIT); $form = new XoopsThemeForm($title, 'form', $action, 'post', true); $form->setExtra('enctype="multipart/form-data"'); - + // $form->addElement(new XoopsFormLabel("<span style='text-decoration:underline'>" . _MA_XNEWSLETTER_SUBSCRIPTION_INFO_PERS . "</span>", '')); $subscr_id = $this->isNew() ? 0 : $this->getVar('subscr_id'); - - // subscr_email + // subscr: subscr_email if ($subscr_id > 0 || $this->getVar('subscr_email') != '') { $form->addElement(new XoopsFormLabel(_AM_XNEWSLETTER_SUBSCR_EMAIL, $this->getVar('subscr_email'))); $form->addElement(new XoopsFormHidden('subscr_email', $this->getVar('subscr_email'))); } else { $form->addElement(new XoopsFormText(_AM_XNEWSLETTER_SUBSCR_EMAIL, 'subscr_email', 50, 255, $this->getVar('subscr_email')), true); } - - // subscr_sex + // subscr: subscr_sex if ($this->xnewsletter->getConfig('xn_use_salutation') == 1) { $select_subscr_sex = new XoopsFormSelect(_AM_XNEWSLETTER_SUBSCR_SEX, 'subscr_sex', $this->getVar('subscr_sex')); $select_subscr_sex->addOption(_AM_XNEWSLETTER_SUBSCR_SEX_EMPTY, _AM_XNEWSLETTER_SUBSCR_SEX_EMPTY); @@ -137,15 +135,12 @@ $select_subscr_sex->addOption(_AM_XNEWSLETTER_SUBSCR_SEX_FAMILY, _AM_XNEWSLETTER_SUBSCR_SEX_FAMILY); $form->addElement($select_subscr_sex); } - - // subscr_firstname - $form->addElement(new XoopsFormText(_AM_XNEWSLETTER_SUBSCR_FIRSTNAME, 'subscr_firstname', 50, 255, $this->getVar('subscr_firstname')), true); - - // subscr_lastname + // subscr: subscr_firstname + $form->addElement(new XoopsFormText(_AM_XNEWSLETTER_SUBSCR_FIRSTNAME, 'subscr_firstname', 50, 255, $this->getVar('subscr_firstname')), false); + // subscr: subscr_lastname $form->addElement(new XoopsFormText(_AM_XNEWSLETTER_SUBSCR_LASTNAME, 'subscr_lastname', 50, 255, $this->getVar('subscr_lastname')), false); - + // $form->addElement(new XoopsFormLabel('<br/><br/>', '')); - // get newsletters available for current user $opt_cat = array(); $opt_tray = new XoopsFormElementTray("<span style='text-decoration:underline'>" . _MA_XNEWSLETTER_SUBSCRIPTION_CATS_AVAIL . "</span>", "<br />"); @@ -153,7 +148,6 @@ $gperm_handler = xoops_gethandler('groupperm'); $uid = (is_object($GLOBALS['xoopsUser']) && isset($GLOBALS['xoopsUser'])) ? $GLOBALS['xoopsUser']->uid() : 0; $groups = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getGroups() : array(0 => XOOPS_GROUP_ANONYMOUS); - // cats[], existing_catsubcr_id_{$cat_id}, existing_catsubscr_quited_{$cat_id} $catCriteria = new CriteriaCompo(); $catCriteria->setSort('cat_id'); @@ -198,10 +192,8 @@ } $cat_checkbox->setValue($values); $form->addElement($cat_checkbox); - // op $form->addElement(new XoopsFormHidden('op', 'save_subscription')); - // button $button_tray = new XoopsFormElementTray('', ''); $button_tray->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit')); @@ -211,7 +203,7 @@ $button_cancel->setExtra('onclick="history.go(-1)"'); $button_tray->addElement($button_cancel); $form->addElement($button_tray); - + // return $form; } @@ -228,13 +220,12 @@ if ($action === false) { $action = $_SERVER["REQUEST_URI"]; } - + include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php'; + // $title = $this->isNew() ? sprintf(_AM_XNEWSLETTER_SUBSCR_ADD) : sprintf(_AM_XNEWSLETTER_SUBSCR_EDIT); - - include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php'; $form = new XoopsThemeForm($title, 'form', $action, 'post', true); $form->setExtra('enctype="multipart/form-data"'); - + // subscr: subscr_sex $form->addElement(new XoopsFormText(_AM_XNEWSLETTER_SUBSCR_EMAIL, 'subscr_email', 50, 255, $this->getVar('subscr_email')), true); $select_subscr_sex = new XoopsFormSelect(_AM_XNEWSLETTER_SUBSCR_SEX, 'subscr_sex', $this->getVar('subscr_sex')); $select_subscr_sex->addOption(_AM_XNEWSLETTER_SUBSCR_SEX_EMPTY, _AM_XNEWSLETTER_SUBSCR_SEX_EMPTY); @@ -243,15 +234,17 @@ $select_subscr_sex->addOption(_AM_XNEWSLETTER_SUBSCR_SEX_COMP, _AM_XNEWSLETTER_SUBSCR_SEX_COMP); $select_subscr_sex->addOption(_AM_XNEWSLETTER_SUBSCR_SEX_FAMILY, _AM_XNEWSLETTER_SUBSCR_SEX_FAMILY); $form->addElement($select_subscr_sex); + // subscr: subscr_firstname $form->addElement(new XoopsFormText(_AM_XNEWSLETTER_SUBSCR_FIRSTNAME, 'subscr_firstname', 50, 255, $this->getVar('subscr_firstname')), false); + // subscr: subscr_lastname $form->addElement(new XoopsFormText(_AM_XNEWSLETTER_SUBSCR_LASTNAME, 'subscr_lastname', 50, 255, $this->getVar('subscr_lastname')), false); - + // subscr: subscr_uid $form->addElement(new XoopsFormSelectUser(_AM_XNEWSLETTER_SUBSCR_UID, 'subscr_uid', true, $this->getVar('subscr_uid'), 1, false), false); - + // subscr: subscr_submitter $form->addElement(new XoopsFormHidden('subscr_submitter', $GLOBALS['xoopsUser']->uid())); $form->addElement(new XoopsFormLabel(_AM_XNEWSLETTER_SUBSCR_SUBMITTER, $GLOBALS['xoopsUser']->uname())); //$form->addElement(new XoopsFormSelectUser(_AM_XNEWSLETTER_SUBSCR_SUBMITTER, 'subscr_submitter', false, $this->getVar('subscr_submitter'), 1, false), true); - + // if ($this->getVar('subscr_id') > 0) { $form->addElement( new XoopsFormLabel( @@ -271,7 +264,7 @@ $form->addElement(new XoopsFormHidden('subscr_actkey', '')); $form->addElement(new XoopsFormHidden('op', 'save_subscr')); $form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit')); - + // return $form; } } Modified: XoopsModules/xnewsletter/branches/luciorota/xnewsletter/class/task.php =================================================================== --- XoopsModules/xnewsletter/branches/luciorota/xnewsletter/class/task.php 2014-10-05 03:14:05 UTC (rev 12811) +++ XoopsModules/xnewsletter/branches/luciorota/xnewsletter/class/task.php 2014-10-06 19:43:10 UTC (rev 12812) @@ -1,4 +1,4 @@ -<?php + <?php /* You may not change or alter any portion of this comment or credits of supporting developers from this source code or any supporting source code Modified: XoopsModules/xnewsletter/branches/luciorota/xnewsletter/docs/update.txt =================================================================== --- XoopsModules/xnewsletter/branches/luciorota/xnewsletter/docs/update.txt 2014-10-05 03:14:05 UTC (rev 12811) +++ XoopsModules/xnewsletter/branches/luciorota/xnewsletter/docs/update.txt 2014-10-06 19:43:10 UTC (rev 12812) @@ -1,5 +1,11 @@ -Read Me First -============= -1. Delete old /modules/xNewsletter directory -2. Copy this module in /modules directory -3. Update this module +Read Me First in case of module update +====================================== +If installed xNewsletter module dirname is like xNewsletter, follow these steps; + +1. Rename old /modules/xNewsletter directory to /modules/xNewsletter.bak +2. Copy new module in /modules directory +3. Rename new module to /modules/xNewsletter +4. Update module: update procedure will convert directory name to lowercase, and modules database record too +5. An error sould occour in some systems: this is not a problem, this is because now module admin is in /modules/xnewsletter/admin/index.php ... +6. Check if anything runs well +7. Remove backup dir /modules/xNewsletter.bak Modified: XoopsModules/xnewsletter/branches/luciorota/xnewsletter/include/onupdate.php =================================================================== --- XoopsModules/xnewsletter/branches/luciorota/xnewsletter/include/onupdate.php 2014-10-05 03:14:05 UTC (rev 12811) +++ XoopsModules/xnewsletter/branches/luciorota/xnewsletter/include/onupdate.php 2014-10-06 19:43:10 UTC (rev 12812) @@ -46,6 +46,7 @@ if ($previousVersion < 130) { xoops_module_update_xnewsletter_130(); } + xoops_module_update_xnewsletter_dirtolowercase(); return true; } @@ -53,19 +54,44 @@ /** * @return bool */ -function xoops_module_update_xnewsletter_130() +function xoops_module_update_xnewsletter_dirtolowercase() { // change module dirname to lowercase - $path = dirname(__DIR__); - $dirname = basename(dirname(__DIR__)); - rename($path, strtolower($dirname)); - // update module dirname field in database to lowercase - $sql = "UPDATE `{$GLOBALS['xoopsDB']->prefix('modules')}` SET `dirname` = '" . strtolower($dirname) . "'"; - $sql .= " WHERE LOWER(`dirname`) = '" . strtolower($dirname) . "';"; - if (!$GLOBALS['xoopsDB']->queryF($sql)) { - echo '<br />' . _MI_XNEWSLETTER_UPGRADEFAILED . ": UPDATE 'modules' SET `dirname` = '" . strtolower($dirname) . "'"; + $modulePath = dirname(__DIR__); + $moduleDirname = basename(dirname(__DIR__)); + if ($moduleDirname != strtolower($moduleDirname)) { + if (!xnewsletter_copyDir($modulePath, XOOPS_ROOT_PATH . '/modules/' . strtolower($moduleDirname) . '.tmp')) { + return false; + } + if (!xnewsletter_delDir($modulePath)) { + return false; + } + if (!xnewsletter_copyDir(XOOPS_ROOT_PATH . '/modules/' . strtolower($moduleDirname) . '.tmp', XOOPS_ROOT_PATH . '/modules/' . strtolower($moduleDirname))) { + return false; + } + if (!xnewsletter_delDir(XOOPS_ROOT_PATH . '/modules/' . strtolower($moduleDirname) . '.tmp')) { + return false; + } + // update module dirname field in database to lowercase + $sql = "UPDATE `{$GLOBALS['xoopsDB']->prefix('modules')}` SET `dirname` = '" . strtolower($moduleDirname) . "'"; + $sql .= " WHERE LOWER(`dirname`) = '" . strtolower($moduleDirname) . "';"; + if (!$GLOBALS['xoopsDB']->queryF($sql)) { + echo '<br />' . _MI_XNEWSLETTER_UPGRADEFAILED . ": UPDATE 'modules' SET `dirname` = '" . strtolower($moduleDirname) . "'"; + return false; + } + } else { + // NOP } + return true; +} +/** + * @return bool + */ +function xoops_module_update_xnewsletter_130() +{ + $moduleDirname = basename(dirname(__DIR__)); + // reverse 'mod_' prefix on tables xoops_module_update_xnewsletter_rename_mod_table('xnewsletter_accounts'); xoops_module_update_xnewsletter_rename_mod_table('xnewsletter_attachment'); @@ -136,8 +162,8 @@ // delete old html template files - $templateDirectory = XOOPS_ROOT_PATH . "/modules/" . $dirname . "/templates/"; - $template_list = array_diff(scandir($templateDirectory), array('..', '.')); + $templateDirectory = XOOPS_ROOT_PATH . "/modules/" . $moduleDirname . "/templates/"; + $template_list = array_diff(@scandir($templateDirectory), array('..', '.')); foreach ($template_list as $k => $v) { $fileinfo = new SplFileInfo($templateDirectory . $v); if ($fileinfo->getExtension() == 'html' && $fileinfo->getFilename() != 'index.html') { @@ -148,17 +174,17 @@ xoops_load('xoopsfile'); //delete /images directory - $imagesDirectory = XOOPS_ROOT_PATH . "/modules/" . $dirname . "/images/"; + $imagesDirectory = XOOPS_ROOT_PATH . "/modules/" . $moduleDirname . "/images/"; $folderHandler = XoopsFile::getHandler("folder", $imagesDirectory); $folderHandler->delete($imagesDirectory); //delete /templates/style.css file - $cssFile = XOOPS_ROOT_PATH . "/modules/" . $dirname . "/templates/style.css"; + $cssFile = XOOPS_ROOT_PATH . "/modules/" . $moduleDirname . "/templates/style.css"; $folderHandler = XoopsFile::getHandler("file", $cssFile); $folderHandler->delete($cssFile); //delete .html entries from the tpl table - $sql = "DELETE FROM " . $GLOBALS['xoopsDB']->prefix("tplfile") . " WHERE LOWER(`tpl_module`) = '" . strtolower($dirname) . "' AND `tpl_file` LIKE '%.html%'"; + $sql = "DELETE FROM " . $GLOBALS['xoopsDB']->prefix("tplfile") . " WHERE LOWER(`tpl_module`) = '" . strtolower($moduleDirname) . "' AND `tpl_file` LIKE '%.html%'"; $GLOBALS['xoopsDB']->queryF($sql); return true; @@ -303,3 +329,66 @@ return ($GLOBALS['xoopsDB']->getRowsNum($result) > 0); } + +/** + * Copy a directory and its contents + * + * @param string $source is the original directory + * @param string $destination is the destination directory + * + * @return bool Returns true on success or false on failure + * + */ +function xnewsletter_copyDir($source, $destination) +{ + if (!$dirHandler = opendir($source)) { + return false; + } + @mkdir($destination); + while (false !== ($file = readdir($dirHandler))) { + if (($file != '.') && ($file != '..')) { + if (is_dir("{$source}/{$file}")) { + if (!xnewsletter_copyDir("{$source}/{$file}", "{$destination}/{$file}")) { + return false; + } + } else { + if (!copy("{$source}/{$file}", "{$destination}/{$file}")) { + return false; + } + } + } + } + closedir($dirHandler); + return true; +} + +/** + * Delete a empty/not empty directory + * + * @param string $dir path to the directory to delete + * @param bool $if_not_empty if false it delete directory only if false + * + * @return bool Returns true on success or false on failure + */ +function xnewsletter_delDir($dir, $if_not_empty = true) +{ + if (!file_exists($dir)) { + return true; + } + if ($if_not_empty == true) { + if (!is_dir($dir)) { + return unlink($dir); + } + foreach (scandir($dir) as $item) { + if ($item == '.' || $item == '..') { + continue; + } + if (!xnewsletter_delDir("{$dir}/{$item}")) { + return false; + } + } + } else { + // NOP + } + return rmdir($dir); +} \ No newline at end of file Modified: XoopsModules/xnewsletter/branches/luciorota/xnewsletter/language/english/admin.php =================================================================== --- XoopsModules/xnewsletter/branches/luciorota/xnewsletter/language/english/admin.php 2014-10-05 03:14:05 UTC (rev 12811) +++ XoopsModules/xnewsletter/branches/luciorota/xnewsletter/language/english/admin.php 2014-10-06 19:43:10 UTC (rev 12812) @@ -473,12 +473,12 @@ define('_AM_XNEWSLETTER_FORMACTIVATEOK', "Activated successfully"); define('_AM_XNEWSLETTER_FORMUNACTIVATEOK', "Unactivated successfully"); // +define('_AM_XNEWSLETTER_PROTOCOL_STATUS_EMPTY',''); define('_AM_XNEWSLETTER_PROTOCOL_STATUS_SAVED', 'Saved'); define('_AM_XNEWSLETTER_PROTOCOL_STATUS_ERROR_CREATE_TASK', 'Error creating item in task list'); define('_AM_XNEWSLETTER_PROTOCOL_STATUS_OK_SEND_TEST', 'Newsletter sent for test (%recipient)'); define('_AM_XNEWSLETTER_PROTOCOL_STATUS_OK_SEND', 'Newsletter sent'); define('_AM_XNEWSLETTER_PROTOCOL_STATUS_ERROR_SEND', 'Newsletter send failed -> %error'); -define('_AM_XNEWSLETTER_PROTOCOL_STATUS_ERROR_SEND','Newsletter send failed -> %error'); define('_AM_XNEWSLETTER_PROTOCOL_STATUS_ERROR_PHPMAILER',"Error phpmailer -> %error"); define('_AM_XNEWSLETTER_PROTOCOL_STATUS_ERROR_SEND_COUNT',"Error sending newsletter: %error_count of %total_count newsletters not sent"); define('_AM_XNEWSLETTER_PROTOCOL_STATUS_OK_SEND_COUNT',"Sending %total_count newsletter(s) successfully"); Modified: XoopsModules/xnewsletter/branches/luciorota/xnewsletter/xoops_version.php =================================================================== --- XoopsModules/xnewsletter/branches/luciorota/xnewsletter/xoops_version.php 2014-10-05 03:14:05 UTC (rev 12811) +++ XoopsModules/xnewsletter/branches/luciorota/xnewsletter/xoops_version.php 2014-10-06 19:43:10 UTC (rev 12812) @@ -51,7 +51,7 @@ //About $modversion['module_status'] = 'Beta 1'; -$modversion['release_date'] = '2014/09/22'; +$modversion['release_date'] = '2014/10/02'; //$modversion['release'] = "1.3"; $modversion['demo_site_url'] = ''; $modversion['demo_site_name'] = ''; @@ -129,7 +129,7 @@ $member_handler = xoops_gethandler('member'); $uid = (is_object($GLOBALS['xoopsUser']) && isset($GLOBALS['xoopsUser'])) ? $GLOBALS['xoopsUser']->uid() : 0; $groups = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getGroups() : array(0 => XOOPS_GROUP_ANONYMOUS); -$xoopsModule = $module_handler->getByDirname('xnewsletter'); +$xoopsModule = $module_handler->getByDirname($mydirname); $showRead = false; $showEdit = false; @@ -137,7 +137,7 @@ $showList = false; if (is_object($xoopsModule)) { - $catHandler = xoops_getModuleHandler('cat', 'xnewsletter'); + $catHandler = xoops_getModuleHandler('cat', $mydirname); $catCriteria = new CriteriaCompo(); $catCriteria->setSort('cat_id'); $catCriteria->setOrder('ASC'); |