コード例 #1
0
 /**
  *  Displays a list of extensions where a newer version is available
  *  in the TER than the one that is installed right now
  *  integrated from the extension "ter_update_check" for TYPO3 4.2 by Christian Welzel
  *
  * @return string
  */
 function showExtensionsToUpdate()
 {
     global $LANG;
     $extList = $this->getInstalledExtensions();
     $content = '<table cellspacing="1" class="t3-em-extension-list t3-em-extension-list-to-update">' . '<tr class="t3-row-header">' . '<td></td>' . '<td>' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:tab_mod_name') . '</td>' . '<td>' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:tab_mod_key') . '</td>' . '<td>' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:tab_mod_loc_ver') . '</td>' . '<td>' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:tab_mod_rem_ver') . '</td>' . '<td>' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:tab_mod_location') . '</td>' . '<td>' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:tab_mod_comment') . '</td>' . '</tr>';
     foreach ($extList[0] as $name => $data) {
         $this->xmlHandler->searchExtensionsXMLExact($name, '', '', TRUE, TRUE);
         if (!is_array($this->xmlHandler->extensionsXML[$name])) {
             continue;
         }
         $v = $this->xmlHandler->extensionsXML[$name]['versions'];
         $versions = array_keys($v);
         natsort($versions);
         $lastversion = end($versions);
         if ((t3lib_extMgm::isLoaded($name) || $this->parentObject->MOD_SETTINGS['display_installed']) && ($data['EM_CONF']['shy'] == 0 || $this->parentObject->MOD_SETTINGS['display_shy']) && tx_em_Tools::versionDifference($lastversion, $data['EM_CONF']['version'], 1)) {
             $imgInfo = @getImageSize(tx_em_Tools::getExtPath($name, $data['type']) . '/ext_icon.gif');
             if (is_array($imgInfo)) {
                 $icon = '<img src="' . $GLOBALS['BACK_PATH'] . tx_em_Tools::typeRelPath($data['type']) . $name . '/ext_icon.gif' . '" ' . $imgInfo[3] . ' alt="" />';
             } elseif ($data['_ICON']) {
                 //TODO: see if this can be removed, seems to be wrong in this context
                 $icon = $data['_ICON'];
             } else {
                 $icon = '<img src="clear.gif" width="1" height="1" alt="" />';
             }
             $comment = '<table cellpadding="0" cellspacing="0" width="100%">';
             foreach ($versions as $vk) {
                 $va =& $v[$vk];
                 if (t3lib_div::int_from_ver($vk) <= t3lib_div::int_from_ver($data['EM_CONF']['version'])) {
                     continue;
                 }
                 $comment .= '<tr><td valign="top" style="padding-right:2px;border-bottom:1px dotted gray">' . $vk . '</td>' . '<td valign="top" style="border-bottom:1px dotted gray">' . nl2br($va[uploadcomment]) . '</td></tr>';
             }
             $comment .= '</table>';
             $serverMD5Array = $this->parentObject->extensionDetails->serverExtensionMD5array($name, $data);
             if (is_array($serverMD5Array)) {
                 ksort($serverMD5Array);
             }
             $currentMD5Array = unserialize($data['EM_CONF']['_md5_values_when_last_written']);
             if (is_array($currentMD5Array)) {
                 @ksort($currentMD5Array);
             }
             $warn = '';
             if (strcmp(serialize($currentMD5Array), serialize($serverMD5Array))) {
                 $warn = '<tr class="bgColor4" style="color:red"><td colspan="7">' . tx_em_Tools::rfw('<br /><strong>' . $name . ': ' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:msg_warn_diff') . '</strong>') . '</td></tr>' . LF;
                 if ($this->parentObject->MOD_SETTINGS['display_files'] == 1) {
                     $affectedFiles = tx_em_Tools::findMD5ArrayDiff($serverMD5Array, $currentMD5Array);
                     if (count($affectedFiles)) {
                         $warn .= '<tr class="bgColor4"><td colspan="7"><strong>' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:msg_modified') . '</strong><br />' . tx_em_Tools::rfw(implode('<br />', $affectedFiles)) . '</td></tr>' . LF;
                     }
                 }
             }
             $content .= '<tr class="bgColor4"><td valign="top">' . $icon . '</td>' . '<td valign="top">' . ($data['EM_CONF']['state'] == 'excludeFromUpdates' ? '<span style="color:#cf7307">' . $data['EM_CONF']['title'] . ' ' . $LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:write_protected') . '</span>' : '<a href="' . t3lib_div::linkThisScript(array('CMD[importExtInfo]' => $name)) . '">' . $data[EM_CONF][title] . '</a>') . '</td>' . '<td valign="top">' . $name . '</td>' . '<td valign="top" align="right">' . $data[EM_CONF][version] . '</td>' . '<td valign="top" align="right">' . $lastversion . '</td>' . '<td valign="top" nowrap="nowrap">' . $this->api->typeLabels[$data['type']] . (strlen($data['doubleInstall']) > 1 ? '<strong> ' . tx_em_Tools::rfw($data['doubleInstall']) . '</strong>' : '') . '</td>' . '<td valign="top">' . $comment . '</td></tr>' . LF . $warn . '<tr class="bgColor4"><td colspan="7"><hr style="margin:0px" /></td></tr>' . LF;
         }
     }
     return $content . '</table><br />';
 }
コード例 #2
0
 /**
  * Make upload array out of extension
  *
  * @param	string		Extension key
  * @param	array		Extension information array
  * @return	mixed		Returns array with extension upload array on success, otherwise an error string.
  */
 function makeUploadarray($extKey, $conf)
 {
     $extPath = tx_em_Tools::getExtPath($extKey, $conf['type']);
     if ($extPath) {
         // Get files for extension:
         $fileArr = array();
         $fileArr = t3lib_div::getAllFilesAndFoldersInPath($fileArr, $extPath, '', 0, 99, $GLOBALS['TYPO3_CONF_VARS']['EXT']['excludeForPackaging']);
         // Calculate the total size of those files:
         $totalSize = 0;
         foreach ($fileArr as $file) {
             $totalSize += filesize($file);
         }
         // If the total size is less than the upper limit, proceed:
         if ($totalSize < $this->maxUploadSize) {
             // Initialize output array:
             $uploadArray = array();
             $uploadArray['extKey'] = $extKey;
             $uploadArray['EM_CONF'] = $conf['EM_CONF'];
             $uploadArray['misc']['codelines'] = 0;
             $uploadArray['misc']['codebytes'] = 0;
             $uploadArray['techInfo'] = $this->install->makeDetailedExtensionAnalysis($extKey, $conf, 1);
             // Read all files:
             foreach ($fileArr as $file) {
                 $relFileName = substr($file, strlen($extPath));
                 $fI = pathinfo($relFileName);
                 if ($relFileName != 'ext_emconf.php') {
                     // This file should be dynamically written...
                     $uploadArray['FILES'][$relFileName] = array('name' => $relFileName, 'size' => filesize($file), 'mtime' => filemtime($file), 'is_executable' => TYPO3_OS == 'WIN' ? 0 : is_executable($file), 'content' => t3lib_div::getUrl($file));
                     if (t3lib_div::inList('php,inc', strtolower($fI['extension']))) {
                         $uploadArray['FILES'][$relFileName]['codelines'] = count(explode(LF, $uploadArray['FILES'][$relFileName]['content']));
                         $uploadArray['misc']['codelines'] += $uploadArray['FILES'][$relFileName]['codelines'];
                         $uploadArray['misc']['codebytes'] += $uploadArray['FILES'][$relFileName]['size'];
                         // locallang*.php files:
                         if (substr($fI['basename'], 0, 9) == 'locallang' && strstr($uploadArray['FILES'][$relFileName]['content'], '$LOCAL_LANG')) {
                             $uploadArray['FILES'][$relFileName]['LOCAL_LANG'] = tx_em_Tools::getSerializedLocalLang($file, $uploadArray['FILES'][$relFileName]['content']);
                         }
                     }
                     $uploadArray['FILES'][$relFileName]['content_md5'] = md5($uploadArray['FILES'][$relFileName]['content']);
                 }
             }
             // Return upload-array:
             return $uploadArray;
         } else {
             return sprintf($GLOBALS['LANG']->getLL('makeUploadArray_error_size'), $totalSize, t3lib_div::formatSize($this->maxUploadSize));
         }
     } else {
         return sprintf($GLOBALS['LANG']->getLL('makeUploadArray_error_path'), $extKey);
     }
 }
コード例 #3
0
 /**
  * Updates the database according to extension requirements
  * DBAL compliant (based on Install Tool code)
  *
  * @param	string		Extension key
  * @param	array		Extension information array
  * @return	void
  */
 function forceDBupdates($extKey, $extInfo)
 {
     $instObj = new t3lib_install();
     // Updating tables and fields?
     if (is_array($extInfo['files']) && in_array('ext_tables.sql', $extInfo['files'])) {
         $fileContent = t3lib_div::getUrl(tx_em_Tools::getExtPath($extKey, $extInfo['type']) . 'ext_tables.sql');
         $FDfile = $instObj->getFieldDefinitions_fileContent($fileContent);
         if (count($FDfile)) {
             $FDdb = $instObj->getFieldDefinitions_database(TYPO3_db);
             $diff = $instObj->getDatabaseExtra($FDfile, $FDdb);
             $update_statements = $instObj->getUpdateSuggestions($diff);
             foreach ((array) $update_statements['add'] as $string) {
                 $GLOBALS['TYPO3_DB']->admin_query($string);
             }
             foreach ((array) $update_statements['change'] as $string) {
                 $GLOBALS['TYPO3_DB']->admin_query($string);
             }
             foreach ((array) $update_statements['create_table'] as $string) {
                 $GLOBALS['TYPO3_DB']->admin_query($string);
             }
         }
     }
     // Importing static tables?
     if (is_array($extInfo['files']) && in_array('ext_tables_static+adt.sql', $extInfo['files'])) {
         $fileContent = t3lib_div::getUrl(tx_em_Tools::getExtPath($extKey, $extInfo['type']) . 'ext_tables_static+adt.sql');
         $statements = $instObj->getStatementarray($fileContent, 1);
         list($statements_table, $insertCount) = $instObj->getCreateTables($statements, 1);
         // Traverse the tables
         foreach ($statements_table as $table => $query) {
             $GLOBALS['TYPO3_DB']->admin_query('DROP TABLE IF EXISTS ' . $table);
             $GLOBALS['TYPO3_DB']->admin_query($query);
             if ($insertCount[$table]) {
                 $statements_insert = $instObj->getTableInsertStatements($statements, $table);
                 foreach ($statements_insert as $v) {
                     $GLOBALS['TYPO3_DB']->admin_query($v);
                 }
             }
         }
     }
 }
コード例 #4
0
ファイル: index.php プロジェクト: NaveedWebdeveloper/Test
 /**
  * Returns the absolute path where the extension $extKey is installed (based on 'type' (SGL))
  *
  * @param	string		Extension key
  * @param	string		Install scope type: L, G, S
  * @return	string		Returns the absolute path to the install scope given by input $type variable. It is checked if the path is a directory. Slash is appended.
  */
 public function getExtPath($extKey, $type, $returnWithoutExtKey = FALSE)
 {
     return tx_em_Tools::getExtPath($extKey, $type, $returnWithoutExtKey);
 }
    /**
     * Prints backupdelete
     *
     * @param string $parameter
     * @return string
     */
    public function getExtensionBackupDelete($extKey)
    {
        $content = '';
        /** @var $extensionList  tx_em_Extensions_List*/
        $extensionList = t3lib_div::makeInstance('tx_em_Extensions_List', $this);
        /** @var $extensionDetails tx_em_Extensions_Details */
        $extensionDetails = t3lib_div::makeInstance('tx_em_Extensions_Details');
        /** @var $extensionDetails tx_em_Connection_Ter */
        $terConnection = t3lib_div::makeInstance('tx_em_Connection_Ter', $this);
        /** @var $extensionDetails tx_em_Install */
        $install = t3lib_div::makeInstance('tx_em_Install');
        /** @var $api tx_em_API */
        $api = t3lib_div::makeInstance('tx_em_API');
        list($list, ) = $extensionList->getInstalledExtensions();
        $uploadArray = $extensionDetails->makeUploadarray($extKey, $list[$extKey]);
        if (is_array($uploadArray)) {
            $backUpData = $terConnection->makeUploadDataFromarray($uploadArray);
            $filename = 'T3X_' . $extKey . '-' . str_replace('.', '_', $list[$extKey]['EM_CONF']['version']) . '-z-' . date('YmdHi') . '.t3x';
            $techInfo = $install->makeDetailedExtensionAnalysis($extKey, $list[$extKey]);
            $lines = array();
            // Backup
            $lines[] = '<tr class="t3-row-header"><td colspan="2">' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:ext_details_backup') . '</td></tr>';
            $lines[] = '<tr class="bgColor4"><td><strong>' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extBackup_files') . '</strong></td><td>' . '<a class="t3-link" href="' . htmlspecialchars(t3lib_div::linkThisScript(array('CMD[doBackup]' => 1, 'CMD[showExt]' => $extKey, 'SET[singleDetails]' => 'backup'))) . '">' . sprintf($GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extBackup_download'), $extKey) . '</a><br />
				(' . $filename . ', <br />' . t3lib_div::formatSize(strlen($backUpData)) . ', <br />' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extBackup_md5') . ' ' . md5($backUpData) . ')
				<br /></td></tr>';
            if (is_array($techInfo['tables'])) {
                $lines[] = '<tr class="bgColor4"><td><strong>' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extBackup_data_tables') . '</strong></td><td>' . tx_em_Database::dumpDataTablesLine($techInfo['tables'], $extKey, array('SET[singleDetails]' => 'backup')) . '</td></tr>';
            }
            if (is_array($techInfo['static'])) {
                $lines[] = '<tr class="bgColor4"><td><strong>' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extBackup_static_tables') . '</strong></td><td>' . tx_em_Database::dumpDataTablesLine($techInfo['static'], $extKey, array('SET[singleDetails]' => 'backup')) . '</td></tr>';
            }
            // Delete
            if (!t3lib_extMgm::isLoaded($extKey)) {
                // check ext scope
                if (tx_em_Tools::deleteAsType($list[$extKey]['type']) && t3lib_div::inList('G,L', $list[$extKey]['type'])) {
                    $lines[] = '<tr class="t3-row-header"><td colspan="2">' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:ext_details_delete') . '</td></tr>';
                    $lines[] = '<tr class="bgColor4"><td colspan="2">' . $install->extDelete($extKey, $list[$extKey], '') . '</td></tr>';
                }
            }
            // EM_CONF
            $lines[] = '<tr class="t3-row-header"><td colspan="2">' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:ext_details_update_em_conf') . '</td></tr>';
            $updateEMConf = $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extUpdateEMCONF_file');
            $lines[] = '<tr class="bgColor4"><td colspan="2">' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extUpdateEMCONF_info_changes') . '<br />
						' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extUpdateEMCONF_info_reset') . '<br /><br />' . '<a class="t3-link emconfLink" href="#"><strong>' . $updateEMConf . '</strong> ' . sprintf($GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:extDelete_from_location'), $api->typeLabels[$list[$extKey]['type']], substr(tx_em_Tools::getExtPath($extKey, $list[$extKey]['type']['type']), strlen(PATH_site))) . '</a>' . '</td></tr>';
            // mod menu for singleDetails
            $modMenu = $GLOBALS['TBE_MODULES_EXT']['tools_em']['MOD_MENU']['singleDetails'];
            if (isset($modMenu) && is_array($modMenu)) {
                $lines[] = '<tr class="t3-row-header"><td colspan="2">' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:ext_details_externActions') . '</td></tr>';
                $menuLinks = '';
                foreach ($modMenu as $menuEntry) {
                    $onClick = htmlspecialchars('jumpToUrl(\'mod.php?&id=0&M=tools_em&SET[singleDetails]=' . $menuEntry['name'] . '&CMD[showExt]=' . $extKey . '\');');
                    $menuLinks .= '<a class="t3-link" href="#" onclick="' . $onClick . '" >' . $GLOBALS['LANG']->sL($menuEntry['title'], TRUE) . '</a><br />';
                }
                $lines[] = '<tr class="bgColor4"><td colspan="2"><p>' . $menuLinks . '</p></td></tr>';
            }
            $content = '<table border="0" cellpadding="2" cellspacing="2">' . implode('', $lines) . '</table>';
            return $this->replaceLinks($content);
        }
    }