diff --git a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql index c900b9d7374..41209d68cd2 100755 --- a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql +++ b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql @@ -18,7 +18,8 @@ -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); ALTER TABLE llx_bookmark ADD COLUMN entity integer DEFAULT 1 NOT NULL; -ALTER TABLE `llx_opensurvey_sondage` ADD `allow_comments` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT 1 AFTER `canedit` ; -ALTER TABLE `llx_opensurvey_sondage` DROP `survey_link_visible` ; +ALTER TABLE `llx_opensurvey_sondage` ADD COLUMN `allow_comments` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT 1 AFTER `canedit` ; +ALTER TABLE `llx_opensurvey_sondage` DROP COLUMN `survey_link_visible` ; ALTER TABLE `llx_opensurvey_sondage` DROP INDEX `idx_id_sondage_admin` ; -ALTER TABLE `llx_opensurvey_sondage` DROP `id_sondage_admin` ; \ No newline at end of file +ALTER TABLE `llx_opensurvey_sondage` DROP COLUMN `id_sondage_admin` ; +ALTER TABLE `llx_opensurvey_sondage` ADD COLUMN `allow_spy` TINYINT( 1 ) UNSIGNED NOT NULL AFTER `allow_comments` ; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_opensurvey_sondage.sql b/htdocs/install/mysql/tables/llx_opensurvey_sondage.sql index ae06605ec67..111519ce901 100644 --- a/htdocs/install/mysql/tables/llx_opensurvey_sondage.sql +++ b/htdocs/install/mysql/tables/llx_opensurvey_sondage.sql @@ -26,6 +26,7 @@ CREATE TABLE llx_opensurvey_sondage ( mailsonde varchar(2) DEFAULT '0', canedit integer DEFAULT 0, allow_comments TINYINT(1) unsigned NOT NULL DEFAULT 1, + allow_spy TINYINT(1) unsigned NOT NULL DEFAULT 1, origin VARCHAR(64), tms TIMESTAMP, sujet TEXT diff --git a/htdocs/langs/en_US/opensurvey.lang b/htdocs/langs/en_US/opensurvey.lang index 88308711fc6..8125589d105 100644 --- a/htdocs/langs/en_US/opensurvey.lang +++ b/htdocs/langs/en_US/opensurvey.lang @@ -27,7 +27,7 @@ SelectedDays=Selected days TheBestChoice=The best choice currently is TheBestChoices=The best choices currently are with=with -OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you (without paying attention to the choices of the other voters) and validate with the plus button at the end of the line. +OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. InitiatorOfPoll=Initiator of the poll CommentsOfVoters=Comments of voters ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) @@ -66,7 +66,8 @@ AddEndHour=Add end hour votes=vote(s) NoCommentYet=No comments have been posted for this poll yet CanEditVotes=Can change vote of others -CanComment=Users can comment in the poll +CanComment=Voters can comment in the poll +CanSeeOthersVote=Voters can see other people's vote SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. BackToCurrentMonth=Back to current month PublicLinkToCreateSurvey=Public link to allow everybody to create a survey diff --git a/htdocs/opensurvey/adminstuds.php b/htdocs/opensurvey/adminstuds.php index 705f668ae8b..9433ea6a250 100644 --- a/htdocs/opensurvey/adminstuds.php +++ b/htdocs/opensurvey/adminstuds.php @@ -88,6 +88,7 @@ if ($action == 'update') $object->date_fin = $expiredate; $object->canedit = GETPOST('canedit')=='on'?1:0; $object->allow_comments = GETPOST('cancomment') == 'on' ? true : false; + $object->allow_spy = GETPOST('canseeothersvote') == 'on' ? true : false; $res=$object->update($user); if ($res < 0) @@ -176,7 +177,7 @@ $linkback = ''.$langs->tra // Ref print ''.$langs->trans('Ref').''; print ''; -print $form->showrefnav($object, 'sondage', $linkback, 1, 'id_sondage', 'id_sondage'); +print $form->showrefnav($object, 'id', $linkback, 1, 'id_sondage', 'id_sondage'); print ''; print ''; @@ -239,6 +240,15 @@ if ($action == 'edit') else print yn($object->allow_comments); print ''; +// Users can see others vote +print ''.$langs->trans('CanSeeOthersVote').''; +if ($action == 'edit') +{ + print 'allow_spy?' checked="true"':'').'">'; +} +else print yn($object->allow_spy); +print ''; + // Expire date print ''.$langs->trans('ExpireDate').''; if ($action == 'edit') print $form->select_date($expiredate?$expiredate:$object->date_fin,'expire'); diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php index 84c08a2e125..fe20979ff4a 100644 --- a/htdocs/opensurvey/class/opensurveysondage.class.php +++ b/htdocs/opensurvey/class/opensurveysondage.class.php @@ -57,6 +57,12 @@ class Opensurveysondage extends CommonObject * @var bool */ public $allow_comments; + + /** + * Allow users see others vote + * @var bool + */ + public $allow_spy; /** * Constructor @@ -121,7 +127,7 @@ class Opensurveysondage extends CommonObject $sql.= " ".(! isset($this->format)?'NULL':"'".$this->db->escape($this->format)."'").","; $sql.= " ".(! isset($this->mailsonde)?'NULL':"'".$this->db->escape($this->mailsonde)."'").","; $sql.= " ".(! isset($this->canedit)?'NULL':"'".$this->db->escape($this->canedit)."'").""; - + $sql.= ")"; $this->db->begin(); @@ -189,6 +195,7 @@ class Opensurveysondage extends CommonObject $sql.= " t.mailsonde,"; $sql.= " t.canedit,"; $sql.= " t.allow_comments,"; + $sql.= " t.allow_spy,"; $sql.= " t.sujet,"; $sql.= " t.tms"; $sql.= " FROM ".MAIN_DB_PREFIX."opensurvey_sondage as t"; @@ -212,6 +219,7 @@ class Opensurveysondage extends CommonObject $this->mailsonde = $obj->mailsonde; $this->canedit = $obj->canedit; $this->allow_comments = $obj->allow_comments; + $this->allow_spy = $obj->allow_spy; $this->sujet = $obj->sujet; $this->date_m = $this->db->jdate($obj->tls); @@ -261,6 +269,7 @@ class Opensurveysondage extends CommonObject if (isset($this->mailsonde)) $this->mailsonde=trim($this->mailsonde); $this->canedit = $this->canedit ? 1 : 0; $this->allow_comments = $this->allow_comments ? 1 : 0; + $this->allow_spy = $this->allow_spy ? 1 : 0; // Check parameters // Put here code to add a control on parameters values @@ -277,7 +286,8 @@ class Opensurveysondage extends CommonObject $sql.= " format=".(isset($this->format)?"'".$this->db->escape($this->format)."'":"null").","; $sql.= " mailsonde=".(isset($this->mailsonde)?$this->db->escape($this->mailsonde):"null").","; $sql.= " canedit=".$this->db->escape($this->canedit).","; - $sql.= " allow_comments=".$this->db->escape($this->allow_comments); + $sql.= " allow_comments=".$this->db->escape($this->allow_comments).","; + $sql.= " allow_spy=".$this->db->escape($this->allow_spy); $sql.= " WHERE id_sondage='".$this->db->escape($this->id_sondage)."'"; diff --git a/htdocs/opensurvey/fonctions.php b/htdocs/opensurvey/fonctions.php index 8876ef6e1aa..3be543a96fd 100644 --- a/htdocs/opensurvey/fonctions.php +++ b/htdocs/opensurvey/fonctions.php @@ -229,7 +229,7 @@ function dol_survey_random($car) */ function ajouter_sondage($origin) { - global $conf, $db; + global $db; $sondage=dol_survey_random(16); @@ -255,13 +255,14 @@ function ajouter_sondage($origin) } $canedit=empty($_SESSION['formatcanedit'])?'0':'1'; $allow_comments = empty($_SESSION['allow_comments']) ? 0 : 1; - + $allow_spy = empty($_SESSION['allow_spy']) ? 0 : 1; + // Insert survey $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'opensurvey_sondage'; - $sql.= '(id_sondage, commentaires, mail_admin, nom_admin, titre, date_fin, format, mailsonde, canedit, allow_comments, origin, sujet)'; + $sql.= '(id_sondage, commentaires, mail_admin, nom_admin, titre, date_fin, format, mailsonde, canedit, allow_comments, allow_spy, origin, sujet)'; $sql.= " VALUES ('".$db->escape($sondage)."', '".$db->escape($_SESSION['commentaires'])."', '".$db->escape($_SESSION['adresse'])."', '".$db->escape($_SESSION['nom'])."',"; $sql.= " '".$db->escape($_SESSION['titre'])."', '".$db->idate($date_fin)."', '".$_SESSION['formatsondage']."', '".$db->escape($_SESSION['mailsonde'])."',"; - $sql.= " '".$canedit."', '".$allow_comments."', '".$db->escape($origin)."',"; + $sql.= " '".$canedit."', '".$allow_comments."', '".$allow_spy."', '".$db->escape($origin)."',"; $sql.= " '".$db->escape($_SESSION['toutchoix'])."'"; $sql.= ")"; dol_syslog($sql); @@ -289,6 +290,7 @@ function ajouter_sondage($origin) unset($_SESSION["canedit"]); unset($_SESSION["mailsonde"]); unset($_SESSION['allow_comments']); + unset($_SESSION['allow_spy']); header("Location: ".$urlback); exit(); diff --git a/htdocs/opensurvey/public/create_survey.php b/htdocs/opensurvey/public/create_survey.php index 9e33933b4ae..fee80200fb0 100644 --- a/htdocs/opensurvey/public/create_survey.php +++ b/htdocs/opensurvey/public/create_survey.php @@ -80,6 +80,12 @@ if (GETPOST("creation_sondage_date") || GETPOST("creation_sondage_autre") || GET } else { $_SESSION['allow_comments'] = false; } + + if (GETPOST('allow_spy') == 'on') { + $_SESSION['allow_spy'] = true; + } else { + $_SESSION['allow_spy'] = false; + } if (! isValidEmail($adresse)) $erreur_adresse = true; @@ -182,6 +188,10 @@ if ($_SESSION['allow_comments']) $allow_comments = "checked"; print ' '.$langs->trans('CanComment').'
'."\n"; +if ($_SESSION['allow_spy']) $allow_spy = "checked"; + +print ' '.$langs->trans('CanSeeOthersVote').'
'."\n"; + if (GETPOST('choix_sondage')) { if (GETPOST('choix_sondage') == 'date') print ''; diff --git a/htdocs/opensurvey/public/studs.php b/htdocs/opensurvey/public/studs.php index a8968987f83..a0cce7067ad 100644 --- a/htdocs/opensurvey/public/studs.php +++ b/htdocs/opensurvey/public/studs.php @@ -365,108 +365,44 @@ else // Loop on each answer -$sumfor = array(); -$sumagainst = array(); -$compteur = 0; -$sql ="SELECT id_users, nom, id_sondage, reponses"; -$sql.=" FROM ".MAIN_DB_PREFIX."opensurvey_user_studs"; -$sql.=" WHERE id_sondage = '".$db->escape($numsondage)."'"; -dol_syslog('sql='.$sql); -$resql=$db->query($sql); -if (! $resql) -{ - dol_print_error($db); - exit; -} -$num=$db->num_rows($resql); -while ($compteur < $num) -{ - $obj=$db->fetch_object($resql); - - $ensemblereponses = $obj->reponses; - - print ''."\n"; - - // ligne d'un usager pré-authentifié - $mod_ok = ($object->canedit || (! empty($nombase) && in_array($nombase, $listofvoters))); - - // Name - $nombase=str_replace("°","'",$obj->nom); - print ''.$nombase.''."\n"; - - // si la ligne n'est pas a changer, on affiche les données - if (! $testligneamodifier) +if ($object->allow_spy) { + $sumfor = array(); + $sumagainst = array(); + $compteur = 0; + $sql ="SELECT id_users, nom, id_sondage, reponses"; + $sql.=" FROM ".MAIN_DB_PREFIX."opensurvey_user_studs"; + $sql.=" WHERE id_sondage = '".$db->escape($numsondage)."'"; + dol_syslog('sql='.$sql); + $resql=$db->query($sql); + if (! $resql) { - for ($i = 0; $i < $nbcolonnes; $i++) - { - $car = substr($ensemblereponses, $i, 1); - //print 'xx'.$i."-".$car.'-'.$listofanswers[$i]['format'].'zz'; - - if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst'))) - { - if (((string) $car) == "1") print 'OK'."\n"; - else print 'KO'."\n"; - // Total - if (! isset($sumfor[$i])) $sumfor[$i] = 0; - if (((string) $car) == "1") $sumfor[$i]++; - } - if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') - { - if (((string) $car) == "1") print ''.$langs->trans("Yes").''."\n"; - else if (((string) $car) == "0") print ''.$langs->trans("No").''."\n"; - else print ' '."\n"; - // Total - if (! isset($sumfor[$i])) $sumfor[$i] = 0; - if (! isset($sumagainst[$i])) $sumagainst[$i] = 0; - if (((string) $car) == "1") $sumfor[$i]++; - if (((string) $car) == "0") $sumagainst[$i]++; - } - if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') - { - if (((string) $car) == "1") print ''.$langs->trans("For").''."\n"; - else if (((string) $car) == "0") print ''.$langs->trans("Against").''."\n"; - else print ' '."\n"; - // Total - if (! isset($sumfor[$i])) $sumfor[$i] = 0; - if (! isset($sumagainst[$i])) $sumagainst[$i] = 0; - if (((string) $car) == "1") $sumfor[$i]++; - if (((string) $car) == "0") $sumagainst[$i]++; - } - } + dol_print_error($db); + exit; } - else + $num=$db->num_rows($resql); + while ($compteur < $num) { - //sinon on remplace les choix de l'utilisateur par une ligne de checkbox pour recuperer de nouvelles valeurs - if ($compteur == $ligneamodifier) - { - for ($i = 0; $i < $nbcolonnes; $i++) - { - $car = substr($ensemblereponses, $i, 1); - print ''; - if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst'))) - { - print ''; - } - if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') - { - $arraychoice=array('2'=>' ','0'=>$langs->trans("No"),'1'=>$langs->trans("Yes")); - print $form->selectarray("choix".$i, $arraychoice, $car); - } - if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') - { - $arraychoice=array('2'=>' ','0'=>$langs->trans("Against"),'1'=>$langs->trans("For")); - print $form->selectarray("choix".$i, $arraychoice, $car); - } - print ''."\n"; - } - } - else + $obj=$db->fetch_object($resql); + + $ensemblereponses = $obj->reponses; + + print ''."\n"; + + // ligne d'un usager pré-authentifié + $mod_ok = ($object->canedit || (! empty($nombase) && in_array($nombase, $listofvoters))); + + // Name + $nombase=str_replace("°","'",$obj->nom); + print ''.$nombase.''."\n"; + + // si la ligne n'est pas a changer, on affiche les données + if (! $testligneamodifier) { for ($i = 0; $i < $nbcolonnes; $i++) { $car = substr($ensemblereponses, $i, 1); + //print 'xx'.$i."-".$car.'-'.$listofanswers[$i]['format'].'zz'; + if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst'))) { if (((string) $car) == "1") print 'OK'."\n"; @@ -477,8 +413,8 @@ while ($compteur < $num) } if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') { - if (((string) $car) == "1") print ''.$langs->trans("For").''."\n"; - else if (((string) $car) == "0") print ''.$langs->trans("Against").''."\n"; + if (((string) $car) == "1") print ''.$langs->trans("Yes").''."\n"; + else if (((string) $car) == "0") print ''.$langs->trans("No").''."\n"; else print ' '."\n"; // Total if (! isset($sumfor[$i])) $sumfor[$i] = 0; @@ -499,31 +435,97 @@ while ($compteur < $num) } } } - } - - // Button edit at end of line - if ($compteur != $ligneamodifier && $mod_ok) - { - print ''."\n"; - } - - //demande de confirmation pour modification de ligne - for ($i=0; $i<$nblignes; $i++) - { - if (isset($_POST["modifierligne".$i])) + else { - if ($compteur == $i) + //sinon on remplace les choix de l'utilisateur par une ligne de checkbox pour recuperer de nouvelles valeurs + if ($compteur == $ligneamodifier) { - print ''; - print ''; - print ''; - print ''."\n"; + for ($i = 0; $i < $nbcolonnes; $i++) + { + $car = substr($ensemblereponses, $i, 1); + print ''; + if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst'))) + { + print ''; + } + if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') + { + $arraychoice=array('2'=>' ','0'=>$langs->trans("No"),'1'=>$langs->trans("Yes")); + print $form->selectarray("choix".$i, $arraychoice, $car); + } + if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') + { + $arraychoice=array('2'=>' ','0'=>$langs->trans("Against"),'1'=>$langs->trans("For")); + print $form->selectarray("choix".$i, $arraychoice, $car); + } + print ''."\n"; + } + } + else + { + for ($i = 0; $i < $nbcolonnes; $i++) + { + $car = substr($ensemblereponses, $i, 1); + if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst'))) + { + if (((string) $car) == "1") print 'OK'."\n"; + else print 'KO'."\n"; + // Total + if (! isset($sumfor[$i])) $sumfor[$i] = 0; + if (((string) $car) == "1") $sumfor[$i]++; + } + if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') + { + if (((string) $car) == "1") print ''.$langs->trans("For").''."\n"; + else if (((string) $car) == "0") print ''.$langs->trans("Against").''."\n"; + else print ' '."\n"; + // Total + if (! isset($sumfor[$i])) $sumfor[$i] = 0; + if (! isset($sumagainst[$i])) $sumagainst[$i] = 0; + if (((string) $car) == "1") $sumfor[$i]++; + if (((string) $car) == "0") $sumagainst[$i]++; + } + if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') + { + if (((string) $car) == "1") print ''.$langs->trans("For").''."\n"; + else if (((string) $car) == "0") print ''.$langs->trans("Against").''."\n"; + else print ' '."\n"; + // Total + if (! isset($sumfor[$i])) $sumfor[$i] = 0; + if (! isset($sumagainst[$i])) $sumagainst[$i] = 0; + if (((string) $car) == "1") $sumfor[$i]++; + if (((string) $car) == "0") $sumagainst[$i]++; + } + } } } - } - $compteur++; - print ''."\n"; + // Button edit at end of line + if ($compteur != $ligneamodifier && $mod_ok) + { + print ''."\n"; + } + + //demande de confirmation pour modification de ligne + for ($i=0; $i<$nblignes; $i++) + { + if (isset($_POST["modifierligne".$i])) + { + if ($compteur == $i) + { + print ''; + print ''; + print ''; + print ''."\n"; + } + } + } + + $compteur++; + print ''."\n"; + } } // Add line to add new record @@ -589,39 +591,41 @@ for ($i=0; $i < $nbcolonnes; $i++) } } -// Show line total -print ''."\n"; -print ''. $langs->trans("Total") .''."\n"; -for ($i = 0; $i < $nbcolonnes; $i++) -{ - $showsumfor = isset($sumfor[$i])?$sumfor[$i]:''; - $showsumagainst = isset($sumagainst[$i])?$sumagainst[$i]:''; - if (empty($showsumfor)) $showsumfor = 0; - if (empty($showsumagainst)) $showsumagainst = 0; - - print ''; - if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst'))) print $showsumfor; - if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') print $langs->trans("Yes").': '.$showsumfor.'
'.$langs->trans("No").': '.$showsumagainst; - if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') print $langs->trans("For").': '.$showsumfor.'
'.$langs->trans("Against").': '.$showsumagainst; - print ''."\n"; -} -print ''; -// Show picto winner -if ($nbofcheckbox >= 2) -{ +if ($object->allow_spy) { + // Show line total print ''."\n"; - print ''."\n"; - for ($i=0; $i < $nbcolonnes; $i++) + print ''. $langs->trans("Total") .''."\n"; + for ($i = 0; $i < $nbcolonnes; $i++) { - //print 'xx'.(! empty($listofanswers[$i]['format'])).'-'.$sumfor[$i].'-'.$meilleurecolonne; - if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst')) && isset($sumfor[$i]) && isset($meilleurecolonne) && $sumfor[$i] == $meilleurecolonne) - { - print ''."\n"; - } else { - print ''."\n"; - } + $showsumfor = isset($sumfor[$i])?$sumfor[$i]:''; + $showsumagainst = isset($sumagainst[$i])?$sumagainst[$i]:''; + if (empty($showsumfor)) $showsumfor = 0; + if (empty($showsumagainst)) $showsumagainst = 0; + + print ''; + if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst'))) print $showsumfor; + if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') print $langs->trans("Yes").': '.$showsumfor.'
'.$langs->trans("No").': '.$showsumagainst; + if (! empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') print $langs->trans("For").': '.$showsumfor.'
'.$langs->trans("Against").': '.$showsumagainst; + print ''."\n"; + } + print ''; + // Show picto winner + if ($nbofcheckbox >= 2) + { + print ''."\n"; + print ''."\n"; + for ($i=0; $i < $nbcolonnes; $i++) + { + //print 'xx'.(! empty($listofanswers[$i]['format'])).'-'.$sumfor[$i].'-'.$meilleurecolonne; + if (empty($listofanswers[$i]['format']) || ! in_array($listofanswers[$i]['format'],array('yesno','foragainst')) && isset($sumfor[$i]) && isset($meilleurecolonne) && $sumfor[$i] == $meilleurecolonne) + { + print ''."\n"; + } else { + print ''."\n"; + } + } + print ''."\n"; } - print ''."\n"; } print ''."\n"; print ''."\n";