Ejemplo n.º 1
0
 * The contents of this file are subject to the vtiger CRM Public License Version 1.1
 * ("License"); You may not use this file except in compliance with the License
 * The Original Code is: SalesPlatform Ltd
 * The Initial Developer of the Original Code is SalesPlatform Ltd.
 * All Rights Reserved.
 * If you have any questions or comments, please email: devel@salesplatform.ru
 ************************************************************************************/
if (!defined('VTIGER_UPGRADE')) {
    die('Invalid entry point');
}
chdir(dirname(__FILE__) . '/../../../');
include_once 'modules/com_vtiger_workflow/VTTaskManager.inc';
include_once 'modules/com_vtiger_workflow/VTWorkflowManager.inc';
include_once 'include/utils/utils.php';
if (defined('VTIGER_UPGRADE')) {
    updateVtlibModule('Google', 'packages/vtiger/optional/Google.zip');
}
if (defined('INSTALLATION_MODE')) {
    // Set of task to be taken care while specifically in installation mode.
}
// SalesPlatform.ru begin
//Unlink unwanted resources
$unWanted = array("modules/ModComments/language/en_us.lang.php", "modules/SMSNotifier/providers/StreamSMSru.php", "modules/SMSNotifier/providers/StreamTelecomRuUr.php", "modules/SMSNotifier/providers/streamsms/SPSTREAMSMS.Class.v2.1.php", "modules/SMSNotifier/providers/streamsms/STREAMSMS.Class.v2.1.php", "modules/SMSNotifier/providers/streamsms/STREAMSMSOld.Class.php");
for ($i = 0; $i <= count($unWanted); $i++) {
    if (file_exists($unWanted[$i])) {
        unlink($unWanted[$i]);
    }
}
// Ticket #2629
global $adb;
$query = 'SELECT tabid FROM vtiger_tab where name = ?';
Ejemplo n.º 2
0
 public static function installSelectedOptionalModules($selected_modules, $source_directory = '', $destination_directory = '')
 {
     require_once 'vtlib/Vtiger/Package.php';
     require_once 'vtlib/Vtiger/Module.php';
     require_once 'include/utils/utils.php';
     $selected_modules = explode(":", $selected_modules);
     $languagePacks = array();
     if ($handle = opendir('packages/vtiger/optional')) {
         while (false !== ($file = readdir($handle))) {
             $filename_arr = explode(".", $file);
             if ($filename_arr[count($filename_arr) - 1] != 'zip') {
                 continue;
             }
             $packagename = $filename_arr[0];
             $packagepath = "packages/vtiger/optional/{$file}";
             $package = new Vtiger_Package();
             $module = $package->getModuleNameFromZip($packagepath);
             if (!empty($packagename) && in_array($module, $selected_modules)) {
                 if ($package->isLanguageType($packagepath)) {
                     $languagePacks[$module] = $packagepath;
                     continue;
                 }
                 if ($module != null) {
                     if ($package->isModuleBundle()) {
                         $unzip = new Vtiger_Unzip($packagepath);
                         $unzip->unzipAllEx($package->getTemporaryFilePath());
                         $moduleInfoList = $package->getAvailableModuleInfoFromModuleBundle();
                         foreach ($moduleInfoList as $moduleInfo) {
                             $moduleInfo = (array) $moduleInfo;
                             $packagepath = $package->getTemporaryFilePath($moduleInfo['filepath']);
                             $subModule = new Vtiger_Package();
                             $subModuleName = $subModule->getModuleNameFromZip($packagepath);
                             $moduleInstance = Vtiger_Module::getInstance($subModuleName);
                             if ($moduleInstance) {
                                 updateVtlibModule($subModuleName, $packagepath);
                             } else {
                                 installVtlibModule($subModuleName, $packagepath);
                             }
                         }
                     } else {
                         $moduleInstance = Vtiger_Module::getInstance($module);
                         if ($moduleInstance) {
                             updateVtlibModule($module, $packagepath);
                         } else {
                             installVtlibModule($module, $packagepath);
                         }
                     }
                 }
             }
         }
         closedir($handle);
     }
     foreach ($languagePacks as $module => $packagepath) {
         installVtlibModule($module, $packagepath);
         continue;
     }
 }
    updateVtlibModule('WSAPP', 'packages/vtiger/mandatory/WSAPP.zip');
    updateVtlibModule('Arabic_ar_ae', 'packages/vtiger/optional/Arabic_ar_ae.zip');
    updateVtlibModule('Assets', 'packages/vtiger/optional/Assets.zip');
    updateVtlibModule('EmailTemplates', 'packages/vtiger/optional/EmailTemplates.zip');
    updateVtlibModule('Google', 'packages/vtiger/optional/Google.zip');
    updateVtlibModule('ModComments', 'packages/vtiger/optional/ModComments.zip');
    updateVtlibModule('Projects', 'packages/vtiger/optional/Projects.zip');
    updateVtlibModule('RecycleBin', 'packages/vtiger/optional/RecycleBin.zip');
    updateVtlibModule('SMSNotifier', "packages/vtiger/optional/SMSNotifier.zip");
    updateVtlibModule("Sweden_sv_se", "packages/vtiger/optional/Sweden_sv_se.zip");
    updateVtlibModule("Webforms", "packages/vtiger/optional/Webforms.zip");
    installVtlibModule('ExtensionStore', 'packages/vtiger/marketplace/ExtensionStore.zip');
    // SalesPlatfotm.ru begin Update SP modules
    updateVtlibModule('Act', 'packages/vtiger/optional/Act.zip');
    updateVtlibModule('Consignment', "packages/vtiger/optional/Consignment.zip");
    updateVtlibModule('SPPayments', "packages/vtiger/optional/SPPayments.zip");
    // SalesPlatform.ru end
}
if (defined('INSTALLATION_MODE')) {
    // Set of task to be taken care while specifically in installation mode.
}
global $adb;
//Unlinking unwanted resources when migrating to 6.1.0
$unWanted = array("modules/Import/resources/Import.js", "modules/Webmails/Webmails.js", "modules/Webforms/Webforms.js", "modules/Vendors/Vendors.js", "modules/Users/Users.js", "modules/Tooltip/TooltipHeaderScript.js", "modules/Tooltip/Tooltip.js", "modules/Tooltip/TooltipSettings.js", "modules/Settings/Settings.js", "modules/Services/multifile.js", "modules/Services/Services.js", "modules/Services/Servicesslide.js", "modules/ServiceContracts/ServiceContracts.js", "modules/SalesOrder/SalesOrder.js", "modules/Rss/Rss.js", "modules/Reports/Reports.js", "modules/RecycleBin/RecycleBin.js", "modules/Quotes/Quotes.js", "modules/PurchaseOrder/PurchaseOrder.js", "modules/ProjectTask/ProjectTask.js", "modules/ProjectMilestone/ProjectMilestone.js", "modules/Project/Project.js", "modules/Products/Productsslide.js", "modules/Products/Products.js", "modules/Products/multifile.js", "modules/PriceBooks/PriceBooks.js", "modules/Potentials/Potentials.js", "modules/Portal/Portal.js", "modules/Picklist/DependencyPicklist.js", "modules/PBXManager/PBXManager.js", "modules/MailManager/MailManager.js", "modules/Leads/Leads.js", "modules/Invoice/Invoice.js", "modules/Integration/Integration.js", "modules/Home/Homestuff.js", "modules/HelpDesk/HelpDesk.js", "modules/Faq/Faq.js", "modules/Emails/Emails.js", "modules/Emails/GmailBookmarklet.js", "modules/Emails/GmailBookmarkletTrigger.js", "modules/CustomerPortal/CustomerPortal.js", "modules/CronTasks/CronTasks.js", "modules/Contacts/Contacts.js", "modules/ConfigurationEditor/ConfigEditor.js", "modules/Documents/Documents.js", "modules/CustomView/CustomView.js", "modules/ModComments/ModComments.js", "modules/ModComments/ModCommentsCommon.js", "modules/ModTracker/ModTracker.js", "modules/ModTracker/ModTrackerCommon.js", "modules/com_vtiger_workflow/resources/functional.js", "modules/com_vtiger_workflow/resources/parallelexecuter.js", "modules/com_vtiger_workflow/resources/editworkflowscript.js", "modules/com_vtiger_workflow/resources/createtodotaskscript.js", "modules/com_vtiger_workflow/resources/fieldexpressionpopup.js", "modules/com_vtiger_workflow/resources/workflowlistscript.js", "modules/com_vtiger_workflow/resources/fieldvalidator.js", "modules/com_vtiger_workflow/resources/updatefieldstaskscript.js", "modules/com_vtiger_workflow/resources/jquery-1.2.6.js", "modules/com_vtiger_workflow/resources/json2.js", "modules/com_vtiger_workflow/resources/vtigerwebservices.js", "modules/com_vtiger_workflow/resources/jquery.timepicker.js", "modules/com_vtiger_workflow/resources/createentitytaskscript.js", "modules/com_vtiger_workflow/resources/edittaskscript.js", "modules/com_vtiger_workflow/resources/createeventtaskscript.js", "modules/com_vtiger_workflow/resources/emailtaskscript.js", "modules/FieldFormulas/editexpressionscript.js", "modules/FieldFormulas/jquery-1.2.6.js", "modules/FieldFormulas/json2.js", "modules/FieldFormulas/vtigerwebservices.js", "modules/FieldFormulas/functional.js", "modules/SMSNotifier/providers/SMSProvider.php");
for ($i = 0; $i <= count($unWanted); $i++) {
    if (file_exists($unWanted[$i])) {
        unlink($unWanted[$i]);
    }
}
$result = $adb->pquery("show columns from com_vtiger_workflows like ?", array('schtypeid'));
if (!$adb->num_rows($result)) {
Ejemplo n.º 4
0
    updateVtlibModule('MailManager', 'packages/vtiger/mandatory/MailManager.zip');
    updateVtlibModule('Mobile', 'packages/vtiger/mandatory/Mobile.zip');
    updateVtlibModule('ModTracker', 'packages/vtiger/mandatory/ModTracker.zip');
    updateVtlibModule('ServiceContracts', 'packages/vtiger/mandatory/ServiceContracts.zip');
    updateVtlibModule('Services', 'packages/vtiger/mandatory/Services.zip');
    updateVtlibModule('WSAPP', 'packages/vtiger/mandatory/WSAPP.zip');
    updateVtlibModule('Arabic_ar_ae', 'packages/vtiger/optional/Arabic_ar_ae.zip');
    updateVtlibModule('Assets', 'packages/vtiger/optional/Assets.zip');
    updateVtlibModule('EmailTemplates', 'packages/vtiger/optional/EmailTemplates.zip');
    updateVtlibModule('Google', 'packages/vtiger/optional/Google.zip');
    updateVtlibModule('ModComments', 'packages/vtiger/optional/ModComments.zip');
    updateVtlibModule('Projects', 'packages/vtiger/optional/Projects.zip');
    updateVtlibModule('RecycleBin', 'packages/vtiger/optional/RecycleBin.zip');
    updateVtlibModule('SMSNotifier', "packages/vtiger/optional/SMSNotifier.zip");
    updateVtlibModule("Sweden_sv_se", "packages/vtiger/optional/Sweden_sv_se.zip");
    updateVtlibModule("Webforms", "packages/vtiger/optional/Webforms.zip");
    installVtlibModule('ExtensionStore', 'packages/vtiger/marketplace/ExtensionStore.zip');
}
if (defined('INSTALLATION_MODE')) {
    // Set of task to be taken care while specifically in installation mode.
}
global $adb;
//Unlinking unwanted resources when migrating to 6.1.0
$unWanted = array("modules/Import/resources/Import.js", "modules/Webmails/Webmails.js", "modules/Webforms/Webforms.js", "modules/Vendors/Vendors.js", "modules/Users/Users.js", "modules/Tooltip/TooltipHeaderScript.js", "modules/Tooltip/Tooltip.js", "modules/Tooltip/TooltipSettings.js", "modules/Settings/Settings.js", "modules/Services/multifile.js", "modules/Services/Services.js", "modules/Services/Servicesslide.js", "modules/ServiceContracts/ServiceContracts.js", "modules/SalesOrder/SalesOrder.js", "modules/Rss/Rss.js", "modules/Reports/Reports.js", "modules/RecycleBin/RecycleBin.js", "modules/Quotes/Quotes.js", "modules/PurchaseOrder/PurchaseOrder.js", "modules/ProjectTask/ProjectTask.js", "modules/ProjectMilestone/ProjectMilestone.js", "modules/Project/Project.js", "modules/Products/Productsslide.js", "modules/Products/Products.js", "modules/Products/multifile.js", "modules/PriceBooks/PriceBooks.js", "modules/Potentials/Potentials.js", "modules/Portal/Portal.js", "modules/Picklist/DependencyPicklist.js", "modules/PBXManager/PBXManager.js", "modules/MailManager/MailManager.js", "modules/Leads/Leads.js", "modules/Invoice/Invoice.js", "modules/Integration/Integration.js", "modules/Home/Homestuff.js", "modules/HelpDesk/HelpDesk.js", "modules/Faq/Faq.js", "modules/Emails/Emails.js", "modules/Emails/GmailBookmarklet.js", "modules/Emails/GmailBookmarkletTrigger.js", "modules/CustomerPortal/CustomerPortal.js", "modules/CronTasks/CronTasks.js", "modules/Contacts/Contacts.js", "modules/ConfigurationEditor/ConfigEditor.js", "modules/Documents/Documents.js", "modules/CustomView/CustomView.js", "modules/ModComments/ModComments.js", "modules/ModComments/ModCommentsCommon.js", "modules/ModTracker/ModTracker.js", "modules/ModTracker/ModTrackerCommon.js", "modules/com_vtiger_workflow/resources/functional.js", "modules/com_vtiger_workflow/resources/parallelexecuter.js", "modules/com_vtiger_workflow/resources/editworkflowscript.js", "modules/com_vtiger_workflow/resources/createtodotaskscript.js", "modules/com_vtiger_workflow/resources/fieldexpressionpopup.js", "modules/com_vtiger_workflow/resources/workflowlistscript.js", "modules/com_vtiger_workflow/resources/fieldvalidator.js", "modules/com_vtiger_workflow/resources/updatefieldstaskscript.js", "modules/com_vtiger_workflow/resources/jquery-1.2.6.js", "modules/com_vtiger_workflow/resources/json2.js", "modules/com_vtiger_workflow/resources/vtigerwebservices.js", "modules/com_vtiger_workflow/resources/jquery.timepicker.js", "modules/com_vtiger_workflow/resources/createentitytaskscript.js", "modules/com_vtiger_workflow/resources/edittaskscript.js", "modules/com_vtiger_workflow/resources/createeventtaskscript.js", "modules/com_vtiger_workflow/resources/emailtaskscript.js", "modules/FieldFormulas/editexpressionscript.js", "modules/FieldFormulas/jquery-1.2.6.js", "modules/FieldFormulas/json2.js", "modules/FieldFormulas/vtigerwebservices.js", "modules/FieldFormulas/functional.js");
for ($i = 0; $i <= count($unWanted); $i++) {
    if (file_exists($unWanted[$i])) {
        unlink($unWanted[$i]);
    }
}
$result = $adb->pquery("show columns from com_vtiger_workflows like ?", array('schtypeid'));
if (!$adb->num_rows($result)) {
Ejemplo n.º 5
0
<?php

/*+********************************************************************************
 * The contents of this file are subject to the vtiger CRM Public License Version 1.0
 * ("License"); You may not use this file except in compliance with the License
 * The Original Code is:  vtiger CRM Open Source
 * The Initial Developer of the Original Code is vtiger.
 * Portions created by vtiger are Copyright (C) vtiger.
 * All Rights Reserved.
 *********************************************************************************/
require_once 'include/utils/utils.php';
//5.2.1 to 5.3.0RC database changes
$adb = $_SESSION['adodb_current_object'];
$conn = $_SESSION['adodb_current_object'];
$migrationlog->debug("\n\nDB Changes from 5.3.0RC to 5.3.0 -------- Starts \n\n");
ExecuteQuery("UPDATE vtiger_field SET quickcreate=0 WHERE fieldname='time_start' AND tabid=" . getTabid('Calendar'));
ExecuteQuery("ALTER TABLE vtiger_links ADD COLUMN handler_path VARCHAR(128) DEFAULT null");
ExecuteQuery("ALTER TABLE vtiger_links ADD COLUMN handler_class VARCHAR(32) DEFAULT null");
ExecuteQuery("ALTER TABLE vtiger_links ADD COLUMN handler VARCHAR(32) DEFAULT null");
ExecuteQuery("UPDATE vtiger_organizationdetails SET logoname='vtiger-crm-logo.gif' WHERE logoname='vtiger-crm-logo.jpg'");
ExecuteQuery("UPDATE vtiger_organizationdetails SET organizationname='vtiger Systems Pvt Ltd' WHERE organizationname='vtiger'");
updateVtlibModule('MailManager', "packages/vtiger/mandatory/MailManager.zip");
updateVtlibModule('Mobile', "packages/vtiger/mandatory/Mobile.zip");
updateVtlibModule('ConfigEditor', "packages/vtiger/mandatory/ConfigEditor.zip");
updateVtlibModule('ServiceContracts', "packages/vtiger/mandatory/ServiceContracts.zip");
$migrationlog->debug("\n\nDB Changes from 5.3.0RC to 5.3.0 -------- Ends \n\n");
Ejemplo n.º 6
0
$currencyBlock->addField($currencyThousandSeparator);
$currencyThousandSeparator->setPicklistValues(array(".", ",", "'", " ", "\$"));
$currencySymbolPlacement = new Vtiger_Field();
$currencySymbolPlacement->name = 'currency_symbol_placement';
$currencySymbolPlacement->label = 'Symbol Placement';
$currencySymbolPlacement->table = 'vtiger_users';
$currencySymbolPlacement->column = 'currency_symbol_placement';
$currencySymbolPlacement->columntype = 'varchar(20)';
$currencySymbolPlacement->typeofdata = 'V~O';
$currencySymbolPlacement->uitype = 16;
$currencySymbolPlacement->defaultvalue = ',';
$currencySymbolPlacement->sequence = 5;
$currencySymbolPlacement->helpinfo = "<b>Currency - Symbol Placement</b> <br/><br/>" . "Symbol Placement allows you to configure the position of the " . "currency symbol with respect to the currency value.<br/>" . "<b>Eg:</b> <br/>" . "\$1.0 => \$123,456,789.50 <br/>" . "1.0\$ => 123,456,789.50\$ <br/>";
$currencyBlock->addField($currencySymbolPlacement);
$currencySymbolPlacement->setPicklistValues(array("\$1.0", "1.0\$"));
// Update the block and the sequence for Currency field of Users module - Push it to Currency Configuration block
ExecuteQuery("UPDATE vtiger_field SET block={$currencyBlock->id}, sequence=1 WHERE tablename='vtiger_users' AND fieldname='currency_id'");
ExecuteQuery("UPDATE vtiger_users SET currency_grouping_pattern='123,456,789',\n\t\t\t\t\t\t\t\t\t\tcurrency_decimal_separator='.',\n\t\t\t\t\t\t\t\t\t\tcurrency_grouping_separator=',',\n\t\t\t\t\t\t\t\t\t\tcurrency_symbol_placement='\$1.0'");
ExecuteQuery("UPDATE vtiger_field SET uitype='71' WHERE uitype=1 AND tablename='vtiger_campaign'\n\t\t\t\t\t\t\tAND fieldname IN ('expectedrevenue', 'actualcost', 'expectedroi', 'actualroi', 'budgetcost')");
ExecuteQuery("UPDATE vtiger_field SET uitype='72' WHERE uitype IN ('1','71')\n\t\t\t\t\tAND fieldname IN ('unit_price', 'hdnGrandTotal', 'hdnSubTotal', 'txtAdjustment', 'hdnDiscountAmount', 'hdnS_H_Amount')");
$sql = "INSERT INTO vtiger_ws_fieldtype(uitype,fieldtype) VALUES ('71', 'currency')";
ExecuteQuery($sql);
$sql = "INSERT INTO vtiger_ws_fieldtype(uitype,fieldtype) VALUES ('72', 'currency')";
ExecuteQuery($sql);
installVtlibModule('ConfigEditor', "packages/vtiger/mandatory/ConfigEditor.zip");
installVtlibModule('WSAPP', "packages/vtiger/mandatory/WSAPP.zip");
updateVtlibModule('Mobile', "packages/vtiger/mandatory/Mobile.zip");
updateVtlibModule('Services', 'packages/vtiger/mandatory/Services.zip');
updateVtlibModule('ServiceContracts', 'packages/vtiger/mandatory/ServiceContracts.zip');
updateVtlibModule('PBXManager', 'packages/vtiger/mandatory/PBXManager.zip');
$migrationlog->debug("\n\nDB Changes from 5.2.1 to 5.3.0RC  -------- Ends \n\n");
    updateVtlibModule('ModComments', "packages/vtiger/optional/ModComments.zip");
    updateVtlibModule('Projects', "packages/vtiger/optional/Projects.zip");
    updateVtlibModule('RecycleBin', 'packages/vtiger/optional/RecycleBin.zip');
    updateVtlibModule('SMSNotifier', "packages/vtiger/optional/SMSNotifier.zip");
    updateVtlibModule("Webforms", "packages/vtiger/optional/Webforms.zip");
    installVtlibModule('Google', 'packages/vtiger/optional/Google.zip');
    installVtlibModule('EmailTemplates', 'packages/vtiger/optional/EmailTemplates.zip');
    // updated language packs.
    updateVtlibModule('PT Brasil', 'packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip');
    updateVtlibModule('British English', 'packages/vtiger/optional/BritishLanguagePack_br_br.zip');
    updateVtlibModule('Dutch', 'packages/vtiger/optional/Dutch.zip');
    updateVtlibModule('Deutsch', 'packages/vtiger/optional/Deutsch.zip');
    updateVtlibModule('French', 'packages/vtiger/optional/French.zip');
    updateVtlibModule('Hungarian', 'packages/vtiger/optional/Hungarian.zip');
    updateVtlibModule('Mexican Spanish', 'packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip');
    updateVtlibModule('Spanish', 'packages/vtiger/optional/Spanish.zip');
    installVtlibModule('Italian', 'packages/vtiger/optional/ItalianLanguagePack_it_it.zip');
    installVtlibModule('RomanianLanguagePack_rm_rm', 'packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip');
    installVtlibModule('Turkce', 'packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip');
    installVtlibModule('Russian', 'packages/vtiger/optional/Russian.zip');
    installVtlibModule('Polish', 'packages/vtiger/optional/PolishLanguagePack_pl_pl.zip');
    installVtlibModule('Russian', 'packages/vtiger/optional/Russian.zip');
}
if (!defined('INSTALLATION_MODE')) {
    Migration_Index_View::ExecuteQuery('ALTER TABLE com_vtiger_workflows ADD COLUMN filtersavedinnew int(1)', array());
}
Migration_Index_View::ExecuteQuery('UPDATE com_vtiger_workflows SET filtersavedinnew = 5', array());
// Core workflow schema dependecy introduced in 6.1.0
$adb = PearDatabase::getInstance();
$result = $adb->pquery("show columns from com_vtiger_workflows like ?", array('schtypeid'));
if (!$adb->num_rows($result)) {
Ejemplo n.º 8
0
<?php

/*+********************************************************************************
 * The contents of this file are subject to the vtiger CRM Public License Version 1.0
 * ("License"); You may not use this file except in compliance with the License
 * The Original Code is:  vtiger CRM Open Source
 * The Initial Developer of the Original Code is vtiger.
 * Portions created by vtiger are Copyright (C) vtiger.
 * All Rights Reserved.
 *********************************************************************************/
require_once 'include/utils/utils.php';
//5.2.1 to 5.3.0RC database changes
$adb = $_SESSION['adodb_current_object'];
$conn = $_SESSION['adodb_current_object'];
global $migrationlog;
$migrationlog->debug("\n\nDB Changes from 5.4.0RC to 5.4.0 -------- Starts \n\n");
updateVtlibModule('MailManager', "packages/vtiger/mandatory/MailManager.zip");
$migrationlog->debug("\n\nDB Changes from 5.4.0RC to 5.4.0 -------- Ends \n\n");
Ejemplo n.º 9
0
 /**
  * Function installs all the available modules
  */
 public static function installModules()
 {
     require_once 'vtlib/Vtiger/Package.php';
     require_once 'vtlib/Vtiger/Module.php';
     require_once 'include/utils/utils.php';
     $moduleFolders = array('packages/vtiger/mandatory', 'packages/vtiger/optional');
     foreach ($moduleFolders as $moduleFolder) {
         if ($handle = opendir($moduleFolder)) {
             while (false !== ($file = readdir($handle))) {
                 $packageNameParts = explode(".", $file);
                 if ($packageNameParts[count($packageNameParts) - 1] != 'zip') {
                     continue;
                 }
                 array_pop($packageNameParts);
                 $packageName = implode("", $packageNameParts);
                 if (!empty($packageName)) {
                     $packagepath = "{$moduleFolder}/{$file}";
                     $package = new Vtiger_Package();
                     $module = $package->getModuleNameFromZip($packagepath);
                     if ($module != null) {
                         $moduleInstance = Vtiger_Module::getInstance($module);
                         if ($moduleInstance) {
                             updateVtlibModule($module, $packagepath);
                         } else {
                             installVtlibModule($module, $packagepath);
                         }
                     }
                 }
             }
             closedir($handle);
         }
     }
 }