diff --git a/htdocs/admin/external_rss.php b/htdocs/admin/external_rss.php index bcab1f64283..8f8813033ce 100644 --- a/htdocs/admin/external_rss.php +++ b/htdocs/admin/external_rss.php @@ -24,7 +24,7 @@ * \file htdocs/admin/external_rss.php * \ingroup external_rss * \brief Page to setupe module ExternalRss - * \version $Id: external_rss.php,v 1.50 2011/08/26 19:09:03 eldy Exp $ + * \version $Id: external_rss.php,v 1.49 2011/08/17 13:44:16 eldy Exp $ */ require("../main.inc.php"); @@ -286,10 +286,7 @@ if ($resql) } else { - print ''.$langs->trans("Offline"); - $langs->load("errors"); - if ($rssparser->error) print ' - '.$langs->trans($rssparser->error); - print ''; + print ''.$langs->trans("Offline").''; } print ""; print ""; @@ -323,5 +320,5 @@ else $db->close(); -llxFooter('$Date: 2011/08/26 19:09:03 $ - $Revision: 1.50 $'); +llxFooter('$Date: 2011/08/17 13:44:16 $ - $Revision: 1.49 $'); ?> diff --git a/htdocs/cashdesk/admin/cashdesk.php b/htdocs/cashdesk/admin/cashdesk.php index fee57473eb2..5162033dc01 100644 --- a/htdocs/cashdesk/admin/cashdesk.php +++ b/htdocs/cashdesk/admin/cashdesk.php @@ -20,7 +20,7 @@ * \file htdocs/cashdesk/admin/cashdesk.php * \ingroup cashdesk * \brief Setup page for cashdesk module - * \version $Id: cashdesk.php,v 1.9 2011/08/26 15:05:41 simnandez Exp $ + * \version $Id: cashdesk.php,v 1.8 2011/08/26 14:52:00 simnandez Exp $ */ require("../../main.inc.php"); @@ -151,7 +151,6 @@ print '
\n"; dol_htmloutput_mesg($mesg); -$db->close(); -llxFooter('$Date: 2011/08/26 15:05:41 $ - $Revision: 1.9 $'); +llxFooter('$Date: 2011/08/26 14:52:00 $ - $Revision: 1.8 $'); ?> diff --git a/htdocs/core/class/rssparser.class.php b/htdocs/core/class/rssparser.class.php index 8a5776a9330..1b018b5073d 100755 --- a/htdocs/core/class/rssparser.class.php +++ b/htdocs/core/class/rssparser.class.php @@ -19,14 +19,14 @@ * \file htdocs/core/class/rssparser.class.php * \ingroup core * \brief File of class to parse rss feeds - * \version $Id: rssparser.class.php,v 1.5 2011/08/26 23:06:16 eldy Exp $ + * \version $Id: rssparser.class.php,v 1.1 2011/08/17 13:44:13 eldy Exp $ */ class RssParser { var $db; var $error; - protected $_format=''; + protected $_format='rss'; protected $_urlRSS; protected $_language; protected $_generator; @@ -53,12 +53,6 @@ class RssParser public function getLastFetchDate() { return $this->_lastfetchdate; } public function getItems() { return $this->_rssarray; } - - // For parsing with xmlparser - var $stack = array(); // parser stack - var $_CONTENT_CONSTRUCTS = array('content', 'summary', 'info', 'title', 'tagline', 'copyright'); - - /** * Constructor */ @@ -81,17 +75,8 @@ class RssParser { include_once(DOL_DOCUMENT_ROOT.'/lib/files.lib.php'); - $str=''; // This will contain content of feed - - // Check parameters - if (! dol_is_url($urlRSS)) - { - $this->error="ErrorBadUrl"; - return -1; - } - $this->_urlRSS = $urlRSS; - $newpathofdestfile=$cachedir.'/'.md5($this->_urlRSS); + $newpathofdestfile=$cachedir.'/'.md5($this->_urlRSS); $newmask=octdec('0644'); //dol_syslog("RssPArser::parser parse url=".$urlRSS." => cache file=".$newpathofdestfile); @@ -115,44 +100,22 @@ class RssParser } } - // Load file into $str + // Load file into $rss if ($foundintocache) // Cache file found and is not too old { $str = file_get_contents($newpathofdestfile); + $rss = simplexml_load_string(unserialize($str)); } else { try { - ini_set("user_agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); - ini_set("max_execution_time", 10); - $str = file_get_contents($this->_urlRSS); + $rss = @simplexml_load_file($this->_urlRSS); } catch (Exception $e) { print 'Error retrieving URL '.$this->urlRSS.' - '.$e->getMessage(); } } - // Convert $str into xml - if (! empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) - { - //print 'xx'.LIBXML_NOCDATA; - libxml_use_internal_errors(false); - $rss = simplexml_load_string($str, "SimpleXMLElement", LIBXML_NOCDATA); - } - else - { - $xmlparser=xml_parser_create(''); - if (!is_resource($xmlparser)) { $this->error="ErrorFailedToCreateParser"; return -1; } - - xml_set_object( $xmlparser, $this ); - xml_set_element_handler($xmlparser, 'feed_start_element', 'feed_end_element' ); - xml_set_character_data_handler( $xmlparser, 'feed_cdata' ); - $status = xml_parse( $xmlparser, $str ); - xml_parser_free( $xmlparser ); - $rss=$this; - //var_dump($this);exit; - } - // If $rss loaded if ($rss) { @@ -162,7 +125,7 @@ class RssParser dol_syslog("RssParser::parser cache file ".$newpathofdestfile." is saved onto disk."); if (! dol_is_dir($cachedir)) dol_mkdir($cachedir); $fp = fopen($newpathofdestfile, 'w'); - fwrite($fp, $str); + fwrite($fp, serialize($rss->asXML())); fclose($fp); if (! empty($conf->global->MAIN_UMASK)) $newmask=$conf->global->MAIN_UMASK; @chmod($newpathofdestfile, octdec($newmask)); @@ -170,132 +133,33 @@ class RssParser $this->_lastfetchdate=$nowgmt; } - unset($str); // Free memory - - if (empty($rss->_format)) // If format not detected automatically - { - $rss->_format='rss'; - if (empty($rss->channel)) $rss->_format='atom'; - } - - $items=array(); - - // Save description entries - if ($rss->_format == 'rss') - { - //var_dump($rss); - if (! empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) - { - if (!empty($rss->channel->language)) $this->_language = (string) $rss->channel->language; - if (!empty($rss->channel->generator)) $this->_generator = (string) $rss->channel->generator; - if (!empty($rss->channel->copyright)) $this->_copyright = (string) $rss->channel->copyright; - if (!empty($rss->channel->lastbuilddate)) $this->_lastbuilddate = (string) $rss->channel->lastbuilddate; - if (!empty($rss->channel->image->url[0])) $this->_imageurl = (string) $rss->channel->image->url[0]; - if (!empty($rss->channel->link)) $this->_link = (string) $rss->channel->link; - if (!empty($rss->channel->title)) $this->_title = (string) $rss->channel->title; - if (!empty($rss->channel->description)) $this->_description = (string) $rss->channel->description; - } - else - { - if (!empty($rss->channel['rss_language'])) $this->_language = (string) $rss->channel['rss_language']; - if (!empty($rss->channel['rss_generator'])) $this->_generator = (string) $rss->channel['rss_generator']; - if (!empty($rss->channel['rss_copyright'])) $this->_copyright = (string) $rss->channel['rss_copyright']; - if (!empty($rss->channel['rss_lastbuilddate'])) $this->_lastbuilddate = (string) $rss->channel['rss_lastbuilddate']; - if (!empty($rss->image['rss_url'])) $this->_imageurl = (string) $rss->image['rss_url']; - if (!empty($rss->channel['rss_link'])) $this->_link = (string) $rss->channel['rss_link']; - if (!empty($rss->channel['rss_title'])) $this->_title = (string) $rss->channel['rss_title']; - if (!empty($rss->channel['rss_description'])) $this->_description = (string) $rss->channel['rss_description']; - } - - if (! empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) $items=$rss->channel->item; // With simplexml - else $items=$rss->items; // With xmlparse - //var_dump($items);exit; - } - else if ($rss->_format == 'atom') - { - //var_dump($rss); - if (! empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) - { - if (!empty($rss->generator)) $this->_generator = (string) $rss->generator; - if (!empty($rss->lastbuilddate)) $this->_lastbuilddate = (string) $rss->modified; - if (!empty($rss->link->href)) $this->_link = (string) $rss->link->href; - if (!empty($rss->title)) $this->_title = (string) $rss->title; - if (!empty($rss->description)) $this->_description = (string) $rss->description; - } - else - { - //if (!empty($rss->channel['rss_language'])) $this->_language = (string) $rss->channel['rss_language']; - if (!empty($rss->channel['generator'])) $this->_generator = (string) $rss->channel['generator']; - //if (!empty($rss->channel['rss_copyright'])) $this->_copyright = (string) $rss->channel['rss_copyright']; - if (!empty($rss->channel['modified'])) $this->_lastbuilddate = (string) $rss->channel['modified']; - //if (!empty($rss->image['rss_url'])) $this->_imageurl = (string) $rss->image['rss_url']; - if (!empty($rss->channel['link'])) $this->_link = (string) $rss->channel['link']; - if (!empty($rss->channel['title'])) $this->_title = (string) $rss->channel['title']; - //if (!empty($rss->channel['rss_description'])) $this->_description = (string) $rss->channel['rss_description']; - } - if (! empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) { $tmprss=xml2php($rss); $items=$tmprss['entry'];} // With simplexml - else $items=$rss->items; // With xmlparse - //var_dump($items);exit; - } + // Save description entries + if (!empty($rss->channel->language)) $this->_language = (string) $rss->channel->language; + if (!empty($rss->channel->generator)) $this->_generator = (string) $rss->channel->generator; + if (!empty($rss->channel->copyright)) $this->_copyright = (string) $rss->channel->copyright; + if (!empty($rss->channel->lastbuilddate)) $this->_lastbuilddate = (string) $rss->channel->lastbuilddate; + if (!empty($rss->channel->image->url[0])) $this->_imageurl = (string) $rss->channel->image->url[0]; + if (!empty($rss->channel->link)) $this->_link = (string) $rss->channel->link; + if (!empty($rss->channel->title)) $this->_title = (string) $rss->channel->title; + if (!empty($rss->channel->description)) $this->_description = (string) $rss->channel->description; + // TODO imageurl $i = 0; - // Loop on each record - foreach($items as $item) - { - //var_dump($item);exit; - if ($rss->_format == 'rss') - { - if (! empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) - { - $itemLink = (string) $item->link; - $itemTitle = (string) $item->title; - $itemDescription = (string) $item->description; - $itemPubDate = (string) $item->pubDate; - $itemId = ''; - $itemAuthor = ''; - } - else - { - $itemLink = (string) $item['rss_link']; - $itemTitle = (string) $item['rss_title']; - $itemDescription = (string) $item['rss_description']; - $itemPubDate = (string) $item['rss_pubdate']; - $itemId = (string) $item['rss_guid']; - $itemAuthor = (string) $item['rss_author']; - } - // Loop on each category - $itemCategory=array(); - if (is_array($item->category)) - { - foreach ($item->category as $cat) - { - $itemCategory[] = (string) $cat; - } - } - } - else if ($rss->_format == 'atom') - { - if (! empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) - { - $itemLink = (string) $item['link']['href']; - $itemTitle = (string) $item['title']; - $itemDescription = (string) $item['summary']; - $itemPubDate = (string) $item['created']; - $itemId = (string) $item['id']; - $itemAuthor = (string) ($item['author']?$item['author']:$item['author_name']); - } - else - { - $itemLink = (string) $item['link']['href']; - $itemTitle = (string) $item['title']; - $itemDescription = (string) $item['summary']; - $itemPubDate = (string) $item['created']; - $itemId = (string) $item['id']; - $itemAuthor = (string) ($item['author']?$item['author']:$item['author_name']); - } - } - else print 'ErrorBadFeedFormat'; + // Loop on each record + foreach($rss->channel->item as $item) + { + $itemLink = (string) $item->link; + $itemTitle = (string) $item->title; + $itemDescription = (string) $item->description; + $itemPubDate = (string) $item->pubDate; + + // Loop on each category + $itemCategory=array(); + foreach ($item->category as $cat) + { + $itemCategory[] = (string) $cat; + } // Add record to result array $this->_rssarray[$i] = array( @@ -303,9 +167,7 @@ class RssParser 'title'=>$itemTitle, 'description'=>$itemDescription, 'pubDate'=>$itemPubDate, - 'category'=>$itemCategory, - 'id'=>$itemId, - 'author'=>$itemAuthor); + 'category'=>$itemCategory); $i++; @@ -321,323 +183,5 @@ class RssParser } } - - - /** - * Triggered when opened tag is found - * - * @param $p - * @param $element Tag - * @param $attrs Attributes of tags - */ - function feed_start_element($p, $element, &$attrs) - { - $el = $element = strtolower($element); - $attrs = array_change_key_case($attrs, CASE_LOWER); - - // check for a namespace, and split if found - $ns = false; - if ( strpos( $element, ':' ) ) { - list($ns, $el) = explode( ':', $element, 2); - } - if ( $ns and $ns != 'rdf' ) { - $this->current_namespace = $ns; - } - - // if feed type isn't set, then this is first element of feed identify feed from root element - if (empty($this->_format)) - { - if ( $el == 'rdf' ) { - $this->_format = 'rss'; - $this->feed_version = '1.0'; - } - elseif ( $el == 'rss' ) { - $this->_format = 'rss'; - $this->feed_version = $attrs['version']; - } - elseif ( $el == 'feed' ) { - $this->_format = 'atom'; - $this->feed_version = $attrs['version']; - $this->inchannel = true; - } - return; - } - - if ( $el == 'channel' ) - { - $this->inchannel = true; - } - elseif ($el == 'item' or $el == 'entry' ) - { - $this->initem = true; - if ( isset($attrs['rdf:about']) ) { - $this->current_item['about'] = $attrs['rdf:about']; - } - } - - // if we're in the default namespace of an RSS feed, - // record textinput or image fields - elseif ( - $this->_format == 'rss' and - $this->current_namespace == '' and - $el == 'textinput' ) - { - $this->intextinput = true; - } - - elseif ( - $this->_format == 'rss' and - $this->current_namespace == '' and - $el == 'image' ) - { - $this->inimage = true; - } - - # handle atom content constructs - elseif ( $this->_format == 'atom' and in_array($el, $this->_CONTENT_CONSTRUCTS) ) - { - // avoid clashing w/ RSS mod_content - if ($el == 'content' ) { - $el = 'atom_content'; - } - - $this->incontent = $el; - - - } - - // if inside an Atom content construct (e.g. content or summary) field treat tags as text - elseif ($this->_format == 'atom' and $this->incontent ) - { - // if tags are inlined, then flatten - $attrs_str = join(' ', - array_map('map_attrs', - array_keys($attrs), - array_values($attrs) ) ); - - $this->append_content( "<$element $attrs_str>" ); - - array_unshift( $this->stack, $el ); - } - - // Atom support many links per containging element. - // Magpie treats link elements of type rel='alternate' - // as being equivalent to RSS's simple link element. - // - elseif ($this->_format == 'atom' and $el == 'link' ) - { - if ( isset($attrs['rel']) and $attrs['rel'] == 'alternate' ) - { - $link_el = 'link'; - } - else { - $link_el = 'link_' . $attrs['rel']; - } - - $this->append($link_el, $attrs['href']); - } - // set stack[0] to current element - else { - array_unshift($this->stack, $el); - } - } - - - /** - * Triggered when CDATA is found - * - * @param $p - * @param $element Tag - * @param $attrs Attributes of tags - */ - function feed_cdata ($p, $text) { - if ($this->_format == 'atom' and $this->incontent) - { - $this->append_content( $text ); - } - else { - $current_el = join('_', array_reverse($this->stack)); - $this->append($current_el, $text); - } - } - - /** - * Triggered when closed tag is found - * - * @param $p - * @param $element Tag - */ - function feed_end_element ($p, $el) { - $el = strtolower($el); - - if ( $el == 'item' or $el == 'entry' ) - { - $this->items[] = $this->current_item; - $this->current_item = array(); - $this->initem = false; - } - elseif ($this->_format == 'rss' and $this->current_namespace == '' and $el == 'textinput' ) - { - $this->intextinput = false; - } - elseif ($this->_format == 'rss' and $this->current_namespace == '' and $el == 'image' ) - { - $this->inimage = false; - } - elseif ($this->_format == 'atom' and in_array($el, $this->_CONTENT_CONSTRUCTS) ) - { - $this->incontent = false; - } - elseif ($el == 'channel' or $el == 'feed' ) - { - $this->inchannel = false; - } - elseif ($this->_format == 'atom' and $this->incontent ) { - // balance tags properly - // note: i don't think this is actually neccessary - if ( $this->stack[0] == $el ) - { - $this->append_content(""); - } - else { - $this->append_content("<$el />"); - } - - array_shift( $this->stack ); - } - else { - array_shift( $this->stack ); - } - - $this->current_namespace = false; - } - - - /** - * To concat 2 string with no warning if an operand is not defined - * - * @param $str1 - * @param $str2 - */ - function concat (&$str1, $str2="") { - if (!isset($str1) ) { - $str1=""; - } - $str1 .= $str2; - } - - /** - */ - function append_content($text) { - if ( $this->initem ) { - $this->concat( $this->current_item[ $this->incontent ], $text ); - } - elseif ( $this->inchannel ) { - $this->concat( $this->channel[ $this->incontent ], $text ); - } - } - - /** - * smart append - field and namespace aware - */ - function append($el, $text) { - if (!$el) { - return; - } - if ( $this->current_namespace ) - { - if ( $this->initem ) { - $this->concat( - $this->current_item[ $this->current_namespace ][ $el ], $text); - } - elseif ($this->inchannel) { - $this->concat( - $this->channel[ $this->current_namespace][ $el ], $text ); - } - elseif ($this->intextinput) { - $this->concat( - $this->textinput[ $this->current_namespace][ $el ], $text ); - } - elseif ($this->inimage) { - $this->concat( - $this->image[ $this->current_namespace ][ $el ], $text ); - } - } - else { - if ( $this->initem ) { - $this->concat( - $this->current_item[ $el ], $text); - } - elseif ($this->intextinput) { - $this->concat( - $this->textinput[ $el ], $text ); - } - elseif ($this->inimage) { - $this->concat( - $this->image[ $el ], $text ); - } - elseif ($this->inchannel) { - $this->concat( - $this->channel[ $el ], $text ); - } - - } - } - } - - -/** - * Function to convert an XML object into an array - */ -function xml2php($xml) -{ - $fils = 0; - $tab = false; - $array = array(); - foreach($xml->children() as $key => $value) - { - $child = xml2php($value); - - //To deal with the attributes - foreach($value->attributes() as $ak=>$av) - { - $child[$ak] = (string)$av; - - } - - //Let see if the new child is not in the array - if($tab==false && in_array($key,array_keys($array))) - { - //If this element is already in the array we will create an indexed array - $tmp = $array[$key]; - $array[$key] = NULL; - $array[$key][] = $tmp; - $array[$key][] = $child; - $tab = true; - } - elseif($tab == true) - { - //Add an element in an existing array - $array[$key][] = $child; - } - else - { - //Add a simple element - $array[$key] = $child; - } - - $fils++; - } - - - if($fils==0) - { - return (string)$xml; - } - - return $array; - -} - ?> \ No newline at end of file diff --git a/htdocs/includes/smtps/README b/htdocs/includes/smtps/README new file mode 100644 index 00000000000..66eecc9a689 --- /dev/null +++ b/htdocs/includes/smtps/README @@ -0,0 +1,7 @@ +README (english) +---------------- + +This directory contains a PHP library for manipulating SMTPS. +Web: http://www.paehl.de/cms/php_scripts (Class from SMTP PHP Mail project) +Author: Dirk Paehl +Licence: GPL \ No newline at end of file diff --git a/htdocs/core/class/smtps.php b/htdocs/includes/smtps/SMTPs.php old mode 100755 new mode 100644 similarity index 99% rename from htdocs/core/class/smtps.php rename to htdocs/includes/smtps/SMTPs.php index af6fea70b64..ba174acec0a --- a/htdocs/core/class/smtps.php +++ b/htdocs/includes/smtps/SMTPs.php @@ -18,7 +18,8 @@ * - attachments * - GPG access * - * This Class is based off of 'SMTP PHP MAIL' by Dirk Paehl, http://www.paehl.de + * This Class is based off of 'SMTP PHP MAIL' + * by Dirk Paehl, http://www.paehl.de * * @package SMTPs * @@ -30,13 +31,12 @@ * @reference http://www.gordano.com/kb.htm?q=803 * * @author Walter Torres [with a *lot* of help!] - * @author Laurent Destailleur - * @author Regis Houssin * - * @version $Revision: 1.1 $ + * @version $Revision: 1.15 $ + * @copyright copyright information * @license GNU General Public Licence * - * $Id: smtps.php,v 1.1 2011/08/26 23:19:54 eldy Exp $ + * $Id: SMTPs.php,v 1.15 2011/07/12 22:19:02 eldy Exp $ * **/ @@ -2520,10 +2520,7 @@ class SMTPs // ** CSV Version Control Info /** - * $Log: smtps.php,v $ - * Revision 1.1 2011/08/26 23:19:54 eldy - * Qual: smtps is not really an external project but now a specific dolibarr class file, so i moved it into core/class - * + * $Log: SMTPs.php,v $ * Revision 1.15 2011/07/12 22:19:02 eldy * Fix: Attachment fails if content was empty * diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index db8fd9d034b..6429299f7b5 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -883,7 +883,6 @@ DocumentModelOdt=Generació des dels documents amb format OpenDocument (Arxiu .O WatermarkOnDraft=Marca d'aigua en els documents esborrany CompanyIdProfChecker=Id Professional únic MustBeUnique=Ha de ser únic? -Miscellanous=Miscel·lània ##### Webcal setup ##### WebCalSetup=Configuració d'enllaç amb el calendari webcalendar WebCalSyncro=Integrar els esdeveniments Dolibarr a webcalendar diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index b056b135e06..c86ffb54295 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -877,7 +877,6 @@ DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT files for WatermarkOnDraft=Watermark on draft document CompanyIdProfChecker=Professional Id unique MustBeUnique=Must be unique ? -Miscellanous=Miscellanous ##### Webcal setup ##### WebCalSetup=Webcalendar link setup WebCalSyncro=Add Dolibarr events to WebCalendar diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index e60083b6258..9c28211732b 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -15,14 +15,14 @@ BoxLastCustomerOrders=Last customer orders BoxLastBooks=Last books BoxLastActions=Last actions BoxLastContracts=Last contracts -BoxLastContacts=Last contacts/addresses +BoxLastContacts=Derniers contacts/adresses BoxLastMembers=Last members BoxCurrentAccounts=Current accounts balance BoxSalesTurnover=Sales turnover BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices BoxTitleLastBooks=Last %s recorded books -BoxTitleNbOfCustomers=Number of clients +BoxTitleNbOfCustomers=Nombre de client BoxTitleLastRssInfos=Last %s news from %s BoxTitleLastProducts=Last %s modified products/services BoxTitleLastCustomerOrders=Last %s modified customer orders @@ -44,11 +44,11 @@ BoxTitleCurrentAccounts=Current account's balances BoxTitleSalesTurnover=Sales turnover BoxTitleTotalUnpaidCustomerBills=Unpaid customer's invoices BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier's invoices -BoxTitleLastModifiedContacts=Last %s modified contacts/addresses +BoxTitleLastModifiedContacts=Last %s modified contacts/addresses BoxMyLastBookmarks=My last %s bookmarks FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s LastRefreshDate=Last refresh date -NoRecordedBookmarks=No bookmarks defined. +NoRecordedBookmarks=No bookmarks defined. ClickToAdd=Click here to add. NoRecordedCustomers=No recorded customers NoRecordedContacts=No recorded contacts diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 1eaa3cae301..f57f175d2c3 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -86,4 +86,3 @@ ErrorProductWithRefNotExist=Product with reference '%s' don't exist ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated ErrorProdIdAlreadyExist=%s is assigned to another third ErrorFailedToSendPassword=Failed to send password -ErrorFailedToLoadRSSFile=Fails to get RSS feed. Try to add constant MAIN_SIMPLEXMLLOAD_DEBUG if error messages does not provide enough information. \ No newline at end of file diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index a81320bceeb..a87a0a8bccb 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -883,7 +883,6 @@ DocumentModelOdt=Generación desde los documentos OpenDocument (Archivo .ODT Ope WatermarkOnDraft=Marca de agua en los documentos borrador CompanyIdProfChecker=Id Profesional único MustBeUnique=¿Debe ser único? -Miscellanous=Miscelánea ##### Webcal setup ##### WebCalSetup=Configuración de enlace con el calendario Webcalendar WebCalSyncro=Integrar los eventos Dolibarr en WebCalendar diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 77f3ee56575..42b184565c2 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -885,7 +885,6 @@ DocumentModelOdt=Genération depuis des modèles OpenDocument (Fichier .ODT Open WatermarkOnDraft=Filigrane sur les documents brouillons CompanyIdProfChecker=Id professionel unique MustBeUnique=Doit être unique ? -Miscellanous=Miscellanous ##### Webcal setup ##### WebCalSetup= Configuration du lien vers le calendrier Webcalendar WebCalSyncro= Intégrer les événements Dolibarr dans WebCalendar diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 69c9e2b5e9c..a1c97e82c2b 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -87,4 +87,3 @@ ErrorProductWithRefNotExist=La référence produit '%s' n'existe pas ErrorDeleteNotPossibleLineIsConsolidated=Suppression impossible car l'enregistrement porte sur au moins une transaction bancaire rapprochée ErrorProdIdAlreadyExist=%s est attribué à un autre tiers ErrorFailedToSendPassword=Échec de l'envoi du mot de passe -ErrorFailedToLoadRSSFile=Echec de la récupération du flux RSS. Ajouter la constante MAIN_SIMPLEXMLLOAD_DEBUG si le message d'erreur n'est pas assez explicite. \ No newline at end of file diff --git a/htdocs/langs/ru_RU/boxes.lang b/htdocs/langs/ru_RU/boxes.lang index 644c87a76eb..c3d52b9528f 100644 --- a/htdocs/langs/ru_RU/boxes.lang +++ b/htdocs/langs/ru_RU/boxes.lang @@ -10,12 +10,12 @@ // Reference language: en_US CHARSET=UTF-8 BoxLastRssInfos=Информация RSS -BoxLastProducts=Последние %s товары / услуги -BoxLastProductsInContract=Последние %s проданные товары / услуги +BoxLastProducts=Последние %s товаров / услуг +BoxLastProductsInContract=Последние %s проданных товаров / услуг BoxLastSupplierBills=Последние счета-фактуры поставщиков BoxLastCustomerBills=Последние счета-фактуры покупателям BoxLastProposals=Последние коммерческие предложения -BoxLastProspects=Последние измененные потенциальные клиенты +BoxLastProspects=Последние измененные потенциальные покупатели BoxLastCustomers=Последние измененные покупатели BoxLastCustomerOrders=Последние заказы покупателей BoxLastSuppliers=Последние измененные поставщики @@ -26,8 +26,8 @@ BoxSalesTurnover=Оборот по продажам BoxTitleLastBooks=Последние %s зарегистрированных сделок BoxTitleNbOfCustomers=Кол-во покупателей BoxTitleLastRssInfos=Последние новости %s из %s -BoxTitleLastProducts=Последние %s измененные товары / услуги -BoxTitleLastCustomerOrders=Последние %s измененные заказы покупателей +BoxTitleLastProducts=Последние %s измененных товаров / услуг +BoxTitleLastCustomerOrders=Последние %s измененных заказов покупателей BoxTitleLastSuppliers=Последние %s зарегистрированных поставщиков BoxTitleLastCustomers=Последние %s зарегистрированных покупателей BoxTitleLastCustomersOrProspects=Последние %s зарегистрированных покупателей и потенциальных клиентов @@ -48,10 +48,20 @@ NoRecordedOrders=Нет зарегистрированных заказы пок NoRecordedProposals=Нет зарегистрированных предложений NoRecordedInvoices=Нет зарегистрированных счетов-фактур покупателям NoRecordedSupplierInvoices=Нет зарегистрированных счетов-фактур поставщиков +// Date 2009-01-19 21:30:52 +// STOP - Lines generated via parser + +// START - Lines generated via autotranslator.php tool (2009-08-13 21:14:36). +// Reference language: en_US LastRefreshDate=Дата последнего обновления NoRecordedProducts=Нет зарегистрированных товаров / услуг NoRecordedProspects=Нет зарегистрированных потенциальных клиентов NoContractedProducts=Нет законтрактованных товаров / услуг +// STOP - Lines generated via autotranslator.php tool (2009-08-13 21:14:36). + + +// START - Lines generated via autotranslator.php tool (2009-08-19 20:18:27). +// Reference language: en_US BoxOldestUnpaidCustomerBills=Самые старые неоплаченные счета-фактуры покупателям BoxOldestUnpaidSupplierBills=Самые старые неоплаченные счета-фактуры поставщиков BoxTotalUnpaidCustomerBills=Общая сумма неоплаченных счетов-фактур покупателям @@ -62,21 +72,11 @@ BoxTitleTotalUnpaidCustomerBills=Неоплаченные счета-факту BoxTitleTotalUnpaidSuppliersBills=Неоплаченные счета-фактуры поставщиков NoUnpaidCustomerBills=Нет неоплаченных счетов-фактур покупателям NoUnpaidSupplierBills=Нет неоплаченных счетов-фактур поставщиков +// STOP - Lines generated via autotranslator.php tool (2009-08-19 20:18:27). + +// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40). +// Reference language: en_US -> ru_RU BoxTitleLastModifiedSuppliers=Последнее %s измененных поставщиков -BoxTitleLastModifiedCustomers=Последнее %s измененных покупателей +BoxTitleLastModifiedCustomers=Последнее %s измененных клиентов BoxTitleLastModifiedProspects=Последнее %s измененных потенциальных клиентов -BoxLastContracts=Последние договоры -BoxLastContacts=Последние контакты / адреса -BoxLastMembers=Последнее участники -BoxTitleLastModifiedCustomers=Последние %s измененных покупателей -BoxTitleLastModifiedProspects=Последние %s измененных потенциальных клиентов -BoxTitleLastProductsInContract=Последние %s товаров / услуг в договорах -BoxTitleLastModifiedMembers=Последние %s измененных участников -BoxTitleLastModifiedContacts=Последние %s измененных контактов / адресов -NoRecordedContacts=Нет введенных контактов -BoxTitleLastContracts=Последние %s договоров -BoxTitleLastModifiedDonations=Последние %s измененных пожертвований -BoxTitleLastModifiedExpenses=Последние %s измененных расходов -NoModifiedSupplierBills=Нет введенных счетов-фактур поставщиков -NoRecordedContracts=Нет введенных договоров -// STOP - Lines generated via autotranslator.php tool (2011-08-25 22:47:13). +// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:56:40). diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php index 5f8cfc90288..eedf4ec7d87 100644 --- a/htdocs/lib/CMailFile.class.php +++ b/htdocs/lib/CMailFile.class.php @@ -24,7 +24,7 @@ /** * \file htdocs/lib/CMailFile.class.php * \brief File of class to send emails (with attachments or not) - * \version $Id: CMailFile.class.php,v 1.149 2011/08/26 23:19:53 eldy Exp $ + * \version $Id: CMailFile.class.php,v 1.148 2011/07/31 23:25:43 eldy Exp $ * \author Dan Potter. * \author Eric Seigne * \author Laurent Destailleur. @@ -235,7 +235,7 @@ class CMailFile // Use SMTPS library // ------------------------------------------ - require_once(DOL_DOCUMENT_ROOT."/core/class/smtps.php"); + require_once(DOL_DOCUMENT_ROOT."/includes/smtps/SMTPs.php"); $smtps = new SMTPs(); $smtps->setCharSet($conf->file->character_set_client); diff --git a/htdocs/lib/files.lib.php b/htdocs/lib/files.lib.php index 7df39b03ea3..312cece614e 100644 --- a/htdocs/lib/files.lib.php +++ b/htdocs/lib/files.lib.php @@ -19,7 +19,7 @@ /** * \file htdocs/lib/files.lib.php * \brief Library for file managing functions - * \version $Id: files.lib.php,v 1.72 2011/08/26 17:59:14 eldy Exp $ + * \version $Id: files.lib.php,v 1.71 2011/07/31 23:25:43 eldy Exp $ */ /** @@ -186,7 +186,6 @@ function dol_compare_file($a, $b) /** * Return mime type of a file - * * @param file Filename we looking for MIME type * @param default Default mime type if extension not found in known list * @param mode 0=Return full mime, 1=otherwise short mime string, 2=image for mime type, 3=source language @@ -296,7 +295,6 @@ function dol_mimetype($file,$default='application/octet-stream',$mode=0) /** * Test if filename is a directory - * * @param folder Name of folder * @return boolean True if it's a directory, False if not found */ @@ -309,7 +307,6 @@ function dol_is_dir($folder) /** * Return if path is a file - * * @param $pathoffile * @return boolean True or false */ @@ -319,26 +316,8 @@ function dol_is_file($pathoffile) return is_file($newpathoffile); } -/** - * Return if path is an URL - * - * @param $url - * @return boolean True or false - */ -function dol_is_url($url) -{ - $tmpprot=array('file','http','ftp','zlib','data','ssh2','ogg','expect'); - foreach($tmpprot as $prot) - { - if (preg_match('/^'.$prot.':/i',$url)) return true; - } - return false; -} - - /** * Test if a folder is empty - * * @param folder Name of folder * @return boolean True if dir is empty or non-existing, False if it contains files */