|
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');
|